Lines Matching full:phy
62 struct PHY { struct
67 unsigned int (*read)(struct PHY *phy, unsigned int req); argument
68 void (*write)(struct PHY *phy, unsigned int req, argument
72 static unsigned int tdk_read(struct PHY *phy, unsigned int req) in tdk_read() argument
81 if (!phy->link) { in tdk_read()
99 r |= phy->regs[4] & (15 << 5); in tdk_read()
104 /* Marvell PHY on many xilinx boards. */ in tdk_read()
113 if (!phy->link) { in tdk_read()
118 speed_100 = !!(phy->regs[4] & ADVERTISE_100HALF); in tdk_read()
119 speed_100 |= !!(phy->regs[4] & ADVERTISE_100FULL); in tdk_read()
122 duplex = !!(phy->regs[4] & ADVERTISE_100FULL); in tdk_read()
123 duplex |= !!(phy->regs[4] & ADVERTISE_10FULL); in tdk_read()
129 r = phy->regs[regnum]; in tdk_read()
137 tdk_write(struct PHY *phy, unsigned int req, unsigned int data) in tdk_write() argument
145 phy->regs[regnum] = data; in tdk_write()
150 phy->regs[0] &= ~0x8200; in tdk_write()
154 tdk_init(struct PHY *phy) in tdk_init() argument
156 phy->regs[0] = 0x3100; in tdk_init()
157 /* PHY Id. */ in tdk_init()
158 phy->regs[2] = 0x0300; in tdk_init()
159 phy->regs[3] = 0xe400; in tdk_init()
161 phy->regs[4] = 0x01E1; in tdk_init()
162 phy->link = 1; in tdk_init()
164 phy->read = tdk_read; in tdk_init()
165 phy->write = tdk_write; in tdk_init()
169 struct PHY *devs[32];
173 mdio_attach(struct MDIOBus *bus, struct PHY *phy, unsigned int addr) in mdio_attach() argument
175 bus->devs[addr & 0x1f] = phy; in mdio_attach()
180 mdio_detach(struct MDIOBus *bus, struct PHY *phy, unsigned int addr) in mdio_detach() argument
189 struct PHY *phy; in mdio_read_req() local
192 phy = bus->devs[addr]; in mdio_read_req()
193 if (phy && phy->read) { in mdio_read_req()
194 data = phy->read(phy, reg); in mdio_read_req()
205 struct PHY *phy; in mdio_write_req() local
208 phy = bus->devs[addr]; in mdio_write_req()
209 if (phy && phy->write) { in mdio_write_req()
210 phy->write(phy, reg, data); in mdio_write_req()
306 struct PHY phy; member
974 tdk_init(&s->TEMAC.phy); in xilinx_enet_realize()
975 mdio_attach(&s->TEMAC.mdio_bus, &s->TEMAC.phy, s->c_phyaddr); in xilinx_enet_realize()