@@ -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