diff mbox

net: mdio-gpio: Allow for unspecified bus id

Message ID 1431094729-21775-1-git-send-email-bert@biot.com
State Accepted, archived
Delegated to: David Miller
Headers show

Commit Message

Bert Vermeulen May 8, 2015, 2:18 p.m. UTC
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 <bert@biot.com>
---
 drivers/net/phy/mdio-gpio.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

Comments

Andrew Lunn May 8, 2015, 3:48 p.m. UTC | #1
On Fri, May 08, 2015 at 04:18:49PM +0200, Bert Vermeulen wrote:
> 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 <bert@biot.com>
> ---
>  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
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Bert Vermeulen May 8, 2015, 4:01 p.m. UTC | #2
On 05/08/2015 05:48 PM, Andrew Lunn wrote:
> On Fri, May 08, 2015 at 04:18:49PM +0200, Bert Vermeulen wrote:
>> 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 <bert@biot.com>
>> ---
>>  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".
Andrew Lunn May 8, 2015, 4:46 p.m. UTC | #3
> >> -	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
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Andrew Lunn May 8, 2015, 4:49 p.m. UTC | #4
On Fri, May 08, 2015 at 04:18:49PM +0200, Bert Vermeulen wrote:
> 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 <bert@biot.com>
> ---
>  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
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
David Miller May 10, 2015, 11:42 p.m. UTC | #5
From: Bert Vermeulen <bert@biot.com>
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 <bert@biot.com>

Applied, thanks.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

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;