Lines Matching full:eth

58 	struct sh_eth_dev *eth = dev->priv;  in sh_eth_send()  local
59 int port = eth->port, ret = 0, timeout; in sh_eth_send()
60 struct sh_eth_info *port_info = &eth->port_info[port]; in sh_eth_send()
89 if (!(sh_eth_read(eth, EDTRR) & EDTRR_TRNS)) in sh_eth_send()
90 sh_eth_write(eth, EDTRR_TRNS, EDTRR); in sh_eth_send()
116 struct sh_eth_dev *eth = dev->priv; in sh_eth_recv() local
117 int port = eth->port, len = 0; in sh_eth_recv()
118 struct sh_eth_info *port_info = &eth->port_info[port]; in sh_eth_recv()
150 if (!(sh_eth_read(eth, EDRRR) & EDRRR_R)) in sh_eth_recv()
151 sh_eth_write(eth, EDRRR_R, EDRRR); in sh_eth_recv()
156 static int sh_eth_reset(struct sh_eth_dev *eth) in sh_eth_reset() argument
162 sh_eth_write(eth, EDSR_ENALL, EDSR); in sh_eth_reset()
165 sh_eth_write(eth, EDMR_SRST, EDMR); in sh_eth_reset()
167 if (!(sh_eth_read(eth, EDMR) & EDMR_SRST)) in sh_eth_reset()
179 sh_eth_write(eth, sh_eth_read(eth, EDMR) | EDMR_SRST, EDMR); in sh_eth_reset()
181 sh_eth_write(eth, sh_eth_read(eth, EDMR) & ~EDMR_SRST, EDMR); in sh_eth_reset()
187 static int sh_eth_tx_desc_init(struct sh_eth_dev *eth) in sh_eth_tx_desc_init() argument
189 int port = eth->port, i, ret = 0; in sh_eth_tx_desc_init()
191 struct sh_eth_info *port_info = &eth->port_info[port]; in sh_eth_tx_desc_init()
227 sh_eth_write(eth, ADDR_TO_PHY(port_info->tx_desc_base), TDLAR); in sh_eth_tx_desc_init()
229 sh_eth_write(eth, ADDR_TO_PHY(port_info->tx_desc_base), TDFAR); in sh_eth_tx_desc_init()
230 sh_eth_write(eth, ADDR_TO_PHY(cur_tx_desc), TDFXR); in sh_eth_tx_desc_init()
231 sh_eth_write(eth, 0x01, TDFFR);/* Last discriptor bit */ in sh_eth_tx_desc_init()
238 static int sh_eth_rx_desc_init(struct sh_eth_dev *eth) in sh_eth_rx_desc_init() argument
240 int port = eth->port, i , ret = 0; in sh_eth_rx_desc_init()
242 struct sh_eth_info *port_info = &eth->port_info[port]; in sh_eth_rx_desc_init()
294 sh_eth_write(eth, ADDR_TO_PHY(port_info->rx_desc_base), RDLAR); in sh_eth_rx_desc_init()
296 sh_eth_write(eth, ADDR_TO_PHY(port_info->rx_desc_base), RDFAR); in sh_eth_rx_desc_init()
297 sh_eth_write(eth, ADDR_TO_PHY(cur_rx_desc), RDFXR); in sh_eth_rx_desc_init()
298 sh_eth_write(eth, RDFFR_RDLF, RDFFR); in sh_eth_rx_desc_init()
311 static void sh_eth_tx_desc_free(struct sh_eth_dev *eth) in sh_eth_tx_desc_free() argument
313 int port = eth->port; in sh_eth_tx_desc_free()
314 struct sh_eth_info *port_info = &eth->port_info[port]; in sh_eth_tx_desc_free()
322 static void sh_eth_rx_desc_free(struct sh_eth_dev *eth) in sh_eth_rx_desc_free() argument
324 int port = eth->port; in sh_eth_rx_desc_free()
325 struct sh_eth_info *port_info = &eth->port_info[port]; in sh_eth_rx_desc_free()
338 static int sh_eth_desc_init(struct sh_eth_dev *eth) in sh_eth_desc_init() argument
342 ret = sh_eth_tx_desc_init(eth); in sh_eth_desc_init()
346 ret = sh_eth_rx_desc_init(eth); in sh_eth_desc_init()
352 sh_eth_tx_desc_free(eth); in sh_eth_desc_init()
358 static int sh_eth_phy_config(struct sh_eth_dev *eth) in sh_eth_phy_config() argument
360 int port = eth->port, ret = 0; in sh_eth_phy_config()
361 struct sh_eth_info *port_info = &eth->port_info[port]; in sh_eth_phy_config()
374 static int sh_eth_config(struct sh_eth_dev *eth, bd_t *bd) in sh_eth_config() argument
376 int port = eth->port, ret = 0; in sh_eth_config()
378 struct sh_eth_info *port_info = &eth->port_info[port]; in sh_eth_config()
383 sh_eth_write(eth, (sh_eth_read(eth, EDMR) & ~EMDR_DESC_R) | in sh_eth_config()
386 sh_eth_write(eth, 0, EESIPR); in sh_eth_config()
387 sh_eth_write(eth, 0, TRSCER); in sh_eth_config()
388 sh_eth_write(eth, 0, TFTR); in sh_eth_config()
389 sh_eth_write(eth, (FIFO_SIZE_T | FIFO_SIZE_R), FDR); in sh_eth_config()
390 sh_eth_write(eth, RMCR_RST, RMCR); in sh_eth_config()
392 sh_eth_write(eth, 0, RPADIR); in sh_eth_config()
394 sh_eth_write(eth, (FIFO_F_D_RFF | FIFO_F_D_RFD), FCFTR); in sh_eth_config()
397 sh_eth_write(eth, 0, ECSIPR); in sh_eth_config()
402 sh_eth_write(eth, val, MAHR); in sh_eth_config()
405 sh_eth_write(eth, val, MALR); in sh_eth_config()
407 sh_eth_write(eth, RFLR_RFL_MIN, RFLR); in sh_eth_config()
409 sh_eth_write(eth, 0, PIPR); in sh_eth_config()
412 sh_eth_write(eth, APR_AP, APR); in sh_eth_config()
413 sh_eth_write(eth, MPR_MP, MPR); in sh_eth_config()
414 sh_eth_write(eth, TPAUSER_TPAUSE, TPAUSER); in sh_eth_config()
418 sh_eth_write(eth, CONFIG_SH_ETHER_SH7734_MII, RMII_MII); in sh_eth_config()
421 sh_eth_write(eth, sh_eth_read(eth, RMIIMR) | 0x1, RMIIMR); in sh_eth_config()
424 ret = sh_eth_phy_config(eth); in sh_eth_config()
442 sh_eth_write(eth, GECMR_100B, GECMR); in sh_eth_config()
444 sh_eth_write(eth, 1, RTRATE); in sh_eth_config()
453 sh_eth_write(eth, GECMR_10B, GECMR); in sh_eth_config()
455 sh_eth_write(eth, 0, RTRATE); in sh_eth_config()
461 sh_eth_write(eth, GECMR_1000B, GECMR); in sh_eth_config()
468 sh_eth_write(eth, val | (ECMR_CHG_DM|ECMR_RE|ECMR_TE|ECMR_DM), in sh_eth_config()
472 sh_eth_write(eth, val | (ECMR_CHG_DM|ECMR_RE|ECMR_TE), ECMR); in sh_eth_config()
481 static void sh_eth_start(struct sh_eth_dev *eth) in sh_eth_start() argument
487 sh_eth_write(eth, EDRRR_R, EDRRR); in sh_eth_start()
490 static void sh_eth_stop(struct sh_eth_dev *eth) in sh_eth_stop() argument
492 sh_eth_write(eth, ~EDRRR_R, EDRRR); in sh_eth_stop()
498 struct sh_eth_dev *eth = dev->priv; in sh_eth_init() local
500 ret = sh_eth_reset(eth); in sh_eth_init()
504 ret = sh_eth_desc_init(eth); in sh_eth_init()
508 ret = sh_eth_config(eth, bd); in sh_eth_init()
512 sh_eth_start(eth); in sh_eth_init()
517 sh_eth_tx_desc_free(eth); in sh_eth_init()
518 sh_eth_rx_desc_free(eth); in sh_eth_init()
526 struct sh_eth_dev *eth = dev->priv; in sh_eth_halt() local
527 sh_eth_stop(eth); in sh_eth_halt()
533 struct sh_eth_dev *eth = NULL; in sh_eth_initialize() local
536 eth = (struct sh_eth_dev *)malloc(sizeof(struct sh_eth_dev)); in sh_eth_initialize()
537 if (!eth) { in sh_eth_initialize()
550 memset(eth, 0, sizeof(struct sh_eth_dev)); in sh_eth_initialize()
552 eth->port = CONFIG_SH_ETHER_USE_PORT; in sh_eth_initialize()
553 eth->port_info[eth->port].phy_addr = CONFIG_SH_ETHER_PHY_ADDR; in sh_eth_initialize()
555 dev->priv = (void *)eth; in sh_eth_initialize()
561 eth->port_info[eth->port].dev = dev; in sh_eth_initialize()
568 bb_miiphy_buses[0].priv = eth; in sh_eth_initialize()
590 if (eth) in sh_eth_initialize()
591 free(eth); in sh_eth_initialize()
605 struct sh_eth_dev *eth = bus->priv; in sh_eth_bb_mdio_active() local
607 sh_eth_write(eth, sh_eth_read(eth, PIR) | PIR_MMD, PIR); in sh_eth_bb_mdio_active()
614 struct sh_eth_dev *eth = bus->priv; in sh_eth_bb_mdio_tristate() local
616 sh_eth_write(eth, sh_eth_read(eth, PIR) & ~PIR_MMD, PIR); in sh_eth_bb_mdio_tristate()
623 struct sh_eth_dev *eth = bus->priv; in sh_eth_bb_set_mdio() local
626 sh_eth_write(eth, sh_eth_read(eth, PIR) | PIR_MDO, PIR); in sh_eth_bb_set_mdio()
628 sh_eth_write(eth, sh_eth_read(eth, PIR) & ~PIR_MDO, PIR); in sh_eth_bb_set_mdio()
635 struct sh_eth_dev *eth = bus->priv; in sh_eth_bb_get_mdio() local
637 *v = (sh_eth_read(eth, PIR) & PIR_MDI) >> 3; in sh_eth_bb_get_mdio()
644 struct sh_eth_dev *eth = bus->priv; in sh_eth_bb_set_mdc() local
647 sh_eth_write(eth, sh_eth_read(eth, PIR) | PIR_MDC, PIR); in sh_eth_bb_set_mdc()
649 sh_eth_write(eth, sh_eth_read(eth, PIR) & ~PIR_MDC, PIR); in sh_eth_bb_set_mdc()