Lines Matching refs:priv
188 static int phy_setup_op(struct zynq_gem_priv *priv, u32 phy_addr, u32 regnum, in phy_setup_op() argument
192 struct zynq_gem_regs *regs = priv->iobase; in phy_setup_op()
219 static int phyread(struct zynq_gem_priv *priv, u32 phy_addr, in phyread() argument
224 ret = phy_setup_op(priv, phy_addr, regnum, in phyread()
234 static int phywrite(struct zynq_gem_priv *priv, u32 phy_addr, in phywrite() argument
240 return phy_setup_op(priv, phy_addr, regnum, in phywrite()
248 struct zynq_gem_priv *priv = dev->priv; in phy_detection() local
250 if (priv->phyaddr != -1) { in phy_detection()
251 phyread(priv, priv->phyaddr, PHY_DETECT_REG, &phyreg); in phy_detection()
256 priv->phyaddr); in phy_detection()
260 priv->phyaddr); in phy_detection()
261 priv->phyaddr = -1; in phy_detection()
266 if (priv->phyaddr == -1) { in phy_detection()
269 phyread(priv, i, PHY_DETECT_REG, &phyreg); in phy_detection()
273 priv->phyaddr = i; in phy_detection()
287 struct zynq_gem_priv *priv = dev_get_priv(dev); in zynq_gem_setup_mac() local
288 struct zynq_gem_regs *regs = priv->iobase; in zynq_gem_setup_mac()
316 struct zynq_gem_priv *priv = dev_get_priv(dev); in zynq_phy_init() local
317 struct zynq_gem_regs *regs = priv->iobase; in zynq_phy_init()
328 if ((priv->interface != PHY_INTERFACE_MODE_SGMII) && in zynq_phy_init()
329 (priv->interface != PHY_INTERFACE_MODE_GMII)) { in zynq_phy_init()
337 priv->phydev = phy_connect(priv->bus, priv->phyaddr, dev, in zynq_phy_init()
338 priv->interface); in zynq_phy_init()
339 if (!priv->phydev) in zynq_phy_init()
342 priv->phydev->supported &= supported | ADVERTISED_Pause | in zynq_phy_init()
344 if (priv->max_speed) { in zynq_phy_init()
345 ret = phy_set_supported(priv->phydev, priv->max_speed); in zynq_phy_init()
350 priv->phydev->advertising = priv->phydev->supported; in zynq_phy_init()
352 if (priv->phy_of_handle > 0) in zynq_phy_init()
353 dev_set_of_offset(priv->phydev->dev, priv->phy_of_handle); in zynq_phy_init()
355 return phy_config(priv->phydev); in zynq_phy_init()
363 struct zynq_gem_priv *priv = dev_get_priv(dev); in zynq_gem_init() local
364 struct zynq_gem_regs *regs = priv->iobase; in zynq_gem_init()
365 struct emac_bd *dummy_tx_bd = &priv->tx_bd[TX_FREE_DESC]; in zynq_gem_init()
366 struct emac_bd *dummy_rx_bd = &priv->tx_bd[TX_FREE_DESC + 2]; in zynq_gem_init()
368 if (!priv->init) { in zynq_gem_init()
390 memset(priv->rx_bd, 0, RX_BUF * sizeof(struct emac_bd)); in zynq_gem_init()
393 priv->rx_bd[i].status = 0xF0000000; in zynq_gem_init()
394 priv->rx_bd[i].addr = in zynq_gem_init()
395 ((ulong)(priv->rxbuffers) + in zynq_gem_init()
399 priv->rx_bd[--i].addr |= ZYNQ_GEM_RXBUF_WRAP_MASK; in zynq_gem_init()
401 writel((ulong)priv->rx_bd, ®s->rxqbase); in zynq_gem_init()
422 priv->init++; in zynq_gem_init()
425 ret = phy_startup(priv->phydev); in zynq_gem_init()
429 if (!priv->phydev->link) { in zynq_gem_init()
430 printf("%s: No link.\n", priv->phydev->dev->name); in zynq_gem_init()
440 if (priv->interface == PHY_INTERFACE_MODE_SGMII && in zynq_gem_init()
441 priv->int_pcs) { in zynq_gem_init()
450 switch (priv->phydev->speed) { in zynq_gem_init()
466 ret = clk_set_rate(&priv->clk, clk_rate); in zynq_gem_init()
472 ret = clk_enable(&priv->clk); in zynq_gem_init()
487 struct zynq_gem_priv *priv = dev_get_priv(dev); in zynq_gem_send() local
488 struct zynq_gem_regs *regs = priv->iobase; in zynq_gem_send()
489 struct emac_bd *current_bd = &priv->tx_bd[1]; in zynq_gem_send()
492 memset(priv->tx_bd, 0, sizeof(struct emac_bd)); in zynq_gem_send()
494 priv->tx_bd->addr = (ulong)ptr; in zynq_gem_send()
495 priv->tx_bd->status = (len & ZYNQ_GEM_TXBUF_FRMLEN_MASK) | in zynq_gem_send()
504 writel((ulong)priv->tx_bd, ®s->txqbase); in zynq_gem_send()
511 addr = (ulong)priv->rxbuffers; in zynq_gem_send()
521 if (priv->tx_bd->status & ZYNQ_GEM_TXBUF_EXHAUSTED) in zynq_gem_send()
533 struct zynq_gem_priv *priv = dev_get_priv(dev); in zynq_gem_recv() local
534 struct emac_bd *current_bd = &priv->rx_bd[priv->rxbd_current]; in zynq_gem_recv()
560 struct zynq_gem_priv *priv = dev_get_priv(dev); in zynq_gem_free_pkt() local
561 struct emac_bd *current_bd = &priv->rx_bd[priv->rxbd_current]; in zynq_gem_free_pkt()
565 priv->rx_first_buf = priv->rxbd_current; in zynq_gem_free_pkt()
572 first_bd = &priv->rx_bd[priv->rx_first_buf]; in zynq_gem_free_pkt()
577 if ((++priv->rxbd_current) >= RX_BUF) in zynq_gem_free_pkt()
578 priv->rxbd_current = 0; in zynq_gem_free_pkt()
585 struct zynq_gem_priv *priv = dev_get_priv(dev); in zynq_gem_halt() local
586 struct zynq_gem_regs *regs = priv->iobase; in zynq_gem_halt()
610 struct zynq_gem_priv *priv = bus->priv; in zynq_gem_miiphy_read() local
614 ret = phyread(priv, addr, reg, &val); in zynq_gem_miiphy_read()
622 struct zynq_gem_priv *priv = bus->priv; in zynq_gem_miiphy_write() local
625 return phywrite(priv, addr, reg, value); in zynq_gem_miiphy_write()
631 struct zynq_gem_priv *priv = dev_get_priv(dev); in zynq_gem_probe() local
635 priv->rxbuffers = memalign(ARCH_DMA_MINALIGN, RX_BUF * PKTSIZE_ALIGN); in zynq_gem_probe()
636 if (!priv->rxbuffers) in zynq_gem_probe()
639 memset(priv->rxbuffers, 0, RX_BUF * PKTSIZE_ALIGN); in zynq_gem_probe()
650 priv->tx_bd = (struct emac_bd *)bd_space; in zynq_gem_probe()
651 priv->rx_bd = (struct emac_bd *)((ulong)bd_space + BD_SEPRN_SPACE); in zynq_gem_probe()
653 ret = clk_get_by_name(dev, "tx_clk", &priv->clk); in zynq_gem_probe()
659 priv->bus = mdio_alloc(); in zynq_gem_probe()
660 priv->bus->read = zynq_gem_miiphy_read; in zynq_gem_probe()
661 priv->bus->write = zynq_gem_miiphy_write; in zynq_gem_probe()
662 priv->bus->priv = priv; in zynq_gem_probe()
664 ret = mdio_register_seq(priv->bus, dev->seq); in zynq_gem_probe()
673 struct zynq_gem_priv *priv = dev_get_priv(dev); in zynq_gem_remove() local
675 free(priv->phydev); in zynq_gem_remove()
676 mdio_unregister(priv->bus); in zynq_gem_remove()
677 mdio_free(priv->bus); in zynq_gem_remove()
695 struct zynq_gem_priv *priv = dev_get_priv(dev); in zynq_gem_ofdata_to_platdata() local
700 priv->iobase = (struct zynq_gem_regs *)pdata->iobase; in zynq_gem_ofdata_to_platdata()
702 priv->phyaddr = -1; in zynq_gem_ofdata_to_platdata()
704 priv->phy_of_handle = fdtdec_lookup_phandle(gd->fdt_blob, node, in zynq_gem_ofdata_to_platdata()
706 if (priv->phy_of_handle > 0) in zynq_gem_ofdata_to_platdata()
707 priv->phyaddr = fdtdec_get_int(gd->fdt_blob, in zynq_gem_ofdata_to_platdata()
708 priv->phy_of_handle, "reg", -1); in zynq_gem_ofdata_to_platdata()
717 priv->interface = pdata->phy_interface; in zynq_gem_ofdata_to_platdata()
719 priv->max_speed = fdtdec_get_uint(gd->fdt_blob, priv->phy_of_handle, in zynq_gem_ofdata_to_platdata()
721 priv->int_pcs = fdtdec_get_bool(gd->fdt_blob, node, in zynq_gem_ofdata_to_platdata()
724 printf("ZYNQ GEM: %lx, phyaddr %x, interface %s\n", (ulong)priv->iobase, in zynq_gem_ofdata_to_platdata()
725 priv->phyaddr, phy_string_for_interface(priv->interface)); in zynq_gem_ofdata_to_platdata()