[PATCH] Net: add mdio_i2c driver.

Clément Leger cleger at kalray.eu
Fri Nov 17 00:52:14 PST 2017


Hi Sascha,

Indeed, I though about that and I was facing another problem.
The mdio to i2c driver does not have a specific address.
ie, it is not a device but rather a bus.
If I put the mdio_i2c  node under the i2c bus, then I should assign
it an i2c address. This address should represent the phy address.
However, this would means I would have one mdio-i2c driver per phy.

ie:
i2c_bus {
  mdio_i2c1 {
    reg = <0x0>;
    compatible = <virtual,mdio-i2c>;
    phy1 {
      reg = <0x0>; //?
    };
  mdio_i2c1 {
    reg = <0x1>;
    compatible = <virtual,mdio-i2c>;
    phy1 {
      reg = <0x1>; // ?
    };
  };
  misc_device {
    reg = <0x3>;
  };
  ...
};

my_net_work_device {
  phy-handle = <&myphy>;
}

Note that I don't have a particular preference but I was just not fund
of assigning twice the same address. If you prefer this way I 
modify it. 

Clément

----- Mail original -----
De: "Sascha Hauer" <s.hauer at pengutronix.de>
À: "Clément Leger" <cleger at kalray.eu>
Cc: "Barebox List" <barebox at lists.infradead.org>
Envoyé: Vendredi 17 Novembre 2017 09:33:40
Objet: Re: [PATCH] Net: add mdio_i2c driver.

Hi Clément,

On Tue, Nov 14, 2017 at 02:34:51PM +0100, Clément Leger wrote:
> From 1238b5c70d29762074bc71ac25623b958af9010a Mon Sep 17 00:00:00 2001
> From: Clement Leger <clement.leger at kalray.eu>
> Date: Wed, 8 Nov 2017 09:13:10 +0100
> Subject: [PATCH] Net: add mdio_i2c driver (i2c to mdio bridge).
> 
> +++ b/dts/Bindings/net/mdio-i2c.txt
> @@ -0,0 +1,19 @@
> +MDIO on I2C Bus
> +This compatible allows to use phy devices connected to an i2c bus
> +and expecting to be use with mdio protocol.
> +
> +Currently defined compatibles:
> +- virtual,mdio-i2c
> +
> +Required properties:
> +- i2c-bus: A phandle on the I2C bus acting as a MDIO bridge where phys
> +           are connected to.
> +
> +Example:
> +
> +mdio0 at i2c {
> +	compatible = "virtual,mdio-i2c";
> +	#address-cells = <1>;
> +	#size-cells = <0>;
> +	i2c-bus = <&i2c_bus>;
> +};

The binding looks the wrong way round. Ethernet phys should be child
nodes of the bus providing the control port to them. So, the mdio-i2c
device should be a child node of the i2c bus on which it is attached.
Instead of providing a phandle from the mdio phy to the i2c bus you
then provide a "phy-handle" phandle from the network controller to the
mdio-i2c. The "phy-handle" phandle is evaluated from the barebox phy
code already, so once you register a mdio-bus the connection between the
ethernet device and the mdio bus should just work.

Sascha

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |



More information about the barebox mailing list