Re: [PATCH 2/3] net: socionext: Add Synquacer NetSec driver
From: David Miller <hidden>
Date: 2017-11-30 17:29:17
Also in:
netdev
From: jassisinghbrar-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org Date: Thu, 30 Nov 2017 21:43:16 +0530
+ priv->eeprom_base = devm_memremap(&pdev->dev, eeprom_res->start,
+ resource_size(eeprom_res),
+ MEMREMAP_WT);
+ if (!priv->eeprom_base) {
+ dev_err(&pdev->dev, "devm_memremap() failed for EEPROM\n");
+ ret = -ENXIO;
+ goto free_ndev;
+ }dev_memremap() is implemented via memremap() which for MEMREMAP_WT is in turn implemented using ioremap_wt() which returns an "__iomem" pointer. The memremap() function talks about __iomem being about side effects. That's not really the full story. The __iomem annotation is also about whether a special accessor is necessary to "dereference" the pointer. On sparc64, for example, the ioremap_*() functions return a physical address not a virtual one. So you cannot directly dereference pointers that are returned from the ioremap*() interfaces. You'll also need to mark priv->eeprom_base as "__iomem". devm_memremap() returns a straight "void *" without the __iomem annotation, and this is wrong then ioremap_*() is used. -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html