Lines Matching refs:ether
179 struct w90p910_ether *ether = netdev_priv(dev); in update_linkspeed_register() local
182 val = __raw_readl(ether->reg + REG_MCMDR); in update_linkspeed_register()
202 __raw_writel(val, ether->reg + REG_MCMDR); in update_linkspeed_register()
207 struct w90p910_ether *ether = netdev_priv(dev); in update_linkspeed() local
211 pdev = ether->pdev; in update_linkspeed()
213 if (!mii_link_ok(ðer->mii)) { in update_linkspeed()
214 ether->linkflag = 0x0; in update_linkspeed()
220 if (ether->linkflag == 1) in update_linkspeed()
223 bmsr = w90p910_mdio_read(dev, ether->mii.phy_id, MII_BMSR); in update_linkspeed()
224 bmcr = w90p910_mdio_read(dev, ether->mii.phy_id, MII_BMCR); in update_linkspeed()
230 lpa = w90p910_mdio_read(dev, ether->mii.phy_id, MII_LPA); in update_linkspeed()
251 ether->linkflag = 0x01; in update_linkspeed()
259 struct w90p910_ether *ether = netdev_priv(dev); in w90p910_check_link() local
262 mod_timer(ðer->check_timer, jiffies + msecs_to_jiffies(1000)); in w90p910_check_link()
268 struct w90p910_ether *ether = netdev_priv(dev); in w90p910_write_cam() local
275 __raw_writel(lsw, ether->reg + REG_CAML_BASE + x * CAM_ENTRY_SIZE); in w90p910_write_cam()
276 __raw_writel(msw, ether->reg + REG_CAMM_BASE + x * CAM_ENTRY_SIZE); in w90p910_write_cam()
281 struct w90p910_ether *ether; in w90p910_init_desc() local
287 ether = netdev_priv(dev); in w90p910_init_desc()
288 pdev = ether->pdev; in w90p910_init_desc()
290 ether->tdesc = dma_alloc_coherent(&pdev->dev, sizeof(struct tran_pdesc), in w90p910_init_desc()
291 ðer->tdesc_phys, GFP_KERNEL); in w90p910_init_desc()
292 if (!ether->tdesc) in w90p910_init_desc()
295 ether->rdesc = dma_alloc_coherent(&pdev->dev, sizeof(struct recv_pdesc), in w90p910_init_desc()
296 ðer->rdesc_phys, GFP_KERNEL); in w90p910_init_desc()
297 if (!ether->rdesc) { in w90p910_init_desc()
299 ether->tdesc, ether->tdesc_phys); in w90p910_init_desc()
306 tdesc = &(ether->tdesc->desclist[i]); in w90p910_init_desc()
313 tdesc->next = ether->tdesc_phys + offset; in w90p910_init_desc()
314 tdesc->buffer = ether->tdesc_phys + in w90p910_init_desc()
320 ether->start_tx_ptr = ether->tdesc_phys; in w90p910_init_desc()
325 rdesc = &(ether->rdesc->desclist[i]); in w90p910_init_desc()
332 rdesc->next = ether->rdesc_phys + offset; in w90p910_init_desc()
334 rdesc->buffer = ether->rdesc_phys + in w90p910_init_desc()
338 ether->start_rx_ptr = ether->rdesc_phys; in w90p910_init_desc()
345 struct w90p910_ether *ether = netdev_priv(dev); in w90p910_set_fifo_threshold() local
349 __raw_writel(val, ether->reg + REG_FFTCR); in w90p910_set_fifo_threshold()
354 struct w90p910_ether *ether = netdev_priv(dev); in w90p910_return_default_idle() local
357 val = __raw_readl(ether->reg + REG_MCMDR); in w90p910_return_default_idle()
359 __raw_writel(val, ether->reg + REG_MCMDR); in w90p910_return_default_idle()
364 struct w90p910_ether *ether = netdev_priv(dev); in w90p910_trigger_rx() local
366 __raw_writel(ENSTART, ether->reg + REG_RSDR); in w90p910_trigger_rx()
371 struct w90p910_ether *ether = netdev_priv(dev); in w90p910_trigger_tx() local
373 __raw_writel(ENSTART, ether->reg + REG_TSDR); in w90p910_trigger_tx()
378 struct w90p910_ether *ether = netdev_priv(dev); in w90p910_enable_mac_interrupt() local
384 __raw_writel(val, ether->reg + REG_MIEN); in w90p910_enable_mac_interrupt()
390 struct w90p910_ether *ether = netdev_priv(dev); in w90p910_get_and_clear_int() local
392 *val = __raw_readl(ether->reg + REG_MISTA); in w90p910_get_and_clear_int()
393 __raw_writel(*val, ether->reg + REG_MISTA); in w90p910_get_and_clear_int()
398 struct w90p910_ether *ether = netdev_priv(dev); in w90p910_set_global_maccmd() local
401 val = __raw_readl(ether->reg + REG_MCMDR); in w90p910_set_global_maccmd()
403 __raw_writel(val, ether->reg + REG_MCMDR); in w90p910_set_global_maccmd()
408 struct w90p910_ether *ether = netdev_priv(dev); in w90p910_enable_cam() local
413 val = __raw_readl(ether->reg + REG_CAMEN); in w90p910_enable_cam()
415 __raw_writel(val, ether->reg + REG_CAMEN); in w90p910_enable_cam()
420 struct w90p910_ether *ether = netdev_priv(dev); in w90p910_enable_cam_command() local
424 __raw_writel(val, ether->reg + REG_CAMCMR); in w90p910_enable_cam_command()
429 struct w90p910_ether *ether = netdev_priv(dev); in w90p910_enable_tx() local
432 val = __raw_readl(ether->reg + REG_MCMDR); in w90p910_enable_tx()
439 __raw_writel(val, ether->reg + REG_MCMDR); in w90p910_enable_tx()
444 struct w90p910_ether *ether = netdev_priv(dev); in w90p910_enable_rx() local
447 val = __raw_readl(ether->reg + REG_MCMDR); in w90p910_enable_rx()
454 __raw_writel(val, ether->reg + REG_MCMDR); in w90p910_enable_rx()
459 struct w90p910_ether *ether = netdev_priv(dev); in w90p910_set_curdest() local
461 __raw_writel(ether->start_rx_ptr, ether->reg + REG_RXDLSA); in w90p910_set_curdest()
462 __raw_writel(ether->start_tx_ptr, ether->reg + REG_TXDLSA); in w90p910_set_curdest()
467 struct w90p910_ether *ether = netdev_priv(dev); in w90p910_reset_mac() local
480 ether->cur_tx = 0x0; in w90p910_reset_mac()
481 ether->finish_tx = 0x0; in w90p910_reset_mac()
482 ether->cur_rx = 0x0; in w90p910_reset_mac()
502 struct w90p910_ether *ether = netdev_priv(dev); in w90p910_mdio_write() local
506 pdev = ether->pdev; in w90p910_mdio_write()
508 __raw_writel(data, ether->reg + REG_MIID); in w90p910_mdio_write()
512 __raw_writel(val, ether->reg + REG_MIIDA); in w90p910_mdio_write()
515 if ((__raw_readl(ether->reg + REG_MIIDA) & PHYBUSY) == 0) in w90p910_mdio_write()
525 struct w90p910_ether *ether = netdev_priv(dev); in w90p910_mdio_read() local
529 pdev = ether->pdev; in w90p910_mdio_read()
533 __raw_writel(val, ether->reg + REG_MIIDA); in w90p910_mdio_read()
536 if ((__raw_readl(ether->reg + REG_MIIDA) & PHYBUSY) == 0) in w90p910_mdio_read()
544 data = __raw_readl(ether->reg + REG_MIID); in w90p910_mdio_read()
565 struct w90p910_ether *ether = netdev_priv(dev); in w90p910_ether_close() local
568 pdev = ether->pdev; in w90p910_ether_close()
571 ether->rdesc, ether->rdesc_phys); in w90p910_ether_close()
573 ether->tdesc, ether->tdesc_phys); in w90p910_ether_close()
577 del_timer_sync(ðer->check_timer); in w90p910_ether_close()
578 clk_disable(ether->rmiiclk); in w90p910_ether_close()
579 clk_disable(ether->clk); in w90p910_ether_close()
581 free_irq(ether->txirq, dev); in w90p910_ether_close()
582 free_irq(ether->rxirq, dev); in w90p910_ether_close()
589 struct w90p910_ether *ether; in w90p910_ether_stats() local
591 ether = netdev_priv(dev); in w90p910_ether_stats()
593 return ðer->stats; in w90p910_ether_stats()
599 struct w90p910_ether *ether; in w90p910_send_frame() local
604 ether = netdev_priv(dev); in w90p910_send_frame()
605 pdev = ether->pdev; in w90p910_send_frame()
607 txbd = ðer->tdesc->desclist[ether->cur_tx]; in w90p910_send_frame()
608 buffer = ether->tdesc->tran_buf[ether->cur_tx]; in w90p910_send_frame()
625 if (++ether->cur_tx >= TX_DESC_SIZE) in w90p910_send_frame()
626 ether->cur_tx = 0; in w90p910_send_frame()
628 txbd = ðer->tdesc->desclist[ether->cur_tx]; in w90p910_send_frame()
638 struct w90p910_ether *ether = netdev_priv(dev); in w90p910_ether_start_xmit() local
641 ether->skb = skb; in w90p910_ether_start_xmit()
650 struct w90p910_ether *ether; in w90p910_tx_interrupt() local
657 ether = netdev_priv(dev); in w90p910_tx_interrupt()
658 pdev = ether->pdev; in w90p910_tx_interrupt()
662 cur_entry = __raw_readl(ether->reg + REG_CTXDSA); in w90p910_tx_interrupt()
664 entry = ether->tdesc_phys + in w90p910_tx_interrupt()
665 offsetof(struct tran_pdesc, desclist[ether->finish_tx]); in w90p910_tx_interrupt()
668 txbd = ðer->tdesc->desclist[ether->finish_tx]; in w90p910_tx_interrupt()
670 if (++ether->finish_tx >= TX_DESC_SIZE) in w90p910_tx_interrupt()
671 ether->finish_tx = 0; in w90p910_tx_interrupt()
674 ether->stats.tx_packets++; in w90p910_tx_interrupt()
675 ether->stats.tx_bytes += txbd->sl & 0xFFFF; in w90p910_tx_interrupt()
677 ether->stats.tx_errors++; in w90p910_tx_interrupt()
686 entry = ether->tdesc_phys + in w90p910_tx_interrupt()
687 offsetof(struct tran_pdesc, desclist[ether->finish_tx]); in w90p910_tx_interrupt()
705 struct w90p910_ether *ether; in netdev_rx() local
712 ether = netdev_priv(dev); in netdev_rx()
713 pdev = ether->pdev; in netdev_rx()
715 rxbd = ðer->rdesc->desclist[ether->cur_rx]; in netdev_rx()
718 val = __raw_readl(ether->reg + REG_CRXDSA); in netdev_rx()
720 entry = ether->rdesc_phys + in netdev_rx()
721 offsetof(struct recv_pdesc, desclist[ether->cur_rx]); in netdev_rx()
730 data = ether->rdesc->recv_buf[ether->cur_rx]; in netdev_rx()
733 ether->stats.rx_dropped++; in netdev_rx()
741 ether->stats.rx_packets++; in netdev_rx()
742 ether->stats.rx_bytes += length; in netdev_rx()
745 ether->stats.rx_errors++; in netdev_rx()
749 ether->stats.rx_length_errors++; in netdev_rx()
752 ether->stats.rx_crc_errors++; in netdev_rx()
755 ether->stats.rx_frame_errors++; in netdev_rx()
758 ether->stats.rx_over_errors++; in netdev_rx()
765 if (++ether->cur_rx >= RX_DESC_SIZE) in netdev_rx()
766 ether->cur_rx = 0; in netdev_rx()
768 rxbd = ðer->rdesc->desclist[ether->cur_rx]; in netdev_rx()
776 struct w90p910_ether *ether; in w90p910_rx_interrupt() local
781 ether = netdev_priv(dev); in w90p910_rx_interrupt()
782 pdev = ether->pdev; in w90p910_rx_interrupt()
802 struct w90p910_ether *ether; in w90p910_ether_open() local
805 ether = netdev_priv(dev); in w90p910_ether_open()
806 pdev = ether->pdev; in w90p910_ether_open()
817 clk_enable(ether->rmiiclk); in w90p910_ether_open()
818 clk_enable(ether->clk); in w90p910_ether_open()
820 ether->rx_packets = 0x0; in w90p910_ether_open()
821 ether->rx_bytes = 0x0; in w90p910_ether_open()
823 if (request_irq(ether->txirq, w90p910_tx_interrupt, in w90p910_ether_open()
829 if (request_irq(ether->rxirq, w90p910_rx_interrupt, in w90p910_ether_open()
832 free_irq(ether->txirq, dev); in w90p910_ether_open()
836 mod_timer(ðer->check_timer, jiffies + msecs_to_jiffies(1000)); in w90p910_ether_open()
847 struct w90p910_ether *ether; in w90p910_ether_set_multicast_list() local
850 ether = netdev_priv(dev); in w90p910_ether_set_multicast_list()
858 __raw_writel(rx_mode, ether->reg + REG_CAMCMR); in w90p910_ether_set_multicast_list()
864 struct w90p910_ether *ether = netdev_priv(dev); in w90p910_ether_ioctl() local
867 return generic_mii_ioctl(ðer->mii, data, cmd, NULL); in w90p910_ether_ioctl()
879 struct w90p910_ether *ether = netdev_priv(dev); in w90p910_get_settings() local
880 return mii_ethtool_gset(ðer->mii, cmd); in w90p910_get_settings()
885 struct w90p910_ether *ether = netdev_priv(dev); in w90p910_set_settings() local
886 return mii_ethtool_sset(ðer->mii, cmd); in w90p910_set_settings()
891 struct w90p910_ether *ether = netdev_priv(dev); in w90p910_nway_reset() local
892 return mii_nway_restart(ðer->mii); in w90p910_nway_reset()
897 struct w90p910_ether *ether = netdev_priv(dev); in w90p910_get_link() local
898 return mii_link_ok(ðer->mii); in w90p910_get_link()
923 struct w90p910_ether *ether = netdev_priv(dev); in get_mac_address() local
927 pdev = ether->pdev; in get_mac_address()
944 struct w90p910_ether *ether = netdev_priv(dev); in w90p910_ether_setup() local
955 ether->cur_tx = 0x0; in w90p910_ether_setup()
956 ether->cur_rx = 0x0; in w90p910_ether_setup()
957 ether->finish_tx = 0x0; in w90p910_ether_setup()
958 ether->linkflag = 0x0; in w90p910_ether_setup()
959 ether->mii.phy_id = 0x01; in w90p910_ether_setup()
960 ether->mii.phy_id_mask = 0x1f; in w90p910_ether_setup()
961 ether->mii.reg_num_mask = 0x1f; in w90p910_ether_setup()
962 ether->mii.dev = dev; in w90p910_ether_setup()
963 ether->mii.mdio_read = w90p910_mdio_read; in w90p910_ether_setup()
964 ether->mii.mdio_write = w90p910_mdio_write; in w90p910_ether_setup()
966 setup_timer(ðer->check_timer, w90p910_check_link, in w90p910_ether_setup()
974 struct w90p910_ether *ether; in w90p910_ether_probe() local
982 ether = netdev_priv(dev); in w90p910_ether_probe()
984 ether->res = platform_get_resource(pdev, IORESOURCE_MEM, 0); in w90p910_ether_probe()
985 if (ether->res == NULL) { in w90p910_ether_probe()
991 if (!request_mem_region(ether->res->start, in w90p910_ether_probe()
992 resource_size(ether->res), pdev->name)) { in w90p910_ether_probe()
998 ether->reg = ioremap(ether->res->start, resource_size(ether->res)); in w90p910_ether_probe()
999 if (ether->reg == NULL) { in w90p910_ether_probe()
1005 ether->txirq = platform_get_irq(pdev, 0); in w90p910_ether_probe()
1006 if (ether->txirq < 0) { in w90p910_ether_probe()
1012 ether->rxirq = platform_get_irq(pdev, 1); in w90p910_ether_probe()
1013 if (ether->rxirq < 0) { in w90p910_ether_probe()
1021 ether->clk = clk_get(&pdev->dev, NULL); in w90p910_ether_probe()
1022 if (IS_ERR(ether->clk)) { in w90p910_ether_probe()
1024 error = PTR_ERR(ether->clk); in w90p910_ether_probe()
1028 ether->rmiiclk = clk_get(&pdev->dev, "RMII"); in w90p910_ether_probe()
1029 if (IS_ERR(ether->rmiiclk)) { in w90p910_ether_probe()
1031 error = PTR_ERR(ether->rmiiclk); in w90p910_ether_probe()
1035 ether->pdev = pdev; in w90p910_ether_probe()
1048 clk_put(ether->rmiiclk); in w90p910_ether_probe()
1050 clk_put(ether->clk); in w90p910_ether_probe()
1052 iounmap(ether->reg); in w90p910_ether_probe()
1054 release_mem_region(ether->res->start, resource_size(ether->res)); in w90p910_ether_probe()
1063 struct w90p910_ether *ether = netdev_priv(dev); in w90p910_ether_remove() local
1067 clk_put(ether->rmiiclk); in w90p910_ether_remove()
1068 clk_put(ether->clk); in w90p910_ether_remove()
1070 iounmap(ether->reg); in w90p910_ether_remove()
1071 release_mem_region(ether->res->start, resource_size(ether->res)); in w90p910_ether_remove()
1073 del_timer_sync(ðer->check_timer); in w90p910_ether_remove()