diff options
-rw-r--r-- | drivers/net/ethernet/renesas/ravb.h | 5 | ||||
-rw-r--r-- | drivers/net/ethernet/renesas/ravb_main.c | 11 | ||||
-rw-r--r-- | drivers/net/ethernet/renesas/ravb_ptp.c | 2 |
3 files changed, 12 insertions, 6 deletions
diff --git a/drivers/net/ethernet/renesas/ravb.h b/drivers/net/ethernet/renesas/ravb.h index 1470fc12282b..9b6bf557a2f5 100644 --- a/drivers/net/ethernet/renesas/ravb.h +++ b/drivers/net/ethernet/renesas/ravb.h | |||
@@ -428,6 +428,7 @@ enum EIS_BIT { | |||
428 | EIS_CULF1 = 0x00000080, | 428 | EIS_CULF1 = 0x00000080, |
429 | EIS_TFFF = 0x00000100, | 429 | EIS_TFFF = 0x00000100, |
430 | EIS_QFS = 0x00010000, | 430 | EIS_QFS = 0x00010000, |
431 | EIS_RESERVED = (GENMASK(31, 17) | GENMASK(15, 11)), | ||
431 | }; | 432 | }; |
432 | 433 | ||
433 | /* RIC0 */ | 434 | /* RIC0 */ |
@@ -472,6 +473,7 @@ enum RIS0_BIT { | |||
472 | RIS0_FRF15 = 0x00008000, | 473 | RIS0_FRF15 = 0x00008000, |
473 | RIS0_FRF16 = 0x00010000, | 474 | RIS0_FRF16 = 0x00010000, |
474 | RIS0_FRF17 = 0x00020000, | 475 | RIS0_FRF17 = 0x00020000, |
476 | RIS0_RESERVED = GENMASK(31, 18), | ||
475 | }; | 477 | }; |
476 | 478 | ||
477 | /* RIC1 */ | 479 | /* RIC1 */ |
@@ -528,6 +530,7 @@ enum RIS2_BIT { | |||
528 | RIS2_QFF16 = 0x00010000, | 530 | RIS2_QFF16 = 0x00010000, |
529 | RIS2_QFF17 = 0x00020000, | 531 | RIS2_QFF17 = 0x00020000, |
530 | RIS2_RFFF = 0x80000000, | 532 | RIS2_RFFF = 0x80000000, |
533 | RIS2_RESERVED = GENMASK(30, 18), | ||
531 | }; | 534 | }; |
532 | 535 | ||
533 | /* TIC */ | 536 | /* TIC */ |
@@ -544,6 +547,7 @@ enum TIS_BIT { | |||
544 | TIS_FTF1 = 0x00000002, /* Undocumented? */ | 547 | TIS_FTF1 = 0x00000002, /* Undocumented? */ |
545 | TIS_TFUF = 0x00000100, | 548 | TIS_TFUF = 0x00000100, |
546 | TIS_TFWF = 0x00000200, | 549 | TIS_TFWF = 0x00000200, |
550 | TIS_RESERVED = (GENMASK(31, 20) | GENMASK(15, 12) | GENMASK(7, 4)) | ||
547 | }; | 551 | }; |
548 | 552 | ||
549 | /* ISS */ | 553 | /* ISS */ |
@@ -617,6 +621,7 @@ enum GIC_BIT { | |||
617 | enum GIS_BIT { | 621 | enum GIS_BIT { |
618 | GIS_PTCF = 0x00000001, /* Undocumented? */ | 622 | GIS_PTCF = 0x00000001, /* Undocumented? */ |
619 | GIS_PTMF = 0x00000004, | 623 | GIS_PTMF = 0x00000004, |
624 | GIS_RESERVED = GENMASK(15, 10), | ||
620 | }; | 625 | }; |
621 | 626 | ||
622 | /* GIE (R-Car Gen3 only) */ | 627 | /* GIE (R-Car Gen3 only) */ |
diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c index aff5516b781e..d6f753925352 100644 --- a/drivers/net/ethernet/renesas/ravb_main.c +++ b/drivers/net/ethernet/renesas/ravb_main.c | |||
@@ -739,10 +739,11 @@ static void ravb_error_interrupt(struct net_device *ndev) | |||
739 | u32 eis, ris2; | 739 | u32 eis, ris2; |
740 | 740 | ||
741 | eis = ravb_read(ndev, EIS); | 741 | eis = ravb_read(ndev, EIS); |
742 | ravb_write(ndev, ~EIS_QFS, EIS); | 742 | ravb_write(ndev, ~(EIS_QFS | EIS_RESERVED), EIS); |
743 | if (eis & EIS_QFS) { | 743 | if (eis & EIS_QFS) { |
744 | ris2 = ravb_read(ndev, RIS2); | 744 | ris2 = ravb_read(ndev, RIS2); |
745 | ravb_write(ndev, ~(RIS2_QFF0 | RIS2_RFFF), RIS2); | 745 | ravb_write(ndev, ~(RIS2_QFF0 | RIS2_RFFF | RIS2_RESERVED), |
746 | RIS2); | ||
746 | 747 | ||
747 | /* Receive Descriptor Empty int */ | 748 | /* Receive Descriptor Empty int */ |
748 | if (ris2 & RIS2_QFF0) | 749 | if (ris2 & RIS2_QFF0) |
@@ -795,7 +796,7 @@ static bool ravb_timestamp_interrupt(struct net_device *ndev) | |||
795 | u32 tis = ravb_read(ndev, TIS); | 796 | u32 tis = ravb_read(ndev, TIS); |
796 | 797 | ||
797 | if (tis & TIS_TFUF) { | 798 | if (tis & TIS_TFUF) { |
798 | ravb_write(ndev, ~TIS_TFUF, TIS); | 799 | ravb_write(ndev, ~(TIS_TFUF | TIS_RESERVED), TIS); |
799 | ravb_get_tx_tstamp(ndev); | 800 | ravb_get_tx_tstamp(ndev); |
800 | return true; | 801 | return true; |
801 | } | 802 | } |
@@ -930,7 +931,7 @@ static int ravb_poll(struct napi_struct *napi, int budget) | |||
930 | /* Processing RX Descriptor Ring */ | 931 | /* Processing RX Descriptor Ring */ |
931 | if (ris0 & mask) { | 932 | if (ris0 & mask) { |
932 | /* Clear RX interrupt */ | 933 | /* Clear RX interrupt */ |
933 | ravb_write(ndev, ~mask, RIS0); | 934 | ravb_write(ndev, ~(mask | RIS0_RESERVED), RIS0); |
934 | if (ravb_rx(ndev, "a, q)) | 935 | if (ravb_rx(ndev, "a, q)) |
935 | goto out; | 936 | goto out; |
936 | } | 937 | } |
@@ -938,7 +939,7 @@ static int ravb_poll(struct napi_struct *napi, int budget) | |||
938 | if (tis & mask) { | 939 | if (tis & mask) { |
939 | spin_lock_irqsave(&priv->lock, flags); | 940 | spin_lock_irqsave(&priv->lock, flags); |
940 | /* Clear TX interrupt */ | 941 | /* Clear TX interrupt */ |
941 | ravb_write(ndev, ~mask, TIS); | 942 | ravb_write(ndev, ~(mask | TIS_RESERVED), TIS); |
942 | ravb_tx_free(ndev, q, true); | 943 | ravb_tx_free(ndev, q, true); |
943 | netif_wake_subqueue(ndev, q); | 944 | netif_wake_subqueue(ndev, q); |
944 | mmiowb(); | 945 | mmiowb(); |
diff --git a/drivers/net/ethernet/renesas/ravb_ptp.c b/drivers/net/ethernet/renesas/ravb_ptp.c index 0721b5c35d91..dce2a40a31e3 100644 --- a/drivers/net/ethernet/renesas/ravb_ptp.c +++ b/drivers/net/ethernet/renesas/ravb_ptp.c | |||
@@ -315,7 +315,7 @@ void ravb_ptp_interrupt(struct net_device *ndev) | |||
315 | } | 315 | } |
316 | } | 316 | } |
317 | 317 | ||
318 | ravb_write(ndev, ~gis, GIS); | 318 | ravb_write(ndev, ~(gis | GIS_RESERVED), GIS); |
319 | } | 319 | } |
320 | 320 | ||
321 | void ravb_ptp_init(struct net_device *ndev, struct platform_device *pdev) | 321 | void ravb_ptp_init(struct net_device *ndev, struct platform_device *pdev) |