diff options
-rw-r--r-- | drivers/pci/host/pci-exynos.c | 9 | ||||
-rw-r--r-- | drivers/pci/host/pcie-designware.c | 20 | ||||
-rw-r--r-- | drivers/pci/host/pcie-designware.h | 3 |
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 | ||
428 | static inline void exynos_pcie_readl_rc(struct pcie_port *pp, | 428 | static 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 | ||
436 | static inline void exynos_pcie_writel_rc(struct pcie_port *pp, | 439 | static 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 | ||
118 | static inline void dw_pcie_readl_rc(struct pcie_port *pp, u32 reg, u32 *val) | 118 | static 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 | ||
126 | static inline void dw_pcie_writel_rc(struct pcie_port *pp, u32 val, u32 reg) | 126 | static 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 | ||
175 | static struct irq_chip dw_msi_irq_chip = { | 175 | static 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 | ||
59 | struct pcie_host_ops { | 59 | struct 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); |