bgmac 35 drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c static u16 bcma_mdio_phy_read(struct bgmac *bgmac, u8 phyaddr, u8 reg) bgmac 54 drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c if (bgmac->bcma.core->id.id == BCMA_CORE_4706_MAC_GBIT) { bgmac 55 drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c core = bgmac->bcma.core->bus->drv_gmac_cmn.core; bgmac 59 drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c core = bgmac->bcma.core; bgmac 85 drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c static int bcma_mdio_phy_write(struct bgmac *bgmac, u8 phyaddr, u8 reg, bgmac 93 drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c if (bgmac->bcma.core->id.id == BCMA_CORE_4706_MAC_GBIT) { bgmac 94 drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c core = bgmac->bcma.core->bus->drv_gmac_cmn.core; bgmac 98 drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c core = bgmac->bcma.core; bgmac 108 drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c bcma_write32(bgmac->bcma.core, BGMAC_INT_STATUS, BGMAC_IS_MDIO); bgmac 109 drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c if (bcma_read32(bgmac->bcma.core, BGMAC_INT_STATUS) & BGMAC_IS_MDIO) bgmac 130 drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c static void bcma_mdio_phy_init(struct bgmac *bgmac) bgmac 132 drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c struct bcma_chipinfo *ci = &bgmac->bcma.core->bus->chipinfo; bgmac 141 drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c bcma_mdio_phy_write(bgmac, i, 0x1f, 0x008b); bgmac 142 drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c bcma_mdio_phy_write(bgmac, i, 0x15, 0x0100); bgmac 143 drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c bcma_mdio_phy_write(bgmac, i, 0x1f, 0x000f); bgmac 144 drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c bcma_mdio_phy_write(bgmac, i, 0x12, 0x2aaa); bgmac 145 drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c bcma_mdio_phy_write(bgmac, i, 0x1f, 0x000b); bgmac 152 drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c struct bcma_drv_cc *cc = &bgmac->bcma.core->bus->drv_cc; bgmac 157 drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c bcma_mdio_phy_write(bgmac, i, 0x1f, 0x000f); bgmac 158 drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c bcma_mdio_phy_write(bgmac, i, 0x16, 0x5284); bgmac 159 drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c bcma_mdio_phy_write(bgmac, i, 0x1f, 0x000b); bgmac 160 drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c bcma_mdio_phy_write(bgmac, i, 0x17, 0x0010); bgmac 161 drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c bcma_mdio_phy_write(bgmac, i, 0x1f, 0x000f); bgmac 162 drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c bcma_mdio_phy_write(bgmac, i, 0x16, 0x5296); bgmac 163 drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c bcma_mdio_phy_write(bgmac, i, 0x17, 0x1073); bgmac 164 drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c bcma_mdio_phy_write(bgmac, i, 0x17, 0x9073); bgmac 165 drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c bcma_mdio_phy_write(bgmac, i, 0x16, 0x52b6); bgmac 166 drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c bcma_mdio_phy_write(bgmac, i, 0x17, 0x9273); bgmac 167 drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c bcma_mdio_phy_write(bgmac, i, 0x1f, 0x000b); bgmac 173 drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c if (bgmac->net_dev && bgmac->net_dev->phydev) bgmac 174 drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c phy_init_hw(bgmac->net_dev->phydev); bgmac 180 drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c struct bgmac *bgmac = bus->priv; bgmac 181 drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c u8 phyaddr = bgmac->phyaddr; bgmac 186 drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c bcma_mdio_phy_write(bgmac, phyaddr, MII_BMCR, BMCR_RESET); bgmac 188 drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c if (bcma_mdio_phy_read(bgmac, phyaddr, MII_BMCR) & BMCR_RESET) bgmac 189 drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c dev_err(bgmac->dev, "PHY reset failed\n"); bgmac 190 drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c bcma_mdio_phy_init(bgmac); bgmac 210 drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c struct mii_bus *bcma_mdio_mii_register(struct bgmac *bgmac) bgmac 212 drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c struct bcma_device *core = bgmac->bcma.core; bgmac 225 drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c mii_bus->priv = bgmac; bgmac 230 drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c mii_bus->phy_mask = ~(1 << bgmac->phyaddr); bgmac 33 drivers/net/ethernet/broadcom/bgmac-bcma.c static u32 bcma_bgmac_read(struct bgmac *bgmac, u16 offset) bgmac 35 drivers/net/ethernet/broadcom/bgmac-bcma.c return bcma_read32(bgmac->bcma.core, offset); bgmac 38 drivers/net/ethernet/broadcom/bgmac-bcma.c static void bcma_bgmac_write(struct bgmac *bgmac, u16 offset, u32 value) bgmac 40 drivers/net/ethernet/broadcom/bgmac-bcma.c bcma_write32(bgmac->bcma.core, offset, value); bgmac 43 drivers/net/ethernet/broadcom/bgmac-bcma.c static u32 bcma_bgmac_idm_read(struct bgmac *bgmac, u16 offset) bgmac 45 drivers/net/ethernet/broadcom/bgmac-bcma.c return bcma_aread32(bgmac->bcma.core, offset); bgmac 48 drivers/net/ethernet/broadcom/bgmac-bcma.c static void bcma_bgmac_idm_write(struct bgmac *bgmac, u16 offset, u32 value) bgmac 50 drivers/net/ethernet/broadcom/bgmac-bcma.c return bcma_awrite32(bgmac->bcma.core, offset, value); bgmac 53 drivers/net/ethernet/broadcom/bgmac-bcma.c static bool bcma_bgmac_clk_enabled(struct bgmac *bgmac) bgmac 55 drivers/net/ethernet/broadcom/bgmac-bcma.c return bcma_core_is_enabled(bgmac->bcma.core); bgmac 58 drivers/net/ethernet/broadcom/bgmac-bcma.c static void bcma_bgmac_clk_enable(struct bgmac *bgmac, u32 flags) bgmac 60 drivers/net/ethernet/broadcom/bgmac-bcma.c bcma_core_enable(bgmac->bcma.core, flags); bgmac 63 drivers/net/ethernet/broadcom/bgmac-bcma.c static void bcma_bgmac_cco_ctl_maskset(struct bgmac *bgmac, u32 offset, bgmac 66 drivers/net/ethernet/broadcom/bgmac-bcma.c struct bcma_drv_cc *cc = &bgmac->bcma.core->bus->drv_cc; bgmac 71 drivers/net/ethernet/broadcom/bgmac-bcma.c static u32 bcma_bgmac_get_bus_clock(struct bgmac *bgmac) bgmac 73 drivers/net/ethernet/broadcom/bgmac-bcma.c struct bcma_drv_cc *cc = &bgmac->bcma.core->bus->drv_cc; bgmac 78 drivers/net/ethernet/broadcom/bgmac-bcma.c static void bcma_bgmac_cmn_maskset32(struct bgmac *bgmac, u16 offset, u32 mask, bgmac 81 drivers/net/ethernet/broadcom/bgmac-bcma.c bcma_maskset32(bgmac->bcma.cmn, offset, mask, set); bgmac 84 drivers/net/ethernet/broadcom/bgmac-bcma.c static int bcma_phy_connect(struct bgmac *bgmac) bgmac 90 drivers/net/ethernet/broadcom/bgmac-bcma.c snprintf(bus_id, sizeof(bus_id), PHY_ID_FMT, bgmac->mii_bus->id, bgmac 91 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->phyaddr); bgmac 92 drivers/net/ethernet/broadcom/bgmac-bcma.c phy_dev = phy_connect(bgmac->net_dev, bus_id, bgmac_adjust_link, bgmac 95 drivers/net/ethernet/broadcom/bgmac-bcma.c dev_err(bgmac->dev, "PHY connection failed\n"); bgmac 117 drivers/net/ethernet/broadcom/bgmac-bcma.c struct bgmac *bgmac; bgmac 121 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac = bgmac_alloc(&core->dev); bgmac 122 drivers/net/ethernet/broadcom/bgmac-bcma.c if (!bgmac) bgmac 125 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->bcma.core = core; bgmac 126 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->dma_dev = core->dma_dev; bgmac 127 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->irq = core->irq; bgmac 129 drivers/net/ethernet/broadcom/bgmac-bcma.c bcma_set_drvdata(core, bgmac); bgmac 131 drivers/net/ethernet/broadcom/bgmac-bcma.c if (bgmac->dev->of_node) bgmac 132 drivers/net/ethernet/broadcom/bgmac-bcma.c mac = of_get_mac_address(bgmac->dev->of_node); bgmac 147 drivers/net/ethernet/broadcom/bgmac-bcma.c dev_err(bgmac->dev, "Unsupported core_unit %d\n", bgmac 154 drivers/net/ethernet/broadcom/bgmac-bcma.c ether_addr_copy(bgmac->net_dev->dev_addr, mac); bgmac 159 drivers/net/ethernet/broadcom/bgmac-bcma.c dev_err(bgmac->dev, "GMAC CMN core not found (required for BCM4706)\n"); bgmac 163 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->bcma.cmn = core->bus->drv_gmac_cmn.core; bgmac 167 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->phyaddr = sprom->et0phyaddr; bgmac 170 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->phyaddr = sprom->et1phyaddr; bgmac 173 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->phyaddr = sprom->et2phyaddr; bgmac 176 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->phyaddr &= BGMAC_PHY_MASK; bgmac 177 drivers/net/ethernet/broadcom/bgmac-bcma.c if (bgmac->phyaddr == BGMAC_PHY_MASK) { bgmac 178 drivers/net/ethernet/broadcom/bgmac-bcma.c dev_err(bgmac->dev, "No PHY found\n"); bgmac 182 drivers/net/ethernet/broadcom/bgmac-bcma.c dev_info(bgmac->dev, "Found PHY addr: %d%s\n", bgmac->phyaddr, bgmac 183 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->phyaddr == BGMAC_PHY_NOREGS ? " (NOREGS)" : ""); bgmac 189 drivers/net/ethernet/broadcom/bgmac-bcma.c mii_bus = bcma_mdio_mii_register(bgmac); bgmac 194 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->mii_bus = mii_bus; bgmac 196 drivers/net/ethernet/broadcom/bgmac-bcma.c phydev = mdiobus_get_phy(bgmac->mii_bus, bgmac->phyaddr); bgmac 203 drivers/net/ethernet/broadcom/bgmac-bcma.c dev_err(bgmac->dev, "PCI setup not implemented\n"); bgmac 208 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->has_robosw = !!(sprom->boardflags_lo & BGMAC_BFL_ENETROBO); bgmac 209 drivers/net/ethernet/broadcom/bgmac-bcma.c if (bgmac->has_robosw) bgmac 210 drivers/net/ethernet/broadcom/bgmac-bcma.c dev_warn(bgmac->dev, "Support for Roboswitch not implemented\n"); bgmac 213 drivers/net/ethernet/broadcom/bgmac-bcma.c dev_warn(bgmac->dev, "Support for ADMtek ethernet switch not implemented\n"); bgmac 219 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->feature_flags |= BGMAC_FEAT_CLKCTLST; bgmac 222 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->feature_flags |= BGMAC_FEAT_FLW_CTRL2; bgmac 223 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->feature_flags |= BGMAC_FEAT_SET_RXQ_CLK; bgmac 227 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->feature_flags |= BGMAC_FEAT_SET_RXQ_CLK; bgmac 228 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->feature_flags |= BGMAC_FEAT_CLKCTLST; bgmac 229 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->feature_flags |= BGMAC_FEAT_FLW_CTRL1; bgmac 230 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->feature_flags |= BGMAC_FEAT_SW_TYPE_PHY; bgmac 233 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->feature_flags |= BGMAC_FEAT_SW_TYPE_RGMII; bgmac 234 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->feature_flags |= BGMAC_FEAT_IOST_ATTACHED; bgmac 237 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->feature_flags |= BGMAC_FEAT_SW_TYPE_EPHYRMII; bgmac 240 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->feature_flags |= BGMAC_FEAT_CLKCTLST; bgmac 241 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->feature_flags |= BGMAC_FEAT_SET_RXQ_CLK; bgmac 243 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->feature_flags |= BGMAC_FEAT_IOST_ATTACHED; bgmac 245 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->feature_flags |= BGMAC_FEAT_CC4_IF_SW_TYPE; bgmac 247 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->feature_flags |= bgmac 250 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->feature_flags |= BGMAC_FEAT_IRQ_ID_OOB_6; bgmac 251 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->feature_flags |= BGMAC_FEAT_CC7_IF_TYPE_RGMII; bgmac 255 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->feature_flags |= BGMAC_FEAT_SET_RXQ_CLK; bgmac 256 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->feature_flags |= BGMAC_FEAT_CLKCTLST; bgmac 257 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->feature_flags |= BGMAC_FEAT_FLW_CTRL1; bgmac 258 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->feature_flags |= BGMAC_FEAT_SW_TYPE_PHY; bgmac 260 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->feature_flags |= BGMAC_FEAT_SW_TYPE_RGMII; bgmac 261 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->feature_flags |= BGMAC_FEAT_IOST_ATTACHED; bgmac 268 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->feature_flags |= BGMAC_FEAT_CLKCTLST; bgmac 269 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->feature_flags |= BGMAC_FEAT_NO_RESET; bgmac 270 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->feature_flags |= BGMAC_FEAT_FORCE_SPEED_2500; bgmac 273 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->feature_flags |= BGMAC_FEAT_CLKCTLST; bgmac 274 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->feature_flags |= BGMAC_FEAT_SET_RXQ_CLK; bgmac 278 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->feature_flags |= BGMAC_FEAT_MISC_PLL_REQ; bgmac 281 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->feature_flags |= BGMAC_FEAT_CMN_PHY_CTL; bgmac 282 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->feature_flags |= BGMAC_FEAT_NO_CLR_MIB; bgmac 286 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->feature_flags |= BGMAC_FEAT_CMDCFG_SR_REV4; bgmac 287 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->feature_flags |= BGMAC_FEAT_TX_MASK_SETUP; bgmac 288 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->feature_flags |= BGMAC_FEAT_RX_MASK_SETUP; bgmac 291 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->read = bcma_bgmac_read; bgmac 292 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->write = bcma_bgmac_write; bgmac 293 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->idm_read = bcma_bgmac_idm_read; bgmac 294 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->idm_write = bcma_bgmac_idm_write; bgmac 295 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->clk_enabled = bcma_bgmac_clk_enabled; bgmac 296 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->clk_enable = bcma_bgmac_clk_enable; bgmac 297 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->cco_ctl_maskset = bcma_bgmac_cco_ctl_maskset; bgmac 298 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->get_bus_clock = bcma_bgmac_get_bus_clock; bgmac 299 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->cmn_maskset32 = bcma_bgmac_cmn_maskset32; bgmac 300 drivers/net/ethernet/broadcom/bgmac-bcma.c if (bgmac->mii_bus) bgmac 301 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->phy_connect = bcma_phy_connect; bgmac 303 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac->phy_connect = bgmac_phy_connect_direct; bgmac 305 drivers/net/ethernet/broadcom/bgmac-bcma.c err = bgmac_enet_probe(bgmac); bgmac 312 drivers/net/ethernet/broadcom/bgmac-bcma.c bcma_mdio_mii_unregister(bgmac->mii_bus); bgmac 321 drivers/net/ethernet/broadcom/bgmac-bcma.c struct bgmac *bgmac = bcma_get_drvdata(core); bgmac 323 drivers/net/ethernet/broadcom/bgmac-bcma.c bcma_mdio_mii_unregister(bgmac->mii_bus); bgmac 324 drivers/net/ethernet/broadcom/bgmac-bcma.c bgmac_enet_remove(bgmac); bgmac 326 drivers/net/ethernet/broadcom/bgmac-bcma.c kfree(bgmac); bgmac 36 drivers/net/ethernet/broadcom/bgmac-platform.c static u32 platform_bgmac_read(struct bgmac *bgmac, u16 offset) bgmac 38 drivers/net/ethernet/broadcom/bgmac-platform.c return readl(bgmac->plat.base + offset); bgmac 41 drivers/net/ethernet/broadcom/bgmac-platform.c static void platform_bgmac_write(struct bgmac *bgmac, u16 offset, u32 value) bgmac 43 drivers/net/ethernet/broadcom/bgmac-platform.c writel(value, bgmac->plat.base + offset); bgmac 46 drivers/net/ethernet/broadcom/bgmac-platform.c static u32 platform_bgmac_idm_read(struct bgmac *bgmac, u16 offset) bgmac 48 drivers/net/ethernet/broadcom/bgmac-platform.c return readl(bgmac->plat.idm_base + offset); bgmac 51 drivers/net/ethernet/broadcom/bgmac-platform.c static void platform_bgmac_idm_write(struct bgmac *bgmac, u16 offset, u32 value) bgmac 53 drivers/net/ethernet/broadcom/bgmac-platform.c writel(value, bgmac->plat.idm_base + offset); bgmac 56 drivers/net/ethernet/broadcom/bgmac-platform.c static bool platform_bgmac_clk_enabled(struct bgmac *bgmac) bgmac 58 drivers/net/ethernet/broadcom/bgmac-platform.c if (!bgmac->plat.idm_base) bgmac 61 drivers/net/ethernet/broadcom/bgmac-platform.c if ((bgmac_idm_read(bgmac, BCMA_IOCTL) & BGMAC_CLK_EN) != BGMAC_CLK_EN) bgmac 63 drivers/net/ethernet/broadcom/bgmac-platform.c if (bgmac_idm_read(bgmac, BCMA_RESET_CTL) & BCMA_RESET_CTL_RESET) bgmac 68 drivers/net/ethernet/broadcom/bgmac-platform.c static void platform_bgmac_clk_enable(struct bgmac *bgmac, u32 flags) bgmac 72 drivers/net/ethernet/broadcom/bgmac-platform.c if (!bgmac->plat.idm_base) bgmac 79 drivers/net/ethernet/broadcom/bgmac-platform.c val = bgmac_idm_read(bgmac, BCMA_RESET_CTL); bgmac 81 drivers/net/ethernet/broadcom/bgmac-platform.c bgmac_idm_write(bgmac, BCMA_RESET_CTL, 0); bgmac 82 drivers/net/ethernet/broadcom/bgmac-platform.c bgmac_idm_read(bgmac, BCMA_RESET_CTL); bgmac 86 drivers/net/ethernet/broadcom/bgmac-platform.c val = bgmac_idm_read(bgmac, BCMA_IOCTL); bgmac 91 drivers/net/ethernet/broadcom/bgmac-platform.c bgmac_idm_write(bgmac, BCMA_IOCTL, val); bgmac 92 drivers/net/ethernet/broadcom/bgmac-platform.c bgmac_idm_read(bgmac, BCMA_IOCTL); bgmac 96 drivers/net/ethernet/broadcom/bgmac-platform.c static void platform_bgmac_cco_ctl_maskset(struct bgmac *bgmac, u32 offset, bgmac 103 drivers/net/ethernet/broadcom/bgmac-platform.c static u32 platform_bgmac_get_bus_clock(struct bgmac *bgmac) bgmac 111 drivers/net/ethernet/broadcom/bgmac-platform.c static void platform_bgmac_cmn_maskset32(struct bgmac *bgmac, u16 offset, bgmac 120 drivers/net/ethernet/broadcom/bgmac-platform.c struct bgmac *bgmac = netdev_priv(net_dev); bgmac 123 drivers/net/ethernet/broadcom/bgmac-platform.c if (!bgmac->plat.nicpm_base) bgmac 128 drivers/net/ethernet/broadcom/bgmac-platform.c bgmac->plat.nicpm_base + NICPM_PADRING_CFG); bgmac 131 drivers/net/ethernet/broadcom/bgmac-platform.c switch (bgmac->net_dev->phydev->speed) { bgmac 146 drivers/net/ethernet/broadcom/bgmac-platform.c writel(val, bgmac->plat.nicpm_base + NICPM_IOMUX_CTRL); bgmac 148 drivers/net/ethernet/broadcom/bgmac-platform.c bgmac_adjust_link(bgmac->net_dev); bgmac 151 drivers/net/ethernet/broadcom/bgmac-platform.c static int platform_phy_connect(struct bgmac *bgmac) bgmac 155 drivers/net/ethernet/broadcom/bgmac-platform.c if (bgmac->plat.nicpm_base) bgmac 156 drivers/net/ethernet/broadcom/bgmac-platform.c phy_dev = of_phy_get_and_connect(bgmac->net_dev, bgmac 157 drivers/net/ethernet/broadcom/bgmac-platform.c bgmac->dev->of_node, bgmac 160 drivers/net/ethernet/broadcom/bgmac-platform.c phy_dev = of_phy_get_and_connect(bgmac->net_dev, bgmac 161 drivers/net/ethernet/broadcom/bgmac-platform.c bgmac->dev->of_node, bgmac 164 drivers/net/ethernet/broadcom/bgmac-platform.c dev_err(bgmac->dev, "PHY connection failed\n"); bgmac 174 drivers/net/ethernet/broadcom/bgmac-platform.c struct bgmac *bgmac; bgmac 178 drivers/net/ethernet/broadcom/bgmac-platform.c bgmac = bgmac_alloc(&pdev->dev); bgmac 179 drivers/net/ethernet/broadcom/bgmac-platform.c if (!bgmac) bgmac 182 drivers/net/ethernet/broadcom/bgmac-platform.c platform_set_drvdata(pdev, bgmac); bgmac 185 drivers/net/ethernet/broadcom/bgmac-platform.c bgmac->feature_flags |= BGMAC_FEAT_CLKCTLST; bgmac 186 drivers/net/ethernet/broadcom/bgmac-platform.c bgmac->feature_flags |= BGMAC_FEAT_NO_RESET; bgmac 187 drivers/net/ethernet/broadcom/bgmac-platform.c bgmac->feature_flags |= BGMAC_FEAT_CMDCFG_SR_REV4; bgmac 188 drivers/net/ethernet/broadcom/bgmac-platform.c bgmac->feature_flags |= BGMAC_FEAT_TX_MASK_SETUP; bgmac 189 drivers/net/ethernet/broadcom/bgmac-platform.c bgmac->feature_flags |= BGMAC_FEAT_RX_MASK_SETUP; bgmac 190 drivers/net/ethernet/broadcom/bgmac-platform.c bgmac->feature_flags |= BGMAC_FEAT_IDM_MASK; bgmac 192 drivers/net/ethernet/broadcom/bgmac-platform.c bgmac->dev = &pdev->dev; bgmac 193 drivers/net/ethernet/broadcom/bgmac-platform.c bgmac->dma_dev = &pdev->dev; bgmac 197 drivers/net/ethernet/broadcom/bgmac-platform.c ether_addr_copy(bgmac->net_dev->dev_addr, mac_addr); bgmac 201 drivers/net/ethernet/broadcom/bgmac-platform.c bgmac->irq = platform_get_irq(pdev, 0); bgmac 202 drivers/net/ethernet/broadcom/bgmac-platform.c if (bgmac->irq < 0) bgmac 203 drivers/net/ethernet/broadcom/bgmac-platform.c return bgmac->irq; bgmac 211 drivers/net/ethernet/broadcom/bgmac-platform.c bgmac->plat.base = devm_ioremap_resource(&pdev->dev, regs); bgmac 212 drivers/net/ethernet/broadcom/bgmac-platform.c if (IS_ERR(bgmac->plat.base)) bgmac 213 drivers/net/ethernet/broadcom/bgmac-platform.c return PTR_ERR(bgmac->plat.base); bgmac 217 drivers/net/ethernet/broadcom/bgmac-platform.c bgmac->plat.idm_base = devm_ioremap_resource(&pdev->dev, regs); bgmac 218 drivers/net/ethernet/broadcom/bgmac-platform.c if (IS_ERR(bgmac->plat.idm_base)) bgmac 219 drivers/net/ethernet/broadcom/bgmac-platform.c return PTR_ERR(bgmac->plat.idm_base); bgmac 220 drivers/net/ethernet/broadcom/bgmac-platform.c bgmac->feature_flags &= ~BGMAC_FEAT_IDM_MASK; bgmac 225 drivers/net/ethernet/broadcom/bgmac-platform.c bgmac->plat.nicpm_base = devm_ioremap_resource(&pdev->dev, bgmac 227 drivers/net/ethernet/broadcom/bgmac-platform.c if (IS_ERR(bgmac->plat.nicpm_base)) bgmac 228 drivers/net/ethernet/broadcom/bgmac-platform.c return PTR_ERR(bgmac->plat.nicpm_base); bgmac 231 drivers/net/ethernet/broadcom/bgmac-platform.c bgmac->read = platform_bgmac_read; bgmac 232 drivers/net/ethernet/broadcom/bgmac-platform.c bgmac->write = platform_bgmac_write; bgmac 233 drivers/net/ethernet/broadcom/bgmac-platform.c bgmac->idm_read = platform_bgmac_idm_read; bgmac 234 drivers/net/ethernet/broadcom/bgmac-platform.c bgmac->idm_write = platform_bgmac_idm_write; bgmac 235 drivers/net/ethernet/broadcom/bgmac-platform.c bgmac->clk_enabled = platform_bgmac_clk_enabled; bgmac 236 drivers/net/ethernet/broadcom/bgmac-platform.c bgmac->clk_enable = platform_bgmac_clk_enable; bgmac 237 drivers/net/ethernet/broadcom/bgmac-platform.c bgmac->cco_ctl_maskset = platform_bgmac_cco_ctl_maskset; bgmac 238 drivers/net/ethernet/broadcom/bgmac-platform.c bgmac->get_bus_clock = platform_bgmac_get_bus_clock; bgmac 239 drivers/net/ethernet/broadcom/bgmac-platform.c bgmac->cmn_maskset32 = platform_bgmac_cmn_maskset32; bgmac 241 drivers/net/ethernet/broadcom/bgmac-platform.c bgmac->phy_connect = platform_phy_connect; bgmac 243 drivers/net/ethernet/broadcom/bgmac-platform.c bgmac->phy_connect = bgmac_phy_connect_direct; bgmac 244 drivers/net/ethernet/broadcom/bgmac-platform.c bgmac->feature_flags |= BGMAC_FEAT_FORCE_SPEED_2500; bgmac 247 drivers/net/ethernet/broadcom/bgmac-platform.c return bgmac_enet_probe(bgmac); bgmac 252 drivers/net/ethernet/broadcom/bgmac-platform.c struct bgmac *bgmac = platform_get_drvdata(pdev); bgmac 254 drivers/net/ethernet/broadcom/bgmac-platform.c bgmac_enet_remove(bgmac); bgmac 262 drivers/net/ethernet/broadcom/bgmac-platform.c struct bgmac *bgmac = dev_get_drvdata(dev); bgmac 264 drivers/net/ethernet/broadcom/bgmac-platform.c return bgmac_enet_suspend(bgmac); bgmac 269 drivers/net/ethernet/broadcom/bgmac-platform.c struct bgmac *bgmac = dev_get_drvdata(dev); bgmac 271 drivers/net/ethernet/broadcom/bgmac-platform.c return bgmac_enet_resume(bgmac); bgmac 21 drivers/net/ethernet/broadcom/bgmac.c static bool bgmac_wait_value(struct bgmac *bgmac, u16 reg, u32 mask, bgmac 28 drivers/net/ethernet/broadcom/bgmac.c val = bgmac_read(bgmac, reg); bgmac 33 drivers/net/ethernet/broadcom/bgmac.c dev_err(bgmac->dev, "Timeout waiting for reg 0x%X\n", reg); bgmac 41 drivers/net/ethernet/broadcom/bgmac.c static void bgmac_dma_tx_reset(struct bgmac *bgmac, struct bgmac_dma_ring *ring) bgmac 53 drivers/net/ethernet/broadcom/bgmac.c bgmac_write(bgmac, ring->mmio_base + BGMAC_DMA_TX_CTL, bgmac 56 drivers/net/ethernet/broadcom/bgmac.c val = bgmac_read(bgmac, ring->mmio_base + BGMAC_DMA_TX_STATUS); bgmac 67 drivers/net/ethernet/broadcom/bgmac.c dev_err(bgmac->dev, "Timeout suspending DMA TX ring 0x%X (BGMAC_DMA_TX_STAT: 0x%08X)\n", bgmac 71 drivers/net/ethernet/broadcom/bgmac.c bgmac_write(bgmac, ring->mmio_base + BGMAC_DMA_TX_CTL, 0); bgmac 72 drivers/net/ethernet/broadcom/bgmac.c if (!bgmac_wait_value(bgmac, bgmac 76 drivers/net/ethernet/broadcom/bgmac.c dev_warn(bgmac->dev, "DMA TX ring 0x%X wasn't disabled on time, waiting additional 300us\n", bgmac 79 drivers/net/ethernet/broadcom/bgmac.c val = bgmac_read(bgmac, ring->mmio_base + BGMAC_DMA_TX_STATUS); bgmac 81 drivers/net/ethernet/broadcom/bgmac.c dev_err(bgmac->dev, "Reset of DMA TX ring 0x%X failed\n", bgmac 86 drivers/net/ethernet/broadcom/bgmac.c static void bgmac_dma_tx_enable(struct bgmac *bgmac, bgmac 91 drivers/net/ethernet/broadcom/bgmac.c ctl = bgmac_read(bgmac, ring->mmio_base + BGMAC_DMA_TX_CTL); bgmac 92 drivers/net/ethernet/broadcom/bgmac.c if (bgmac->feature_flags & BGMAC_FEAT_TX_MASK_SETUP) { bgmac 107 drivers/net/ethernet/broadcom/bgmac.c bgmac_write(bgmac, ring->mmio_base + BGMAC_DMA_TX_CTL, ctl); bgmac 111 drivers/net/ethernet/broadcom/bgmac.c bgmac_dma_tx_add_buf(struct bgmac *bgmac, struct bgmac_dma_ring *ring, bgmac 131 drivers/net/ethernet/broadcom/bgmac.c static netdev_tx_t bgmac_dma_tx_add(struct bgmac *bgmac, bgmac 135 drivers/net/ethernet/broadcom/bgmac.c struct device *dma_dev = bgmac->dma_dev; bgmac 136 drivers/net/ethernet/broadcom/bgmac.c struct net_device *net_dev = bgmac->net_dev; bgmac 144 drivers/net/ethernet/broadcom/bgmac.c netdev_err(bgmac->net_dev, "Too long skb (%d)\n", skb->len); bgmac 157 drivers/net/ethernet/broadcom/bgmac.c netdev_err(bgmac->net_dev, "TX ring is full, queue should be stopped!\n"); bgmac 171 drivers/net/ethernet/broadcom/bgmac.c bgmac_dma_tx_add_buf(bgmac, ring, index, skb_headlen(skb), flags); bgmac 188 drivers/net/ethernet/broadcom/bgmac.c bgmac_dma_tx_add_buf(bgmac, ring, index, len, flags); bgmac 200 drivers/net/ethernet/broadcom/bgmac.c bgmac_write(bgmac, ring->mmio_base + BGMAC_DMA_TX_INDEX, bgmac 224 drivers/net/ethernet/broadcom/bgmac.c netdev_err(bgmac->net_dev, "Mapping error of skb on ring 0x%X\n", bgmac 235 drivers/net/ethernet/broadcom/bgmac.c static void bgmac_dma_tx_free(struct bgmac *bgmac, struct bgmac_dma_ring *ring) bgmac 237 drivers/net/ethernet/broadcom/bgmac.c struct device *dma_dev = bgmac->dma_dev; bgmac 242 drivers/net/ethernet/broadcom/bgmac.c empty_slot = bgmac_read(bgmac, ring->mmio_base + BGMAC_DMA_TX_STATUS); bgmac 269 drivers/net/ethernet/broadcom/bgmac.c bgmac->net_dev->stats.tx_bytes += slot->skb->len; bgmac 270 drivers/net/ethernet/broadcom/bgmac.c bgmac->net_dev->stats.tx_packets++; bgmac 286 drivers/net/ethernet/broadcom/bgmac.c netdev_completed_queue(bgmac->net_dev, pkts_compl, bytes_compl); bgmac 288 drivers/net/ethernet/broadcom/bgmac.c if (netif_queue_stopped(bgmac->net_dev)) bgmac 289 drivers/net/ethernet/broadcom/bgmac.c netif_wake_queue(bgmac->net_dev); bgmac 292 drivers/net/ethernet/broadcom/bgmac.c static void bgmac_dma_rx_reset(struct bgmac *bgmac, struct bgmac_dma_ring *ring) bgmac 297 drivers/net/ethernet/broadcom/bgmac.c bgmac_write(bgmac, ring->mmio_base + BGMAC_DMA_RX_CTL, 0); bgmac 298 drivers/net/ethernet/broadcom/bgmac.c if (!bgmac_wait_value(bgmac, bgmac 302 drivers/net/ethernet/broadcom/bgmac.c dev_err(bgmac->dev, "Reset of ring 0x%X RX failed\n", bgmac 306 drivers/net/ethernet/broadcom/bgmac.c static void bgmac_dma_rx_enable(struct bgmac *bgmac, bgmac 311 drivers/net/ethernet/broadcom/bgmac.c ctl = bgmac_read(bgmac, ring->mmio_base + BGMAC_DMA_RX_CTL); bgmac 316 drivers/net/ethernet/broadcom/bgmac.c if (bgmac->feature_flags & BGMAC_FEAT_RX_MASK_SETUP) { bgmac 330 drivers/net/ethernet/broadcom/bgmac.c bgmac_write(bgmac, ring->mmio_base + BGMAC_DMA_RX_CTL, ctl); bgmac 333 drivers/net/ethernet/broadcom/bgmac.c static int bgmac_dma_rx_skb_for_slot(struct bgmac *bgmac, bgmac 336 drivers/net/ethernet/broadcom/bgmac.c struct device *dma_dev = bgmac->dma_dev; bgmac 355 drivers/net/ethernet/broadcom/bgmac.c netdev_err(bgmac->net_dev, "DMA mapping error\n"); bgmac 367 drivers/net/ethernet/broadcom/bgmac.c static void bgmac_dma_rx_update_index(struct bgmac *bgmac, bgmac 372 drivers/net/ethernet/broadcom/bgmac.c bgmac_write(bgmac, ring->mmio_base + BGMAC_DMA_RX_INDEX, bgmac 377 drivers/net/ethernet/broadcom/bgmac.c static void bgmac_dma_rx_setup_desc(struct bgmac *bgmac, bgmac 412 drivers/net/ethernet/broadcom/bgmac.c static int bgmac_dma_rx_read(struct bgmac *bgmac, struct bgmac_dma_ring *ring, bgmac 418 drivers/net/ethernet/broadcom/bgmac.c end_slot = bgmac_read(bgmac, ring->mmio_base + BGMAC_DMA_RX_STATUS); bgmac 425 drivers/net/ethernet/broadcom/bgmac.c struct device *dma_dev = bgmac->dma_dev; bgmac 435 drivers/net/ethernet/broadcom/bgmac.c if (bgmac_dma_rx_skb_for_slot(bgmac, slot)) { bgmac 450 drivers/net/ethernet/broadcom/bgmac.c netdev_err(bgmac->net_dev, "Found poisoned packet at slot %d, DMA issue!\n", bgmac 453 drivers/net/ethernet/broadcom/bgmac.c bgmac->net_dev->stats.rx_errors++; bgmac 458 drivers/net/ethernet/broadcom/bgmac.c netdev_err(bgmac->net_dev, "Found oversized packet at slot %d, DMA issue!\n", bgmac 461 drivers/net/ethernet/broadcom/bgmac.c bgmac->net_dev->stats.rx_length_errors++; bgmac 462 drivers/net/ethernet/broadcom/bgmac.c bgmac->net_dev->stats.rx_errors++; bgmac 471 drivers/net/ethernet/broadcom/bgmac.c netdev_err(bgmac->net_dev, "build_skb failed\n"); bgmac 473 drivers/net/ethernet/broadcom/bgmac.c bgmac->net_dev->stats.rx_errors++; bgmac 482 drivers/net/ethernet/broadcom/bgmac.c skb->protocol = eth_type_trans(skb, bgmac->net_dev); bgmac 483 drivers/net/ethernet/broadcom/bgmac.c bgmac->net_dev->stats.rx_bytes += len; bgmac 484 drivers/net/ethernet/broadcom/bgmac.c bgmac->net_dev->stats.rx_packets++; bgmac 485 drivers/net/ethernet/broadcom/bgmac.c napi_gro_receive(&bgmac->napi, skb); bgmac 489 drivers/net/ethernet/broadcom/bgmac.c bgmac_dma_rx_setup_desc(bgmac, ring, ring->start); bgmac 498 drivers/net/ethernet/broadcom/bgmac.c bgmac_dma_rx_update_index(bgmac, ring); bgmac 504 drivers/net/ethernet/broadcom/bgmac.c static bool bgmac_dma_unaligned(struct bgmac *bgmac, bgmac 510 drivers/net/ethernet/broadcom/bgmac.c bgmac_write(bgmac, ring->mmio_base + BGMAC_DMA_TX_RINGLO, bgmac 512 drivers/net/ethernet/broadcom/bgmac.c if (bgmac_read(bgmac, ring->mmio_base + BGMAC_DMA_TX_RINGLO)) bgmac 516 drivers/net/ethernet/broadcom/bgmac.c bgmac_write(bgmac, ring->mmio_base + BGMAC_DMA_RX_RINGLO, bgmac 518 drivers/net/ethernet/broadcom/bgmac.c if (bgmac_read(bgmac, ring->mmio_base + BGMAC_DMA_RX_RINGLO)) bgmac 525 drivers/net/ethernet/broadcom/bgmac.c static void bgmac_dma_tx_ring_free(struct bgmac *bgmac, bgmac 528 drivers/net/ethernet/broadcom/bgmac.c struct device *dma_dev = bgmac->dma_dev; bgmac 552 drivers/net/ethernet/broadcom/bgmac.c static void bgmac_dma_rx_ring_free(struct bgmac *bgmac, bgmac 555 drivers/net/ethernet/broadcom/bgmac.c struct device *dma_dev = bgmac->dma_dev; bgmac 572 drivers/net/ethernet/broadcom/bgmac.c static void bgmac_dma_ring_desc_free(struct bgmac *bgmac, bgmac 576 drivers/net/ethernet/broadcom/bgmac.c struct device *dma_dev = bgmac->dma_dev; bgmac 588 drivers/net/ethernet/broadcom/bgmac.c static void bgmac_dma_cleanup(struct bgmac *bgmac) bgmac 593 drivers/net/ethernet/broadcom/bgmac.c bgmac_dma_tx_ring_free(bgmac, &bgmac->tx_ring[i]); bgmac 596 drivers/net/ethernet/broadcom/bgmac.c bgmac_dma_rx_ring_free(bgmac, &bgmac->rx_ring[i]); bgmac 599 drivers/net/ethernet/broadcom/bgmac.c static void bgmac_dma_free(struct bgmac *bgmac) bgmac 604 drivers/net/ethernet/broadcom/bgmac.c bgmac_dma_ring_desc_free(bgmac, &bgmac->tx_ring[i], bgmac 608 drivers/net/ethernet/broadcom/bgmac.c bgmac_dma_ring_desc_free(bgmac, &bgmac->rx_ring[i], bgmac 612 drivers/net/ethernet/broadcom/bgmac.c static int bgmac_dma_alloc(struct bgmac *bgmac) bgmac 614 drivers/net/ethernet/broadcom/bgmac.c struct device *dma_dev = bgmac->dma_dev; bgmac 624 drivers/net/ethernet/broadcom/bgmac.c if (!(bgmac->feature_flags & BGMAC_FEAT_IDM_MASK)) { bgmac 625 drivers/net/ethernet/broadcom/bgmac.c if (!(bgmac_idm_read(bgmac, BCMA_IOST) & BCMA_IOST_DMA64)) { bgmac 626 drivers/net/ethernet/broadcom/bgmac.c dev_err(bgmac->dev, "Core does not report 64-bit DMA\n"); bgmac 632 drivers/net/ethernet/broadcom/bgmac.c ring = &bgmac->tx_ring[i]; bgmac 641 drivers/net/ethernet/broadcom/bgmac.c dev_err(bgmac->dev, "Allocation of TX ring 0x%X failed\n", bgmac 646 drivers/net/ethernet/broadcom/bgmac.c ring->unaligned = bgmac_dma_unaligned(bgmac, ring, bgmac 657 drivers/net/ethernet/broadcom/bgmac.c ring = &bgmac->rx_ring[i]; bgmac 666 drivers/net/ethernet/broadcom/bgmac.c dev_err(bgmac->dev, "Allocation of RX ring 0x%X failed\n", bgmac 671 drivers/net/ethernet/broadcom/bgmac.c ring->unaligned = bgmac_dma_unaligned(bgmac, ring, bgmac 682 drivers/net/ethernet/broadcom/bgmac.c bgmac_dma_free(bgmac); bgmac 686 drivers/net/ethernet/broadcom/bgmac.c static int bgmac_dma_init(struct bgmac *bgmac) bgmac 692 drivers/net/ethernet/broadcom/bgmac.c ring = &bgmac->tx_ring[i]; bgmac 695 drivers/net/ethernet/broadcom/bgmac.c bgmac_dma_tx_enable(bgmac, ring); bgmac 696 drivers/net/ethernet/broadcom/bgmac.c bgmac_write(bgmac, ring->mmio_base + BGMAC_DMA_TX_RINGLO, bgmac 698 drivers/net/ethernet/broadcom/bgmac.c bgmac_write(bgmac, ring->mmio_base + BGMAC_DMA_TX_RINGHI, bgmac 701 drivers/net/ethernet/broadcom/bgmac.c bgmac_dma_tx_enable(bgmac, ring); bgmac 710 drivers/net/ethernet/broadcom/bgmac.c ring = &bgmac->rx_ring[i]; bgmac 713 drivers/net/ethernet/broadcom/bgmac.c bgmac_dma_rx_enable(bgmac, ring); bgmac 714 drivers/net/ethernet/broadcom/bgmac.c bgmac_write(bgmac, ring->mmio_base + BGMAC_DMA_RX_RINGLO, bgmac 716 drivers/net/ethernet/broadcom/bgmac.c bgmac_write(bgmac, ring->mmio_base + BGMAC_DMA_RX_RINGHI, bgmac 719 drivers/net/ethernet/broadcom/bgmac.c bgmac_dma_rx_enable(bgmac, ring); bgmac 724 drivers/net/ethernet/broadcom/bgmac.c err = bgmac_dma_rx_skb_for_slot(bgmac, &ring->slots[j]); bgmac 728 drivers/net/ethernet/broadcom/bgmac.c bgmac_dma_rx_setup_desc(bgmac, ring, j); bgmac 731 drivers/net/ethernet/broadcom/bgmac.c bgmac_dma_rx_update_index(bgmac, ring); bgmac 737 drivers/net/ethernet/broadcom/bgmac.c bgmac_dma_cleanup(bgmac); bgmac 749 drivers/net/ethernet/broadcom/bgmac.c static void bgmac_cmdcfg_maskset(struct bgmac *bgmac, u32 mask, u32 set, bgmac 752 drivers/net/ethernet/broadcom/bgmac.c u32 cmdcfg = bgmac_read(bgmac, BGMAC_CMDCFG); bgmac 756 drivers/net/ethernet/broadcom/bgmac.c if (bgmac->feature_flags & BGMAC_FEAT_CMDCFG_SR_REV4) bgmac 761 drivers/net/ethernet/broadcom/bgmac.c bgmac_set(bgmac, BGMAC_CMDCFG, cmdcfg_sr); bgmac 765 drivers/net/ethernet/broadcom/bgmac.c bgmac_write(bgmac, BGMAC_CMDCFG, new_val); bgmac 767 drivers/net/ethernet/broadcom/bgmac.c bgmac_mask(bgmac, BGMAC_CMDCFG, ~cmdcfg_sr); bgmac 771 drivers/net/ethernet/broadcom/bgmac.c static void bgmac_write_mac_address(struct bgmac *bgmac, u8 *addr) bgmac 776 drivers/net/ethernet/broadcom/bgmac.c bgmac_write(bgmac, BGMAC_MACADDR_HIGH, tmp); bgmac 778 drivers/net/ethernet/broadcom/bgmac.c bgmac_write(bgmac, BGMAC_MACADDR_LOW, tmp); bgmac 783 drivers/net/ethernet/broadcom/bgmac.c struct bgmac *bgmac = netdev_priv(net_dev); bgmac 786 drivers/net/ethernet/broadcom/bgmac.c bgmac_cmdcfg_maskset(bgmac, ~0, BGMAC_CMDCFG_PROM, true); bgmac 788 drivers/net/ethernet/broadcom/bgmac.c bgmac_cmdcfg_maskset(bgmac, ~BGMAC_CMDCFG_PROM, 0, true); bgmac 792 drivers/net/ethernet/broadcom/bgmac.c static void bgmac_chip_stats_update(struct bgmac *bgmac) bgmac 796 drivers/net/ethernet/broadcom/bgmac.c if (!(bgmac->feature_flags & BGMAC_FEAT_NO_CLR_MIB)) { bgmac 798 drivers/net/ethernet/broadcom/bgmac.c bgmac->mib_tx_regs[i] = bgmac 799 drivers/net/ethernet/broadcom/bgmac.c bgmac_read(bgmac, bgmac 802 drivers/net/ethernet/broadcom/bgmac.c bgmac->mib_rx_regs[i] = bgmac 803 drivers/net/ethernet/broadcom/bgmac.c bgmac_read(bgmac, bgmac 811 drivers/net/ethernet/broadcom/bgmac.c static void bgmac_clear_mib(struct bgmac *bgmac) bgmac 815 drivers/net/ethernet/broadcom/bgmac.c if (bgmac->feature_flags & BGMAC_FEAT_NO_CLR_MIB) bgmac 818 drivers/net/ethernet/broadcom/bgmac.c bgmac_set(bgmac, BGMAC_DEV_CTL, BGMAC_DC_MROR); bgmac 820 drivers/net/ethernet/broadcom/bgmac.c bgmac_read(bgmac, BGMAC_TX_GOOD_OCTETS + (i * 4)); bgmac 822 drivers/net/ethernet/broadcom/bgmac.c bgmac_read(bgmac, BGMAC_RX_GOOD_OCTETS + (i * 4)); bgmac 826 drivers/net/ethernet/broadcom/bgmac.c static void bgmac_mac_speed(struct bgmac *bgmac) bgmac 831 drivers/net/ethernet/broadcom/bgmac.c switch (bgmac->mac_speed) { bgmac 845 drivers/net/ethernet/broadcom/bgmac.c dev_err(bgmac->dev, "Unsupported speed: %d\n", bgmac 846 drivers/net/ethernet/broadcom/bgmac.c bgmac->mac_speed); bgmac 849 drivers/net/ethernet/broadcom/bgmac.c if (bgmac->mac_duplex == DUPLEX_HALF) bgmac 852 drivers/net/ethernet/broadcom/bgmac.c bgmac_cmdcfg_maskset(bgmac, mask, set, true); bgmac 855 drivers/net/ethernet/broadcom/bgmac.c static void bgmac_miiconfig(struct bgmac *bgmac) bgmac 857 drivers/net/ethernet/broadcom/bgmac.c if (bgmac->feature_flags & BGMAC_FEAT_FORCE_SPEED_2500) { bgmac 858 drivers/net/ethernet/broadcom/bgmac.c if (!(bgmac->feature_flags & BGMAC_FEAT_IDM_MASK)) { bgmac 859 drivers/net/ethernet/broadcom/bgmac.c bgmac_idm_write(bgmac, BCMA_IOCTL, bgmac 860 drivers/net/ethernet/broadcom/bgmac.c bgmac_idm_read(bgmac, BCMA_IOCTL) | bgmac 863 drivers/net/ethernet/broadcom/bgmac.c bgmac->mac_speed = SPEED_2500; bgmac 864 drivers/net/ethernet/broadcom/bgmac.c bgmac->mac_duplex = DUPLEX_FULL; bgmac 865 drivers/net/ethernet/broadcom/bgmac.c bgmac_mac_speed(bgmac); bgmac 869 drivers/net/ethernet/broadcom/bgmac.c imode = (bgmac_read(bgmac, BGMAC_DEV_STATUS) & bgmac 872 drivers/net/ethernet/broadcom/bgmac.c bgmac->mac_speed = SPEED_100; bgmac 873 drivers/net/ethernet/broadcom/bgmac.c bgmac->mac_duplex = DUPLEX_FULL; bgmac 874 drivers/net/ethernet/broadcom/bgmac.c bgmac_mac_speed(bgmac); bgmac 879 drivers/net/ethernet/broadcom/bgmac.c static void bgmac_chip_reset_idm_config(struct bgmac *bgmac) bgmac 883 drivers/net/ethernet/broadcom/bgmac.c iost = bgmac_idm_read(bgmac, BCMA_IOST); bgmac 884 drivers/net/ethernet/broadcom/bgmac.c if (bgmac->feature_flags & BGMAC_FEAT_IOST_ATTACHED) bgmac 888 drivers/net/ethernet/broadcom/bgmac.c if (!(bgmac->feature_flags & BGMAC_FEAT_NO_RESET)) { bgmac 893 drivers/net/ethernet/broadcom/bgmac.c if (!bgmac->has_robosw) bgmac 896 drivers/net/ethernet/broadcom/bgmac.c bgmac_clk_enable(bgmac, flags); bgmac 899 drivers/net/ethernet/broadcom/bgmac.c if (iost & BGMAC_BCMA_IOST_ATTACHED && !bgmac->has_robosw) bgmac 900 drivers/net/ethernet/broadcom/bgmac.c bgmac_idm_write(bgmac, BCMA_IOCTL, bgmac 901 drivers/net/ethernet/broadcom/bgmac.c bgmac_idm_read(bgmac, BCMA_IOCTL) & bgmac 906 drivers/net/ethernet/broadcom/bgmac.c static void bgmac_chip_reset(struct bgmac *bgmac) bgmac 911 drivers/net/ethernet/broadcom/bgmac.c if (bgmac_clk_enabled(bgmac)) { bgmac 912 drivers/net/ethernet/broadcom/bgmac.c if (!bgmac->stats_grabbed) { bgmac 914 drivers/net/ethernet/broadcom/bgmac.c bgmac->stats_grabbed = true; bgmac 918 drivers/net/ethernet/broadcom/bgmac.c bgmac_dma_tx_reset(bgmac, &bgmac->tx_ring[i]); bgmac 920 drivers/net/ethernet/broadcom/bgmac.c bgmac_cmdcfg_maskset(bgmac, ~0, BGMAC_CMDCFG_ML, false); bgmac 924 drivers/net/ethernet/broadcom/bgmac.c bgmac_dma_rx_reset(bgmac, &bgmac->rx_ring[i]); bgmac 929 drivers/net/ethernet/broadcom/bgmac.c if (!(bgmac->feature_flags & BGMAC_FEAT_IDM_MASK)) bgmac 930 drivers/net/ethernet/broadcom/bgmac.c bgmac_chip_reset_idm_config(bgmac); bgmac 933 drivers/net/ethernet/broadcom/bgmac.c if (bgmac->feature_flags & BGMAC_FEAT_MISC_PLL_REQ) { bgmac 934 drivers/net/ethernet/broadcom/bgmac.c bgmac_set(bgmac, BCMA_CLKCTLST, bgmac 936 drivers/net/ethernet/broadcom/bgmac.c bgmac_wait_value(bgmac, BCMA_CLKCTLST, bgmac 942 drivers/net/ethernet/broadcom/bgmac.c if (bgmac->feature_flags & BGMAC_FEAT_SW_TYPE_PHY) { bgmac 950 drivers/net/ethernet/broadcom/bgmac.c dev_err(bgmac->dev, "Failed to parse et_swtype (%s)\n", bgmac 955 drivers/net/ethernet/broadcom/bgmac.c } else if (bgmac->feature_flags & BGMAC_FEAT_SW_TYPE_EPHYRMII) { bgmac 958 drivers/net/ethernet/broadcom/bgmac.c } else if (bgmac->feature_flags & BGMAC_FEAT_SW_TYPE_RGMII) { bgmac 962 drivers/net/ethernet/broadcom/bgmac.c bgmac_cco_ctl_maskset(bgmac, 1, ~(BGMAC_CHIPCTL_1_IF_TYPE_MASK | bgmac 965 drivers/net/ethernet/broadcom/bgmac.c } else if (bgmac->feature_flags & BGMAC_FEAT_CC4_IF_SW_TYPE) { bgmac 973 drivers/net/ethernet/broadcom/bgmac.c dev_err(bgmac->dev, "Failed to parse et_swtype (%s)\n", bgmac 976 drivers/net/ethernet/broadcom/bgmac.c } else if (bgmac->feature_flags & BGMAC_FEAT_CC4_IF_SW_TYPE_RGMII) { bgmac 980 drivers/net/ethernet/broadcom/bgmac.c bgmac_cco_ctl_maskset(bgmac, 4, ~(BGMAC_CHIPCTL_4_IF_TYPE_MASK | bgmac 983 drivers/net/ethernet/broadcom/bgmac.c } else if (bgmac->feature_flags & BGMAC_FEAT_CC7_IF_TYPE_RGMII) { bgmac 984 drivers/net/ethernet/broadcom/bgmac.c bgmac_cco_ctl_maskset(bgmac, 7, ~BGMAC_CHIPCTL_7_IF_TYPE_MASK, bgmac 993 drivers/net/ethernet/broadcom/bgmac.c if (bgmac->feature_flags & BGMAC_FEAT_CMDCFG_SR_REV4) bgmac 998 drivers/net/ethernet/broadcom/bgmac.c bgmac_cmdcfg_maskset(bgmac, bgmac 1017 drivers/net/ethernet/broadcom/bgmac.c bgmac->mac_speed = SPEED_UNKNOWN; bgmac 1018 drivers/net/ethernet/broadcom/bgmac.c bgmac->mac_duplex = DUPLEX_UNKNOWN; bgmac 1020 drivers/net/ethernet/broadcom/bgmac.c bgmac_clear_mib(bgmac); bgmac 1021 drivers/net/ethernet/broadcom/bgmac.c if (bgmac->feature_flags & BGMAC_FEAT_CMN_PHY_CTL) bgmac 1022 drivers/net/ethernet/broadcom/bgmac.c bgmac_cmn_maskset32(bgmac, BCMA_GMAC_CMN_PHY_CTL, ~0, bgmac 1025 drivers/net/ethernet/broadcom/bgmac.c bgmac_set(bgmac, BGMAC_PHY_CNTL, BGMAC_PC_MTE); bgmac 1026 drivers/net/ethernet/broadcom/bgmac.c bgmac_miiconfig(bgmac); bgmac 1027 drivers/net/ethernet/broadcom/bgmac.c if (bgmac->mii_bus) bgmac 1028 drivers/net/ethernet/broadcom/bgmac.c bgmac->mii_bus->reset(bgmac->mii_bus); bgmac 1030 drivers/net/ethernet/broadcom/bgmac.c netdev_reset_queue(bgmac->net_dev); bgmac 1033 drivers/net/ethernet/broadcom/bgmac.c static void bgmac_chip_intrs_on(struct bgmac *bgmac) bgmac 1035 drivers/net/ethernet/broadcom/bgmac.c bgmac_write(bgmac, BGMAC_INT_MASK, bgmac->int_mask); bgmac 1038 drivers/net/ethernet/broadcom/bgmac.c static void bgmac_chip_intrs_off(struct bgmac *bgmac) bgmac 1040 drivers/net/ethernet/broadcom/bgmac.c bgmac_write(bgmac, BGMAC_INT_MASK, 0); bgmac 1041 drivers/net/ethernet/broadcom/bgmac.c bgmac_read(bgmac, BGMAC_INT_MASK); bgmac 1045 drivers/net/ethernet/broadcom/bgmac.c static void bgmac_enable(struct bgmac *bgmac) bgmac 1051 drivers/net/ethernet/broadcom/bgmac.c if (bgmac->feature_flags & BGMAC_FEAT_CMDCFG_SR_REV4) bgmac 1056 drivers/net/ethernet/broadcom/bgmac.c cmdcfg = bgmac_read(bgmac, BGMAC_CMDCFG); bgmac 1057 drivers/net/ethernet/broadcom/bgmac.c bgmac_cmdcfg_maskset(bgmac, ~(BGMAC_CMDCFG_TE | BGMAC_CMDCFG_RE), bgmac 1061 drivers/net/ethernet/broadcom/bgmac.c bgmac_write(bgmac, BGMAC_CMDCFG, cmdcfg); bgmac 1063 drivers/net/ethernet/broadcom/bgmac.c mode = (bgmac_read(bgmac, BGMAC_DEV_STATUS) & BGMAC_DS_MM_MASK) >> bgmac 1065 drivers/net/ethernet/broadcom/bgmac.c if (bgmac->feature_flags & BGMAC_FEAT_CLKCTLST || mode != 0) bgmac 1066 drivers/net/ethernet/broadcom/bgmac.c bgmac_set(bgmac, BCMA_CLKCTLST, BCMA_CLKCTLST_FORCEHT); bgmac 1067 drivers/net/ethernet/broadcom/bgmac.c if (!(bgmac->feature_flags & BGMAC_FEAT_CLKCTLST) && mode == 2) bgmac 1068 drivers/net/ethernet/broadcom/bgmac.c bgmac_cco_ctl_maskset(bgmac, 1, ~0, bgmac 1071 drivers/net/ethernet/broadcom/bgmac.c if (bgmac->feature_flags & (BGMAC_FEAT_FLW_CTRL1 | bgmac 1075 drivers/net/ethernet/broadcom/bgmac.c if (bgmac->feature_flags & BGMAC_FEAT_FLW_CTRL1) bgmac 1080 drivers/net/ethernet/broadcom/bgmac.c bgmac_write(bgmac, BGMAC_FLOW_CTL_THRESH, fl_ctl); bgmac 1081 drivers/net/ethernet/broadcom/bgmac.c bgmac_write(bgmac, BGMAC_PAUSE_CTL, 0x27fff); bgmac 1084 drivers/net/ethernet/broadcom/bgmac.c if (bgmac->feature_flags & BGMAC_FEAT_SET_RXQ_CLK) { bgmac 1089 drivers/net/ethernet/broadcom/bgmac.c rxq_ctl = bgmac_read(bgmac, BGMAC_RXQ_CTL); bgmac 1091 drivers/net/ethernet/broadcom/bgmac.c bp_clk = bgmac_get_bus_clock(bgmac) / 1000000; bgmac 1094 drivers/net/ethernet/broadcom/bgmac.c bgmac_write(bgmac, BGMAC_RXQ_CTL, rxq_ctl); bgmac 1099 drivers/net/ethernet/broadcom/bgmac.c static void bgmac_chip_init(struct bgmac *bgmac) bgmac 1102 drivers/net/ethernet/broadcom/bgmac.c bgmac_write(bgmac, BGMAC_INT_STATUS, ~0); bgmac 1105 drivers/net/ethernet/broadcom/bgmac.c bgmac_write(bgmac, BGMAC_INT_RECV_LAZY, 1 << BGMAC_IRL_FC_SHIFT); bgmac 1108 drivers/net/ethernet/broadcom/bgmac.c bgmac_cmdcfg_maskset(bgmac, ~BGMAC_CMDCFG_RPI, 0, true); bgmac 1110 drivers/net/ethernet/broadcom/bgmac.c bgmac_set_rx_mode(bgmac->net_dev); bgmac 1112 drivers/net/ethernet/broadcom/bgmac.c bgmac_write_mac_address(bgmac, bgmac->net_dev->dev_addr); bgmac 1114 drivers/net/ethernet/broadcom/bgmac.c if (bgmac->loopback) bgmac 1115 drivers/net/ethernet/broadcom/bgmac.c bgmac_cmdcfg_maskset(bgmac, ~0, BGMAC_CMDCFG_ML, false); bgmac 1117 drivers/net/ethernet/broadcom/bgmac.c bgmac_cmdcfg_maskset(bgmac, ~BGMAC_CMDCFG_ML, 0, false); bgmac 1119 drivers/net/ethernet/broadcom/bgmac.c bgmac_write(bgmac, BGMAC_RXMAX_LENGTH, 32 + ETHER_MAX_LEN); bgmac 1121 drivers/net/ethernet/broadcom/bgmac.c bgmac_chip_intrs_on(bgmac); bgmac 1123 drivers/net/ethernet/broadcom/bgmac.c bgmac_enable(bgmac); bgmac 1128 drivers/net/ethernet/broadcom/bgmac.c struct bgmac *bgmac = netdev_priv(dev_id); bgmac 1130 drivers/net/ethernet/broadcom/bgmac.c u32 int_status = bgmac_read(bgmac, BGMAC_INT_STATUS); bgmac 1131 drivers/net/ethernet/broadcom/bgmac.c int_status &= bgmac->int_mask; bgmac 1138 drivers/net/ethernet/broadcom/bgmac.c dev_err(bgmac->dev, "Unknown IRQs: 0x%08X\n", int_status); bgmac 1141 drivers/net/ethernet/broadcom/bgmac.c bgmac_chip_intrs_off(bgmac); bgmac 1143 drivers/net/ethernet/broadcom/bgmac.c napi_schedule(&bgmac->napi); bgmac 1150 drivers/net/ethernet/broadcom/bgmac.c struct bgmac *bgmac = container_of(napi, struct bgmac, napi); bgmac 1154 drivers/net/ethernet/broadcom/bgmac.c bgmac_write(bgmac, BGMAC_INT_STATUS, ~0); bgmac 1156 drivers/net/ethernet/broadcom/bgmac.c bgmac_dma_tx_free(bgmac, &bgmac->tx_ring[0]); bgmac 1157 drivers/net/ethernet/broadcom/bgmac.c handled += bgmac_dma_rx_read(bgmac, &bgmac->rx_ring[0], weight); bgmac 1160 drivers/net/ethernet/broadcom/bgmac.c if (bgmac_read(bgmac, BGMAC_INT_STATUS) & (BGMAC_IS_TX0 | BGMAC_IS_RX)) bgmac 1165 drivers/net/ethernet/broadcom/bgmac.c bgmac_chip_intrs_on(bgmac); bgmac 1177 drivers/net/ethernet/broadcom/bgmac.c struct bgmac *bgmac = netdev_priv(net_dev); bgmac 1180 drivers/net/ethernet/broadcom/bgmac.c bgmac_chip_reset(bgmac); bgmac 1182 drivers/net/ethernet/broadcom/bgmac.c err = bgmac_dma_init(bgmac); bgmac 1187 drivers/net/ethernet/broadcom/bgmac.c bgmac_chip_init(bgmac); bgmac 1189 drivers/net/ethernet/broadcom/bgmac.c err = request_irq(bgmac->irq, bgmac_interrupt, IRQF_SHARED, bgmac 1192 drivers/net/ethernet/broadcom/bgmac.c dev_err(bgmac->dev, "IRQ request error: %d!\n", err); bgmac 1193 drivers/net/ethernet/broadcom/bgmac.c bgmac_dma_cleanup(bgmac); bgmac 1196 drivers/net/ethernet/broadcom/bgmac.c napi_enable(&bgmac->napi); bgmac 1207 drivers/net/ethernet/broadcom/bgmac.c struct bgmac *bgmac = netdev_priv(net_dev); bgmac 1213 drivers/net/ethernet/broadcom/bgmac.c napi_disable(&bgmac->napi); bgmac 1214 drivers/net/ethernet/broadcom/bgmac.c bgmac_chip_intrs_off(bgmac); bgmac 1215 drivers/net/ethernet/broadcom/bgmac.c free_irq(bgmac->irq, net_dev); bgmac 1217 drivers/net/ethernet/broadcom/bgmac.c bgmac_chip_reset(bgmac); bgmac 1218 drivers/net/ethernet/broadcom/bgmac.c bgmac_dma_cleanup(bgmac); bgmac 1226 drivers/net/ethernet/broadcom/bgmac.c struct bgmac *bgmac = netdev_priv(net_dev); bgmac 1230 drivers/net/ethernet/broadcom/bgmac.c ring = &bgmac->tx_ring[0]; bgmac 1231 drivers/net/ethernet/broadcom/bgmac.c return bgmac_dma_tx_add(bgmac, ring, skb); bgmac 1236 drivers/net/ethernet/broadcom/bgmac.c struct bgmac *bgmac = netdev_priv(net_dev); bgmac 1245 drivers/net/ethernet/broadcom/bgmac.c bgmac_write_mac_address(bgmac, net_dev->dev_addr); bgmac 1376 drivers/net/ethernet/broadcom/bgmac.c struct bgmac *bgmac = netdev_priv(dev); bgmac 1388 drivers/net/ethernet/broadcom/bgmac.c val = (u64)bgmac_read(bgmac, s->offset + 4) << 32; bgmac 1389 drivers/net/ethernet/broadcom/bgmac.c val |= bgmac_read(bgmac, s->offset); bgmac 1416 drivers/net/ethernet/broadcom/bgmac.c struct bgmac *bgmac = netdev_priv(net_dev); bgmac 1421 drivers/net/ethernet/broadcom/bgmac.c if (phy_dev->speed != bgmac->mac_speed) { bgmac 1422 drivers/net/ethernet/broadcom/bgmac.c bgmac->mac_speed = phy_dev->speed; bgmac 1426 drivers/net/ethernet/broadcom/bgmac.c if (phy_dev->duplex != bgmac->mac_duplex) { bgmac 1427 drivers/net/ethernet/broadcom/bgmac.c bgmac->mac_duplex = phy_dev->duplex; bgmac 1433 drivers/net/ethernet/broadcom/bgmac.c bgmac_mac_speed(bgmac); bgmac 1439 drivers/net/ethernet/broadcom/bgmac.c int bgmac_phy_connect_direct(struct bgmac *bgmac) bgmac 1451 drivers/net/ethernet/broadcom/bgmac.c dev_err(bgmac->dev, "Failed to register fixed PHY device\n"); bgmac 1455 drivers/net/ethernet/broadcom/bgmac.c err = phy_connect_direct(bgmac->net_dev, phy_dev, bgmac_adjust_link, bgmac 1458 drivers/net/ethernet/broadcom/bgmac.c dev_err(bgmac->dev, "Connecting PHY failed\n"); bgmac 1466 drivers/net/ethernet/broadcom/bgmac.c struct bgmac *bgmac_alloc(struct device *dev) bgmac 1469 drivers/net/ethernet/broadcom/bgmac.c struct bgmac *bgmac; bgmac 1472 drivers/net/ethernet/broadcom/bgmac.c net_dev = devm_alloc_etherdev(dev, sizeof(*bgmac)); bgmac 1479 drivers/net/ethernet/broadcom/bgmac.c bgmac = netdev_priv(net_dev); bgmac 1480 drivers/net/ethernet/broadcom/bgmac.c bgmac->dev = dev; bgmac 1481 drivers/net/ethernet/broadcom/bgmac.c bgmac->net_dev = net_dev; bgmac 1483 drivers/net/ethernet/broadcom/bgmac.c return bgmac; bgmac 1487 drivers/net/ethernet/broadcom/bgmac.c int bgmac_enet_probe(struct bgmac *bgmac) bgmac 1489 drivers/net/ethernet/broadcom/bgmac.c struct net_device *net_dev = bgmac->net_dev; bgmac 1492 drivers/net/ethernet/broadcom/bgmac.c bgmac_chip_intrs_off(bgmac); bgmac 1494 drivers/net/ethernet/broadcom/bgmac.c net_dev->irq = bgmac->irq; bgmac 1495 drivers/net/ethernet/broadcom/bgmac.c SET_NETDEV_DEV(net_dev, bgmac->dev); bgmac 1496 drivers/net/ethernet/broadcom/bgmac.c dev_set_drvdata(bgmac->dev, bgmac); bgmac 1499 drivers/net/ethernet/broadcom/bgmac.c dev_err(bgmac->dev, "Invalid MAC addr: %pM\n", bgmac 1502 drivers/net/ethernet/broadcom/bgmac.c dev_warn(bgmac->dev, "Using random MAC: %pM\n", bgmac 1509 drivers/net/ethernet/broadcom/bgmac.c bgmac_clk_enable(bgmac, 0); bgmac 1512 drivers/net/ethernet/broadcom/bgmac.c if (!(bgmac->feature_flags & BGMAC_FEAT_IDM_MASK)) { bgmac 1513 drivers/net/ethernet/broadcom/bgmac.c if (bgmac->feature_flags & BGMAC_FEAT_IRQ_ID_OOB_6) bgmac 1514 drivers/net/ethernet/broadcom/bgmac.c bgmac_idm_write(bgmac, BCMA_OOB_SEL_OUT_A30, 0x86); bgmac 1517 drivers/net/ethernet/broadcom/bgmac.c bgmac_chip_reset(bgmac); bgmac 1519 drivers/net/ethernet/broadcom/bgmac.c err = bgmac_dma_alloc(bgmac); bgmac 1521 drivers/net/ethernet/broadcom/bgmac.c dev_err(bgmac->dev, "Unable to alloc memory for DMA\n"); bgmac 1525 drivers/net/ethernet/broadcom/bgmac.c bgmac->int_mask = BGMAC_IS_ERRMASK | BGMAC_IS_RX | BGMAC_IS_TX_MASK; bgmac 1527 drivers/net/ethernet/broadcom/bgmac.c bgmac->int_mask &= ~BGMAC_IS_TX_MASK; bgmac 1529 drivers/net/ethernet/broadcom/bgmac.c netif_napi_add(net_dev, &bgmac->napi, bgmac_poll, BGMAC_WEIGHT); bgmac 1531 drivers/net/ethernet/broadcom/bgmac.c err = bgmac_phy_connect(bgmac); bgmac 1533 drivers/net/ethernet/broadcom/bgmac.c dev_err(bgmac->dev, "Cannot connect to phy\n"); bgmac 1541 drivers/net/ethernet/broadcom/bgmac.c err = register_netdev(bgmac->net_dev); bgmac 1543 drivers/net/ethernet/broadcom/bgmac.c dev_err(bgmac->dev, "Cannot register net device\n"); bgmac 1554 drivers/net/ethernet/broadcom/bgmac.c bgmac_dma_free(bgmac); bgmac 1561 drivers/net/ethernet/broadcom/bgmac.c void bgmac_enet_remove(struct bgmac *bgmac) bgmac 1563 drivers/net/ethernet/broadcom/bgmac.c unregister_netdev(bgmac->net_dev); bgmac 1564 drivers/net/ethernet/broadcom/bgmac.c phy_disconnect(bgmac->net_dev->phydev); bgmac 1565 drivers/net/ethernet/broadcom/bgmac.c netif_napi_del(&bgmac->napi); bgmac 1566 drivers/net/ethernet/broadcom/bgmac.c bgmac_dma_free(bgmac); bgmac 1567 drivers/net/ethernet/broadcom/bgmac.c free_netdev(bgmac->net_dev); bgmac 1571 drivers/net/ethernet/broadcom/bgmac.c int bgmac_enet_suspend(struct bgmac *bgmac) bgmac 1573 drivers/net/ethernet/broadcom/bgmac.c if (!netif_running(bgmac->net_dev)) bgmac 1576 drivers/net/ethernet/broadcom/bgmac.c phy_stop(bgmac->net_dev->phydev); bgmac 1578 drivers/net/ethernet/broadcom/bgmac.c netif_stop_queue(bgmac->net_dev); bgmac 1580 drivers/net/ethernet/broadcom/bgmac.c napi_disable(&bgmac->napi); bgmac 1582 drivers/net/ethernet/broadcom/bgmac.c netif_tx_lock(bgmac->net_dev); bgmac 1583 drivers/net/ethernet/broadcom/bgmac.c netif_device_detach(bgmac->net_dev); bgmac 1584 drivers/net/ethernet/broadcom/bgmac.c netif_tx_unlock(bgmac->net_dev); bgmac 1586 drivers/net/ethernet/broadcom/bgmac.c bgmac_chip_intrs_off(bgmac); bgmac 1587 drivers/net/ethernet/broadcom/bgmac.c bgmac_chip_reset(bgmac); bgmac 1588 drivers/net/ethernet/broadcom/bgmac.c bgmac_dma_cleanup(bgmac); bgmac 1594 drivers/net/ethernet/broadcom/bgmac.c int bgmac_enet_resume(struct bgmac *bgmac) bgmac 1598 drivers/net/ethernet/broadcom/bgmac.c if (!netif_running(bgmac->net_dev)) bgmac 1601 drivers/net/ethernet/broadcom/bgmac.c rc = bgmac_dma_init(bgmac); bgmac 1605 drivers/net/ethernet/broadcom/bgmac.c bgmac_chip_init(bgmac); bgmac 1607 drivers/net/ethernet/broadcom/bgmac.c napi_enable(&bgmac->napi); bgmac 1609 drivers/net/ethernet/broadcom/bgmac.c netif_tx_lock(bgmac->net_dev); bgmac 1610 drivers/net/ethernet/broadcom/bgmac.c netif_device_attach(bgmac->net_dev); bgmac 1611 drivers/net/ethernet/broadcom/bgmac.c netif_tx_unlock(bgmac->net_dev); bgmac 1613 drivers/net/ethernet/broadcom/bgmac.c netif_start_queue(bgmac->net_dev); bgmac 1615 drivers/net/ethernet/broadcom/bgmac.c phy_start(bgmac->net_dev->phydev); bgmac 523 drivers/net/ethernet/broadcom/bgmac.h u32 (*read)(struct bgmac *bgmac, u16 offset); bgmac 524 drivers/net/ethernet/broadcom/bgmac.h void (*write)(struct bgmac *bgmac, u16 offset, u32 value); bgmac 525 drivers/net/ethernet/broadcom/bgmac.h u32 (*idm_read)(struct bgmac *bgmac, u16 offset); bgmac 526 drivers/net/ethernet/broadcom/bgmac.h void (*idm_write)(struct bgmac *bgmac, u16 offset, u32 value); bgmac 527 drivers/net/ethernet/broadcom/bgmac.h bool (*clk_enabled)(struct bgmac *bgmac); bgmac 528 drivers/net/ethernet/broadcom/bgmac.h void (*clk_enable)(struct bgmac *bgmac, u32 flags); bgmac 529 drivers/net/ethernet/broadcom/bgmac.h void (*cco_ctl_maskset)(struct bgmac *bgmac, u32 offset, u32 mask, bgmac 531 drivers/net/ethernet/broadcom/bgmac.h u32 (*get_bus_clock)(struct bgmac *bgmac); bgmac 532 drivers/net/ethernet/broadcom/bgmac.h void (*cmn_maskset32)(struct bgmac *bgmac, u16 offset, u32 mask, bgmac 534 drivers/net/ethernet/broadcom/bgmac.h int (*phy_connect)(struct bgmac *bgmac); bgmac 537 drivers/net/ethernet/broadcom/bgmac.h struct bgmac *bgmac_alloc(struct device *dev); bgmac 538 drivers/net/ethernet/broadcom/bgmac.h int bgmac_enet_probe(struct bgmac *bgmac); bgmac 539 drivers/net/ethernet/broadcom/bgmac.h void bgmac_enet_remove(struct bgmac *bgmac); bgmac 541 drivers/net/ethernet/broadcom/bgmac.h int bgmac_phy_connect_direct(struct bgmac *bgmac); bgmac 542 drivers/net/ethernet/broadcom/bgmac.h int bgmac_enet_suspend(struct bgmac *bgmac); bgmac 543 drivers/net/ethernet/broadcom/bgmac.h int bgmac_enet_resume(struct bgmac *bgmac); bgmac 545 drivers/net/ethernet/broadcom/bgmac.h struct mii_bus *bcma_mdio_mii_register(struct bgmac *bgmac); bgmac 548 drivers/net/ethernet/broadcom/bgmac.h static inline u32 bgmac_read(struct bgmac *bgmac, u16 offset) bgmac 550 drivers/net/ethernet/broadcom/bgmac.h return bgmac->read(bgmac, offset); bgmac 553 drivers/net/ethernet/broadcom/bgmac.h static inline void bgmac_write(struct bgmac *bgmac, u16 offset, u32 value) bgmac 555 drivers/net/ethernet/broadcom/bgmac.h bgmac->write(bgmac, offset, value); bgmac 558 drivers/net/ethernet/broadcom/bgmac.h static inline u32 bgmac_idm_read(struct bgmac *bgmac, u16 offset) bgmac 560 drivers/net/ethernet/broadcom/bgmac.h return bgmac->idm_read(bgmac, offset); bgmac 563 drivers/net/ethernet/broadcom/bgmac.h static inline void bgmac_idm_write(struct bgmac *bgmac, u16 offset, u32 value) bgmac 565 drivers/net/ethernet/broadcom/bgmac.h bgmac->idm_write(bgmac, offset, value); bgmac 568 drivers/net/ethernet/broadcom/bgmac.h static inline bool bgmac_clk_enabled(struct bgmac *bgmac) bgmac 570 drivers/net/ethernet/broadcom/bgmac.h return bgmac->clk_enabled(bgmac); bgmac 573 drivers/net/ethernet/broadcom/bgmac.h static inline void bgmac_clk_enable(struct bgmac *bgmac, u32 flags) bgmac 575 drivers/net/ethernet/broadcom/bgmac.h bgmac->clk_enable(bgmac, flags); bgmac 578 drivers/net/ethernet/broadcom/bgmac.h static inline void bgmac_cco_ctl_maskset(struct bgmac *bgmac, u32 offset, bgmac 581 drivers/net/ethernet/broadcom/bgmac.h bgmac->cco_ctl_maskset(bgmac, offset, mask, set); bgmac 584 drivers/net/ethernet/broadcom/bgmac.h static inline u32 bgmac_get_bus_clock(struct bgmac *bgmac) bgmac 586 drivers/net/ethernet/broadcom/bgmac.h return bgmac->get_bus_clock(bgmac); bgmac 589 drivers/net/ethernet/broadcom/bgmac.h static inline void bgmac_cmn_maskset32(struct bgmac *bgmac, u16 offset, bgmac 592 drivers/net/ethernet/broadcom/bgmac.h bgmac->cmn_maskset32(bgmac, offset, mask, set); bgmac 595 drivers/net/ethernet/broadcom/bgmac.h static inline void bgmac_maskset(struct bgmac *bgmac, u16 offset, u32 mask, bgmac 598 drivers/net/ethernet/broadcom/bgmac.h bgmac_write(bgmac, offset, (bgmac_read(bgmac, offset) & mask) | set); bgmac 601 drivers/net/ethernet/broadcom/bgmac.h static inline void bgmac_mask(struct bgmac *bgmac, u16 offset, u32 mask) bgmac 603 drivers/net/ethernet/broadcom/bgmac.h bgmac_maskset(bgmac, offset, mask, 0); bgmac 606 drivers/net/ethernet/broadcom/bgmac.h static inline void bgmac_set(struct bgmac *bgmac, u16 offset, u32 set) bgmac 608 drivers/net/ethernet/broadcom/bgmac.h bgmac_maskset(bgmac, offset, ~0, set); bgmac 611 drivers/net/ethernet/broadcom/bgmac.h static inline int bgmac_phy_connect(struct bgmac *bgmac) bgmac 613 drivers/net/ethernet/broadcom/bgmac.h return bgmac->phy_connect(bgmac);