[PATCH] net: mdio-gpio: Allow for unspecified bus id

Subsystems: ethernet phy library, networking drivers, the rest

STALE4108d

6 messages, 3 authors, 2015-05-10 · open the first message on its own page

[PATCH] net: mdio-gpio: Allow for unspecified bus id

From: Bert Vermeulen <hidden>
Date: 2015-05-08 14:19:11

When the bus id was supplied via a struct platform_device, the driver wasn't
handling -1 to mean an unspecified id of the only instance of this driver,
as the platform spec requires.

Signed-off-by: Bert Vermeulen <redacted>
---
 drivers/net/phy/mdio-gpio.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/net/phy/mdio-gpio.c b/drivers/net/phy/mdio-gpio.c
index f5cddf5..7bd90db 100644
--- a/drivers/net/phy/mdio-gpio.c
+++ b/drivers/net/phy/mdio-gpio.c
@@ -165,7 +165,10 @@ static struct mii_bus *mdio_gpio_bus_init(struct device *dev,
 		if (!new_bus->irq[i])
 			new_bus->irq[i] = PHY_POLL;
 
-	snprintf(new_bus->id, MII_BUS_ID_SIZE, "gpio-%x", bus_id);
+	if (bus_id != -1)
+		snprintf(new_bus->id, MII_BUS_ID_SIZE, "gpio-%x", bus_id);
+	else
+		strncpy(new_bus->id, "gpio", MII_BUS_ID_SIZE);
 
 	if (devm_gpio_request(dev, bitbang->mdc, "mdc"))
 		goto out_free_bus;
-- 
1.9.1

Re: [PATCH] net: mdio-gpio: Allow for unspecified bus id

From: Andrew Lunn <andrew@lunn.ch>
Date: 2015-05-08 15:53:07

On Fri, May 08, 2015 at 04:18:49PM +0200, Bert Vermeulen wrote:
quoted hunk
When the bus id was supplied via a struct platform_device, the driver wasn't
handling -1 to mean an unspecified id of the only instance of this driver,
as the platform spec requires.

Signed-off-by: Bert Vermeulen <redacted>
---
 drivers/net/phy/mdio-gpio.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/net/phy/mdio-gpio.c b/drivers/net/phy/mdio-gpio.c
index f5cddf5..7bd90db 100644
--- a/drivers/net/phy/mdio-gpio.c
+++ b/drivers/net/phy/mdio-gpio.c
@@ -165,7 +165,10 @@ static struct mii_bus *mdio_gpio_bus_init(struct device *dev,
 		if (!new_bus->irq[i])
 			new_bus->irq[i] = PHY_POLL;
 
-	snprintf(new_bus->id, MII_BUS_ID_SIZE, "gpio-%x", bus_id);
+	if (bus_id != -1)
+		snprintf(new_bus->id, MII_BUS_ID_SIZE, "gpio-%x", bus_id);
+	else
+		strncpy(new_bus->id, "gpio", MII_BUS_ID_SIZE);
Hi Bert

What happens if there are multiple platform_device's with -1?  You
should probably be using use idr_alloc().

    Andrew

Re: [PATCH] net: mdio-gpio: Allow for unspecified bus id

From: Bert Vermeulen <hidden>
Date: 2015-05-08 16:01:33

On 05/08/2015 05:48 PM, Andrew Lunn wrote:
On Fri, May 08, 2015 at 04:18:49PM +0200, Bert Vermeulen wrote:
quoted
When the bus id was supplied via a struct platform_device, the driver wasn't
handling -1 to mean an unspecified id of the only instance of this driver,
as the platform spec requires.

Signed-off-by: Bert Vermeulen <redacted>
---
 drivers/net/phy/mdio-gpio.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/net/phy/mdio-gpio.c b/drivers/net/phy/mdio-gpio.c
index f5cddf5..7bd90db 100644
--- a/drivers/net/phy/mdio-gpio.c
+++ b/drivers/net/phy/mdio-gpio.c
@@ -165,7 +165,10 @@ static struct mii_bus *mdio_gpio_bus_init(struct device *dev,
 		if (!new_bus->irq[i])
 			new_bus->irq[i] = PHY_POLL;
 
-	snprintf(new_bus->id, MII_BUS_ID_SIZE, "gpio-%x", bus_id);
+	if (bus_id != -1)
+		snprintf(new_bus->id, MII_BUS_ID_SIZE, "gpio-%x", bus_id);
+	else
+		strncpy(new_bus->id, "gpio", MII_BUS_ID_SIZE);
Hi Bert

What happens if there are multiple platform_device's with -1?  You
should probably be using use idr_alloc().
It's an instance id per driver, not globally, and -1 specifically means it's
the only instance. From Documentation/driver-model/platform.txt:
These are concatenated, so name/id "serial"/0 indicates bus_id "serial.0", and
"serial/3" indicates bus_id "serial.3"; both would use the platform_driver
named "serial".  While "my_rtc"/-1 would be bus_id "my_rtc" (no instance id)
and use the platform_driver called "my_rtc".

-- 
Bert Vermeulen        bert@biot.com          email/xmpp

Re: [PATCH] net: mdio-gpio: Allow for unspecified bus id

From: Andrew Lunn <andrew@lunn.ch>
Date: 2015-05-08 16:51:37

quoted
quoted
-	snprintf(new_bus->id, MII_BUS_ID_SIZE, "gpio-%x", bus_id);
+	if (bus_id != -1)
+		snprintf(new_bus->id, MII_BUS_ID_SIZE, "gpio-%x", bus_id);
+	else
+		strncpy(new_bus->id, "gpio", MII_BUS_ID_SIZE);
Hi Bert

What happens if there are multiple platform_device's with -1?  You
should probably be using use idr_alloc().
It's an instance id per driver, not globally, and -1 specifically means it's
the only instance. From Documentation/driver-model/platform.txt:
Ah, did not know there can only be one with -1. I've used i2c where
this does not apply when registering adaptors. It will allocate a
unique id to each added with id = -1.

       Andrew

Re: [PATCH] net: mdio-gpio: Allow for unspecified bus id

From: Andrew Lunn <andrew@lunn.ch>
Date: 2015-05-08 16:54:08

On Fri, May 08, 2015 at 04:18:49PM +0200, Bert Vermeulen wrote:
quoted hunk
When the bus id was supplied via a struct platform_device, the driver wasn't
handling -1 to mean an unspecified id of the only instance of this driver,
as the platform spec requires.

Signed-off-by: Bert Vermeulen <redacted>
---
 drivers/net/phy/mdio-gpio.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/net/phy/mdio-gpio.c b/drivers/net/phy/mdio-gpio.c
index f5cddf5..7bd90db 100644
--- a/drivers/net/phy/mdio-gpio.c
+++ b/drivers/net/phy/mdio-gpio.c
@@ -165,7 +165,10 @@ static struct mii_bus *mdio_gpio_bus_init(struct device *dev,
 		if (!new_bus->irq[i])
 			new_bus->irq[i] = PHY_POLL;
 
-	snprintf(new_bus->id, MII_BUS_ID_SIZE, "gpio-%x", bus_id);
+	if (bus_id != -1)
+		snprintf(new_bus->id, MII_BUS_ID_SIZE, "gpio-%x", bus_id);
+	else
+		strncpy(new_bus->id, "gpio", MII_BUS_ID_SIZE);
 
 	if (devm_gpio_request(dev, bitbang->mdc, "mdc"))
 		goto out_free_bus;
-- 
Reviewed-by: Andrew Lunn <andrew@lunn.ch>

Andrew

Re: [PATCH] net: mdio-gpio: Allow for unspecified bus id

From: David Miller <davem@davemloft.net>
Date: 2015-05-10 23:42:30

From: Bert Vermeulen <redacted>
Date: Fri,  8 May 2015 16:18:49 +0200
When the bus id was supplied via a struct platform_device, the driver wasn't
handling -1 to mean an unspecified id of the only instance of this driver,
as the platform spec requires.

Signed-off-by: Bert Vermeulen <redacted>
Applied, thanks.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help