Lines Matching refs:dnet
38 u16 dnet_readw_mac(struct dnet_device *dnet, u16 reg) in dnet_readw_mac() argument
43 writel(reg, &dnet->regs->MACREG_ADDR); in dnet_readw_mac()
50 data_read = readl(&dnet->regs->MACREG_DATA); in dnet_readw_mac()
57 void dnet_writew_mac(struct dnet_device *dnet, u16 reg, u16 val) in dnet_writew_mac() argument
60 writel(val, &dnet->regs->MACREG_DATA); in dnet_writew_mac()
63 writel(reg | DNET_INTERNAL_WRITE, &dnet->regs->MACREG_ADDR); in dnet_writew_mac()
70 static void dnet_mdio_write(struct dnet_device *dnet, u8 reg, u16 value) in dnet_mdio_write() argument
75 dnet->phy_addr, reg, value); in dnet_mdio_write()
77 while (!(dnet_readw_mac(dnet, DNET_INTERNAL_GMII_MNG_CTL_REG) & in dnet_mdio_write()
88 tmp |= (dnet->phy_addr << 8); in dnet_mdio_write()
92 dnet_writew_mac(dnet, DNET_INTERNAL_GMII_MNG_DAT_REG, value); in dnet_mdio_write()
95 dnet_writew_mac(dnet, DNET_INTERNAL_GMII_MNG_CTL_REG, tmp); in dnet_mdio_write()
97 while (!(dnet_readw_mac(dnet, DNET_INTERNAL_GMII_MNG_CTL_REG) & in dnet_mdio_write()
102 static u16 dnet_mdio_read(struct dnet_device *dnet, u8 reg) in dnet_mdio_read() argument
106 while (!(dnet_readw_mac(dnet, DNET_INTERNAL_GMII_MNG_CTL_REG) & in dnet_mdio_read()
114 value = (dnet->phy_addr << 8); in dnet_mdio_read()
118 dnet_writew_mac(dnet, DNET_INTERNAL_GMII_MNG_CTL_REG, value); in dnet_mdio_read()
121 while (!(dnet_readw_mac(dnet, DNET_INTERNAL_GMII_MNG_CTL_REG) & in dnet_mdio_read()
125 value = dnet_readw_mac(dnet, DNET_INTERNAL_GMII_MNG_DAT_REG); in dnet_mdio_read()
128 dnet->phy_addr, reg, value); in dnet_mdio_read()
135 struct dnet_device *dnet = to_dnet(netdev); in dnet_send() local
149 if (wrsz < (DNET_FIFO_SIZE - readl(&dnet->regs->TX_FIFO_WCNT))) { in dnet_send()
151 writel(*bufp++, &dnet->regs->TX_DATA_FIFO); in dnet_send()
156 writel(tx_cmd, &dnet->regs->TX_LEN_FIFO); in dnet_send()
160 readl(&dnet->regs->TX_FIFO_WCNT), wrsz); in dnet_send()
170 struct dnet_device *dnet = to_dnet(netdev); in dnet_recv() local
177 while ((readl(&dnet->regs->RX_FIFO_WCNT) >> 16) == 0) { in dnet_recv()
183 cmd_word = readl(&dnet->regs->RX_LEN_FIFO); in dnet_recv()
194 *data_ptr++ = readl(&dnet->regs->RX_DATA_FIFO); in dnet_recv()
204 struct dnet_device *dnet = to_dnet(netdev); in dnet_set_hwaddr() local
208 dnet_writew_mac(dnet, DNET_INTERNAL_MAC_ADDR_0_REG, tmp); in dnet_set_hwaddr()
210 dnet_writew_mac(dnet, DNET_INTERNAL_MAC_ADDR_1_REG, tmp); in dnet_set_hwaddr()
212 dnet_writew_mac(dnet, DNET_INTERNAL_MAC_ADDR_2_REG, tmp); in dnet_set_hwaddr()
215 static void dnet_phy_reset(struct dnet_device *dnet) in dnet_phy_reset() argument
217 struct eth_device *netdev = &dnet->netdev; in dnet_phy_reset()
222 dnet_mdio_write(dnet, MII_ADVERTISE, adv); in dnet_phy_reset()
224 dnet_mdio_write(dnet, MII_BMCR, (BMCR_ANENABLE in dnet_phy_reset()
228 status = dnet_mdio_read(dnet, MII_BMSR); in dnet_phy_reset()
241 static int dnet_phy_init(struct dnet_device *dnet) in dnet_phy_init() argument
243 struct eth_device *netdev = &dnet->netdev; in dnet_phy_init()
251 dnet->phy_addr = i; in dnet_phy_init()
252 phy_id = dnet_mdio_read(dnet, MII_PHYSID1); in dnet_phy_init()
257 dnet_mdio_read(dnet, MII_PHYSID2)); in dnet_phy_init()
263 phy_id = dnet_mdio_read(dnet, MII_PHYSID1); in dnet_phy_init()
269 status = dnet_mdio_read(dnet, MII_BMSR); in dnet_phy_init()
272 dnet_phy_reset(dnet); in dnet_phy_init()
275 status = dnet_mdio_read(dnet, MII_BMSR); in dnet_phy_init()
287 adv = dnet_mdio_read(dnet, MII_ADVERTISE); in dnet_phy_init()
288 lpa = dnet_mdio_read(dnet, MII_LPA); in dnet_phy_init()
300 ctl_reg = dnet_readw_mac(dnet, DNET_INTERNAL_RXTX_CONTROL_REG); in dnet_phy_init()
307 dnet_writew_mac(dnet, DNET_INTERNAL_RXTX_CONTROL_REG, ctl_reg); in dnet_phy_init()
315 struct dnet_device *dnet = to_dnet(netdev); in dnet_init() local
326 if (dnet_phy_init(dnet) < 0) in dnet_init()
331 &dnet->regs->SYS_CTL); in dnet_init()
333 writel(0, &dnet->regs->SYS_CTL); in dnet_init()
335 config = dnet_readw_mac(dnet, DNET_INTERNAL_RXTX_CONTROL_REG); in dnet_init()
342 dnet_writew_mac(dnet, DNET_INTERNAL_RXTX_CONTROL_REG, config); in dnet_init()
345 dnet_writew_mac(dnet, DNET_INTERNAL_MODE_REG, in dnet_init()
353 struct dnet_device *dnet = to_dnet(netdev); in dnet_halt() local
356 dnet_writew_mac(dnet, DNET_INTERNAL_MODE_REG, 0); in dnet_halt()
361 struct dnet_device *dnet; in dnet_eth_initialize() local
365 dnet = malloc(sizeof(struct dnet_device)); in dnet_eth_initialize()
366 if (!dnet) { in dnet_eth_initialize()
370 memset(dnet, 0, sizeof(struct dnet_device)); in dnet_eth_initialize()
372 netdev = &dnet->netdev; in dnet_eth_initialize()
374 dnet->regs = (struct dnet_registers *)regs; in dnet_eth_initialize()
375 dnet->phy_addr = phy_addr; in dnet_eth_initialize()
383 dev_capa = readl(&dnet->regs->VERCAPS) & 0xFFFF; in dnet_eth_initialize()