Skip to content

Commit 9255bac

Browse files
lunndavem330
authored andcommitted
net: dsa: mv88e6xxx: Fix PHY interrupts by parameterising PHY base address
Most of the mv88e6xxx switches have the PHYs at address 0, 1, 2, ... The 6341 however has the PHYs at 0x10, 0x11, 0x12. Add a parameter to the info structure for this base address. Testing of 6f88284 ("net: dsa: mv88e6xxx: Add MDIO interrupts for internal PHYs") was performed on the 6341. So it works only on the 6341. Use this base information to correctly set the interrupt. Fixes: 6f88284 ("net: dsa: mv88e6xxx: Add MDIO interrupts for internal PHYs") Signed-off-by: Andrew Lunn <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 98f0a39 commit 9255bac

File tree

3 files changed

+28
-1
lines changed

3 files changed

+28
-1
lines changed

drivers/net/dsa/mv88e6xxx/chip.c

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3370,6 +3370,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
33703370
.num_internal_phys = 5,
33713371
.max_vid = 4095,
33723372
.port_base_addr = 0x10,
3373+
.phy_base_addr = 0x0,
33733374
.global1_addr = 0x1b,
33743375
.global2_addr = 0x1c,
33753376
.age_time_coeff = 15000,
@@ -3391,6 +3392,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
33913392
.num_internal_phys = 0,
33923393
.max_vid = 4095,
33933394
.port_base_addr = 0x10,
3395+
.phy_base_addr = 0x0,
33943396
.global1_addr = 0x1b,
33953397
.global2_addr = 0x1c,
33963398
.age_time_coeff = 15000,
@@ -3410,6 +3412,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
34103412
.num_internal_phys = 8,
34113413
.max_vid = 4095,
34123414
.port_base_addr = 0x10,
3415+
.phy_base_addr = 0x0,
34133416
.global1_addr = 0x1b,
34143417
.global2_addr = 0x1c,
34153418
.age_time_coeff = 15000,
@@ -3431,6 +3434,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
34313434
.num_internal_phys = 5,
34323435
.max_vid = 4095,
34333436
.port_base_addr = 0x10,
3437+
.phy_base_addr = 0x0,
34343438
.global1_addr = 0x1b,
34353439
.global2_addr = 0x1c,
34363440
.age_time_coeff = 15000,
@@ -3452,6 +3456,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
34523456
.num_internal_phys = 0,
34533457
.max_vid = 4095,
34543458
.port_base_addr = 0x10,
3459+
.phy_base_addr = 0x0,
34553460
.global1_addr = 0x1b,
34563461
.global2_addr = 0x1c,
34573462
.age_time_coeff = 15000,
@@ -3472,6 +3477,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
34723477
.num_gpio = 11,
34733478
.max_vid = 4095,
34743479
.port_base_addr = 0x10,
3480+
.phy_base_addr = 0x10,
34753481
.global1_addr = 0x1b,
34763482
.global2_addr = 0x1c,
34773483
.age_time_coeff = 3750,
@@ -3493,6 +3499,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
34933499
.num_internal_phys = 5,
34943500
.max_vid = 4095,
34953501
.port_base_addr = 0x10,
3502+
.phy_base_addr = 0x0,
34963503
.global1_addr = 0x1b,
34973504
.global2_addr = 0x1c,
34983505
.age_time_coeff = 15000,
@@ -3514,6 +3521,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
35143521
.num_internal_phys = 0,
35153522
.max_vid = 4095,
35163523
.port_base_addr = 0x10,
3524+
.phy_base_addr = 0x0,
35173525
.global1_addr = 0x1b,
35183526
.global2_addr = 0x1c,
35193527
.age_time_coeff = 15000,
@@ -3535,6 +3543,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
35353543
.num_internal_phys = 5,
35363544
.max_vid = 4095,
35373545
.port_base_addr = 0x10,
3546+
.phy_base_addr = 0x0,
35383547
.global1_addr = 0x1b,
35393548
.global2_addr = 0x1c,
35403549
.age_time_coeff = 15000,
@@ -3557,6 +3566,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
35573566
.num_gpio = 15,
35583567
.max_vid = 4095,
35593568
.port_base_addr = 0x10,
3569+
.phy_base_addr = 0x0,
35603570
.global1_addr = 0x1b,
35613571
.global2_addr = 0x1c,
35623572
.age_time_coeff = 15000,
@@ -3578,6 +3588,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
35783588
.num_internal_phys = 5,
35793589
.max_vid = 4095,
35803590
.port_base_addr = 0x10,
3591+
.phy_base_addr = 0x0,
35813592
.global1_addr = 0x1b,
35823593
.global2_addr = 0x1c,
35833594
.age_time_coeff = 15000,
@@ -3600,6 +3611,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
36003611
.num_gpio = 15,
36013612
.max_vid = 4095,
36023613
.port_base_addr = 0x10,
3614+
.phy_base_addr = 0x0,
36033615
.global1_addr = 0x1b,
36043616
.global2_addr = 0x1c,
36053617
.age_time_coeff = 15000,
@@ -3621,6 +3633,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
36213633
.num_internal_phys = 0,
36223634
.max_vid = 4095,
36233635
.port_base_addr = 0x10,
3636+
.phy_base_addr = 0x0,
36243637
.global1_addr = 0x1b,
36253638
.global2_addr = 0x1c,
36263639
.age_time_coeff = 15000,
@@ -3641,6 +3654,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
36413654
.num_gpio = 16,
36423655
.max_vid = 8191,
36433656
.port_base_addr = 0x0,
3657+
.phy_base_addr = 0x0,
36443658
.global1_addr = 0x1b,
36453659
.global2_addr = 0x1c,
36463660
.tag_protocol = DSA_TAG_PROTO_DSA,
@@ -3663,6 +3677,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
36633677
.num_gpio = 16,
36643678
.max_vid = 8191,
36653679
.port_base_addr = 0x0,
3680+
.phy_base_addr = 0x0,
36663681
.global1_addr = 0x1b,
36673682
.global2_addr = 0x1c,
36683683
.age_time_coeff = 3750,
@@ -3684,6 +3699,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
36843699
.num_internal_phys = 11,
36853700
.max_vid = 8191,
36863701
.port_base_addr = 0x0,
3702+
.phy_base_addr = 0x0,
36873703
.global1_addr = 0x1b,
36883704
.global2_addr = 0x1c,
36893705
.age_time_coeff = 3750,
@@ -3707,6 +3723,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
37073723
.num_gpio = 15,
37083724
.max_vid = 4095,
37093725
.port_base_addr = 0x10,
3726+
.phy_base_addr = 0x0,
37103727
.global1_addr = 0x1b,
37113728
.global2_addr = 0x1c,
37123729
.age_time_coeff = 15000,
@@ -3730,6 +3747,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
37303747
.num_gpio = 16,
37313748
.max_vid = 8191,
37323749
.port_base_addr = 0x0,
3750+
.phy_base_addr = 0x0,
37333751
.global1_addr = 0x1b,
37343752
.global2_addr = 0x1c,
37353753
.age_time_coeff = 3750,
@@ -3753,6 +3771,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
37533771
.num_gpio = 15,
37543772
.max_vid = 4095,
37553773
.port_base_addr = 0x10,
3774+
.phy_base_addr = 0x0,
37563775
.global1_addr = 0x1b,
37573776
.global2_addr = 0x1c,
37583777
.age_time_coeff = 15000,
@@ -3776,6 +3795,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
37763795
.num_gpio = 15,
37773796
.max_vid = 4095,
37783797
.port_base_addr = 0x10,
3798+
.phy_base_addr = 0x0,
37793799
.global1_addr = 0x1b,
37803800
.global2_addr = 0x1c,
37813801
.age_time_coeff = 15000,
@@ -3798,6 +3818,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
37983818
.num_gpio = 11,
37993819
.max_vid = 4095,
38003820
.port_base_addr = 0x10,
3821+
.phy_base_addr = 0x10,
38013822
.global1_addr = 0x1b,
38023823
.global2_addr = 0x1c,
38033824
.age_time_coeff = 3750,
@@ -3820,6 +3841,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
38203841
.num_internal_phys = 5,
38213842
.max_vid = 4095,
38223843
.port_base_addr = 0x10,
3844+
.phy_base_addr = 0x0,
38233845
.global1_addr = 0x1b,
38243846
.global2_addr = 0x1c,
38253847
.age_time_coeff = 15000,
@@ -3841,6 +3863,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
38413863
.num_internal_phys = 5,
38423864
.max_vid = 4095,
38433865
.port_base_addr = 0x10,
3866+
.phy_base_addr = 0x0,
38443867
.global1_addr = 0x1b,
38453868
.global2_addr = 0x1c,
38463869
.age_time_coeff = 15000,
@@ -3863,6 +3886,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
38633886
.num_gpio = 15,
38643887
.max_vid = 4095,
38653888
.port_base_addr = 0x10,
3889+
.phy_base_addr = 0x0,
38663890
.global1_addr = 0x1b,
38673891
.global2_addr = 0x1c,
38683892
.age_time_coeff = 15000,
@@ -3885,6 +3909,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
38853909
.num_gpio = 16,
38863910
.max_vid = 8191,
38873911
.port_base_addr = 0x0,
3912+
.phy_base_addr = 0x0,
38883913
.global1_addr = 0x1b,
38893914
.global2_addr = 0x1c,
38903915
.age_time_coeff = 3750,
@@ -3907,6 +3932,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
39073932
.num_gpio = 16,
39083933
.max_vid = 8191,
39093934
.port_base_addr = 0x0,
3935+
.phy_base_addr = 0x0,
39103936
.global1_addr = 0x1b,
39113937
.global2_addr = 0x1c,
39123938
.age_time_coeff = 3750,

drivers/net/dsa/mv88e6xxx/chip.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ struct mv88e6xxx_info {
114114
unsigned int num_gpio;
115115
unsigned int max_vid;
116116
unsigned int port_base_addr;
117+
unsigned int phy_base_addr;
117118
unsigned int global1_addr;
118119
unsigned int global2_addr;
119120
unsigned int age_time_coeff;

drivers/net/dsa/mv88e6xxx/global2.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1118,7 +1118,7 @@ int mv88e6xxx_g2_irq_mdio_setup(struct mv88e6xxx_chip *chip,
11181118
err = irq;
11191119
goto out;
11201120
}
1121-
bus->irq[chip->info->port_base_addr + phy] = irq;
1121+
bus->irq[chip->info->phy_base_addr + phy] = irq;
11221122
}
11231123
return 0;
11241124
out:

0 commit comments

Comments
 (0)