aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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);