@@ -5381,122 +5381,6 @@ static void rtl_hw_start_8168ep_3(struct rtl8169_private *tp)
5381
5381
rtl_hw_aspm_clkreq_enable (tp , true);
5382
5382
}
5383
5383
5384
- static void rtl_hw_start_8168 (struct rtl8169_private * tp )
5385
- {
5386
- RTL_W8 (tp , MaxTxPacketSize , TxPacketMax );
5387
-
5388
- /* Work around for RxFIFO overflow. */
5389
- if (tp -> mac_version == RTL_GIGA_MAC_VER_11 ) {
5390
- tp -> irq_mask |= RxFIFOOver ;
5391
- tp -> irq_mask &= ~RxOverflow ;
5392
- }
5393
-
5394
- switch (tp -> mac_version ) {
5395
- case RTL_GIGA_MAC_VER_11 :
5396
- rtl_hw_start_8168bb (tp );
5397
- break ;
5398
-
5399
- case RTL_GIGA_MAC_VER_12 :
5400
- case RTL_GIGA_MAC_VER_17 :
5401
- rtl_hw_start_8168bef (tp );
5402
- break ;
5403
-
5404
- case RTL_GIGA_MAC_VER_18 :
5405
- rtl_hw_start_8168cp_1 (tp );
5406
- break ;
5407
-
5408
- case RTL_GIGA_MAC_VER_19 :
5409
- rtl_hw_start_8168c_1 (tp );
5410
- break ;
5411
-
5412
- case RTL_GIGA_MAC_VER_20 :
5413
- rtl_hw_start_8168c_2 (tp );
5414
- break ;
5415
-
5416
- case RTL_GIGA_MAC_VER_21 :
5417
- rtl_hw_start_8168c_3 (tp );
5418
- break ;
5419
-
5420
- case RTL_GIGA_MAC_VER_22 :
5421
- rtl_hw_start_8168c_4 (tp );
5422
- break ;
5423
-
5424
- case RTL_GIGA_MAC_VER_23 :
5425
- rtl_hw_start_8168cp_2 (tp );
5426
- break ;
5427
-
5428
- case RTL_GIGA_MAC_VER_24 :
5429
- rtl_hw_start_8168cp_3 (tp );
5430
- break ;
5431
-
5432
- case RTL_GIGA_MAC_VER_25 :
5433
- case RTL_GIGA_MAC_VER_26 :
5434
- case RTL_GIGA_MAC_VER_27 :
5435
- rtl_hw_start_8168d (tp );
5436
- break ;
5437
-
5438
- case RTL_GIGA_MAC_VER_28 :
5439
- rtl_hw_start_8168d_4 (tp );
5440
- break ;
5441
-
5442
- case RTL_GIGA_MAC_VER_31 :
5443
- rtl_hw_start_8168dp (tp );
5444
- break ;
5445
-
5446
- case RTL_GIGA_MAC_VER_32 :
5447
- case RTL_GIGA_MAC_VER_33 :
5448
- rtl_hw_start_8168e_1 (tp );
5449
- break ;
5450
- case RTL_GIGA_MAC_VER_34 :
5451
- rtl_hw_start_8168e_2 (tp );
5452
- break ;
5453
-
5454
- case RTL_GIGA_MAC_VER_35 :
5455
- case RTL_GIGA_MAC_VER_36 :
5456
- rtl_hw_start_8168f_1 (tp );
5457
- break ;
5458
-
5459
- case RTL_GIGA_MAC_VER_38 :
5460
- rtl_hw_start_8411 (tp );
5461
- break ;
5462
-
5463
- case RTL_GIGA_MAC_VER_40 :
5464
- case RTL_GIGA_MAC_VER_41 :
5465
- rtl_hw_start_8168g_1 (tp );
5466
- break ;
5467
- case RTL_GIGA_MAC_VER_42 :
5468
- rtl_hw_start_8168g_2 (tp );
5469
- break ;
5470
-
5471
- case RTL_GIGA_MAC_VER_44 :
5472
- rtl_hw_start_8411_2 (tp );
5473
- break ;
5474
-
5475
- case RTL_GIGA_MAC_VER_45 :
5476
- case RTL_GIGA_MAC_VER_46 :
5477
- rtl_hw_start_8168h_1 (tp );
5478
- break ;
5479
-
5480
- case RTL_GIGA_MAC_VER_49 :
5481
- rtl_hw_start_8168ep_1 (tp );
5482
- break ;
5483
-
5484
- case RTL_GIGA_MAC_VER_50 :
5485
- rtl_hw_start_8168ep_2 (tp );
5486
- break ;
5487
-
5488
- case RTL_GIGA_MAC_VER_51 :
5489
- rtl_hw_start_8168ep_3 (tp );
5490
- break ;
5491
-
5492
- default :
5493
- netif_err (tp , drv , tp -> dev ,
5494
- "unknown chipset (mac_version = %d)\n" ,
5495
- tp -> mac_version );
5496
- break ;
5497
- }
5498
- }
5499
-
5500
5384
static void rtl_hw_start_8102e_1 (struct rtl8169_private * tp )
5501
5385
{
5502
5386
static const struct ephy_info e_info_8102e_1 [] = {
@@ -5622,6 +5506,73 @@ static void rtl_hw_start_8106(struct rtl8169_private *tp)
5622
5506
rtl_hw_aspm_clkreq_enable (tp , true);
5623
5507
}
5624
5508
5509
+ static void rtl_hw_config (struct rtl8169_private * tp )
5510
+ {
5511
+ static const rtl_generic_fct hw_configs [] = {
5512
+ [RTL_GIGA_MAC_VER_07 ] = rtl_hw_start_8102e_1 ,
5513
+ [RTL_GIGA_MAC_VER_08 ] = rtl_hw_start_8102e_3 ,
5514
+ [RTL_GIGA_MAC_VER_09 ] = rtl_hw_start_8102e_2 ,
5515
+ [RTL_GIGA_MAC_VER_10 ] = NULL ,
5516
+ [RTL_GIGA_MAC_VER_11 ] = rtl_hw_start_8168bb ,
5517
+ [RTL_GIGA_MAC_VER_12 ] = rtl_hw_start_8168bef ,
5518
+ [RTL_GIGA_MAC_VER_13 ] = NULL ,
5519
+ [RTL_GIGA_MAC_VER_14 ] = NULL ,
5520
+ [RTL_GIGA_MAC_VER_15 ] = NULL ,
5521
+ [RTL_GIGA_MAC_VER_16 ] = NULL ,
5522
+ [RTL_GIGA_MAC_VER_17 ] = rtl_hw_start_8168bef ,
5523
+ [RTL_GIGA_MAC_VER_18 ] = rtl_hw_start_8168cp_1 ,
5524
+ [RTL_GIGA_MAC_VER_19 ] = rtl_hw_start_8168c_1 ,
5525
+ [RTL_GIGA_MAC_VER_20 ] = rtl_hw_start_8168c_2 ,
5526
+ [RTL_GIGA_MAC_VER_21 ] = rtl_hw_start_8168c_3 ,
5527
+ [RTL_GIGA_MAC_VER_22 ] = rtl_hw_start_8168c_4 ,
5528
+ [RTL_GIGA_MAC_VER_23 ] = rtl_hw_start_8168cp_2 ,
5529
+ [RTL_GIGA_MAC_VER_24 ] = rtl_hw_start_8168cp_3 ,
5530
+ [RTL_GIGA_MAC_VER_25 ] = rtl_hw_start_8168d ,
5531
+ [RTL_GIGA_MAC_VER_26 ] = rtl_hw_start_8168d ,
5532
+ [RTL_GIGA_MAC_VER_27 ] = rtl_hw_start_8168d ,
5533
+ [RTL_GIGA_MAC_VER_28 ] = rtl_hw_start_8168d_4 ,
5534
+ [RTL_GIGA_MAC_VER_29 ] = rtl_hw_start_8105e_1 ,
5535
+ [RTL_GIGA_MAC_VER_30 ] = rtl_hw_start_8105e_2 ,
5536
+ [RTL_GIGA_MAC_VER_31 ] = rtl_hw_start_8168dp ,
5537
+ [RTL_GIGA_MAC_VER_32 ] = rtl_hw_start_8168e_1 ,
5538
+ [RTL_GIGA_MAC_VER_33 ] = rtl_hw_start_8168e_1 ,
5539
+ [RTL_GIGA_MAC_VER_34 ] = rtl_hw_start_8168e_2 ,
5540
+ [RTL_GIGA_MAC_VER_35 ] = rtl_hw_start_8168f_1 ,
5541
+ [RTL_GIGA_MAC_VER_36 ] = rtl_hw_start_8168f_1 ,
5542
+ [RTL_GIGA_MAC_VER_37 ] = rtl_hw_start_8402 ,
5543
+ [RTL_GIGA_MAC_VER_38 ] = rtl_hw_start_8411 ,
5544
+ [RTL_GIGA_MAC_VER_39 ] = rtl_hw_start_8106 ,
5545
+ [RTL_GIGA_MAC_VER_40 ] = rtl_hw_start_8168g_1 ,
5546
+ [RTL_GIGA_MAC_VER_41 ] = rtl_hw_start_8168g_1 ,
5547
+ [RTL_GIGA_MAC_VER_42 ] = rtl_hw_start_8168g_2 ,
5548
+ [RTL_GIGA_MAC_VER_43 ] = rtl_hw_start_8168g_2 ,
5549
+ [RTL_GIGA_MAC_VER_44 ] = rtl_hw_start_8411_2 ,
5550
+ [RTL_GIGA_MAC_VER_45 ] = rtl_hw_start_8168h_1 ,
5551
+ [RTL_GIGA_MAC_VER_46 ] = rtl_hw_start_8168h_1 ,
5552
+ [RTL_GIGA_MAC_VER_47 ] = rtl_hw_start_8168h_1 ,
5553
+ [RTL_GIGA_MAC_VER_48 ] = rtl_hw_start_8168h_1 ,
5554
+ [RTL_GIGA_MAC_VER_49 ] = rtl_hw_start_8168ep_1 ,
5555
+ [RTL_GIGA_MAC_VER_50 ] = rtl_hw_start_8168ep_2 ,
5556
+ [RTL_GIGA_MAC_VER_51 ] = rtl_hw_start_8168ep_3 ,
5557
+ };
5558
+
5559
+ if (hw_configs [tp -> mac_version ])
5560
+ hw_configs [tp -> mac_version ](tp );
5561
+ }
5562
+
5563
+ static void rtl_hw_start_8168 (struct rtl8169_private * tp )
5564
+ {
5565
+ RTL_W8 (tp , MaxTxPacketSize , TxPacketMax );
5566
+
5567
+ /* Workaround for RxFIFO overflow. */
5568
+ if (tp -> mac_version == RTL_GIGA_MAC_VER_11 ) {
5569
+ tp -> irq_mask |= RxFIFOOver ;
5570
+ tp -> irq_mask &= ~RxOverflow ;
5571
+ }
5572
+
5573
+ rtl_hw_config (tp );
5574
+ }
5575
+
5625
5576
static void rtl_hw_start_8101 (struct rtl8169_private * tp )
5626
5577
{
5627
5578
if (tp -> mac_version >= RTL_GIGA_MAC_VER_30 )
@@ -5637,41 +5588,7 @@ static void rtl_hw_start_8101(struct rtl8169_private *tp)
5637
5588
tp -> cp_cmd &= CPCMD_QUIRK_MASK ;
5638
5589
RTL_W16 (tp , CPlusCmd , tp -> cp_cmd );
5639
5590
5640
- switch (tp -> mac_version ) {
5641
- case RTL_GIGA_MAC_VER_07 :
5642
- rtl_hw_start_8102e_1 (tp );
5643
- break ;
5644
-
5645
- case RTL_GIGA_MAC_VER_08 :
5646
- rtl_hw_start_8102e_3 (tp );
5647
- break ;
5648
-
5649
- case RTL_GIGA_MAC_VER_09 :
5650
- rtl_hw_start_8102e_2 (tp );
5651
- break ;
5652
-
5653
- case RTL_GIGA_MAC_VER_29 :
5654
- rtl_hw_start_8105e_1 (tp );
5655
- break ;
5656
- case RTL_GIGA_MAC_VER_30 :
5657
- rtl_hw_start_8105e_2 (tp );
5658
- break ;
5659
-
5660
- case RTL_GIGA_MAC_VER_37 :
5661
- rtl_hw_start_8402 (tp );
5662
- break ;
5663
-
5664
- case RTL_GIGA_MAC_VER_39 :
5665
- rtl_hw_start_8106 (tp );
5666
- break ;
5667
- case RTL_GIGA_MAC_VER_43 :
5668
- rtl_hw_start_8168g_2 (tp );
5669
- break ;
5670
- case RTL_GIGA_MAC_VER_47 :
5671
- case RTL_GIGA_MAC_VER_48 :
5672
- rtl_hw_start_8168h_1 (tp );
5673
- break ;
5674
- }
5591
+ rtl_hw_config (tp );
5675
5592
}
5676
5593
5677
5594
static int rtl8169_change_mtu (struct net_device * dev , int new_mtu )
0 commit comments