void __rgmii_enable_mdio(struct ocp_device *ocpdev, int input) { struct ibm_ocp_rgmii *dev = ocp_get_drvdata(ocpdev); u32 fer = in_be32(&dev->base->fer) & ~RGMII_FER_MDI_ALL; RGMII_DBG2("%d: mdio(%d)" NL, ocpdev->def->index, input); out_be32(&dev->base->fer, fer | RGMII_FER_MDI(input)); }
void rgmii_put_mdio(struct of_device *ofdev, int input) { struct rgmii_instance *dev = dev_get_drvdata(&ofdev->dev); struct rgmii_regs __iomem *p = dev->base; u32 fer; RGMII_DBG2(dev, "put_mdio(%d)" NL, input); if (!(dev->flags & EMAC_RGMII_FLAG_HAS_MDIO)) return; fer = in_be32(&p->fer); fer &= ~(0x00080000u >> input); out_be32(&p->fer, fer); (void)in_be32(&p->fer); DBG2(dev, " fer = 0x%08x\n", fer); mutex_unlock(&dev->lock); }