aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjorn Helgaas <bhelgaas@google.com>2016-08-17 15:17:58 -0400
committerBjorn Helgaas <bhelgaas@google.com>2016-08-17 15:43:38 -0400
commit446fc23fb6f0cab15011d7daae856091856a65cc (patch)
treed3aac6245e18b0805805516380a1bac20764108f
parent29b4817d4018df78086157ea3a55c1d9424a7cfc (diff)
PCI: designware: Return data directly from dw_pcie_readl_rc()
dw_pcie_readl_rc() reads a u32 value. Previously we stored that value in space supplied by the caller. Return the u32 value directly instead. This makes the calling code read better and makes it obvious that the caller need not initialize the storage. In the following example it isn't clear whether "val" is initialized before being used: dw_pcie_readl_rc(pp, PCI_COMMAND, &val); if (val & PCI_COMMAND_MEMORY) ... No functional change intended. Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
-rw-r--r--drivers/pci/host/pci-exynos.c9
-rw-r--r--drivers/pci/host/pcie-designware.c20
-rw-r--r--drivers/pci/host/pcie-designware.h3
3 files changed, 17 insertions, 15 deletions
diff --git a/drivers/pci/host/pci-exynos.c b/drivers/pci/host/pci-exynos.c
index 219976103efc..490f8b67bbd2 100644
--- a/drivers/pci/host/pci-exynos.c
+++ b/drivers/pci/host/pci-exynos.c
@@ -425,12 +425,15 @@ static void exynos_pcie_enable_interrupts(struct pcie_port *pp)
425 exynos_pcie_msi_init(pp); 425 exynos_pcie_msi_init(pp);
426} 426}
427 427
428static inline void exynos_pcie_readl_rc(struct pcie_port *pp, 428static inline u32 exynos_pcie_readl_rc(struct pcie_port *pp,
429 void __iomem *dbi_base, u32 *val) 429 void __iomem *dbi_base)
430{ 430{
431 u32 val;
432
431 exynos_pcie_sideband_dbi_r_mode(pp, true); 433 exynos_pcie_sideband_dbi_r_mode(pp, true);
432 *val = readl(dbi_base); 434 val = readl(dbi_base);
433 exynos_pcie_sideband_dbi_r_mode(pp, false); 435 exynos_pcie_sideband_dbi_r_mode(pp, false);
436 return val;
434} 437}
435 438
436static inline void exynos_pcie_writel_rc(struct pcie_port *pp, 439static inline void exynos_pcie_writel_rc(struct pcie_port *pp,
diff --git a/drivers/pci/host/pcie-designware.c b/drivers/pci/host/pcie-designware.c
index 12afce19890b..1f6bd6d42874 100644
--- a/drivers/pci/host/pcie-designware.c
+++ b/drivers/pci/host/pcie-designware.c
@@ -115,12 +115,12 @@ int dw_pcie_cfg_write(void __iomem *addr, int size, u32 val)
115 return PCIBIOS_SUCCESSFUL; 115 return PCIBIOS_SUCCESSFUL;
116} 116}
117 117
118static inline void dw_pcie_readl_rc(struct pcie_port *pp, u32 reg, u32 *val) 118static inline u32 dw_pcie_readl_rc(struct pcie_port *pp, u32 reg)
119{ 119{
120 if (pp->ops->readl_rc) 120 if (pp->ops->readl_rc)
121 pp->ops->readl_rc(pp, pp->dbi_base + reg, val); 121 return pp->ops->readl_rc(pp, pp->dbi_base + reg);
122 else 122
123 *val = readl(pp->dbi_base + reg); 123 return readl(pp->dbi_base + reg);
124} 124}
125 125
126static inline void dw_pcie_writel_rc(struct pcie_port *pp, u32 val, u32 reg) 126static inline void dw_pcie_writel_rc(struct pcie_port *pp, u32 val, u32 reg)
@@ -169,7 +169,7 @@ static void dw_pcie_prog_outbound_atu(struct pcie_port *pp, int index,
169 * Make sure ATU enable takes effect before any subsequent config 169 * Make sure ATU enable takes effect before any subsequent config
170 * and I/O accesses. 170 * and I/O accesses.
171 */ 171 */
172 dw_pcie_readl_rc(pp, PCIE_ATU_CR2, &val); 172 val = dw_pcie_readl_rc(pp, PCIE_ATU_CR2);
173} 173}
174 174
175static struct irq_chip dw_msi_irq_chip = { 175static struct irq_chip dw_msi_irq_chip = {
@@ -720,7 +720,7 @@ void dw_pcie_setup_rc(struct pcie_port *pp)
720 u32 val; 720 u32 val;
721 721
722 /* set the number of lanes */ 722 /* set the number of lanes */
723 dw_pcie_readl_rc(pp, PCIE_PORT_LINK_CONTROL, &val); 723 val = dw_pcie_readl_rc(pp, PCIE_PORT_LINK_CONTROL);
724 val &= ~PORT_LINK_MODE_MASK; 724 val &= ~PORT_LINK_MODE_MASK;
725 switch (pp->lanes) { 725 switch (pp->lanes) {
726 case 1: 726 case 1:
@@ -742,7 +742,7 @@ void dw_pcie_setup_rc(struct pcie_port *pp)
742 dw_pcie_writel_rc(pp, val, PCIE_PORT_LINK_CONTROL); 742 dw_pcie_writel_rc(pp, val, PCIE_PORT_LINK_CONTROL);
743 743
744 /* set link width speed control register */ 744 /* set link width speed control register */
745 dw_pcie_readl_rc(pp, PCIE_LINK_WIDTH_SPEED_CONTROL, &val); 745 val = dw_pcie_readl_rc(pp, PCIE_LINK_WIDTH_SPEED_CONTROL);
746 val &= ~PORT_LOGIC_LINK_WIDTH_MASK; 746 val &= ~PORT_LOGIC_LINK_WIDTH_MASK;
747 switch (pp->lanes) { 747 switch (pp->lanes) {
748 case 1: 748 case 1:
@@ -765,19 +765,19 @@ void dw_pcie_setup_rc(struct pcie_port *pp)
765 dw_pcie_writel_rc(pp, 0x00000000, PCI_BASE_ADDRESS_1); 765 dw_pcie_writel_rc(pp, 0x00000000, PCI_BASE_ADDRESS_1);
766 766
767 /* setup interrupt pins */ 767 /* setup interrupt pins */
768 dw_pcie_readl_rc(pp, PCI_INTERRUPT_LINE, &val); 768 val = dw_pcie_readl_rc(pp, PCI_INTERRUPT_LINE);
769 val &= 0xffff00ff; 769 val &= 0xffff00ff;
770 val |= 0x00000100; 770 val |= 0x00000100;
771 dw_pcie_writel_rc(pp, val, PCI_INTERRUPT_LINE); 771 dw_pcie_writel_rc(pp, val, PCI_INTERRUPT_LINE);
772 772
773 /* setup bus numbers */ 773 /* setup bus numbers */
774 dw_pcie_readl_rc(pp, PCI_PRIMARY_BUS, &val); 774 val = dw_pcie_readl_rc(pp, PCI_PRIMARY_BUS);
775 val &= 0xff000000; 775 val &= 0xff000000;
776 val |= 0x00010100; 776 val |= 0x00010100;
777 dw_pcie_writel_rc(pp, val, PCI_PRIMARY_BUS); 777 dw_pcie_writel_rc(pp, val, PCI_PRIMARY_BUS);
778 778
779 /* setup command register */ 779 /* setup command register */
780 dw_pcie_readl_rc(pp, PCI_COMMAND, &val); 780 val = dw_pcie_readl_rc(pp, PCI_COMMAND);
781 val &= 0xffff0000; 781 val &= 0xffff0000;
782 val |= PCI_COMMAND_IO | PCI_COMMAND_MEMORY | 782 val |= PCI_COMMAND_IO | PCI_COMMAND_MEMORY |
783 PCI_COMMAND_MASTER | PCI_COMMAND_SERR; 783 PCI_COMMAND_MASTER | PCI_COMMAND_SERR;
diff --git a/drivers/pci/host/pcie-designware.h b/drivers/pci/host/pcie-designware.h
index f437f9b5be04..74a8fc6abdba 100644
--- a/drivers/pci/host/pcie-designware.h
+++ b/drivers/pci/host/pcie-designware.h
@@ -57,8 +57,7 @@ struct pcie_port {
57}; 57};
58 58
59struct pcie_host_ops { 59struct pcie_host_ops {
60 void (*readl_rc)(struct pcie_port *pp, 60 u32 (*readl_rc)(struct pcie_port *pp, void __iomem *dbi_base);
61 void __iomem *dbi_base, u32 *val);
62 void (*writel_rc)(struct pcie_port *pp, 61 void (*writel_rc)(struct pcie_port *pp,
63 u32 val, void __iomem *dbi_base); 62 u32 val, void __iomem *dbi_base);
64 int (*rd_own_conf)(struct pcie_port *pp, int where, int size, u32 *val); 63 int (*rd_own_conf)(struct pcie_port *pp, int where, int size, u32 *val);