Commit c7b04d10 authored by Andrew Lunn's avatar Andrew Lunn Committed by David S. Miller

net: phy: cavium: Improve __iomem mess

The MIPS low level register access functions seem to be missing
__iomem annotation. This causes lots of sparse warnings, when code
casts off the __iomem. Make the Cavium MDIO drivers cleaner by pushing
the casts lower down into the helpers, allow the drivers to work as
normal, with __iomem.

bus->register_base is now an void *, rather than a u64. So forming the
mii_bus->id string cannot use %llx any more. Use %px, so this kernel
address is still exposed to user space, as it was before.

v2: s/cases/causes/g

Cc: Sunil Goutham <sgoutham@marvell.com>
Cc: Robert Richter <rrichter@marvell.com>
Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
Signed-off-by: default avatarAndrew Lunn <andrew@lunn.ch>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 82e7627f
...@@ -90,7 +90,7 @@ union cvmx_smix_wr_dat { ...@@ -90,7 +90,7 @@ union cvmx_smix_wr_dat {
struct cavium_mdiobus { struct cavium_mdiobus {
struct mii_bus *mii_bus; struct mii_bus *mii_bus;
u64 register_base; void __iomem *register_base;
enum cavium_mdiobus_mode mode; enum cavium_mdiobus_mode mode;
}; };
...@@ -98,20 +98,20 @@ struct cavium_mdiobus { ...@@ -98,20 +98,20 @@ struct cavium_mdiobus {
#include <asm/octeon/octeon.h> #include <asm/octeon/octeon.h>
static inline void oct_mdio_writeq(u64 val, u64 addr) static inline void oct_mdio_writeq(u64 val, void __iomem *addr)
{ {
cvmx_write_csr(addr, val); cvmx_write_csr((u64 __force)addr, val);
} }
static inline u64 oct_mdio_readq(u64 addr) static inline u64 oct_mdio_readq(void __iomem *addr)
{ {
return cvmx_read_csr(addr); return cvmx_read_csr((u64 __force)addr);
} }
#else #else
#include <linux/io-64-nonatomic-lo-hi.h> #include <linux/io-64-nonatomic-lo-hi.h>
#define oct_mdio_writeq(val, addr) writeq(val, (void *)addr) #define oct_mdio_writeq(val, addr) writeq(val, addr)
#define oct_mdio_readq(addr) readq((void *)addr) #define oct_mdio_readq(addr) readq(addr)
#endif #endif
int cavium_mdiobus_read(struct mii_bus *bus, int phy_id, int regnum); int cavium_mdiobus_read(struct mii_bus *bus, int phy_id, int regnum);
......
...@@ -44,8 +44,7 @@ static int octeon_mdiobus_probe(struct platform_device *pdev) ...@@ -44,8 +44,7 @@ static int octeon_mdiobus_probe(struct platform_device *pdev)
return -ENXIO; return -ENXIO;
} }
bus->register_base = bus->register_base = devm_ioremap(&pdev->dev, mdio_phys, regsize);
(u64)devm_ioremap(&pdev->dev, mdio_phys, regsize);
if (!bus->register_base) { if (!bus->register_base) {
dev_err(&pdev->dev, "dev_ioremap failed\n"); dev_err(&pdev->dev, "dev_ioremap failed\n");
return -ENOMEM; return -ENOMEM;
...@@ -56,7 +55,7 @@ static int octeon_mdiobus_probe(struct platform_device *pdev) ...@@ -56,7 +55,7 @@ static int octeon_mdiobus_probe(struct platform_device *pdev)
oct_mdio_writeq(smi_en.u64, bus->register_base + SMI_EN); oct_mdio_writeq(smi_en.u64, bus->register_base + SMI_EN);
bus->mii_bus->name = KBUILD_MODNAME; bus->mii_bus->name = KBUILD_MODNAME;
snprintf(bus->mii_bus->id, MII_BUS_ID_SIZE, "%llx", bus->register_base); snprintf(bus->mii_bus->id, MII_BUS_ID_SIZE, "%px", bus->register_base);
bus->mii_bus->parent = &pdev->dev; bus->mii_bus->parent = &pdev->dev;
bus->mii_bus->read = cavium_mdiobus_read; bus->mii_bus->read = cavium_mdiobus_read;
......
...@@ -84,7 +84,7 @@ static int thunder_mdiobus_pci_probe(struct pci_dev *pdev, ...@@ -84,7 +84,7 @@ static int thunder_mdiobus_pci_probe(struct pci_dev *pdev,
nexus->buses[i] = bus; nexus->buses[i] = bus;
i++; i++;
bus->register_base = (u64)nexus->bar0 + bus->register_base = nexus->bar0 +
r.start - pci_resource_start(pdev, 0); r.start - pci_resource_start(pdev, 0);
smi_en.u64 = 0; smi_en.u64 = 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment