Skip to content

Commit cb1b0f9

Browse files
Jon Masondavem330
authored andcommitted
net: ethernet: bgmac: unify code of the same family
BCM471X and BCM535X are of the same family (from what I can derive from internal documents). Group them into the case statement together, which results in more code reuse. Also, use existing helper variables to make the code a little more readable too. Signed-off-by: Jon Mason <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 02083c3 commit cb1b0f9

File tree

1 file changed

+28
-36
lines changed

1 file changed

+28
-36
lines changed

drivers/net/ethernet/broadcom/bgmac-bcma.c

Lines changed: 28 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -192,55 +192,62 @@ static int bgmac_probe(struct bcma_device *core)
192192
goto err1;
193193
}
194194

195-
bgmac->has_robosw = !!(core->bus->sprom.boardflags_lo &
196-
BGMAC_BFL_ENETROBO);
195+
bgmac->has_robosw = !!(sprom->boardflags_lo & BGMAC_BFL_ENETROBO);
197196
if (bgmac->has_robosw)
198197
dev_warn(bgmac->dev, "Support for Roboswitch not implemented\n");
199198

200-
if (core->bus->sprom.boardflags_lo & BGMAC_BFL_ENETADM)
199+
if (sprom->boardflags_lo & BGMAC_BFL_ENETADM)
201200
dev_warn(bgmac->dev, "Support for ADMtek ethernet switch not implemented\n");
202201

