Lines Matching refs:dev

16 u32 pkt_data_pull(struct eth_device *dev, u32 addr) \
18 void pkt_data_push(struct eth_device *dev, u32 addr, u32 val) \
21 static void smc911x_handle_mac_address(struct eth_device *dev) in smc911x_handle_mac_address() argument
24 uchar *m = dev->enetaddr; in smc911x_handle_mac_address()
28 smc911x_set_mac_csr(dev, ADDRL, addrl); in smc911x_handle_mac_address()
29 smc911x_set_mac_csr(dev, ADDRH, addrh); in smc911x_handle_mac_address()
34 static int smc911x_eth_phy_read(struct eth_device *dev, in smc911x_eth_phy_read() argument
37 while (smc911x_get_mac_csr(dev, MII_ACC) & MII_ACC_MII_BUSY) in smc911x_eth_phy_read()
40 smc911x_set_mac_csr(dev, MII_ACC, phy << 11 | reg << 6 | in smc911x_eth_phy_read()
43 while (smc911x_get_mac_csr(dev, MII_ACC) & MII_ACC_MII_BUSY) in smc911x_eth_phy_read()
46 *val = smc911x_get_mac_csr(dev, MII_DATA); in smc911x_eth_phy_read()
51 static int smc911x_eth_phy_write(struct eth_device *dev, in smc911x_eth_phy_write() argument
54 while (smc911x_get_mac_csr(dev, MII_ACC) & MII_ACC_MII_BUSY) in smc911x_eth_phy_write()
57 smc911x_set_mac_csr(dev, MII_DATA, val); in smc911x_eth_phy_write()
58 smc911x_set_mac_csr(dev, MII_ACC, in smc911x_eth_phy_write()
61 while (smc911x_get_mac_csr(dev, MII_ACC) & MII_ACC_MII_BUSY) in smc911x_eth_phy_write()
66 static int smc911x_phy_reset(struct eth_device *dev) in smc911x_phy_reset() argument
70 reg = smc911x_reg_read(dev, PMT_CTRL); in smc911x_phy_reset()
73 smc911x_reg_write(dev, PMT_CTRL, reg); in smc911x_phy_reset()
80 static void smc911x_phy_configure(struct eth_device *dev) in smc911x_phy_configure() argument
85 smc911x_phy_reset(dev); in smc911x_phy_configure()
87 smc911x_eth_phy_write(dev, 1, MII_BMCR, BMCR_RESET); in smc911x_phy_configure()
89 smc911x_eth_phy_write(dev, 1, MII_ADVERTISE, 0x01e1); in smc911x_phy_configure()
90 smc911x_eth_phy_write(dev, 1, MII_BMCR, BMCR_ANENABLE | in smc911x_phy_configure()
99 if (smc911x_eth_phy_read(dev, 1, MII_BMSR, &status) != 0) in smc911x_phy_configure()
111 static void smc911x_enable(struct eth_device *dev) in smc911x_enable() argument
114 smc911x_reg_write(dev, HW_CFG, 8 << 16 | HW_CFG_SF); in smc911x_enable()
116 smc911x_reg_write(dev, GPT_CFG, GPT_CFG_TIMER_EN | 10000); in smc911x_enable()
118 smc911x_reg_write(dev, TX_CFG, TX_CFG_TX_ON); in smc911x_enable()
121 smc911x_reg_write(dev, RX_CFG, 0); in smc911x_enable()
123 smc911x_set_mac_csr(dev, MAC_CR, MAC_CR_TXEN | MAC_CR_RXEN | in smc911x_enable()
128 static int smc911x_init(struct eth_device *dev, bd_t * bd) in smc911x_init() argument
130 struct chip_id *id = dev->priv; in smc911x_init()
134 smc911x_reset(dev); in smc911x_init()
137 smc911x_phy_configure(dev); in smc911x_init()
139 smc911x_handle_mac_address(dev); in smc911x_init()
142 smc911x_enable(dev); in smc911x_init()
147 static int smc911x_send(struct eth_device *dev, void *packet, int length) in smc911x_send() argument
153 smc911x_reg_write(dev, TX_DATA_FIFO, TX_CMD_A_INT_FIRST_SEG | in smc911x_send()
155 smc911x_reg_write(dev, TX_DATA_FIFO, length); in smc911x_send()
160 pkt_data_push(dev, TX_DATA_FIFO, *data++); in smc911x_send()
163 while (!((smc911x_reg_read(dev, TX_FIFO_INF) & in smc911x_send()
169 status = smc911x_reg_read(dev, TX_STATUS_FIFO) & in smc911x_send()
186 static void smc911x_halt(struct eth_device *dev) in smc911x_halt() argument
188 smc911x_reset(dev); in smc911x_halt()
189 smc911x_handle_mac_address(dev); in smc911x_halt()
192 static int smc911x_rx(struct eth_device *dev) in smc911x_rx() argument
198 if ((smc911x_reg_read(dev, RX_FIFO_INF) & RX_FIFO_INF_RXSUSED) >> 16) { in smc911x_rx()
199 status = smc911x_reg_read(dev, RX_STATUS_FIFO); in smc911x_rx()
202 smc911x_reg_write(dev, RX_CFG, 0); in smc911x_rx()
206 *data++ = pkt_data_pull(dev, RX_DATA_FIFO); in smc911x_rx()
225 struct eth_device *dev = eth_get_dev_by_name(bus->name); in smc911x_miiphy_read() local
226 if (dev) { in smc911x_miiphy_read()
227 int retval = smc911x_eth_phy_read(dev, phy, reg, &val); in smc911x_miiphy_read()
238 struct eth_device *dev = eth_get_dev_by_name(bus->name); in smc911x_miiphy_write() local
239 if (dev) in smc911x_miiphy_write()
240 return smc911x_eth_phy_write(dev, phy, reg, val); in smc911x_miiphy_write()
248 struct eth_device *dev; in smc911x_initialize() local
250 dev = malloc(sizeof(*dev)); in smc911x_initialize()
251 if (!dev) { in smc911x_initialize()
254 memset(dev, 0, sizeof(*dev)); in smc911x_initialize()
256 dev->iobase = base_addr; in smc911x_initialize()
259 if (smc911x_detect_chip(dev)) { in smc911x_initialize()
260 free(dev); in smc911x_initialize()
264 addrh = smc911x_get_mac_csr(dev, ADDRH); in smc911x_initialize()
265 addrl = smc911x_get_mac_csr(dev, ADDRL); in smc911x_initialize()
268 dev->enetaddr[0] = addrl; in smc911x_initialize()
269 dev->enetaddr[1] = addrl >> 8; in smc911x_initialize()
270 dev->enetaddr[2] = addrl >> 16; in smc911x_initialize()
271 dev->enetaddr[3] = addrl >> 24; in smc911x_initialize()
272 dev->enetaddr[4] = addrh; in smc911x_initialize()
273 dev->enetaddr[5] = addrh >> 8; in smc911x_initialize()
276 dev->init = smc911x_init; in smc911x_initialize()
277 dev->halt = smc911x_halt; in smc911x_initialize()
278 dev->send = smc911x_send; in smc911x_initialize()
279 dev->recv = smc911x_rx; in smc911x_initialize()
280 sprintf(dev->name, "%s-%hu", DRIVERNAME, dev_num); in smc911x_initialize()
282 eth_register(dev); in smc911x_initialize()
289 strncpy(mdiodev->name, dev->name, MDIO_NAME_LEN); in smc911x_initialize()