Lines Matching refs:dev

17 u32 pkt_data_pull(struct eth_device *dev, u32 addr) \
19 void pkt_data_push(struct eth_device *dev, u32 addr, u32 val) \
22 static void smc911x_handle_mac_address(struct eth_device *dev) in smc911x_handle_mac_address() argument
25 uchar *m = dev->enetaddr; in smc911x_handle_mac_address()
29 smc911x_set_mac_csr(dev, ADDRL, addrl); in smc911x_handle_mac_address()
30 smc911x_set_mac_csr(dev, ADDRH, addrh); in smc911x_handle_mac_address()
35 static int smc911x_eth_phy_read(struct eth_device *dev, in smc911x_eth_phy_read() argument
38 while (smc911x_get_mac_csr(dev, MII_ACC) & MII_ACC_MII_BUSY) in smc911x_eth_phy_read()
41 smc911x_set_mac_csr(dev, MII_ACC, phy << 11 | reg << 6 | in smc911x_eth_phy_read()
44 while (smc911x_get_mac_csr(dev, MII_ACC) & MII_ACC_MII_BUSY) in smc911x_eth_phy_read()
47 *val = smc911x_get_mac_csr(dev, MII_DATA); in smc911x_eth_phy_read()
52 static int smc911x_eth_phy_write(struct eth_device *dev, in smc911x_eth_phy_write() argument
55 while (smc911x_get_mac_csr(dev, MII_ACC) & MII_ACC_MII_BUSY) in smc911x_eth_phy_write()
58 smc911x_set_mac_csr(dev, MII_DATA, val); in smc911x_eth_phy_write()
59 smc911x_set_mac_csr(dev, MII_ACC, in smc911x_eth_phy_write()
62 while (smc911x_get_mac_csr(dev, MII_ACC) & MII_ACC_MII_BUSY) in smc911x_eth_phy_write()
67 static int smc911x_phy_reset(struct eth_device *dev) in smc911x_phy_reset() argument
71 reg = smc911x_reg_read(dev, PMT_CTRL); in smc911x_phy_reset()
74 smc911x_reg_write(dev, PMT_CTRL, reg); in smc911x_phy_reset()
81 static void smc911x_phy_configure(struct eth_device *dev) in smc911x_phy_configure() argument
86 smc911x_phy_reset(dev); in smc911x_phy_configure()
88 smc911x_eth_phy_write(dev, 1, MII_BMCR, BMCR_RESET); in smc911x_phy_configure()
90 smc911x_eth_phy_write(dev, 1, MII_ADVERTISE, 0x01e1); in smc911x_phy_configure()
91 smc911x_eth_phy_write(dev, 1, MII_BMCR, BMCR_ANENABLE | in smc911x_phy_configure()
100 if (smc911x_eth_phy_read(dev, 1, MII_BMSR, &status) != 0) in smc911x_phy_configure()
112 static void smc911x_enable(struct eth_device *dev) in smc911x_enable() argument
115 smc911x_reg_write(dev, HW_CFG, 8 << 16 | HW_CFG_SF); in smc911x_enable()
117 smc911x_reg_write(dev, GPT_CFG, GPT_CFG_TIMER_EN | 10000); in smc911x_enable()
119 smc911x_reg_write(dev, TX_CFG, TX_CFG_TX_ON); in smc911x_enable()
122 smc911x_reg_write(dev, RX_CFG, 0); in smc911x_enable()
124 smc911x_set_mac_csr(dev, MAC_CR, MAC_CR_TXEN | MAC_CR_RXEN | in smc911x_enable()
129 static int smc911x_init(struct eth_device *dev, bd_t * bd) in smc911x_init() argument
131 struct chip_id *id = dev->priv; in smc911x_init()
135 smc911x_reset(dev); in smc911x_init()
138 smc911x_phy_configure(dev); in smc911x_init()
140 smc911x_handle_mac_address(dev); in smc911x_init()
143 smc911x_enable(dev); in smc911x_init()
148 static int smc911x_send(struct eth_device *dev, void *packet, int length) in smc911x_send() argument
154 smc911x_reg_write(dev, TX_DATA_FIFO, TX_CMD_A_INT_FIRST_SEG | in smc911x_send()
156 smc911x_reg_write(dev, TX_DATA_FIFO, length); in smc911x_send()
161 pkt_data_push(dev, TX_DATA_FIFO, *data++); in smc911x_send()
164 while (!((smc911x_reg_read(dev, TX_FIFO_INF) & in smc911x_send()
170 status = smc911x_reg_read(dev, TX_STATUS_FIFO) & in smc911x_send()
187 static void smc911x_halt(struct eth_device *dev) in smc911x_halt() argument
189 smc911x_reset(dev); in smc911x_halt()
190 smc911x_handle_mac_address(dev); in smc911x_halt()
193 static int smc911x_rx(struct eth_device *dev) in smc911x_rx() argument
199 if ((smc911x_reg_read(dev, RX_FIFO_INF) & RX_FIFO_INF_RXSUSED) >> 16) { in smc911x_rx()
200 status = smc911x_reg_read(dev, RX_STATUS_FIFO); in smc911x_rx()
203 smc911x_reg_write(dev, RX_CFG, 0); in smc911x_rx()
207 *data++ = pkt_data_pull(dev, RX_DATA_FIFO); in smc911x_rx()
226 struct eth_device *dev = eth_get_dev_by_name(bus->name); in smc911x_miiphy_read() local
227 if (dev) { in smc911x_miiphy_read()
228 int retval = smc911x_eth_phy_read(dev, phy, reg, &val); in smc911x_miiphy_read()
239 struct eth_device *dev = eth_get_dev_by_name(bus->name); in smc911x_miiphy_write() local
240 if (dev) in smc911x_miiphy_write()
241 return smc911x_eth_phy_write(dev, phy, reg, val); in smc911x_miiphy_write()
249 struct eth_device *dev; in smc911x_initialize() local
251 dev = malloc(sizeof(*dev)); in smc911x_initialize()
252 if (!dev) { in smc911x_initialize()
255 memset(dev, 0, sizeof(*dev)); in smc911x_initialize()
257 dev->iobase = base_addr; in smc911x_initialize()
260 if (smc911x_detect_chip(dev)) { in smc911x_initialize()
261 free(dev); in smc911x_initialize()
265 addrh = smc911x_get_mac_csr(dev, ADDRH); in smc911x_initialize()
266 addrl = smc911x_get_mac_csr(dev, ADDRL); in smc911x_initialize()
269 dev->enetaddr[0] = addrl; in smc911x_initialize()
270 dev->enetaddr[1] = addrl >> 8; in smc911x_initialize()
271 dev->enetaddr[2] = addrl >> 16; in smc911x_initialize()
272 dev->enetaddr[3] = addrl >> 24; in smc911x_initialize()
273 dev->enetaddr[4] = addrh; in smc911x_initialize()
274 dev->enetaddr[5] = addrh >> 8; in smc911x_initialize()
277 dev->init = smc911x_init; in smc911x_initialize()
278 dev->halt = smc911x_halt; in smc911x_initialize()
279 dev->send = smc911x_send; in smc911x_initialize()
280 dev->recv = smc911x_rx; in smc911x_initialize()
281 sprintf(dev->name, "%s-%hu", DRIVERNAME, dev_num); in smc911x_initialize()
283 eth_register(dev); in smc911x_initialize()
290 strncpy(mdiodev->name, dev->name, MDIO_NAME_LEN); in smc911x_initialize()