PCI: dwc: Drop enum dw_pcie_as_type in favor of PCIE_ATU_TYPE_MEM/IO
authorSerge Semin <Sergey.Semin@baikalelectronics.ru>
Fri, 24 Jun 2022 14:39:41 +0000 (17:39 +0300)
committerBjorn Helgaas <bhelgaas@google.com>
Mon, 1 Aug 2022 20:07:41 +0000 (15:07 -0500)
Previously dw_pcie_ep_set_bar() converted the BAR PCI_BASE_ADDRESS_SPACE
bit to the internal dw_pcie_as_type enum (DW_PCIE_AS_MEM, DW_PCIE_AS_IO)
and passed it down to dw_pcie_prog_inbound_atu(), which converted the enum
to the PCIE_ATU_TYPE_MEM/PCIE_ATU_TYPE_IO values needed to program the ATU
registers.

Simplify the code by dropping the dw_pcie_as_type enum and passing
PCIE_ATU_TYPE_MEM or PCIE_ATU_TYPE_IO directly.

Reorder inbound ATU function arguments to match the outbound functions,
with address-related parameters at the end.

[bhelgaas: commit log]
Link: https://lore.kernel.org/r/20220624143947.8991-10-Sergey.Semin@baikalelectronics.ru
Signed-off-by: Serge Semin <Sergey.Semin@baikalelectronics.ru>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Rob Herring <robh@kernel.org>
Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
drivers/pci/controller/dwc/pcie-designware-ep.c
drivers/pci/controller/dwc/pcie-designware.c
drivers/pci/controller/dwc/pcie-designware.h

index ffbd3af6d65a275e4aede2f37b49737bd1412ca3..5a158813f6875cae1b500599873493a1f1c0fd2a 100644 (file)
@@ -154,9 +154,8 @@ static int dw_pcie_ep_write_header(struct pci_epc *epc, u8 func_no, u8 vfunc_no,
        return 0;
 }
 
