AT91: Convert WDT driver to be independent of processor base-address
Jean-Christophe PLAGNIOL-VILLARD
plagnioj at jcrosoft.com
Thu May 5 06:00:27 EDT 2011
On 22:12 Wed 04 May , Russell King - ARM Linux wrote:
> On Fri, Apr 29, 2011 at 10:48:10PM +0200, Andrew Victor wrote:
> > @@ -248,11 +250,17 @@ static struct miscdevice at91wdt_miscdev = {
> >
> > static int __init at91wdt_probe(struct platform_device *pdev)
> > {
> > + struct resource *r;
> > int res;
> >
> > + r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> > + if (!r)
> > + return -ENODEV;
> > +
> > if (at91wdt_miscdev.parent)
> > return -EBUSY;
> > at91wdt_miscdev.parent = &pdev->dev;
> > + at91wdt_private.regbase = (void __force __iomem *) r->start;
>
> Passing virtual addresses through iomem resources really isn't nice - they
> get added to the resource tree as bus addresses, which actually being
> virtual addresses can conflict with real bus addresses.
>
> The proper way to handle this is like every other platform driver, and to
> use ioremap() on the resource to obtain a virtual mapping for the device.
>
> If you wish to reuse your fixed io mapping, then override ioremap() in
> a similar way to OMAP and arrange for bus addresses in the fixed io
> mapping to return an appropriate iomem pointer for those.
ok will update
Best Regards,
J.
More information about the linux-arm-kernel
mailing list