203202
/* Feature Flags */
204-
switch (core->bus->chipinfo.id) {
203+
switch (ci->id) {
204+
/* BCM 471X/535X family */
205+
case BCMA_CHIP_ID_BCM4716:
206+
bgmac->feature_flags |= BGMAC_FEAT_CLKCTLST;
207+
/* fallthrough */
208+
case BCMA_CHIP_ID_BCM47162:
209+
bgmac->feature_flags |= BGMAC_FEAT_FLW_CTRL2;
210+
bgmac->feature_flags |= BGMAC_FEAT_SET_RXQ_CLK;
211+
break;
205212
case BCMA_CHIP_ID_BCM5357:
213+
case BCMA_CHIP_ID_BCM53572:
206214
bgmac->feature_flags |= BGMAC_FEAT_SET_RXQ_CLK;
207215
bgmac->feature_flags |= BGMAC_FEAT_CLKCTLST;
208216
bgmac->feature_flags |= BGMAC_FEAT_FLW_CTRL1;
209217
bgmac->feature_flags |= BGMAC_FEAT_SW_TYPE_PHY;
210-
if (core->bus->chipinfo.pkg == BCMA_PKG_ID_BCM47186) {
211-
bgmac->feature_flags |= BGMAC_FEAT_IOST_ATTACHED;
218+
if (ci->pkg == BCMA_PKG_ID_BCM47188 ||
219+
ci->pkg == BCMA_PKG_ID_BCM47186) {
212220
bgmac->feature_flags |= BGMAC_FEAT_SW_TYPE_RGMII;
221+
bgmac->feature_flags |= BGMAC_FEAT_IOST_ATTACHED;
213222
}
214-
if (core->bus->chipinfo.pkg == BCMA_PKG_ID_BCM5358)
223+
if (ci->pkg == BCMA_PKG_ID_BCM5358)
215224
bgmac->feature_flags |= BGMAC_FEAT_SW_TYPE_EPHYRMII;
216225
break;
217-
case BCMA_CHIP_ID_BCM53572:
218-
bgmac->feature_flags |= BGMAC_FEAT_SET_RXQ_CLK;
226+
case BCMA_CHIP_ID_BCM53573:
219227
bgmac->feature_flags |= BGMAC_FEAT_CLKCTLST;
220-
bgmac->feature_flags |= BGMAC_FEAT_FLW_CTRL1;
221-
bgmac->feature_flags |= BGMAC_FEAT_SW_TYPE_PHY;
222-
if (core->bus->chipinfo.pkg == BCMA_PKG_ID_BCM47188) {
223-
bgmac->feature_flags |= BGMAC_FEAT_SW_TYPE_RGMII;
228+
bgmac->feature_flags |= BGMAC_FEAT_SET_RXQ_CLK;
229+
if (ci->pkg == BCMA_PKG_ID_BCM47189)
224230
bgmac->feature_flags |= BGMAC_FEAT_IOST_ATTACHED;
231+
if (core->core_unit == 0) {
232+
bgmac->feature_flags |= BGMAC_FEAT_CC4_IF_SW_TYPE;
233+
if (ci->pkg == BCMA_PKG_ID_BCM47189)
234+
bgmac->feature_flags |=
235+
BGMAC_FEAT_CC4_IF_SW_TYPE_RGMII;
236+
} else if (core->core_unit == 1) {
237+
bgmac->feature_flags |= BGMAC_FEAT_IRQ_ID_OOB_6;
238+
bgmac->feature_flags |= BGMAC_FEAT_CC7_IF_TYPE_RGMII;
225239
}
226240
break;
227241
case BCMA_CHIP_ID_BCM4749:
228242
bgmac->feature_flags |= BGMAC_FEAT_SET_RXQ_CLK;
229243
bgmac->feature_flags |= BGMAC_FEAT_CLKCTLST;
230244
bgmac->feature_flags |= BGMAC_FEAT_FLW_CTRL1;
231245
bgmac->feature_flags |= BGMAC_FEAT_SW_TYPE_PHY;
232-
if (core->bus->chipinfo.pkg == 10) {
246+
if (ci->pkg == 10) {
233247
bgmac->feature_flags |= BGMAC_FEAT_SW_TYPE_RGMII;
234248
bgmac->feature_flags |= BGMAC_FEAT_IOST_ATTACHED;
235249
}
236250
break;
237-
case BCMA_CHIP_ID_BCM4716:
238-
bgmac->feature_flags |= BGMAC_FEAT_CLKCTLST;
239-
/* fallthrough */
240-
case BCMA_CHIP_ID_BCM47162:
241-
bgmac->feature_flags |= BGMAC_FEAT_FLW_CTRL2;
242-
bgmac->feature_flags |= BGMAC_FEAT_SET_RXQ_CLK;
243-
break;
244251
/* bcm4707_family */
245252
case BCMA_CHIP_ID_BCM4707:
246253
case BCMA_CHIP_ID_BCM47094:
@@ -249,21 +256,6 @@ static int bgmac_probe(struct bcma_device *core)
249256
bgmac->feature_flags |= BGMAC_FEAT_NO_RESET;
250257
bgmac->feature_flags |= BGMAC_FEAT_FORCE_SPEED_2500;
251258
break;
252-
case BCMA_CHIP_ID_BCM53573:
253-
bgmac->feature_flags |= BGMAC_FEAT_CLKCTLST;
254-
bgmac->feature_flags |= BGMAC_FEAT_SET_RXQ_CLK;
255-
if (ci->pkg == BCMA_PKG_ID_BCM47189)
256-
bgmac->feature_flags |= BGMAC_FEAT_IOST_ATTACHED;
257-
if (core->core_unit == 0) {
258-
bgmac->feature_flags |= BGMAC_FEAT_CC4_IF_SW_TYPE;
259-
if (ci->pkg == BCMA_PKG_ID_BCM47189)
260-
bgmac->feature_flags |=
261-
BGMAC_FEAT_CC4_IF_SW_TYPE_RGMII;
262-
} else if (core->core_unit == 1) {
263-
bgmac->feature_flags |= BGMAC_FEAT_IRQ_ID_OOB_6;
264-
bgmac->feature_flags |= BGMAC_FEAT_CC7_IF_TYPE_RGMII;
265-
}
266-
break;
267259
default:
268260
bgmac->feature_flags |= BGMAC_FEAT_CLKCTLST;
269261
bgmac->feature_flags |= BGMAC_FEAT_SET_RXQ_CLK;

0 commit comments

Comments
 (0)