-static int dw_pcie_ep_inbound_atu(struct dw_pcie_ep *ep, u8 func_no,
-                                 enum pci_barno bar, dma_addr_t cpu_addr,
-                                 enum dw_pcie_as_type as_type)
+static int dw_pcie_ep_inbound_atu(struct dw_pcie_ep *ep, u8 func_no, int type,
+                                 dma_addr_t cpu_addr, enum pci_barno bar)
 {
        int ret;
        u32 free_win;
@@ -168,8 +167,8 @@ static int dw_pcie_ep_inbound_atu(struct dw_pcie_ep *ep, u8 func_no,
                return -EINVAL;
        }
 
-       ret = dw_pcie_prog_inbound_atu(pci, func_no, free_win, bar, cpu_addr,
-                                      as_type);
+       ret = dw_pcie_prog_inbound_atu(pci, func_no, free_win, type,
+                                      cpu_addr, bar);
        if (ret < 0) {
                dev_err(pci->dev, "Failed to program IB window\n");
                return ret;
@@ -221,27 +220,25 @@ static void dw_pcie_ep_clear_bar(struct pci_epc *epc, u8 func_no, u8 vfunc_no,
 static int dw_pcie_ep_set_bar(struct pci_epc *epc, u8 func_no, u8 vfunc_no,
                              struct pci_epf_bar *epf_bar)
 {
-       int ret;
        struct dw_pcie_ep *ep = epc_get_drvdata(epc);
        struct dw_pcie *pci = to_dw_pcie_from_ep(ep);
        enum pci_barno bar = epf_bar->barno;
        size_t size = epf_bar->size;
        int flags = epf_bar->flags;
-       enum dw_pcie_as_type as_type;
-       u32 reg;
        unsigned int func_offset = 0;
+       int ret, type;
+       u32 reg;
 
        func_offset = dw_pcie_ep_func_select(ep, func_no);
 
        reg = PCI_BASE_ADDRESS_0 + (4 * bar) + func_offset;
 
        if (!(flags & PCI_BASE_ADDRESS_SPACE))
-               as_type = DW_PCIE_AS_MEM;
+               type = PCIE_ATU_TYPE_MEM;
        else
-               as_type = DW_PCIE_AS_IO;
+               type = PCIE_ATU_TYPE_IO;
 
-       ret = dw_pcie_ep_inbound_atu(ep, func_no, bar,
-                                    epf_bar->phys_addr, as_type);
+       ret = dw_pcie_ep_inbound_atu(ep, func_no, type, epf_bar->phys_addr, bar);
        if (ret)
                return ret;
 
index bd575ad32bc48bedc2479796640bf446932c891a..0e846c53dfb529b7aac128a7f5ad8e66846c60fa 100644 (file)
@@ -421,10 +421,9 @@ static void dw_pcie_writel_ib_unroll(struct dw_pcie *pci, u32 index, u32 reg,
 }
 
 static int dw_pcie_prog_inbound_atu_unroll(struct dw_pcie *pci, u8 func_no,
-                                          int index, int bar, u64 cpu_addr,
-                                          enum dw_pcie_as_type as_type)
+                                          int index, int type,
+                                          u64 cpu_addr, u8 bar)
 {
-       int type;
        u32 retries, val;
 
        dw_pcie_writel_ib_unroll(pci, index, PCIE_ATU_UNR_LOWER_TARGET,
@@ -432,17 +431,6 @@ static int dw_pcie_prog_inbound_atu_unroll(struct dw_pcie *pci, u8 func_no,
        dw_pcie_writel_ib_unroll(pci, index, PCIE_ATU_UNR_UPPER_TARGET,
                                 upper_32_bits(cpu_addr));
 
-       switch (as_type) {
-       case DW_PCIE_AS_MEM:
-               type = PCIE_ATU_TYPE_MEM;
-               break;
-       case DW_PCIE_AS_IO:
-               type = PCIE_ATU_TYPE_IO;
-               break;
-       default:
-               return -EINVAL;
-       }
-
        dw_pcie_writel_ib_unroll(pci, index, PCIE_ATU_UNR_REGION_CTRL1, type |
                                 PCIE_ATU_FUNC_NUM(func_no));
        dw_pcie_writel_ib_unroll(pci, index, PCIE_ATU_UNR_REGION_CTRL2,
@@ -468,32 +456,19 @@ static int dw_pcie_prog_inbound_atu_unroll(struct dw_pcie *pci, u8 func_no,
 }
 
 int dw_pcie_prog_inbound_atu(struct dw_pcie *pci, u8 func_no, int index,
-                            int bar, u64 cpu_addr,
-                            enum dw_pcie_as_type as_type)
+                            int type, u64 cpu_addr, u8 bar)
 {
-       int type;
        u32 retries, val;
 
        if (pci->iatu_unroll_enabled)
-               return dw_pcie_prog_inbound_atu_unroll(pci, func_no, index, bar,
-                                                      cpu_addr, as_type);
+               return dw_pcie_prog_inbound_atu_unroll(pci, func_no, index,
+                                                      type, cpu_addr, bar);
 
        dw_pcie_writel_dbi(pci, PCIE_ATU_VIEWPORT, PCIE_ATU_REGION_INBOUND |
                           index);
        dw_pcie_writel_dbi(pci, PCIE_ATU_LOWER_TARGET, lower_32_bits(cpu_addr));
        dw_pcie_writel_dbi(pci, PCIE_ATU_UPPER_TARGET, upper_32_bits(cpu_addr));
 
-       switch (as_type) {
-       case DW_PCIE_AS_MEM:
-               type = PCIE_ATU_TYPE_MEM;
-               break;
-       case DW_PCIE_AS_IO:
-               type = PCIE_ATU_TYPE_IO;
-               break;
-       default:
-               return -EINVAL;
-       }
-
        dw_pcie_writel_dbi(pci, PCIE_ATU_CR1, type |
                           PCIE_ATU_FUNC_NUM(func_no));
        dw_pcie_writel_dbi(pci, PCIE_ATU_CR2, PCIE_ATU_ENABLE |
index 7f1c00fa084d63c83e47e79ab33adc60edc59b10..c63ace3c3f252ed0e104b4f41e0cac0d2a00712e 100644 (file)
@@ -228,12 +228,6 @@ struct dw_pcie_rp {
        DECLARE_BITMAP(msi_irq_in_use, MAX_MSI_IRQS);
 };
 
-enum dw_pcie_as_type {
-       DW_PCIE_AS_UNKNOWN,
-       DW_PCIE_AS_MEM,
-       DW_PCIE_AS_IO,
-};
-
 struct dw_pcie_ep_ops {
        void    (*ep_init)(struct dw_pcie_ep *ep);
        int     (*raise_irq)(struct dw_pcie_ep *ep, u8 func_no,
@@ -331,8 +325,7 @@ void dw_pcie_prog_ep_outbound_atu(struct dw_pcie *pci, u8 func_no, int index,
                                  int type, u64 cpu_addr, u64 pci_addr,
                                  u64 size);
 int dw_pcie_prog_inbound_atu(struct dw_pcie *pci, u8 func_no, int index,
-                            int bar, u64 cpu_addr,
-                            enum dw_pcie_as_type as_type);
+                            int type, u64 cpu_addr, u8 bar);
 void dw_pcie_disable_atu(struct dw_pcie *pci, int index,
                         enum dw_pcie_region_type type);
 void dw_pcie_setup(struct dw_pcie *pci);