Re: [PATCH 3.7.0-rc4] of/net/mdio-gpio: Fix pdev->id issue when using devicetrees.
From: Grant Likely <hidden>
Date: 2012-11-15 16:59:49
Also in:
linux-devicetree
On Tue, 13 Nov 2012 14:26:13 +0000, Srinivas KANDAGATLA [off-list ref] wrote:
quoted hunk ↗ jump to hunk
From: Srinivas Kandagatla <redacted> When the mdio-gpio driver is probed via device trees, the platform device id is set as -1, However the id is re-used in the code while creating an mdio bus. So, setting up the id via aliases from device tree is a sensible solution to fix this issue. Signed-off-by: Srinivas Kandagatla <redacted> --- .../devicetree/bindings/net/mdio-gpio.txt | 9 ++++++++- drivers/net/phy/mdio-gpio.c | 1 + 2 files changed, 9 insertions(+), 1 deletions(-)diff --git a/Documentation/devicetree/bindings/net/mdio-gpio.txt b/Documentation/devicetree/bindings/net/mdio-gpio.txt index bc95495..c79bab0 100644 --- a/Documentation/devicetree/bindings/net/mdio-gpio.txt +++ b/Documentation/devicetree/bindings/net/mdio-gpio.txt@@ -8,9 +8,16 @@ gpios property as described in section VIII.1 in the following order: MDC, MDIO. +Note: Each gpio-mdio bus should have an alias correctly numbered in "aliases" +node. + Example: -mdio { +aliases { + mdio-gpio0 = <&mdio0>; +}; + +mdio0: mdio { compatible = "virtual,mdio-gpio"; #address-cells = <1>; #size-cells = <0>;diff --git a/drivers/net/phy/mdio-gpio.c b/drivers/net/phy/mdio-gpio.c index 899274f..e3f3115 100644 --- a/drivers/net/phy/mdio-gpio.c +++ b/drivers/net/phy/mdio-gpio.c@@ -56,6 +56,7 @@ static void *mdio_gpio_of_get_data(struct platform_device *pdev) if (ret < 0) return NULL; pdata->mdio = ret; + pdev->id = of_alias_get_id(np, "mdio-gpio");
This is actually illegal. Once a device is registered, pdev->id must not be changed. Same goes for pdev->name and pdev->dev.platform_data. g.