Lines Matching refs:mac_regs
26 static void pch_gbe_mac_read(struct pch_gbe_regs *mac_regs, u8 *addr) in pch_gbe_mac_read() argument
30 macid_hi = readl(&mac_regs->mac_adr[0].high); in pch_gbe_mac_read()
31 macid_lo = readl(&mac_regs->mac_adr[0].low) & 0xffff; in pch_gbe_mac_read()
42 static int pch_gbe_mac_write(struct pch_gbe_regs *mac_regs, u8 *addr) in pch_gbe_mac_write() argument
50 writel(macid_hi, &mac_regs->mac_adr[0].high); in pch_gbe_mac_write()
51 writel(macid_lo, &mac_regs->mac_adr[0].low); in pch_gbe_mac_write()
52 writel(0xfffe, &mac_regs->addr_mask); in pch_gbe_mac_write()
56 if (!(readl(&mac_regs->addr_mask) & PCH_GBE_BUSY)) in pch_gbe_mac_write()
69 struct pch_gbe_regs *mac_regs = priv->mac_regs; in pch_gbe_reset() local
75 writel(PCH_GBE_ALL_RST, &mac_regs->reset); in pch_gbe_reset()
91 &mac_regs->rgmii_ctrl); in pch_gbe_reset()
95 if (!(readl(&mac_regs->reset) & PCH_GBE_ALL_RST)) { in pch_gbe_reset()
101 return pch_gbe_mac_write(mac_regs, plat->enetaddr); in pch_gbe_reset()
114 struct pch_gbe_regs *mac_regs = priv->mac_regs; in pch_gbe_rx_descs_init() local
126 &mac_regs->rx_dsc_base); in pch_gbe_rx_descs_init()
128 &mac_regs->rx_dsc_size); in pch_gbe_rx_descs_init()
131 &mac_regs->rx_dsc_sw_p); in pch_gbe_rx_descs_init()
137 struct pch_gbe_regs *mac_regs = priv->mac_regs; in pch_gbe_tx_descs_init() local
145 &mac_regs->tx_dsc_base); in pch_gbe_tx_descs_init()
147 &mac_regs->tx_dsc_size); in pch_gbe_tx_descs_init()
149 &mac_regs->tx_dsc_sw_p); in pch_gbe_tx_descs_init()
152 static void pch_gbe_adjust_link(struct pch_gbe_regs *mac_regs, in pch_gbe_adjust_link() argument
160 clrbits_le32(&mac_regs->rgmii_ctrl, in pch_gbe_adjust_link()
162 clrbits_le32(&mac_regs->mode, in pch_gbe_adjust_link()
167 setbits_le32(&mac_regs->rgmii_ctrl, PCH_GBE_RGMII_RATE_125M); in pch_gbe_adjust_link()
168 setbits_le32(&mac_regs->mode, PCH_GBE_MODE_GMII_ETHER); in pch_gbe_adjust_link()
171 setbits_le32(&mac_regs->rgmii_ctrl, PCH_GBE_RGMII_RATE_25M); in pch_gbe_adjust_link()
172 setbits_le32(&mac_regs->mode, PCH_GBE_MODE_MII_ETHER); in pch_gbe_adjust_link()
175 setbits_le32(&mac_regs->rgmii_ctrl, PCH_GBE_RGMII_RATE_2_5M); in pch_gbe_adjust_link()
176 setbits_le32(&mac_regs->mode, PCH_GBE_MODE_MII_ETHER); in pch_gbe_adjust_link()
181 setbits_le32(&mac_regs->rgmii_ctrl, PCH_GBE_CRS_SEL); in pch_gbe_adjust_link()
182 setbits_le32(&mac_regs->mode, PCH_GBE_MODE_FULL_DUPLEX); in pch_gbe_adjust_link()
194 struct pch_gbe_regs *mac_regs = priv->mac_regs; in pch_gbe_start() local
203 writel(PCH_GBE_MODE_FR_BST, &mac_regs->mode); in pch_gbe_start()
205 writel(PCH_GBE_RX_TCPIPACC_OFF, &mac_regs->tcpip_acc); in pch_gbe_start()
207 writel(0, &mac_regs->rx_fctrl); in pch_gbe_start()
210 PCH_GBE_RH_RD_TRG_32, &mac_regs->rx_mode); in pch_gbe_start()
213 PCH_GBE_TM_SHORT_PKT, &mac_regs->tx_mode); in pch_gbe_start()
222 pch_gbe_adjust_link(mac_regs, priv->phydev); in pch_gbe_start()
228 writel(PCH_GBE_RX_DMA_EN | PCH_GBE_TX_DMA_EN, &mac_regs->dma_ctrl); in pch_gbe_start()
229 writel(PCH_GBE_MRE_MAC_RX_EN, &mac_regs->mac_rx_en); in pch_gbe_start()
246 struct pch_gbe_regs *mac_regs = priv->mac_regs; in pch_gbe_send() local
274 &mac_regs->tx_dsc_sw_p); in pch_gbe_send()
278 int_st = readl(&mac_regs->int_st); in pch_gbe_send()
292 struct pch_gbe_regs *mac_regs = priv->mac_regs; in pch_gbe_recv() local
299 readl(&mac_regs->int_st); in pch_gbe_recv()
300 hw_desc = readl(&mac_regs->rx_dsc_hw_p_hld); in pch_gbe_recv()
320 struct pch_gbe_regs *mac_regs = priv->mac_regs; in pch_gbe_free_pkt() local
332 &mac_regs->rx_dsc_sw_p); in pch_gbe_free_pkt()
337 static int pch_gbe_mdio_ready(struct pch_gbe_regs *mac_regs) in pch_gbe_mdio_ready() argument
342 if (readl(&mac_regs->miim) & PCH_GBE_MIIM_OPER_READY) in pch_gbe_mdio_ready()
353 struct pch_gbe_regs *mac_regs = bus->priv; in pch_gbe_mdio_read() local
356 if (pch_gbe_mdio_ready(mac_regs)) in pch_gbe_mdio_read()
362 writel(miim, &mac_regs->miim); in pch_gbe_mdio_read()
364 if (pch_gbe_mdio_ready(mac_regs)) in pch_gbe_mdio_read()
367 return readl(&mac_regs->miim) & 0xffff; in pch_gbe_mdio_read()
373 struct pch_gbe_regs *mac_regs = bus->priv; in pch_gbe_mdio_write() local
376 if (pch_gbe_mdio_ready(mac_regs)) in pch_gbe_mdio_write()
382 writel(miim, &mac_regs->miim); in pch_gbe_mdio_write()
384 if (pch_gbe_mdio_ready(mac_regs)) in pch_gbe_mdio_write()
390 static int pch_gbe_mdio_init(const char *name, struct pch_gbe_regs *mac_regs) in pch_gbe_mdio_init() argument
404 bus->priv = (void *)mac_regs; in pch_gbe_mdio_init()
452 priv->mac_regs = (struct pch_gbe_regs *)iobase; in pch_gbe_probe()
455 pch_gbe_mac_read(priv->mac_regs, plat->enetaddr); in pch_gbe_probe()
458 pch_gbe_mdio_init(dev->name, priv->mac_regs); in pch_gbe_probe()