Thread (6 messages) flat view 6 messages, 3 authors, 2015-05-10

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

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

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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help