Symbol: bgmac
drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c
109
bcma_write32(bgmac->bcma.core, BGMAC_INT_STATUS, BGMAC_IS_MDIO);
drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c
110
if (bcma_read32(bgmac->bcma.core, BGMAC_INT_STATUS) & BGMAC_IS_MDIO)
drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c
131
static void bcma_mdio_phy_init(struct bgmac *bgmac)
drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c
133
struct bcma_chipinfo *ci = &bgmac->bcma.core->bus->chipinfo;
drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c
142
bcma_mdio_phy_write(bgmac, i, 0x1f, 0x008b);
drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c
143
bcma_mdio_phy_write(bgmac, i, 0x15, 0x0100);
drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c
144
bcma_mdio_phy_write(bgmac, i, 0x1f, 0x000f);
drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c
145
bcma_mdio_phy_write(bgmac, i, 0x12, 0x2aaa);
drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c
146
bcma_mdio_phy_write(bgmac, i, 0x1f, 0x000b);
drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c
153
struct bcma_drv_cc *cc = &bgmac->bcma.core->bus->drv_cc;
drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c
158
bcma_mdio_phy_write(bgmac, i, 0x1f, 0x000f);
drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c
159
bcma_mdio_phy_write(bgmac, i, 0x16, 0x5284);
drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c
160
bcma_mdio_phy_write(bgmac, i, 0x1f, 0x000b);
drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c
161
bcma_mdio_phy_write(bgmac, i, 0x17, 0x0010);
drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c
162
bcma_mdio_phy_write(bgmac, i, 0x1f, 0x000f);
drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c
163
bcma_mdio_phy_write(bgmac, i, 0x16, 0x5296);
drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c
164
bcma_mdio_phy_write(bgmac, i, 0x17, 0x1073);
drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c
165
bcma_mdio_phy_write(bgmac, i, 0x17, 0x9073);
drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c
166
bcma_mdio_phy_write(bgmac, i, 0x16, 0x52b6);
drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c
167
bcma_mdio_phy_write(bgmac, i, 0x17, 0x9273);
drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c
168
bcma_mdio_phy_write(bgmac, i, 0x1f, 0x000b);
drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c
174
if (bgmac->net_dev && bgmac->net_dev->phydev)
drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c
175
phy_init_hw(bgmac->net_dev->phydev);
drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c
181
struct bgmac *bgmac = bus->priv;
drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c
182
u8 phyaddr = bgmac->phyaddr;
drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c
187
bcma_mdio_phy_write(bgmac, phyaddr, MII_BMCR, BMCR_RESET);
drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c
189
if (bcma_mdio_phy_read(bgmac, phyaddr, MII_BMCR) & BMCR_RESET)
drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c
190
dev_err(bgmac->dev, "PHY reset failed\n");
drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c
191
bcma_mdio_phy_init(bgmac);
drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c
211
struct mii_bus *bcma_mdio_mii_register(struct bgmac *bgmac)
drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c
213
struct bcma_device *core = bgmac->bcma.core;
drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c
227
mii_bus->priv = bgmac;
drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c
232
mii_bus->phy_mask = ~(1 << bgmac->phyaddr);
drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c
36
static u16 bcma_mdio_phy_read(struct bgmac *bgmac, u8 phyaddr, u8 reg)
drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c
55
if (bgmac->bcma.core->id.id == BCMA_CORE_4706_MAC_GBIT) {
drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c
56
core = bgmac->bcma.core->bus->drv_gmac_cmn.core;
drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c
60
core = bgmac->bcma.core;
drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c
86
static int bcma_mdio_phy_write(struct bgmac *bgmac, u8 phyaddr, u8 reg,
drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c
94
if (bgmac->bcma.core->id.id == BCMA_CORE_4706_MAC_GBIT) {
drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c
95
core = bgmac->bcma.core->bus->drv_gmac_cmn.core;
drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c
99
core = bgmac->bcma.core;
drivers/net/ethernet/broadcom/bgmac-bcma.c
100
phy_dev = phy_connect(bgmac->net_dev, bus_id, bgmac_adjust_link,
drivers/net/ethernet/broadcom/bgmac-bcma.c
103
dev_err(bgmac->dev, "PHY connection failed\n");
drivers/net/ethernet/broadcom/bgmac-bcma.c
111
return bgmac_phy_connect_direct(bgmac);
drivers/net/ethernet/broadcom/bgmac-bcma.c
129
struct bgmac *bgmac;
drivers/net/ethernet/broadcom/bgmac-bcma.c
133
bgmac = bgmac_alloc(&core->dev);
drivers/net/ethernet/broadcom/bgmac-bcma.c
134
if (!bgmac)
drivers/net/ethernet/broadcom/bgmac-bcma.c
137
bgmac->bcma.core = core;
drivers/net/ethernet/broadcom/bgmac-bcma.c
138
bgmac->dma_dev = core->dma_dev;
drivers/net/ethernet/broadcom/bgmac-bcma.c
139
bgmac->irq = core->irq;
drivers/net/ethernet/broadcom/bgmac-bcma.c
141
bcma_set_drvdata(core, bgmac);
drivers/net/ethernet/broadcom/bgmac-bcma.c
143
err = of_get_ethdev_address(bgmac->dev->of_node, bgmac->net_dev);
drivers/net/ethernet/broadcom/bgmac-bcma.c
160
dev_err(bgmac->dev, "Unsupported core_unit %d\n",
drivers/net/ethernet/broadcom/bgmac-bcma.c
165
eth_hw_addr_set(bgmac->net_dev, mac);
drivers/net/ethernet/broadcom/bgmac-bcma.c
171
dev_err(bgmac->dev, "GMAC CMN core not found (required for BCM4706)\n");
drivers/net/ethernet/broadcom/bgmac-bcma.c
175
bgmac->bcma.cmn = core->bus->drv_gmac_cmn.core;
drivers/net/ethernet/broadcom/bgmac-bcma.c
179
bgmac->phyaddr = sprom->et0phyaddr;
drivers/net/ethernet/broadcom/bgmac-bcma.c
182
bgmac->phyaddr = sprom->et1phyaddr;
drivers/net/ethernet/broadcom/bgmac-bcma.c
185
bgmac->phyaddr = sprom->et2phyaddr;
drivers/net/ethernet/broadcom/bgmac-bcma.c
188
bgmac->phyaddr &= BGMAC_PHY_MASK;
drivers/net/ethernet/broadcom/bgmac-bcma.c
189
if (bgmac->phyaddr == BGMAC_PHY_MASK) {
drivers/net/ethernet/broadcom/bgmac-bcma.c
190
dev_err(bgmac->dev, "No PHY found\n");
drivers/net/ethernet/broadcom/bgmac-bcma.c
194
dev_info(bgmac->dev, "Found PHY addr: %d%s\n", bgmac->phyaddr,
drivers/net/ethernet/broadcom/bgmac-bcma.c
195
bgmac->phyaddr == BGMAC_PHY_NOREGS ? " (NOREGS)" : "");
drivers/net/ethernet/broadcom/bgmac-bcma.c
201
mii_bus = bcma_mdio_mii_register(bgmac);
drivers/net/ethernet/broadcom/bgmac-bcma.c
206
bgmac->mii_bus = mii_bus;
drivers/net/ethernet/broadcom/bgmac-bcma.c
208
phydev = mdiobus_get_phy(bgmac->mii_bus, bgmac->phyaddr);
drivers/net/ethernet/broadcom/bgmac-bcma.c
215
dev_err(bgmac->dev, "PCI setup not implemented\n");
drivers/net/ethernet/broadcom/bgmac-bcma.c
220
bgmac->has_robosw = !!(sprom->boardflags_lo & BGMAC_BFL_ENETROBO);
drivers/net/ethernet/broadcom/bgmac-bcma.c
221
if (bgmac->has_robosw)
drivers/net/ethernet/broadcom/bgmac-bcma.c
222
dev_warn(bgmac->dev, "Support for Roboswitch not implemented\n");
drivers/net/ethernet/broadcom/bgmac-bcma.c
225
dev_warn(bgmac->dev, "Support for ADMtek ethernet switch not implemented\n");
drivers/net/ethernet/broadcom/bgmac-bcma.c
231
bgmac->feature_flags |= BGMAC_FEAT_CLKCTLST;
drivers/net/ethernet/broadcom/bgmac-bcma.c
234
bgmac->feature_flags |= BGMAC_FEAT_FLW_CTRL2;
drivers/net/ethernet/broadcom/bgmac-bcma.c
235
bgmac->feature_flags |= BGMAC_FEAT_SET_RXQ_CLK;
drivers/net/ethernet/broadcom/bgmac-bcma.c
239
bgmac->feature_flags |= BGMAC_FEAT_SET_RXQ_CLK;
drivers/net/ethernet/broadcom/bgmac-bcma.c
240
bgmac->feature_flags |= BGMAC_FEAT_CLKCTLST;
drivers/net/ethernet/broadcom/bgmac-bcma.c
241
bgmac->feature_flags |= BGMAC_FEAT_FLW_CTRL1;
drivers/net/ethernet/broadcom/bgmac-bcma.c
242
bgmac->feature_flags |= BGMAC_FEAT_SW_TYPE_PHY;
drivers/net/ethernet/broadcom/bgmac-bcma.c
245
bgmac->feature_flags |= BGMAC_FEAT_SW_TYPE_RGMII;
drivers/net/ethernet/broadcom/bgmac-bcma.c
246
bgmac->feature_flags |= BGMAC_FEAT_IOST_ATTACHED;
drivers/net/ethernet/broadcom/bgmac-bcma.c
249
bgmac->feature_flags |= BGMAC_FEAT_SW_TYPE_EPHYRMII;
drivers/net/ethernet/broadcom/bgmac-bcma.c
252
bgmac->feature_flags |= BGMAC_FEAT_CLKCTLST;
drivers/net/ethernet/broadcom/bgmac-bcma.c
253
bgmac->feature_flags |= BGMAC_FEAT_SET_RXQ_CLK;
drivers/net/ethernet/broadcom/bgmac-bcma.c
255
bgmac->feature_flags |= BGMAC_FEAT_IOST_ATTACHED;
drivers/net/ethernet/broadcom/bgmac-bcma.c
257
bgmac->feature_flags |= BGMAC_FEAT_CC4_IF_SW_TYPE;
drivers/net/ethernet/broadcom/bgmac-bcma.c
259
bgmac->feature_flags |=
drivers/net/ethernet/broadcom/bgmac-bcma.c
262
bgmac->feature_flags |= BGMAC_FEAT_IRQ_ID_OOB_6;
drivers/net/ethernet/broadcom/bgmac-bcma.c
263
bgmac->feature_flags |= BGMAC_FEAT_CC7_IF_TYPE_RGMII;
drivers/net/ethernet/broadcom/bgmac-bcma.c
267
bgmac->feature_flags |= BGMAC_FEAT_SET_RXQ_CLK;
drivers/net/ethernet/broadcom/bgmac-bcma.c
268
bgmac->feature_flags |= BGMAC_FEAT_CLKCTLST;
drivers/net/ethernet/broadcom/bgmac-bcma.c
269
bgmac->feature_flags |= BGMAC_FEAT_FLW_CTRL1;
drivers/net/ethernet/broadcom/bgmac-bcma.c
270
bgmac->feature_flags |= BGMAC_FEAT_SW_TYPE_PHY;
drivers/net/ethernet/broadcom/bgmac-bcma.c
272
bgmac->feature_flags |= BGMAC_FEAT_SW_TYPE_RGMII;
drivers/net/ethernet/broadcom/bgmac-bcma.c
273
bgmac->feature_flags |= BGMAC_FEAT_IOST_ATTACHED;
drivers/net/ethernet/broadcom/bgmac-bcma.c
280
bgmac->feature_flags |= BGMAC_FEAT_CLKCTLST;
drivers/net/ethernet/broadcom/bgmac-bcma.c
281
bgmac->feature_flags |= BGMAC_FEAT_NO_RESET;
drivers/net/ethernet/broadcom/bgmac-bcma.c
282
bgmac->feature_flags |= BGMAC_FEAT_FORCE_SPEED_2500;
drivers/net/ethernet/broadcom/bgmac-bcma.c
285
bgmac->feature_flags |= BGMAC_FEAT_CLKCTLST;
drivers/net/ethernet/broadcom/bgmac-bcma.c
286
bgmac->feature_flags |= BGMAC_FEAT_SET_RXQ_CLK;
drivers/net/ethernet/broadcom/bgmac-bcma.c
290
bgmac->feature_flags |= BGMAC_FEAT_MISC_PLL_REQ;
drivers/net/ethernet/broadcom/bgmac-bcma.c
293
bgmac->feature_flags |= BGMAC_FEAT_CMN_PHY_CTL;
drivers/net/ethernet/broadcom/bgmac-bcma.c
294
bgmac->feature_flags |= BGMAC_FEAT_NO_CLR_MIB;
drivers/net/ethernet/broadcom/bgmac-bcma.c
298
bgmac->feature_flags |= BGMAC_FEAT_CMDCFG_SR_REV4;
drivers/net/ethernet/broadcom/bgmac-bcma.c
299
bgmac->feature_flags |= BGMAC_FEAT_TX_MASK_SETUP;
drivers/net/ethernet/broadcom/bgmac-bcma.c
300
bgmac->feature_flags |= BGMAC_FEAT_RX_MASK_SETUP;
drivers/net/ethernet/broadcom/bgmac-bcma.c
303
bgmac->read = bcma_bgmac_read;
drivers/net/ethernet/broadcom/bgmac-bcma.c
304
bgmac->write = bcma_bgmac_write;
drivers/net/ethernet/broadcom/bgmac-bcma.c
305
bgmac->idm_read = bcma_bgmac_idm_read;
drivers/net/ethernet/broadcom/bgmac-bcma.c
306
bgmac->idm_write = bcma_bgmac_idm_write;
drivers/net/ethernet/broadcom/bgmac-bcma.c
307
bgmac->clk_enabled = bcma_bgmac_clk_enabled;
drivers/net/ethernet/broadcom/bgmac-bcma.c
308
bgmac->clk_enable = bcma_bgmac_clk_enable;
drivers/net/ethernet/broadcom/bgmac-bcma.c
309
bgmac->cco_ctl_maskset = bcma_bgmac_cco_ctl_maskset;
drivers/net/ethernet/broadcom/bgmac-bcma.c
310
bgmac->get_bus_clock = bcma_bgmac_get_bus_clock;
drivers/net/ethernet/broadcom/bgmac-bcma.c
311
bgmac->cmn_maskset32 = bcma_bgmac_cmn_maskset32;
drivers/net/ethernet/broadcom/bgmac-bcma.c
312
bgmac->phy_connect = bcma_phy_connect;
drivers/net/ethernet/broadcom/bgmac-bcma.c
314
err = bgmac_enet_probe(bgmac);
drivers/net/ethernet/broadcom/bgmac-bcma.c
321
bcma_mdio_mii_unregister(bgmac->mii_bus);
drivers/net/ethernet/broadcom/bgmac-bcma.c
330
struct bgmac *bgmac = bcma_get_drvdata(core);
drivers/net/ethernet/broadcom/bgmac-bcma.c
332
bcma_mdio_mii_unregister(bgmac->mii_bus);
drivers/net/ethernet/broadcom/bgmac-bcma.c
333
bgmac_enet_remove(bgmac);
drivers/net/ethernet/broadcom/bgmac-bcma.c
34
static u32 bcma_bgmac_read(struct bgmac *bgmac, u16 offset)
drivers/net/ethernet/broadcom/bgmac-bcma.c
36
return bcma_read32(bgmac->bcma.core, offset);
drivers/net/ethernet/broadcom/bgmac-bcma.c
39
static void bcma_bgmac_write(struct bgmac *bgmac, u16 offset, u32 value)
drivers/net/ethernet/broadcom/bgmac-bcma.c
41
bcma_write32(bgmac->bcma.core, offset, value);
drivers/net/ethernet/broadcom/bgmac-bcma.c
44
static u32 bcma_bgmac_idm_read(struct bgmac *bgmac, u16 offset)
drivers/net/ethernet/broadcom/bgmac-bcma.c
46
return bcma_aread32(bgmac->bcma.core, offset);
drivers/net/ethernet/broadcom/bgmac-bcma.c
49
static void bcma_bgmac_idm_write(struct bgmac *bgmac, u16 offset, u32 value)
drivers/net/ethernet/broadcom/bgmac-bcma.c
51
return bcma_awrite32(bgmac->bcma.core, offset, value);
drivers/net/ethernet/broadcom/bgmac-bcma.c
54
static bool bcma_bgmac_clk_enabled(struct bgmac *bgmac)
drivers/net/ethernet/broadcom/bgmac-bcma.c
56
return bcma_core_is_enabled(bgmac->bcma.core);
drivers/net/ethernet/broadcom/bgmac-bcma.c
59
static void bcma_bgmac_clk_enable(struct bgmac *bgmac, u32 flags)
drivers/net/ethernet/broadcom/bgmac-bcma.c
61
bcma_core_enable(bgmac->bcma.core, flags);
drivers/net/ethernet/broadcom/bgmac-bcma.c
64
static void bcma_bgmac_cco_ctl_maskset(struct bgmac *bgmac, u32 offset,
drivers/net/ethernet/broadcom/bgmac-bcma.c
67
struct bcma_drv_cc *cc = &bgmac->bcma.core->bus->drv_cc;
drivers/net/ethernet/broadcom/bgmac-bcma.c
72
static u32 bcma_bgmac_get_bus_clock(struct bgmac *bgmac)
drivers/net/ethernet/broadcom/bgmac-bcma.c
74
struct bcma_drv_cc *cc = &bgmac->bcma.core->bus->drv_cc;
drivers/net/ethernet/broadcom/bgmac-bcma.c
79
static void bcma_bgmac_cmn_maskset32(struct bgmac *bgmac, u16 offset, u32 mask,
drivers/net/ethernet/broadcom/bgmac-bcma.c
82
bcma_maskset32(bgmac->bcma.cmn, offset, mask, set);
drivers/net/ethernet/broadcom/bgmac-bcma.c
85
static int bcma_phy_connect(struct bgmac *bgmac)
drivers/net/ethernet/broadcom/bgmac-bcma.c
91
phy_dev = of_phy_get_and_connect(bgmac->net_dev, bgmac->dev->of_node,
drivers/net/ethernet/broadcom/bgmac-bcma.c
97
if (bgmac->mii_bus && bgmac->phyaddr != BGMAC_PHY_NOREGS) {
drivers/net/ethernet/broadcom/bgmac-bcma.c
98
snprintf(bus_id, sizeof(bus_id), PHY_ID_FMT, bgmac->mii_bus->id,
drivers/net/ethernet/broadcom/bgmac-bcma.c
99
bgmac->phyaddr);
drivers/net/ethernet/broadcom/bgmac-platform.c
103
static u32 platform_bgmac_get_bus_clock(struct bgmac *bgmac)
drivers/net/ethernet/broadcom/bgmac-platform.c
111
static void platform_bgmac_cmn_maskset32(struct bgmac *bgmac, u16 offset,
drivers/net/ethernet/broadcom/bgmac-platform.c
120
struct bgmac *bgmac = netdev_priv(net_dev);
drivers/net/ethernet/broadcom/bgmac-platform.c
123
if (!bgmac->plat.nicpm_base)
drivers/net/ethernet/broadcom/bgmac-platform.c
128
bgmac->plat.nicpm_base + NICPM_PADRING_CFG);
drivers/net/ethernet/broadcom/bgmac-platform.c
131
switch (bgmac->net_dev->phydev->speed) {
drivers/net/ethernet/broadcom/bgmac-platform.c
146
writel(val, bgmac->plat.nicpm_base + NICPM_IOMUX_CTRL);
drivers/net/ethernet/broadcom/bgmac-platform.c
148
bgmac_adjust_link(bgmac->net_dev);
drivers/net/ethernet/broadcom/bgmac-platform.c
151
static int platform_phy_connect(struct bgmac *bgmac)
drivers/net/ethernet/broadcom/bgmac-platform.c
155
if (bgmac->plat.nicpm_base)
drivers/net/ethernet/broadcom/bgmac-platform.c
156
phy_dev = of_phy_get_and_connect(bgmac->net_dev,
drivers/net/ethernet/broadcom/bgmac-platform.c
157
bgmac->dev->of_node,
drivers/net/ethernet/broadcom/bgmac-platform.c
160
phy_dev = of_phy_get_and_connect(bgmac->net_dev,
drivers/net/ethernet/broadcom/bgmac-platform.c
161
bgmac->dev->of_node,
drivers/net/ethernet/broadcom/bgmac-platform.c
164
dev_err(bgmac->dev, "PHY connection failed\n");
drivers/net/ethernet/broadcom/bgmac-platform.c
175
struct bgmac *bgmac;
drivers/net/ethernet/broadcom/bgmac-platform.c
179
bgmac = bgmac_alloc(&pdev->dev);
drivers/net/ethernet/broadcom/bgmac-platform.c
180
if (!bgmac)
drivers/net/ethernet/broadcom/bgmac-platform.c
183
platform_set_drvdata(pdev, bgmac);
drivers/net/ethernet/broadcom/bgmac-platform.c
186
bgmac->feature_flags |= BGMAC_FEAT_CLKCTLST;
drivers/net/ethernet/broadcom/bgmac-platform.c
187
bgmac->feature_flags |= BGMAC_FEAT_NO_RESET;
drivers/net/ethernet/broadcom/bgmac-platform.c
188
bgmac->feature_flags |= BGMAC_FEAT_CMDCFG_SR_REV4;
drivers/net/ethernet/broadcom/bgmac-platform.c
189
bgmac->feature_flags |= BGMAC_FEAT_TX_MASK_SETUP;
drivers/net/ethernet/broadcom/bgmac-platform.c
190
bgmac->feature_flags |= BGMAC_FEAT_RX_MASK_SETUP;
drivers/net/ethernet/broadcom/bgmac-platform.c
191
bgmac->feature_flags |= BGMAC_FEAT_IDM_MASK;
drivers/net/ethernet/broadcom/bgmac-platform.c
193
bgmac->dev = &pdev->dev;
drivers/net/ethernet/broadcom/bgmac-platform.c
194
bgmac->dma_dev = &pdev->dev;
drivers/net/ethernet/broadcom/bgmac-platform.c
196
ret = of_get_ethdev_address(np, bgmac->net_dev);
drivers/net/ethernet/broadcom/bgmac-platform.c
204
bgmac->irq = platform_get_irq(pdev, 0);
drivers/net/ethernet/broadcom/bgmac-platform.c
205
if (bgmac->irq < 0)
drivers/net/ethernet/broadcom/bgmac-platform.c
206
return bgmac->irq;
drivers/net/ethernet/broadcom/bgmac-platform.c
208
bgmac->plat.base =
drivers/net/ethernet/broadcom/bgmac-platform.c
210
if (IS_ERR(bgmac->plat.base))
drivers/net/ethernet/broadcom/bgmac-platform.c
211
return PTR_ERR(bgmac->plat.base);
drivers/net/ethernet/broadcom/bgmac-platform.c
216
bgmac->plat.idm_base = devm_ioremap_resource(&pdev->dev, regs);
drivers/net/ethernet/broadcom/bgmac-platform.c
217
if (IS_ERR(bgmac->plat.idm_base))
drivers/net/ethernet/broadcom/bgmac-platform.c
218
return PTR_ERR(bgmac->plat.idm_base);
drivers/net/ethernet/broadcom/bgmac-platform.c
219
bgmac->feature_flags &= ~BGMAC_FEAT_IDM_MASK;
drivers/net/ethernet/broadcom/bgmac-platform.c
225
bgmac->plat.nicpm_base = devm_ioremap_resource(&pdev->dev,
drivers/net/ethernet/broadcom/bgmac-platform.c
227
if (IS_ERR(bgmac->plat.nicpm_base))
drivers/net/ethernet/broadcom/bgmac-platform.c
228
return PTR_ERR(bgmac->plat.nicpm_base);
drivers/net/ethernet/broadcom/bgmac-platform.c
231
bgmac->read = platform_bgmac_read;
drivers/net/ethernet/broadcom/bgmac-platform.c
232
bgmac->write = platform_bgmac_write;
drivers/net/ethernet/broadcom/bgmac-platform.c
233
bgmac->idm_read = platform_bgmac_idm_read;
drivers/net/ethernet/broadcom/bgmac-platform.c
234
bgmac->idm_write = platform_bgmac_idm_write;
drivers/net/ethernet/broadcom/bgmac-platform.c
235
bgmac->clk_enabled = platform_bgmac_clk_enabled;
drivers/net/ethernet/broadcom/bgmac-platform.c
236
bgmac->clk_enable = platform_bgmac_clk_enable;
drivers/net/ethernet/broadcom/bgmac-platform.c
237
bgmac->cco_ctl_maskset = platform_bgmac_cco_ctl_maskset;
drivers/net/ethernet/broadcom/bgmac-platform.c
238
bgmac->get_bus_clock = platform_bgmac_get_bus_clock;
drivers/net/ethernet/broadcom/bgmac-platform.c
239
bgmac->cmn_maskset32 = platform_bgmac_cmn_maskset32;
drivers/net/ethernet/broadcom/bgmac-platform.c
243
bgmac->phy_connect = platform_phy_connect;
drivers/net/ethernet/broadcom/bgmac-platform.c
245
bgmac->phy_connect = bgmac_phy_connect_direct;
drivers/net/ethernet/broadcom/bgmac-platform.c
246
bgmac->feature_flags |= BGMAC_FEAT_FORCE_SPEED_2500;
drivers/net/ethernet/broadcom/bgmac-platform.c
249
return bgmac_enet_probe(bgmac);
drivers/net/ethernet/broadcom/bgmac-platform.c
254
struct bgmac *bgmac = platform_get_drvdata(pdev);
drivers/net/ethernet/broadcom/bgmac-platform.c
256
bgmac_enet_remove(bgmac);
drivers/net/ethernet/broadcom/bgmac-platform.c
262
struct bgmac *bgmac = dev_get_drvdata(dev);
drivers/net/ethernet/broadcom/bgmac-platform.c
264
return bgmac_enet_suspend(bgmac);
drivers/net/ethernet/broadcom/bgmac-platform.c
269
struct bgmac *bgmac = dev_get_drvdata(dev);
drivers/net/ethernet/broadcom/bgmac-platform.c
271
return bgmac_enet_resume(bgmac);
drivers/net/ethernet/broadcom/bgmac-platform.c
36
static u32 platform_bgmac_read(struct bgmac *bgmac, u16 offset)
drivers/net/ethernet/broadcom/bgmac-platform.c
38
return readl(bgmac->plat.base + offset);
drivers/net/ethernet/broadcom/bgmac-platform.c
41
static void platform_bgmac_write(struct bgmac *bgmac, u16 offset, u32 value)
drivers/net/ethernet/broadcom/bgmac-platform.c
43
writel(value, bgmac->plat.base + offset);
drivers/net/ethernet/broadcom/bgmac-platform.c
46
static u32 platform_bgmac_idm_read(struct bgmac *bgmac, u16 offset)
drivers/net/ethernet/broadcom/bgmac-platform.c
48
return readl(bgmac->plat.idm_base + offset);
drivers/net/ethernet/broadcom/bgmac-platform.c
51
static void platform_bgmac_idm_write(struct bgmac *bgmac, u16 offset, u32 value)
drivers/net/ethernet/broadcom/bgmac-platform.c
53
writel(value, bgmac->plat.idm_base + offset);
drivers/net/ethernet/broadcom/bgmac-platform.c
56
static bool platform_bgmac_clk_enabled(struct bgmac *bgmac)
drivers/net/ethernet/broadcom/bgmac-platform.c
58
if (!bgmac->plat.idm_base)
drivers/net/ethernet/broadcom/bgmac-platform.c
61
if ((bgmac_idm_read(bgmac, BCMA_IOCTL) & BGMAC_CLK_EN) != BGMAC_CLK_EN)
drivers/net/ethernet/broadcom/bgmac-platform.c
63
if (bgmac_idm_read(bgmac, BCMA_RESET_CTL) & BCMA_RESET_CTL_RESET)
drivers/net/ethernet/broadcom/bgmac-platform.c
68
static void platform_bgmac_clk_enable(struct bgmac *bgmac, u32 flags)
drivers/net/ethernet/broadcom/bgmac-platform.c
72
if (!bgmac->plat.idm_base)
drivers/net/ethernet/broadcom/bgmac-platform.c
79
val = bgmac_idm_read(bgmac, BCMA_RESET_CTL);
drivers/net/ethernet/broadcom/bgmac-platform.c
81
bgmac_idm_write(bgmac, BCMA_RESET_CTL, 0);
drivers/net/ethernet/broadcom/bgmac-platform.c
82
bgmac_idm_read(bgmac, BCMA_RESET_CTL);
drivers/net/ethernet/broadcom/bgmac-platform.c
86
val = bgmac_idm_read(bgmac, BCMA_IOCTL);
drivers/net/ethernet/broadcom/bgmac-platform.c
91
bgmac_idm_write(bgmac, BCMA_IOCTL, val);
drivers/net/ethernet/broadcom/bgmac-platform.c
92
bgmac_idm_read(bgmac, BCMA_IOCTL);
drivers/net/ethernet/broadcom/bgmac-platform.c
96
static void platform_bgmac_cco_ctl_maskset(struct bgmac *bgmac, u32 offset,
drivers/net/ethernet/broadcom/bgmac.c
1017
bgmac->mac_speed = SPEED_UNKNOWN;
drivers/net/ethernet/broadcom/bgmac.c
1018
bgmac->mac_duplex = DUPLEX_UNKNOWN;
drivers/net/ethernet/broadcom/bgmac.c
1020
bgmac_clear_mib(bgmac);
drivers/net/ethernet/broadcom/bgmac.c
1021
if (bgmac->feature_flags & BGMAC_FEAT_CMN_PHY_CTL)
drivers/net/ethernet/broadcom/bgmac.c
1022
bgmac_cmn_maskset32(bgmac, BCMA_GMAC_CMN_PHY_CTL, ~0,
drivers/net/ethernet/broadcom/bgmac.c
1025
bgmac_set(bgmac, BGMAC_PHY_CNTL, BGMAC_PC_MTE);
drivers/net/ethernet/broadcom/bgmac.c
1026
bgmac_miiconfig(bgmac);
drivers/net/ethernet/broadcom/bgmac.c
1027
if (bgmac->mii_bus)
drivers/net/ethernet/broadcom/bgmac.c
1028
bgmac->mii_bus->reset(bgmac->mii_bus);
drivers/net/ethernet/broadcom/bgmac.c
1030
netdev_reset_queue(bgmac->net_dev);
drivers/net/ethernet/broadcom/bgmac.c
1033
static void bgmac_chip_intrs_on(struct bgmac *bgmac)
drivers/net/ethernet/broadcom/bgmac.c
1035
bgmac_write(bgmac, BGMAC_INT_MASK, bgmac->int_mask);
drivers/net/ethernet/broadcom/bgmac.c
1038
static void bgmac_chip_intrs_off(struct bgmac *bgmac)
drivers/net/ethernet/broadcom/bgmac.c
1040
bgmac_write(bgmac, BGMAC_INT_MASK, 0);
drivers/net/ethernet/broadcom/bgmac.c
1041
bgmac_read(bgmac, BGMAC_INT_MASK);
drivers/net/ethernet/broadcom/bgmac.c
1045
static void bgmac_enable(struct bgmac *bgmac)
drivers/net/ethernet/broadcom/bgmac.c
1051
if (bgmac->feature_flags & BGMAC_FEAT_CMDCFG_SR_REV4)
drivers/net/ethernet/broadcom/bgmac.c
1056
cmdcfg = bgmac_umac_read(bgmac, UMAC_CMD);
drivers/net/ethernet/broadcom/bgmac.c
1057
bgmac_umac_cmd_maskset(bgmac, ~(CMD_TX_EN | CMD_RX_EN),
drivers/net/ethernet/broadcom/bgmac.c
1061
bgmac_umac_write(bgmac, UMAC_CMD, cmdcfg);
drivers/net/ethernet/broadcom/bgmac.c
1063
mode = (bgmac_read(bgmac, BGMAC_DEV_STATUS) & BGMAC_DS_MM_MASK) >>
drivers/net/ethernet/broadcom/bgmac.c
1065
if (bgmac->feature_flags & BGMAC_FEAT_CLKCTLST || mode != 0)
drivers/net/ethernet/broadcom/bgmac.c
1066
bgmac_set(bgmac, BCMA_CLKCTLST, BCMA_CLKCTLST_FORCEHT);
drivers/net/ethernet/broadcom/bgmac.c
1067
if (!(bgmac->feature_flags & BGMAC_FEAT_CLKCTLST) && mode == 2)
drivers/net/ethernet/broadcom/bgmac.c
1068
bgmac_cco_ctl_maskset(bgmac, 1, ~0,
drivers/net/ethernet/broadcom/bgmac.c
107
bgmac_write(bgmac, ring->mmio_base + BGMAC_DMA_TX_CTL, ctl);
drivers/net/ethernet/broadcom/bgmac.c
1071
if (bgmac->feature_flags & (BGMAC_FEAT_FLW_CTRL1 |
drivers/net/ethernet/broadcom/bgmac.c
1075
if (bgmac->feature_flags & BGMAC_FEAT_FLW_CTRL1)
drivers/net/ethernet/broadcom/bgmac.c
1080
bgmac_write(bgmac, BGMAC_FLOW_CTL_THRESH, fl_ctl);
drivers/net/ethernet/broadcom/bgmac.c
1081
bgmac_umac_write(bgmac, UMAC_PAUSE_CTRL, 0x27fff);
drivers/net/ethernet/broadcom/bgmac.c
1084
if (bgmac->feature_flags & BGMAC_FEAT_SET_RXQ_CLK) {
drivers/net/ethernet/broadcom/bgmac.c
1089
rxq_ctl = bgmac_read(bgmac, BGMAC_RXQ_CTL);
drivers/net/ethernet/broadcom/bgmac.c
1091
bp_clk = bgmac_get_bus_clock(bgmac) / 1000000;
drivers/net/ethernet/broadcom/bgmac.c
1094
bgmac_write(bgmac, BGMAC_RXQ_CTL, rxq_ctl);
drivers/net/ethernet/broadcom/bgmac.c
1099
static void bgmac_chip_init(struct bgmac *bgmac)
drivers/net/ethernet/broadcom/bgmac.c
1102
bgmac_write(bgmac, BGMAC_INT_STATUS, ~0);
drivers/net/ethernet/broadcom/bgmac.c
1105
bgmac_write(bgmac, BGMAC_INT_RECV_LAZY, 1 << BGMAC_IRL_FC_SHIFT);
drivers/net/ethernet/broadcom/bgmac.c
1108
bgmac_umac_cmd_maskset(bgmac, ~CMD_RX_PAUSE_IGNORE, 0, true);
drivers/net/ethernet/broadcom/bgmac.c
111
bgmac_dma_tx_add_buf(struct bgmac *bgmac, struct bgmac_dma_ring *ring,
drivers/net/ethernet/broadcom/bgmac.c
1110
bgmac_set_rx_mode(bgmac->net_dev);
drivers/net/ethernet/broadcom/bgmac.c
1112
bgmac_write_mac_address(bgmac, bgmac->net_dev->dev_addr);
drivers/net/ethernet/broadcom/bgmac.c
1114
if (bgmac->loopback)
drivers/net/ethernet/broadcom/bgmac.c
1115
bgmac_umac_cmd_maskset(bgmac, ~0, CMD_LCL_LOOP_EN, false);
drivers/net/ethernet/broadcom/bgmac.c
1117
bgmac_umac_cmd_maskset(bgmac, ~CMD_LCL_LOOP_EN, 0, false);
drivers/net/ethernet/broadcom/bgmac.c
1119
bgmac_umac_write(bgmac, UMAC_MAX_FRAME_LEN, 32 + ETHER_MAX_LEN);
drivers/net/ethernet/broadcom/bgmac.c
1121
bgmac_chip_intrs_on(bgmac);
drivers/net/ethernet/broadcom/bgmac.c
1123
bgmac_enable(bgmac);
drivers/net/ethernet/broadcom/bgmac.c
1128
struct bgmac *bgmac = netdev_priv(dev_id);
drivers/net/ethernet/broadcom/bgmac.c
1130
u32 int_status = bgmac_read(bgmac, BGMAC_INT_STATUS);
drivers/net/ethernet/broadcom/bgmac.c
1131
int_status &= bgmac->int_mask;
drivers/net/ethernet/broadcom/bgmac.c
1138
dev_err(bgmac->dev, "Unknown IRQs: 0x%08X\n", int_status);
drivers/net/ethernet/broadcom/bgmac.c
1141
bgmac_chip_intrs_off(bgmac);
drivers/net/ethernet/broadcom/bgmac.c
1143
napi_schedule(&bgmac->napi);
drivers/net/ethernet/broadcom/bgmac.c
1150
struct bgmac *bgmac = container_of(napi, struct bgmac, napi);
drivers/net/ethernet/broadcom/bgmac.c
1154
bgmac_write(bgmac, BGMAC_INT_STATUS, ~0);
drivers/net/ethernet/broadcom/bgmac.c
1156
bgmac_dma_tx_free(bgmac, &bgmac->tx_ring[0]);
drivers/net/ethernet/broadcom/bgmac.c
1157
handled += bgmac_dma_rx_read(bgmac, &bgmac->rx_ring[0], weight);
drivers/net/ethernet/broadcom/bgmac.c
1160
if (bgmac_read(bgmac, BGMAC_INT_STATUS) & (BGMAC_IS_TX0 | BGMAC_IS_RX))
drivers/net/ethernet/broadcom/bgmac.c
1165
bgmac_chip_intrs_on(bgmac);
drivers/net/ethernet/broadcom/bgmac.c
1177
struct bgmac *bgmac = netdev_priv(net_dev);
drivers/net/ethernet/broadcom/bgmac.c
1180
bgmac_chip_reset(bgmac);
drivers/net/ethernet/broadcom/bgmac.c
1182
err = bgmac_dma_init(bgmac);
drivers/net/ethernet/broadcom/bgmac.c
1187
bgmac_chip_init(bgmac);
drivers/net/ethernet/broadcom/bgmac.c
1189
err = request_irq(bgmac->irq, bgmac_interrupt, IRQF_SHARED,
drivers/net/ethernet/broadcom/bgmac.c
1192
dev_err(bgmac->dev, "IRQ request error: %d!\n", err);
drivers/net/ethernet/broadcom/bgmac.c
1193
bgmac_dma_cleanup(bgmac);
drivers/net/ethernet/broadcom/bgmac.c
1196
napi_enable(&bgmac->napi);
drivers/net/ethernet/broadcom/bgmac.c
1207
struct bgmac *bgmac = netdev_priv(net_dev);
drivers/net/ethernet/broadcom/bgmac.c
1213
napi_disable(&bgmac->napi);
drivers/net/ethernet/broadcom/bgmac.c
1214
bgmac_chip_intrs_off(bgmac);
drivers/net/ethernet/broadcom/bgmac.c
1215
free_irq(bgmac->irq, net_dev);
drivers/net/ethernet/broadcom/bgmac.c
1217
bgmac_chip_reset(bgmac);
drivers/net/ethernet/broadcom/bgmac.c
1218
bgmac_dma_cleanup(bgmac);
drivers/net/ethernet/broadcom/bgmac.c
1226
struct bgmac *bgmac = netdev_priv(net_dev);
drivers/net/ethernet/broadcom/bgmac.c
1230
ring = &bgmac->tx_ring[0];
drivers/net/ethernet/broadcom/bgmac.c
1231
return bgmac_dma_tx_add(bgmac, ring, skb);
drivers/net/ethernet/broadcom/bgmac.c
1236
struct bgmac *bgmac = netdev_priv(net_dev);
drivers/net/ethernet/broadcom/bgmac.c
1245
bgmac_write_mac_address(bgmac, net_dev->dev_addr);
drivers/net/ethernet/broadcom/bgmac.c
1253
struct bgmac *bgmac = netdev_priv(net_dev);
drivers/net/ethernet/broadcom/bgmac.c
1255
bgmac_umac_write(bgmac, UMAC_MAX_FRAME_LEN, 32 + mtu);
drivers/net/ethernet/broadcom/bgmac.c
131
static netdev_tx_t bgmac_dma_tx_add(struct bgmac *bgmac,
drivers/net/ethernet/broadcom/bgmac.c
135
struct device *dma_dev = bgmac->dma_dev;
drivers/net/ethernet/broadcom/bgmac.c
136
struct net_device *net_dev = bgmac->net_dev;
drivers/net/ethernet/broadcom/bgmac.c
1376
struct bgmac *bgmac = netdev_priv(dev);
drivers/net/ethernet/broadcom/bgmac.c
1388
val = (u64)bgmac_read(bgmac, s->offset + 4) << 32;
drivers/net/ethernet/broadcom/bgmac.c
1389
val |= bgmac_read(bgmac, s->offset);
drivers/net/ethernet/broadcom/bgmac.c
1416
struct bgmac *bgmac = netdev_priv(net_dev);
drivers/net/ethernet/broadcom/bgmac.c
1421
if (phy_dev->speed != bgmac->mac_speed) {
drivers/net/ethernet/broadcom/bgmac.c
1422
bgmac->mac_speed = phy_dev->speed;
drivers/net/ethernet/broadcom/bgmac.c
1426
if (phy_dev->duplex != bgmac->mac_duplex) {
drivers/net/ethernet/broadcom/bgmac.c
1427
bgmac->mac_duplex = phy_dev->duplex;
drivers/net/ethernet/broadcom/bgmac.c
1433
bgmac_mac_speed(bgmac);
drivers/net/ethernet/broadcom/bgmac.c
1439
int bgmac_phy_connect_direct(struct bgmac *bgmac)
drivers/net/ethernet/broadcom/bgmac.c
144
netdev_err(bgmac->net_dev, "Too long skb (%d)\n", skb->len);
drivers/net/ethernet/broadcom/bgmac.c
1451
dev_err(bgmac->dev, "Failed to register fixed PHY device\n");
drivers/net/ethernet/broadcom/bgmac.c
1455
err = phy_connect_direct(bgmac->net_dev, phy_dev, bgmac_adjust_link,
drivers/net/ethernet/broadcom/bgmac.c
1458
dev_err(bgmac->dev, "Connecting PHY failed\n");
drivers/net/ethernet/broadcom/bgmac.c
1466
struct bgmac *bgmac_alloc(struct device *dev)
drivers/net/ethernet/broadcom/bgmac.c
1469
struct bgmac *bgmac;
drivers/net/ethernet/broadcom/bgmac.c
1472
net_dev = devm_alloc_etherdev(dev, sizeof(*bgmac));
drivers/net/ethernet/broadcom/bgmac.c
1479
bgmac = netdev_priv(net_dev);
drivers/net/ethernet/broadcom/bgmac.c
1480
bgmac->dev = dev;
drivers/net/ethernet/broadcom/bgmac.c
1481
bgmac->net_dev = net_dev;
drivers/net/ethernet/broadcom/bgmac.c
1483
return bgmac;
drivers/net/ethernet/broadcom/bgmac.c
1487
int bgmac_enet_probe(struct bgmac *bgmac)
drivers/net/ethernet/broadcom/bgmac.c
1489
struct net_device *net_dev = bgmac->net_dev;
drivers/net/ethernet/broadcom/bgmac.c
1492
bgmac->in_init = true;
drivers/net/ethernet/broadcom/bgmac.c
1494
net_dev->irq = bgmac->irq;
drivers/net/ethernet/broadcom/bgmac.c
1495
SET_NETDEV_DEV(net_dev, bgmac->dev);
drivers/net/ethernet/broadcom/bgmac.c
1496
dev_set_drvdata(bgmac->dev, bgmac);
drivers/net/ethernet/broadcom/bgmac.c
1499
dev_err(bgmac->dev, "Invalid MAC addr: %pM\n",
drivers/net/ethernet/broadcom/bgmac.c
1502
dev_warn(bgmac->dev, "Using random MAC: %pM\n",
drivers/net/ethernet/broadcom/bgmac.c
1509
bgmac_clk_enable(bgmac, 0);
drivers/net/ethernet/broadcom/bgmac.c
1511
bgmac_chip_intrs_off(bgmac);
drivers/net/ethernet/broadcom/bgmac.c
1514
if (!(bgmac->feature_flags & BGMAC_FEAT_IDM_MASK)) {
drivers/net/ethernet/broadcom/bgmac.c
1515
if (bgmac->feature_flags & BGMAC_FEAT_IRQ_ID_OOB_6)
drivers/net/ethernet/broadcom/bgmac.c
1516
bgmac_idm_write(bgmac, BCMA_OOB_SEL_OUT_A30, 0x86);
drivers/net/ethernet/broadcom/bgmac.c
1519
bgmac_chip_reset(bgmac);
drivers/net/ethernet/broadcom/bgmac.c
1521
err = bgmac_dma_alloc(bgmac);
drivers/net/ethernet/broadcom/bgmac.c
1523
dev_err(bgmac->dev, "Unable to alloc memory for DMA\n");
drivers/net/ethernet/broadcom/bgmac.c
1527
bgmac->int_mask = BGMAC_IS_ERRMASK | BGMAC_IS_RX | BGMAC_IS_TX_MASK;
drivers/net/ethernet/broadcom/bgmac.c
1529
bgmac->int_mask &= ~BGMAC_IS_TX_MASK;
drivers/net/ethernet/broadcom/bgmac.c
1531
netif_napi_add(net_dev, &bgmac->napi, bgmac_poll);
drivers/net/ethernet/broadcom/bgmac.c
1533
err = bgmac_phy_connect(bgmac);
drivers/net/ethernet/broadcom/bgmac.c
1535
dev_err(bgmac->dev, "Cannot connect to phy\n");
drivers/net/ethernet/broadcom/bgmac.c
1546
bgmac->in_init = false;
drivers/net/ethernet/broadcom/bgmac.c
1548
err = register_netdev(bgmac->net_dev);
drivers/net/ethernet/broadcom/bgmac.c
1550
dev_err(bgmac->dev, "Cannot register net device\n");
drivers/net/ethernet/broadcom/bgmac.c
1561
bgmac_dma_free(bgmac);
drivers/net/ethernet/broadcom/bgmac.c
1568
void bgmac_enet_remove(struct bgmac *bgmac)
drivers/net/ethernet/broadcom/bgmac.c
157
netdev_err(bgmac->net_dev, "TX ring is full, queue should be stopped!\n");
drivers/net/ethernet/broadcom/bgmac.c
1570
unregister_netdev(bgmac->net_dev);
drivers/net/ethernet/broadcom/bgmac.c
1571
phy_disconnect(bgmac->net_dev->phydev);
drivers/net/ethernet/broadcom/bgmac.c
1572
netif_napi_del(&bgmac->napi);
drivers/net/ethernet/broadcom/bgmac.c
1573
bgmac_dma_free(bgmac);
drivers/net/ethernet/broadcom/bgmac.c
1577
int bgmac_enet_suspend(struct bgmac *bgmac)
drivers/net/ethernet/broadcom/bgmac.c
1579
if (!netif_running(bgmac->net_dev))
drivers/net/ethernet/broadcom/bgmac.c
1582
phy_stop(bgmac->net_dev->phydev);
drivers/net/ethernet/broadcom/bgmac.c
1584
netif_stop_queue(bgmac->net_dev);
drivers/net/ethernet/broadcom/bgmac.c
1586
napi_disable(&bgmac->napi);
drivers/net/ethernet/broadcom/bgmac.c
1588
netif_tx_lock(bgmac->net_dev);
drivers/net/ethernet/broadcom/bgmac.c
1589
netif_device_detach(bgmac->net_dev);
drivers/net/ethernet/broadcom/bgmac.c
1590
netif_tx_unlock(bgmac->net_dev);
drivers/net/ethernet/broadcom/bgmac.c
1592
bgmac_chip_intrs_off(bgmac);
drivers/net/ethernet/broadcom/bgmac.c
1593
bgmac_chip_reset(bgmac);
drivers/net/ethernet/broadcom/bgmac.c
1594
bgmac_dma_cleanup(bgmac);
drivers/net/ethernet/broadcom/bgmac.c
1600
int bgmac_enet_resume(struct bgmac *bgmac)
drivers/net/ethernet/broadcom/bgmac.c
1604
if (!netif_running(bgmac->net_dev))
drivers/net/ethernet/broadcom/bgmac.c
1607
rc = bgmac_dma_init(bgmac);
drivers/net/ethernet/broadcom/bgmac.c
1611
bgmac_chip_init(bgmac);
drivers/net/ethernet/broadcom/bgmac.c
1613
napi_enable(&bgmac->napi);
drivers/net/ethernet/broadcom/bgmac.c
1615
netif_tx_lock(bgmac->net_dev);
drivers/net/ethernet/broadcom/bgmac.c
1616
netif_device_attach(bgmac->net_dev);
drivers/net/ethernet/broadcom/bgmac.c
1617
netif_tx_unlock(bgmac->net_dev);
drivers/net/ethernet/broadcom/bgmac.c
1619
netif_start_queue(bgmac->net_dev);
drivers/net/ethernet/broadcom/bgmac.c
1621
phy_start(bgmac->net_dev->phydev);
drivers/net/ethernet/broadcom/bgmac.c
171
bgmac_dma_tx_add_buf(bgmac, ring, index, skb_headlen(skb), flags);
drivers/net/ethernet/broadcom/bgmac.c
188
bgmac_dma_tx_add_buf(bgmac, ring, index, len, flags);
drivers/net/ethernet/broadcom/bgmac.c
200
bgmac_write(bgmac, ring->mmio_base + BGMAC_DMA_TX_INDEX,
drivers/net/ethernet/broadcom/bgmac.c
21
static bool bgmac_wait_value(struct bgmac *bgmac, u16 reg, u32 mask,
drivers/net/ethernet/broadcom/bgmac.c
224
netdev_err(bgmac->net_dev, "Mapping error of skb on ring 0x%X\n",
drivers/net/ethernet/broadcom/bgmac.c
235
static void bgmac_dma_tx_free(struct bgmac *bgmac, struct bgmac_dma_ring *ring)
drivers/net/ethernet/broadcom/bgmac.c
237
struct device *dma_dev = bgmac->dma_dev;
drivers/net/ethernet/broadcom/bgmac.c
242
empty_slot = bgmac_read(bgmac, ring->mmio_base + BGMAC_DMA_TX_STATUS);
drivers/net/ethernet/broadcom/bgmac.c
269
bgmac->net_dev->stats.tx_bytes += slot->skb->len;
drivers/net/ethernet/broadcom/bgmac.c
270
bgmac->net_dev->stats.tx_packets++;
drivers/net/ethernet/broadcom/bgmac.c
28
val = bgmac_read(bgmac, reg);
drivers/net/ethernet/broadcom/bgmac.c
286
netdev_completed_queue(bgmac->net_dev, pkts_compl, bytes_compl);
drivers/net/ethernet/broadcom/bgmac.c
288
if (netif_queue_stopped(bgmac->net_dev))
drivers/net/ethernet/broadcom/bgmac.c
289
netif_wake_queue(bgmac->net_dev);
drivers/net/ethernet/broadcom/bgmac.c
292
static void bgmac_dma_rx_reset(struct bgmac *bgmac, struct bgmac_dma_ring *ring)
drivers/net/ethernet/broadcom/bgmac.c
297
bgmac_write(bgmac, ring->mmio_base + BGMAC_DMA_RX_CTL, 0);
drivers/net/ethernet/broadcom/bgmac.c
298
if (!bgmac_wait_value(bgmac,
drivers/net/ethernet/broadcom/bgmac.c
302
dev_err(bgmac->dev, "Reset of ring 0x%X RX failed\n",
drivers/net/ethernet/broadcom/bgmac.c
306
static void bgmac_dma_rx_enable(struct bgmac *bgmac,
drivers/net/ethernet/broadcom/bgmac.c
311
ctl = bgmac_read(bgmac, ring->mmio_base + BGMAC_DMA_RX_CTL);
drivers/net/ethernet/broadcom/bgmac.c
316
if (bgmac->feature_flags & BGMAC_FEAT_RX_MASK_SETUP) {
drivers/net/ethernet/broadcom/bgmac.c
33
dev_err(bgmac->dev, "Timeout waiting for reg 0x%X\n", reg);
drivers/net/ethernet/broadcom/bgmac.c
330
bgmac_write(bgmac, ring->mmio_base + BGMAC_DMA_RX_CTL, ctl);
drivers/net/ethernet/broadcom/bgmac.c
333
static int bgmac_dma_rx_skb_for_slot(struct bgmac *bgmac,
drivers/net/ethernet/broadcom/bgmac.c
336
struct device *dma_dev = bgmac->dma_dev;
drivers/net/ethernet/broadcom/bgmac.c
355
netdev_err(bgmac->net_dev, "DMA mapping error\n");
drivers/net/ethernet/broadcom/bgmac.c
367
static void bgmac_dma_rx_update_index(struct bgmac *bgmac,
drivers/net/ethernet/broadcom/bgmac.c
372
bgmac_write(bgmac, ring->mmio_base + BGMAC_DMA_RX_INDEX,
drivers/net/ethernet/broadcom/bgmac.c
377
static void bgmac_dma_rx_setup_desc(struct bgmac *bgmac,
drivers/net/ethernet/broadcom/bgmac.c
41
static void bgmac_dma_tx_reset(struct bgmac *bgmac, struct bgmac_dma_ring *ring)
drivers/net/ethernet/broadcom/bgmac.c
412
static int bgmac_dma_rx_read(struct bgmac *bgmac, struct bgmac_dma_ring *ring,
drivers/net/ethernet/broadcom/bgmac.c
418
end_slot = bgmac_read(bgmac, ring->mmio_base + BGMAC_DMA_RX_STATUS);
drivers/net/ethernet/broadcom/bgmac.c
425
struct device *dma_dev = bgmac->dma_dev;
drivers/net/ethernet/broadcom/bgmac.c
435
if (bgmac_dma_rx_skb_for_slot(bgmac, slot)) {
drivers/net/ethernet/broadcom/bgmac.c
450
netdev_err(bgmac->net_dev, "Found poisoned packet at slot %d, DMA issue!\n",
drivers/net/ethernet/broadcom/bgmac.c
453
bgmac->net_dev->stats.rx_errors++;
drivers/net/ethernet/broadcom/bgmac.c
458
netdev_err(bgmac->net_dev, "Found oversized packet at slot %d, DMA issue!\n",
drivers/net/ethernet/broadcom/bgmac.c
461
bgmac->net_dev->stats.rx_length_errors++;
drivers/net/ethernet/broadcom/bgmac.c
462
bgmac->net_dev->stats.rx_errors++;
drivers/net/ethernet/broadcom/bgmac.c
471
netdev_err(bgmac->net_dev, "build_skb failed\n");
drivers/net/ethernet/broadcom/bgmac.c
473
bgmac->net_dev->stats.rx_errors++;
drivers/net/ethernet/broadcom/bgmac.c
482
skb->protocol = eth_type_trans(skb, bgmac->net_dev);
drivers/net/ethernet/broadcom/bgmac.c
483
bgmac->net_dev->stats.rx_bytes += len;
drivers/net/ethernet/broadcom/bgmac.c
484
bgmac->net_dev->stats.rx_packets++;
drivers/net/ethernet/broadcom/bgmac.c
485
napi_gro_receive(&bgmac->napi, skb);
drivers/net/ethernet/broadcom/bgmac.c
489
bgmac_dma_rx_setup_desc(bgmac, ring, ring->start);
drivers/net/ethernet/broadcom/bgmac.c
498
bgmac_dma_rx_update_index(bgmac, ring);
drivers/net/ethernet/broadcom/bgmac.c
504
static bool bgmac_dma_unaligned(struct bgmac *bgmac,
drivers/net/ethernet/broadcom/bgmac.c
510
bgmac_write(bgmac, ring->mmio_base + BGMAC_DMA_TX_RINGLO,
drivers/net/ethernet/broadcom/bgmac.c
512
if (bgmac_read(bgmac, ring->mmio_base + BGMAC_DMA_TX_RINGLO))
drivers/net/ethernet/broadcom/bgmac.c
516
bgmac_write(bgmac, ring->mmio_base + BGMAC_DMA_RX_RINGLO,
drivers/net/ethernet/broadcom/bgmac.c
518
if (bgmac_read(bgmac, ring->mmio_base + BGMAC_DMA_RX_RINGLO))
drivers/net/ethernet/broadcom/bgmac.c
525
static void bgmac_dma_tx_ring_free(struct bgmac *bgmac,
drivers/net/ethernet/broadcom/bgmac.c
528
struct device *dma_dev = bgmac->dma_dev;
drivers/net/ethernet/broadcom/bgmac.c
53
bgmac_write(bgmac, ring->mmio_base + BGMAC_DMA_TX_CTL,
drivers/net/ethernet/broadcom/bgmac.c
552
static void bgmac_dma_rx_ring_free(struct bgmac *bgmac,
drivers/net/ethernet/broadcom/bgmac.c
555
struct device *dma_dev = bgmac->dma_dev;
drivers/net/ethernet/broadcom/bgmac.c
56
val = bgmac_read(bgmac, ring->mmio_base + BGMAC_DMA_TX_STATUS);
drivers/net/ethernet/broadcom/bgmac.c
572
static void bgmac_dma_ring_desc_free(struct bgmac *bgmac,
drivers/net/ethernet/broadcom/bgmac.c
576
struct device *dma_dev = bgmac->dma_dev;
drivers/net/ethernet/broadcom/bgmac.c
588
static void bgmac_dma_cleanup(struct bgmac *bgmac)
drivers/net/ethernet/broadcom/bgmac.c
593
bgmac_dma_tx_ring_free(bgmac, &bgmac->tx_ring[i]);
drivers/net/ethernet/broadcom/bgmac.c
596
bgmac_dma_rx_ring_free(bgmac, &bgmac->rx_ring[i]);
drivers/net/ethernet/broadcom/bgmac.c
599
static void bgmac_dma_free(struct bgmac *bgmac)
drivers/net/ethernet/broadcom/bgmac.c
604
bgmac_dma_ring_desc_free(bgmac, &bgmac->tx_ring[i],
drivers/net/ethernet/broadcom/bgmac.c
608
bgmac_dma_ring_desc_free(bgmac, &bgmac->rx_ring[i],
drivers/net/ethernet/broadcom/bgmac.c
612
static int bgmac_dma_alloc(struct bgmac *bgmac)
drivers/net/ethernet/broadcom/bgmac.c
614
struct device *dma_dev = bgmac->dma_dev;
drivers/net/ethernet/broadcom/bgmac.c
624
if (!(bgmac->feature_flags & BGMAC_FEAT_IDM_MASK)) {
drivers/net/ethernet/broadcom/bgmac.c
625
if (!(bgmac_idm_read(bgmac, BCMA_IOST) & BCMA_IOST_DMA64)) {
drivers/net/ethernet/broadcom/bgmac.c
626
dev_err(bgmac->dev, "Core does not report 64-bit DMA\n");
drivers/net/ethernet/broadcom/bgmac.c
632
ring = &bgmac->tx_ring[i];
drivers/net/ethernet/broadcom/bgmac.c
641
dev_err(bgmac->dev, "Allocation of TX ring 0x%X failed\n",
drivers/net/ethernet/broadcom/bgmac.c
646
ring->unaligned = bgmac_dma_unaligned(bgmac, ring,
drivers/net/ethernet/broadcom/bgmac.c
657
ring = &bgmac->rx_ring[i];
drivers/net/ethernet/broadcom/bgmac.c
666
dev_err(bgmac->dev, "Allocation of RX ring 0x%X failed\n",
drivers/net/ethernet/broadcom/bgmac.c
67
dev_err(bgmac->dev, "Timeout suspending DMA TX ring 0x%X (BGMAC_DMA_TX_STAT: 0x%08X)\n",
drivers/net/ethernet/broadcom/bgmac.c
671
ring->unaligned = bgmac_dma_unaligned(bgmac, ring,
drivers/net/ethernet/broadcom/bgmac.c
682
bgmac_dma_free(bgmac);
drivers/net/ethernet/broadcom/bgmac.c
686
static int bgmac_dma_init(struct bgmac *bgmac)
drivers/net/ethernet/broadcom/bgmac.c
692
ring = &bgmac->tx_ring[i];
drivers/net/ethernet/broadcom/bgmac.c
695
bgmac_dma_tx_enable(bgmac, ring);
drivers/net/ethernet/broadcom/bgmac.c
696
bgmac_write(bgmac, ring->mmio_base + BGMAC_DMA_TX_RINGLO,
drivers/net/ethernet/broadcom/bgmac.c
698
bgmac_write(bgmac, ring->mmio_base + BGMAC_DMA_TX_RINGHI,
drivers/net/ethernet/broadcom/bgmac.c
701
bgmac_dma_tx_enable(bgmac, ring);
drivers/net/ethernet/broadcom/bgmac.c
71
bgmac_write(bgmac, ring->mmio_base + BGMAC_DMA_TX_CTL, 0);
drivers/net/ethernet/broadcom/bgmac.c
710
ring = &bgmac->rx_ring[i];
drivers/net/ethernet/broadcom/bgmac.c
713
bgmac_dma_rx_enable(bgmac, ring);
drivers/net/ethernet/broadcom/bgmac.c
714
bgmac_write(bgmac, ring->mmio_base + BGMAC_DMA_RX_RINGLO,
drivers/net/ethernet/broadcom/bgmac.c
716
bgmac_write(bgmac, ring->mmio_base + BGMAC_DMA_RX_RINGHI,
drivers/net/ethernet/broadcom/bgmac.c
719
bgmac_dma_rx_enable(bgmac, ring);
drivers/net/ethernet/broadcom/bgmac.c
72
if (!bgmac_wait_value(bgmac,
drivers/net/ethernet/broadcom/bgmac.c
724
err = bgmac_dma_rx_skb_for_slot(bgmac, &ring->slots[j]);
drivers/net/ethernet/broadcom/bgmac.c
728
bgmac_dma_rx_setup_desc(bgmac, ring, j);
drivers/net/ethernet/broadcom/bgmac.c
731
bgmac_dma_rx_update_index(bgmac, ring);
drivers/net/ethernet/broadcom/bgmac.c
737
bgmac_dma_cleanup(bgmac);
drivers/net/ethernet/broadcom/bgmac.c
749
static void bgmac_umac_cmd_maskset(struct bgmac *bgmac, u32 mask, u32 set,
drivers/net/ethernet/broadcom/bgmac.c
752
u32 cmdcfg = bgmac_umac_read(bgmac, UMAC_CMD);
drivers/net/ethernet/broadcom/bgmac.c
756
if (bgmac->feature_flags & BGMAC_FEAT_CMDCFG_SR_REV4)
drivers/net/ethernet/broadcom/bgmac.c
76
dev_warn(bgmac->dev, "DMA TX ring 0x%X wasn't disabled on time, waiting additional 300us\n",
drivers/net/ethernet/broadcom/bgmac.c
761
bgmac_umac_maskset(bgmac, UMAC_CMD, ~0, cmdcfg_sr);
drivers/net/ethernet/broadcom/bgmac.c
765
bgmac_umac_write(bgmac, UMAC_CMD, new_val);
drivers/net/ethernet/broadcom/bgmac.c
767
bgmac_umac_maskset(bgmac, UMAC_CMD, ~cmdcfg_sr, 0);
drivers/net/ethernet/broadcom/bgmac.c
771
static void bgmac_write_mac_address(struct bgmac *bgmac, const u8 *addr)
drivers/net/ethernet/broadcom/bgmac.c
776
bgmac_umac_write(bgmac, UMAC_MAC0, tmp);
drivers/net/ethernet/broadcom/bgmac.c
778
bgmac_umac_write(bgmac, UMAC_MAC1, tmp);
drivers/net/ethernet/broadcom/bgmac.c
783
struct bgmac *bgmac = netdev_priv(net_dev);
drivers/net/ethernet/broadcom/bgmac.c
786
bgmac_umac_cmd_maskset(bgmac, ~0, CMD_PROMISC, true);
drivers/net/ethernet/broadcom/bgmac.c
788
bgmac_umac_cmd_maskset(bgmac, ~CMD_PROMISC, 0, true);
drivers/net/ethernet/broadcom/bgmac.c
79
val = bgmac_read(bgmac, ring->mmio_base + BGMAC_DMA_TX_STATUS);
drivers/net/ethernet/broadcom/bgmac.c
792
static void bgmac_chip_stats_update(struct bgmac *bgmac)
drivers/net/ethernet/broadcom/bgmac.c
796
if (!(bgmac->feature_flags & BGMAC_FEAT_NO_CLR_MIB)) {
drivers/net/ethernet/broadcom/bgmac.c
798
bgmac->mib_tx_regs[i] =
drivers/net/ethernet/broadcom/bgmac.c
799
bgmac_read(bgmac,
drivers/net/ethernet/broadcom/bgmac.c
802
bgmac->mib_rx_regs[i] =
drivers/net/ethernet/broadcom/bgmac.c
803
bgmac_read(bgmac,
drivers/net/ethernet/broadcom/bgmac.c
81
dev_err(bgmac->dev, "Reset of DMA TX ring 0x%X failed\n",
drivers/net/ethernet/broadcom/bgmac.c
811
static void bgmac_clear_mib(struct bgmac *bgmac)
drivers/net/ethernet/broadcom/bgmac.c
815
if (bgmac->feature_flags & BGMAC_FEAT_NO_CLR_MIB)
drivers/net/ethernet/broadcom/bgmac.c
818
bgmac_set(bgmac, BGMAC_DEV_CTL, BGMAC_DC_MROR);
drivers/net/ethernet/broadcom/bgmac.c
820
bgmac_read(bgmac, BGMAC_TX_GOOD_OCTETS + (i * 4));
drivers/net/ethernet/broadcom/bgmac.c
822
bgmac_read(bgmac, BGMAC_RX_GOOD_OCTETS + (i * 4));
drivers/net/ethernet/broadcom/bgmac.c
826
static void bgmac_mac_speed(struct bgmac *bgmac)
drivers/net/ethernet/broadcom/bgmac.c
831
switch (bgmac->mac_speed) {
drivers/net/ethernet/broadcom/bgmac.c
845
dev_err(bgmac->dev, "Unsupported speed: %d\n",
drivers/net/ethernet/broadcom/bgmac.c
846
bgmac->mac_speed);
drivers/net/ethernet/broadcom/bgmac.c
849
if (bgmac->mac_duplex == DUPLEX_HALF)
drivers/net/ethernet/broadcom/bgmac.c
852
bgmac_umac_cmd_maskset(bgmac, mask, set, true);
drivers/net/ethernet/broadcom/bgmac.c
855
static void bgmac_miiconfig(struct bgmac *bgmac)
drivers/net/ethernet/broadcom/bgmac.c
857
if (bgmac->feature_flags & BGMAC_FEAT_FORCE_SPEED_2500) {
drivers/net/ethernet/broadcom/bgmac.c
858
if (!(bgmac->feature_flags & BGMAC_FEAT_IDM_MASK)) {
drivers/net/ethernet/broadcom/bgmac.c
859
bgmac_idm_write(bgmac, BCMA_IOCTL,
drivers/net/ethernet/broadcom/bgmac.c
86
static void bgmac_dma_tx_enable(struct bgmac *bgmac,
drivers/net/ethernet/broadcom/bgmac.c
860
bgmac_idm_read(bgmac, BCMA_IOCTL) |
drivers/net/ethernet/broadcom/bgmac.c
863
bgmac->mac_speed = SPEED_2500;
drivers/net/ethernet/broadcom/bgmac.c
864
bgmac->mac_duplex = DUPLEX_FULL;
drivers/net/ethernet/broadcom/bgmac.c
865
bgmac_mac_speed(bgmac);
drivers/net/ethernet/broadcom/bgmac.c
869
imode = (bgmac_read(bgmac, BGMAC_DEV_STATUS) &
drivers/net/ethernet/broadcom/bgmac.c
872
bgmac->mac_speed = SPEED_100;
drivers/net/ethernet/broadcom/bgmac.c
873
bgmac->mac_duplex = DUPLEX_FULL;
drivers/net/ethernet/broadcom/bgmac.c
874
bgmac_mac_speed(bgmac);
drivers/net/ethernet/broadcom/bgmac.c
879
static void bgmac_chip_reset_idm_config(struct bgmac *bgmac)
drivers/net/ethernet/broadcom/bgmac.c
883
iost = bgmac_idm_read(bgmac, BCMA_IOST);
drivers/net/ethernet/broadcom/bgmac.c
884
if (bgmac->feature_flags & BGMAC_FEAT_IOST_ATTACHED)
drivers/net/ethernet/broadcom/bgmac.c
888
if (!(bgmac->feature_flags & BGMAC_FEAT_NO_RESET)) {
drivers/net/ethernet/broadcom/bgmac.c
893
if (bgmac->in_init || !bgmac->has_robosw)
drivers/net/ethernet/broadcom/bgmac.c
896
bgmac_clk_enable(bgmac, flags);
drivers/net/ethernet/broadcom/bgmac.c
899
if (iost & BGMAC_BCMA_IOST_ATTACHED && (bgmac->in_init || !bgmac->has_robosw))
drivers/net/ethernet/broadcom/bgmac.c
900
bgmac_idm_write(bgmac, BCMA_IOCTL,
drivers/net/ethernet/broadcom/bgmac.c
901
bgmac_idm_read(bgmac, BCMA_IOCTL) &
drivers/net/ethernet/broadcom/bgmac.c
906
static void bgmac_chip_reset(struct bgmac *bgmac)
drivers/net/ethernet/broadcom/bgmac.c
91
ctl = bgmac_read(bgmac, ring->mmio_base + BGMAC_DMA_TX_CTL);
drivers/net/ethernet/broadcom/bgmac.c
911
if (bgmac_clk_enabled(bgmac)) {
drivers/net/ethernet/broadcom/bgmac.c
912
if (!bgmac->stats_grabbed) {
drivers/net/ethernet/broadcom/bgmac.c
914
bgmac->stats_grabbed = true;
drivers/net/ethernet/broadcom/bgmac.c
918
bgmac_dma_tx_reset(bgmac, &bgmac->tx_ring[i]);
drivers/net/ethernet/broadcom/bgmac.c
92
if (bgmac->feature_flags & BGMAC_FEAT_TX_MASK_SETUP) {
drivers/net/ethernet/broadcom/bgmac.c
920
bgmac_umac_cmd_maskset(bgmac, ~0, CMD_LCL_LOOP_EN, false);
drivers/net/ethernet/broadcom/bgmac.c
924
bgmac_dma_rx_reset(bgmac, &bgmac->rx_ring[i]);
drivers/net/ethernet/broadcom/bgmac.c
929
if (!(bgmac->feature_flags & BGMAC_FEAT_IDM_MASK))
drivers/net/ethernet/broadcom/bgmac.c
930
bgmac_chip_reset_idm_config(bgmac);
drivers/net/ethernet/broadcom/bgmac.c
933
if (bgmac->feature_flags & BGMAC_FEAT_MISC_PLL_REQ) {
drivers/net/ethernet/broadcom/bgmac.c
934
bgmac_set(bgmac, BCMA_CLKCTLST,
drivers/net/ethernet/broadcom/bgmac.c
936
bgmac_wait_value(bgmac, BCMA_CLKCTLST,
drivers/net/ethernet/broadcom/bgmac.c
942
if (bgmac->feature_flags & BGMAC_FEAT_SW_TYPE_PHY) {
drivers/net/ethernet/broadcom/bgmac.c
950
dev_err(bgmac->dev, "Failed to parse et_swtype (%s)\n",
drivers/net/ethernet/broadcom/bgmac.c
955
} else if (bgmac->feature_flags & BGMAC_FEAT_SW_TYPE_EPHYRMII) {
drivers/net/ethernet/broadcom/bgmac.c
958
} else if (bgmac->feature_flags & BGMAC_FEAT_SW_TYPE_RGMII) {
drivers/net/ethernet/broadcom/bgmac.c
962
bgmac_cco_ctl_maskset(bgmac, 1, ~(BGMAC_CHIPCTL_1_IF_TYPE_MASK |
drivers/net/ethernet/broadcom/bgmac.c
965
} else if (bgmac->feature_flags & BGMAC_FEAT_CC4_IF_SW_TYPE) {
drivers/net/ethernet/broadcom/bgmac.c
973
dev_err(bgmac->dev, "Failed to parse et_swtype (%s)\n",
drivers/net/ethernet/broadcom/bgmac.c
976
} else if (bgmac->feature_flags & BGMAC_FEAT_CC4_IF_SW_TYPE_RGMII) {
drivers/net/ethernet/broadcom/bgmac.c
980
bgmac_cco_ctl_maskset(bgmac, 4, ~(BGMAC_CHIPCTL_4_IF_TYPE_MASK |
drivers/net/ethernet/broadcom/bgmac.c
983
} else if (bgmac->feature_flags & BGMAC_FEAT_CC7_IF_TYPE_RGMII) {
drivers/net/ethernet/broadcom/bgmac.c
984
bgmac_cco_ctl_maskset(bgmac, 7, ~BGMAC_CHIPCTL_7_IF_TYPE_MASK,
drivers/net/ethernet/broadcom/bgmac.c
993
if (bgmac->feature_flags & BGMAC_FEAT_CMDCFG_SR_REV4)
drivers/net/ethernet/broadcom/bgmac.c
998
bgmac_umac_cmd_maskset(bgmac,
drivers/net/ethernet/broadcom/bgmac.h
485
u32 (*read)(struct bgmac *bgmac, u16 offset);
drivers/net/ethernet/broadcom/bgmac.h
486
void (*write)(struct bgmac *bgmac, u16 offset, u32 value);
drivers/net/ethernet/broadcom/bgmac.h
487
u32 (*idm_read)(struct bgmac *bgmac, u16 offset);
drivers/net/ethernet/broadcom/bgmac.h
488
void (*idm_write)(struct bgmac *bgmac, u16 offset, u32 value);
drivers/net/ethernet/broadcom/bgmac.h
489
bool (*clk_enabled)(struct bgmac *bgmac);
drivers/net/ethernet/broadcom/bgmac.h
490
void (*clk_enable)(struct bgmac *bgmac, u32 flags);
drivers/net/ethernet/broadcom/bgmac.h
491
void (*cco_ctl_maskset)(struct bgmac *bgmac, u32 offset, u32 mask,
drivers/net/ethernet/broadcom/bgmac.h
493
u32 (*get_bus_clock)(struct bgmac *bgmac);
drivers/net/ethernet/broadcom/bgmac.h
494
void (*cmn_maskset32)(struct bgmac *bgmac, u16 offset, u32 mask,
drivers/net/ethernet/broadcom/bgmac.h
496
int (*phy_connect)(struct bgmac *bgmac);
drivers/net/ethernet/broadcom/bgmac.h
499
struct bgmac *bgmac_alloc(struct device *dev);
drivers/net/ethernet/broadcom/bgmac.h
500
int bgmac_enet_probe(struct bgmac *bgmac);
drivers/net/ethernet/broadcom/bgmac.h
501
void bgmac_enet_remove(struct bgmac *bgmac);
drivers/net/ethernet/broadcom/bgmac.h
503
int bgmac_phy_connect_direct(struct bgmac *bgmac);
drivers/net/ethernet/broadcom/bgmac.h
504
int bgmac_enet_suspend(struct bgmac *bgmac);
drivers/net/ethernet/broadcom/bgmac.h
505
int bgmac_enet_resume(struct bgmac *bgmac);
drivers/net/ethernet/broadcom/bgmac.h
507
struct mii_bus *bcma_mdio_mii_register(struct bgmac *bgmac);
drivers/net/ethernet/broadcom/bgmac.h
510
static inline u32 bgmac_read(struct bgmac *bgmac, u16 offset)
drivers/net/ethernet/broadcom/bgmac.h
512
return bgmac->read(bgmac, offset);
drivers/net/ethernet/broadcom/bgmac.h
515
static inline void bgmac_write(struct bgmac *bgmac, u16 offset, u32 value)
drivers/net/ethernet/broadcom/bgmac.h
517
bgmac->write(bgmac, offset, value);
drivers/net/ethernet/broadcom/bgmac.h
520
static inline u32 bgmac_umac_read(struct bgmac *bgmac, u16 offset)
drivers/net/ethernet/broadcom/bgmac.h
522
return bgmac_read(bgmac, BGMAC_UNIMAC + offset);
drivers/net/ethernet/broadcom/bgmac.h
525
static inline void bgmac_umac_write(struct bgmac *bgmac, u16 offset, u32 value)
drivers/net/ethernet/broadcom/bgmac.h
527
bgmac_write(bgmac, BGMAC_UNIMAC + offset, value);
drivers/net/ethernet/broadcom/bgmac.h
530
static inline u32 bgmac_idm_read(struct bgmac *bgmac, u16 offset)
drivers/net/ethernet/broadcom/bgmac.h
532
return bgmac->idm_read(bgmac, offset);
drivers/net/ethernet/broadcom/bgmac.h
535
static inline void bgmac_idm_write(struct bgmac *bgmac, u16 offset, u32 value)
drivers/net/ethernet/broadcom/bgmac.h
537
bgmac->idm_write(bgmac, offset, value);
drivers/net/ethernet/broadcom/bgmac.h
540
static inline bool bgmac_clk_enabled(struct bgmac *bgmac)
drivers/net/ethernet/broadcom/bgmac.h
542
return bgmac->clk_enabled(bgmac);
drivers/net/ethernet/broadcom/bgmac.h
545
static inline void bgmac_clk_enable(struct bgmac *bgmac, u32 flags)
drivers/net/ethernet/broadcom/bgmac.h
547
bgmac->clk_enable(bgmac, flags);
drivers/net/ethernet/broadcom/bgmac.h
550
static inline void bgmac_cco_ctl_maskset(struct bgmac *bgmac, u32 offset,
drivers/net/ethernet/broadcom/bgmac.h
553
bgmac->cco_ctl_maskset(bgmac, offset, mask, set);
drivers/net/ethernet/broadcom/bgmac.h
556
static inline u32 bgmac_get_bus_clock(struct bgmac *bgmac)
drivers/net/ethernet/broadcom/bgmac.h
558
return bgmac->get_bus_clock(bgmac);
drivers/net/ethernet/broadcom/bgmac.h
561
static inline void bgmac_cmn_maskset32(struct bgmac *bgmac, u16 offset,
drivers/net/ethernet/broadcom/bgmac.h
564
bgmac->cmn_maskset32(bgmac, offset, mask, set);
drivers/net/ethernet/broadcom/bgmac.h
567
static inline void bgmac_maskset(struct bgmac *bgmac, u16 offset, u32 mask,
drivers/net/ethernet/broadcom/bgmac.h
570
bgmac_write(bgmac, offset, (bgmac_read(bgmac, offset) & mask) | set);
drivers/net/ethernet/broadcom/bgmac.h
573
static inline void bgmac_mask(struct bgmac *bgmac, u16 offset, u32 mask)
drivers/net/ethernet/broadcom/bgmac.h
575
bgmac_maskset(bgmac, offset, mask, 0);
drivers/net/ethernet/broadcom/bgmac.h
578
static inline void bgmac_set(struct bgmac *bgmac, u16 offset, u32 set)
drivers/net/ethernet/broadcom/bgmac.h
580
bgmac_maskset(bgmac, offset, ~0, set);
drivers/net/ethernet/broadcom/bgmac.h
583
static inline void bgmac_umac_maskset(struct bgmac *bgmac, u16 offset, u32 mask, u32 set)
drivers/net/ethernet/broadcom/bgmac.h
585
bgmac_maskset(bgmac, BGMAC_UNIMAC + offset, mask, set);
drivers/net/ethernet/broadcom/bgmac.h
588
static inline int bgmac_phy_connect(struct bgmac *bgmac)
drivers/net/ethernet/broadcom/bgmac.h
590
return bgmac->phy_connect(bgmac);