Lines Matching defs:bus

34 #define MDC_PIN(bus)	(((struct gpio_priv *)bus->priv)->mdc_pin)
35 #define MDIO_PIN(bus) (((struct gpio_priv *)bus->priv)->mdio_pin)
37 static inline void mdio_lo(struct mii_bus *bus)
39 out_le32(gpio_regs+0x10, 1 << MDIO_PIN(bus));
42 static inline void mdio_hi(struct mii_bus *bus)
44 out_le32(gpio_regs, 1 << MDIO_PIN(bus));
47 static inline void mdc_lo(struct mii_bus *bus)
49 out_le32(gpio_regs+0x10, 1 << MDC_PIN(bus));
52 static inline void mdc_hi(struct mii_bus *bus)
54 out_le32(gpio_regs, 1 << MDC_PIN(bus));
57 static inline void mdio_active(struct mii_bus *bus)
59 out_le32(gpio_regs+0x20, (1 << MDC_PIN(bus)) | (1 << MDIO_PIN(bus)));
62 static inline void mdio_tristate(struct mii_bus *bus)
64 out_le32(gpio_regs+0x30, (1 << MDIO_PIN(bus)));
67 static inline int mdio_read(struct mii_bus *bus)
69 return !!(in_le32(gpio_regs+0x40) & (1 << MDIO_PIN(bus)));
72 static void clock_out(struct mii_bus *bus, int bit)
75 mdio_hi(bus);
77 mdio_lo(bus);
79 mdc_hi(bus);
81 mdc_lo(bus);
85 static void bitbang_pre(struct mii_bus *bus, int read, u8 addr, u8 reg)
90 mdio_active(bus);
92 clock_out(bus, 1);
96 clock_out(bus, 0);
97 clock_out(bus, 1);
99 clock_out(bus, read);
100 clock_out(bus, !read);
104 clock_out(bus, (addr & 0x10) != 0);
110 clock_out(bus, (reg & 0x10) != 0);
115 static int gpio_mdio_read(struct mii_bus *bus, int phy_id, int location)
122 bitbang_pre(bus, 1, addr, reg);
125 mdio_tristate(bus);
127 mdc_hi(bus);
129 mdc_lo(bus);
134 mdc_lo(bus);
136 mdc_hi(bus);
138 mdc_lo(bus);
141 rdreg |= mdio_read(bus);
144 mdc_hi(bus);
146 mdc_lo(bus);
154 static int gpio_mdio_write(struct mii_bus *bus, int phy_id, int location, u16 val)
162 bitbang_pre(bus, 0, addr, reg);
165 mdc_lo(bus);
166 mdio_hi(bus);
168 mdc_hi(bus);
170 mdc_lo(bus);
171 mdio_lo(bus);
173 mdc_hi(bus);
178 mdc_lo(bus);
180 mdio_hi(bus);
182 mdio_lo(bus);
184 mdc_hi(bus);
192 mdio_tristate(bus);
193 mdc_lo(bus);
195 mdc_hi(bus);
200 static int gpio_mdio_reset(struct mii_bus *bus)
226 new_bus->name = "pasemi gpio mdio bus";
247 pr_err("%s: Cannot register as MDIO bus, err %d\n",
265 struct mii_bus *bus = dev_get_drvdata(&dev->dev);
267 mdiobus_unregister(bus);
271 kfree(bus->priv);
272 bus->priv = NULL;
273 mdiobus_free(bus);