Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
- drivers/net/ethernet/renesas/ravb_main.c | 1 +
+ drivers/net/ethernet/renesas/ravb_main.c | 1 +
1 file changed, 1 insertion(+)
-diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c
-index 5cdc7bc63e267..1212a9b4822b3 100644
--- a/drivers/net/ethernet/renesas/ravb_main.c
+++ b/drivers/net/ethernet/renesas/ravb_main.c
-@@ -1472,6 +1472,7 @@ static int ravb_open(struct net_device *ndev)
+@@ -1461,6 +1461,7 @@ out_ptp_stop:
/* Stop PTP Clock driver */
if (info->gptp)
ravb_ptp_stop(ndev);
+ ravb_stop_dma(ndev);
- out_free_irq_mgmta:
+ out_free_irq_nc_tx:
if (!info->multi_irqs)
goto out_free_irq;
---
-2.42.0
-
+++ /dev/null
-From 94fa16aa4a3405459e8c882d3eebe102b6f022c0 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Thu, 12 May 2022 12:47:19 +0100
-Subject: ravb: Separate handling of irq enable/disable regs into feature
-
-From: Phil Edworthy <phil.edworthy@renesas.com>
-
-[ Upstream commit cb99badde146c327f150773921ffe080abe1eb44 ]
-
-Currently, when the HW has a single interrupt, the driver uses the
-GIC, TIC, RIC0 registers to enable and disable interrupts.
-When the HW has multiple interrupts, it uses the GIE, GID, TIE, TID,
-RIE0, RID0 registers.
-
-However, other devices, e.g. RZ/V2M, have multiple irqs and only have
-the GIC, TIC, RIC0 registers.
-Therefore, split this into a separate feature.
-
-Signed-off-by: Phil Edworthy <phil.edworthy@renesas.com>
-Reviewed-by: Biju Das <biju.das.jz@bp.renesas.com>
-Reviewed-by: Sergey Shtylyov <s.shtylyov@omp.ru>
-Signed-off-by: David S. Miller <davem@davemloft.net>
-Stable-dep-of: eac16a733427 ("net: ravb: Stop DMA in case of failures on ravb_open()")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/net/ethernet/renesas/ravb.h | 1 +
- drivers/net/ethernet/renesas/ravb_main.c | 5 +++--
- drivers/net/ethernet/renesas/ravb_ptp.c | 6 +++---
- 3 files changed, 7 insertions(+), 5 deletions(-)
-
-diff --git a/drivers/net/ethernet/renesas/ravb.h b/drivers/net/ethernet/renesas/ravb.h
-index a475f54a6b63c..a3cd09c7003bf 100644
---- a/drivers/net/ethernet/renesas/ravb.h
-+++ b/drivers/net/ethernet/renesas/ravb.h
-@@ -1000,6 +1000,7 @@ struct ravb_hw_info {
- unsigned internal_delay:1; /* AVB-DMAC has internal delays */
- unsigned tx_counters:1; /* E-MAC has TX counters */
- unsigned multi_irqs:1; /* AVB-DMAC and E-MAC has multiple irqs */
-+ unsigned irq_en_dis:1; /* Has separate irq enable and disable regs */
- unsigned gptp:1; /* AVB-DMAC has gPTP support */
- unsigned ccc_gac:1; /* AVB-DMAC has gPTP support active in config mode */
- };
-diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c
-index 0c73bc4df98d5..57215c834188c 100644
---- a/drivers/net/ethernet/renesas/ravb_main.c
-+++ b/drivers/net/ethernet/renesas/ravb_main.c
-@@ -821,7 +821,7 @@ static bool ravb_queue_interrupt(struct net_device *ndev, int q)
- if (((ris0 & ric0) & BIT(q)) || ((tis & tic) & BIT(q))) {
- if (napi_schedule_prep(&priv->napi[q])) {
- /* Mask RX and TX interrupts */
-- if (!info->multi_irqs) {
-+ if (!info->irq_en_dis) {
- ravb_write(ndev, ric0 & ~BIT(q), RIC0);
- ravb_write(ndev, tic & ~BIT(q), TIC);
- } else {
-@@ -988,7 +988,7 @@ static int ravb_poll(struct napi_struct *napi, int budget)
-
- /* Re-enable RX/TX interrupts */
- spin_lock_irqsave(&priv->lock, flags);
-- if (!info->multi_irqs) {
-+ if (!info->irq_en_dis) {
- ravb_modify(ndev, RIC0, mask, mask);
- ravb_modify(ndev, TIC, mask, mask);
- } else {
-@@ -2038,6 +2038,7 @@ static const struct ravb_hw_info ravb_gen3_hw_info = {
- .internal_delay = 1,
- .tx_counters = 1,
- .multi_irqs = 1,
-+ .irq_en_dis = 1,
- .ccc_gac = 1,
- };
-
-diff --git a/drivers/net/ethernet/renesas/ravb_ptp.c b/drivers/net/ethernet/renesas/ravb_ptp.c
-index c099656dd75b6..87c4306d66ecc 100644
---- a/drivers/net/ethernet/renesas/ravb_ptp.c
-+++ b/drivers/net/ethernet/renesas/ravb_ptp.c
-@@ -198,7 +198,7 @@ static int ravb_ptp_extts(struct ptp_clock_info *ptp,
- priv->ptp.extts[req->index] = on;
-
- spin_lock_irqsave(&priv->lock, flags);
-- if (!info->multi_irqs)
-+ if (!info->irq_en_dis)
- ravb_modify(ndev, GIC, GIC_PTCE, on ? GIC_PTCE : 0);
- else if (on)
- ravb_write(ndev, GIE_PTCS, GIE);
-@@ -254,7 +254,7 @@ static int ravb_ptp_perout(struct ptp_clock_info *ptp,
- error = ravb_ptp_update_compare(priv, (u32)start_ns);
- if (!error) {
- /* Unmask interrupt */
-- if (!info->multi_irqs)
-+ if (!info->irq_en_dis)
- ravb_modify(ndev, GIC, GIC_PTME, GIC_PTME);
- else
- ravb_write(ndev, GIE_PTMS0, GIE);
-@@ -266,7 +266,7 @@ static int ravb_ptp_perout(struct ptp_clock_info *ptp,
- perout->period = 0;
-
- /* Mask interrupt */
-- if (!info->multi_irqs)
-+ if (!info->irq_en_dis)
- ravb_modify(ndev, GIC, GIC_PTME, 0);
- else
- ravb_write(ndev, GID_PTMD0, GID);
---
-2.42.0
-
+++ /dev/null
-From d1251b821e6def3c1b110fcce4751a74bcc7f5b0 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Thu, 12 May 2022 12:47:20 +0100
-Subject: ravb: Support separate Line0 (Desc), Line1 (Err) and Line2 (Mgmt)
- irqs
-
-From: Phil Edworthy <phil.edworthy@renesas.com>
-
-[ Upstream commit b0265dcba3d6c1689e6ce315bed09192fb587403 ]
-
-R-Car has a combined interrupt line, ch22 = Line0_DiA | Line1_A | Line2_A.
-RZ/V2M has separate interrupt lines for each of these, so add a feature
-that allows the driver to get these interrupts and call the common handler.
-
-Signed-off-by: Phil Edworthy <phil.edworthy@renesas.com>
-Reviewed-by: Biju Das <biju.das.jz@bp.renesas.com>
-Reviewed-by: Sergey Shtylyov <s.shtylyov@omp.ru>
-Signed-off-by: David S. Miller <davem@davemloft.net>
-Stable-dep-of: eac16a733427 ("net: ravb: Stop DMA in case of failures on ravb_open()")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/net/ethernet/renesas/ravb.h | 3 ++
- drivers/net/ethernet/renesas/ravb_main.c | 56 +++++++++++++++++++++---
- 2 files changed, 53 insertions(+), 6 deletions(-)
-
-diff --git a/drivers/net/ethernet/renesas/ravb.h b/drivers/net/ethernet/renesas/ravb.h
-index a3cd09c7003bf..29df692ebaaa2 100644
---- a/drivers/net/ethernet/renesas/ravb.h
-+++ b/drivers/net/ethernet/renesas/ravb.h
-@@ -1001,6 +1001,7 @@ struct ravb_hw_info {
- unsigned tx_counters:1; /* E-MAC has TX counters */
- unsigned multi_irqs:1; /* AVB-DMAC and E-MAC has multiple irqs */
- unsigned irq_en_dis:1; /* Has separate irq enable and disable regs */
-+ unsigned err_mgmt_irqs:1; /* Line1 (Err) and Line2 (Mgmt) irqs are separate */
- unsigned gptp:1; /* AVB-DMAC has gPTP support */
- unsigned ccc_gac:1; /* AVB-DMAC has gPTP support active in config mode */
- };
-@@ -1046,6 +1047,8 @@ struct ravb_private {
- int msg_enable;
- int speed;
- int emac_irq;
-+ int erra_irq;
-+ int mgmta_irq;
- int rx_irqs[NUM_RX_QUEUE];
- int tx_irqs[NUM_TX_QUEUE];
-
-diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c
-index 57215c834188c..5cdc7bc63e267 100644
---- a/drivers/net/ethernet/renesas/ravb_main.c
-+++ b/drivers/net/ethernet/renesas/ravb_main.c
-@@ -1436,12 +1436,23 @@ static int ravb_open(struct net_device *ndev)
- ndev, dev, "ch19:tx_nc");
- if (error)
- goto out_free_irq_nc_rx;
-+
-+ if (info->err_mgmt_irqs) {
-+ error = ravb_hook_irq(priv->erra_irq, ravb_multi_interrupt,
-+ ndev, dev, "err_a");
-+ if (error)
-+ goto out_free_irq_nc_tx;
-+ error = ravb_hook_irq(priv->mgmta_irq, ravb_multi_interrupt,
-+ ndev, dev, "mgmt_a");
-+ if (error)
-+ goto out_free_irq_erra;
-+ }
- }
-
- /* Device init */
- error = ravb_dmac_init(ndev);
- if (error)
-- goto out_free_irq_nc_tx;
-+ goto out_free_irq_mgmta;
- ravb_emac_init(ndev);
-
- /* Initialise PTP Clock driver */
-@@ -1461,9 +1472,15 @@ static int ravb_open(struct net_device *ndev)
- /* Stop PTP Clock driver */
- if (info->gptp)
- ravb_ptp_stop(ndev);
--out_free_irq_nc_tx:
-+out_free_irq_mgmta:
- if (!info->multi_irqs)
- goto out_free_irq;
-+ if (info->err_mgmt_irqs)
-+ free_irq(priv->mgmta_irq, ndev);
-+out_free_irq_erra:
-+ if (info->err_mgmt_irqs)
-+ free_irq(priv->erra_irq, ndev);
-+out_free_irq_nc_tx:
- free_irq(priv->tx_irqs[RAVB_NC], ndev);
- out_free_irq_nc_rx:
- free_irq(priv->rx_irqs[RAVB_NC], ndev);
-@@ -1791,6 +1808,10 @@ static int ravb_close(struct net_device *ndev)
- free_irq(priv->tx_irqs[RAVB_BE], ndev);
- free_irq(priv->rx_irqs[RAVB_BE], ndev);
- free_irq(priv->emac_irq, ndev);
-+ if (info->err_mgmt_irqs) {
-+ free_irq(priv->erra_irq, ndev);
-+ free_irq(priv->mgmta_irq, ndev);
-+ }
- }
- free_irq(ndev->irq, ndev);
-
-@@ -2198,10 +2219,14 @@ static int ravb_probe(struct platform_device *pdev)
- if (error < 0)
- goto out_rpm_disable;
-
-- if (info->multi_irqs)
-- irq = platform_get_irq_byname(pdev, "ch22");
-- else
-+ if (info->multi_irqs) {
-+ if (info->err_mgmt_irqs)
-+ irq = platform_get_irq_byname(pdev, "dia");
-+ else
-+ irq = platform_get_irq_byname(pdev, "ch22");
-+ } else {
- irq = platform_get_irq(pdev, 0);
-+ }
- if (irq < 0) {
- error = irq;
- goto out_release;
-@@ -2240,7 +2265,10 @@ static int ravb_probe(struct platform_device *pdev)
- of_property_read_bool(np, "renesas,ether-link-active-low");
-
- if (info->multi_irqs) {
-- irq = platform_get_irq_byname(pdev, "ch24");
-+ if (info->err_mgmt_irqs)
-+ irq = platform_get_irq_byname(pdev, "line3");
-+ else
-+ irq = platform_get_irq_byname(pdev, "ch24");
- if (irq < 0) {
- error = irq;
- goto out_release;
-@@ -2262,6 +2290,22 @@ static int ravb_probe(struct platform_device *pdev)
- }
- priv->tx_irqs[i] = irq;
- }
-+
-+ if (info->err_mgmt_irqs) {
-+ irq = platform_get_irq_byname(pdev, "err_a");
-+ if (irq < 0) {
-+ error = irq;
-+ goto out_release;
-+ }
-+ priv->erra_irq = irq;
-+
-+ irq = platform_get_irq_byname(pdev, "mgmt_a");
-+ if (irq < 0) {
-+ error = irq;
-+ goto out_release;
-+ }
-+ priv->mgmta_irq = irq;
-+ }
- }
-
- priv->clk = devm_clk_get(&pdev->dev, NULL);
---
-2.42.0
-
net-ravb-check-return-value-of-reset_control_deasser.patch
net-ravb-use-pm_runtime_resume_and_get.patch
net-ravb-start-tx-queues-after-hw-initialization-suc.patch
-ravb-separate-handling-of-irq-enable-disable-regs-in.patch
-ravb-support-separate-line0-desc-line1-err-and-line2.patch
net-ravb-stop-dma-in-case-of-failures-on-ravb_open.patch
perf-intel-pt-fix-async-branch-flags.patch
selftests-resctrl-add-missing-spdx-license-to-makefi.patch