Thread (58 messages) 58 messages, 4 authors, 2016-01-07

Re: [PATCH RFC 10/26] phy: add I2C mdio bus

From: Florian Fainelli <f.fainelli@gmail.com>
Date: 2015-12-08 18:15:16

On 07/12/15 09:38, Russell King wrote:
Add an I2C MDIO bus bridge library, to allow phylib to access PHYs which
are connected to an I2C bus instead of the more conventional MDIO bus.
Such PHYs can be found in SFP adapters and SFF modules.

Signed-off-by: Russell King <redacted>
---
[snip]
+static int i2c_mii_read(struct mii_bus *bus, int phy_id, int reg)
+{
+	struct i2c_adapter *i2c = bus->priv;
+	struct i2c_msg msgs[2];
+	u8 data[2], dev_addr = reg;
+	int bus_addr, ret;
+
+	bus_addr = 0x40 + phy_id;
+	if (bus_addr == 0x50 || bus_addr == 0x51)
+		return 0xffff;
These could deserve a local definition for these specific addresses so
we know why there is such logic here.
+
+	msgs[0].addr = bus_addr;
+	msgs[0].flags = 0;
+	msgs[0].len = 1;
+	msgs[0].buf = &dev_addr;
+	msgs[1].addr = bus_addr;
+	msgs[1].flags = I2C_M_RD;
+	msgs[1].len = sizeof(data);
+	msgs[1].buf = data;
+
+	ret = i2c_transfer(i2c, msgs, ARRAY_SIZE(msgs));
+	if (ret != ARRAY_SIZE(msgs))
+		return 0xffff;
+
+	return data[0] << 8 | data[1];
+}
+
+static int i2c_mii_write(struct mii_bus *bus, int phy_id, int reg, u16 val)
+{
+	struct i2c_adapter *i2c = bus->priv;
+	struct i2c_msg msg;
+	int bus_addr, ret;
+	u8 data[3];
+
+	bus_addr = 0x40 + phy_id;
+	if (bus_addr == 0x50 || bus_addr == 0x51)
+		return 0;
Same here.
-- 
Florian
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help