[v5] PCI: add a new directory for designware core
diff mbox

Message ID 1483707168-1436-1-git-send-email-kishon@ti.com
State New, archived
Headers show

Commit Message

Kishon Vijay Abraham I Jan. 6, 2017, 12:52 p.m. UTC
Group all the PCI drivers that use designware core in dwc directory.
dwc IP is capable of operating in both host mode and device mode and
keeping it inside the *host* directory is misleading.

Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Minghuan Lian <minghuan.Lian@freescale.com>
Cc: Mingkai Hu <mingkai.hu@freescale.com>
Cc: Roy Zang <tie-fei.zang@freescale.com>
Cc: Richard Zhu <hongxing.zhu@nxp.com>
Cc: Lucas Stach <l.stach@pengutronix.de>
Cc: Murali Karicheri <m-karicheri2@ti.com>
Cc: Jingoo Han <jingoohan1@gmail.com>
Cc: Joao Pinto <Joao.Pinto@synopsys.com>
Cc: Pratyush Anand <pratyush.anand@gmail.com>
Cc: Niklas Cassel <niklas.cassel@axis.com>
Cc: Jesper Nilsson <jesper.nilsson@axis.com>
Cc: Zhou Wang <wangzhou1@hisilicon.com>
Cc: Gabriele Paoloni <gabriele.paoloni@huawei.com>
Cc: Stanimir Varbanov <svarbanov@mm-sol.com>
Acked-by: Jingoo Han <jingoohan1@gmail.com>
Acked-By: Joao Pinto <jpinto@synopsys.com>
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
---
Changes from v4:
*) modified Kconfig such that the user doesn't have to explicity
   select PCIE_DW.

Changes from v3:
*) Moved pci-keystone.h to dwc directory which was missed earlier

Changes from v2:
*) update MAINTAINERS file

Changes from v1:
*) instead of renaming *host* directory to *controller* directory,
   move all the dwc drivers to dwc/ directory.
Next Steps:
Split pcie-designware.c to core, host-only and endpoint-only files.

 MAINTAINERS                                      |   22 ++--
 drivers/pci/Kconfig                              |    1 +
 drivers/pci/Makefile                             |    3 +
 drivers/pci/dwc/Kconfig                          |  117 ++++++++++++++++++++++
 drivers/pci/dwc/Makefile                         |   23 +++++
 drivers/pci/{host => dwc}/pci-dra7xx.c           |    0
 drivers/pci/{host => dwc}/pci-exynos.c           |    0
 drivers/pci/{host => dwc}/pci-imx6.c             |    0
 drivers/pci/{host => dwc}/pci-keystone-dw.c      |    0
 drivers/pci/{host => dwc}/pci-keystone.c         |    0
 drivers/pci/{host => dwc}/pci-keystone.h         |    0
 drivers/pci/{host => dwc}/pci-layerscape.c       |    0
 drivers/pci/{host => dwc}/pcie-armada8k.c        |    0
 drivers/pci/{host => dwc}/pcie-artpec6.c         |    0
 drivers/pci/{host => dwc}/pcie-designware-plat.c |    0
 drivers/pci/{host => dwc}/pcie-designware.c      |    0
 drivers/pci/{host => dwc}/pcie-designware.h      |    0
 drivers/pci/{host => dwc}/pcie-hisi.c            |    0
 drivers/pci/{host => dwc}/pcie-qcom.c            |    0
 drivers/pci/{host => dwc}/pcie-spear13xx.c       |    0
 drivers/pci/host/Kconfig                         |  113 ---------------------
 drivers/pci/host/Makefile                        |   12 ---
 22 files changed, 155 insertions(+), 136 deletions(-)
 create mode 100644 drivers/pci/dwc/Kconfig
 create mode 100644 drivers/pci/dwc/Makefile
 rename drivers/pci/{host => dwc}/pci-dra7xx.c (100%)
 rename drivers/pci/{host => dwc}/pci-exynos.c (100%)
 rename drivers/pci/{host => dwc}/pci-imx6.c (100%)
 rename drivers/pci/{host => dwc}/pci-keystone-dw.c (100%)
 rename drivers/pci/{host => dwc}/pci-keystone.c (100%)
 rename drivers/pci/{host => dwc}/pci-keystone.h (100%)
 rename drivers/pci/{host => dwc}/pci-layerscape.c (100%)
 rename drivers/pci/{host => dwc}/pcie-armada8k.c (100%)
 rename drivers/pci/{host => dwc}/pcie-artpec6.c (100%)
 rename drivers/pci/{host => dwc}/pcie-designware-plat.c (100%)
 rename drivers/pci/{host => dwc}/pcie-designware.c (100%)
 rename drivers/pci/{host => dwc}/pcie-designware.h (100%)
 rename drivers/pci/{host => dwc}/pcie-hisi.c (100%)
 rename drivers/pci/{host => dwc}/pcie-qcom.c (100%)
 rename drivers/pci/{host => dwc}/pcie-spear13xx.c (100%)

Comments

Arnd Bergmann Jan. 6, 2017, 1:01 p.m. UTC | #1
On Friday, January 6, 2017 6:22:48 PM CET Kishon Vijay Abraham I wrote:
> Group all the PCI drivers that use designware core in dwc directory.
> dwc IP is capable of operating in both host mode and device mode and
> keeping it inside the *host* directory is misleading.

I have no objections to the patch, it makes a lot of sense, but I think
the reasoning above is a bit questionable, as a lot of the other
host drivers (at least tegra, mvebu and xgene, probably more) equally support
endpoint mode and remain in the same directory.

Any suggestion to what we should do with them?

	Arnd

--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Kishon Vijay Abraham I Jan. 6, 2017, 1:12 p.m. UTC | #2
Hi Arnd,

On Friday 06 January 2017 06:31 PM, Arnd Bergmann wrote:
> On Friday, January 6, 2017 6:22:48 PM CET Kishon Vijay Abraham I wrote:
>> Group all the PCI drivers that use designware core in dwc directory.
>> dwc IP is capable of operating in both host mode and device mode and
>> keeping it inside the *host* directory is misleading.
> 
> I have no objections to the patch, it makes a lot of sense, but I think
> the reasoning above is a bit questionable, as a lot of the other
> host drivers (at least tegra, mvebu and xgene, probably more) equally support
> endpoint mode and remain in the same directory.
> 
> Any suggestion to what we should do with them?

I'm not sure of the exact IP's used by these SoCs. Now that we decided to group
the drivers by IPs used, the best would be identify the IPs used in these SoCs
and create a separate directory for each of the IPs. If the vendors own IP is
used, then create a directory with the name of the vendor?. I'm sure such a
change would increase the number of directories but I'm not sure what else to
do here.

Thanks
Kishon
--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Joao Pinto Jan. 6, 2017, 1:40 p.m. UTC | #3
Hello,

Às 1:12 PM de 1/6/2017, Kishon Vijay Abraham I escreveu:
> Hi Arnd,
> 
> On Friday 06 January 2017 06:31 PM, Arnd Bergmann wrote:
>> On Friday, January 6, 2017 6:22:48 PM CET Kishon Vijay Abraham I wrote:
>>> Group all the PCI drivers that use designware core in dwc directory.
>>> dwc IP is capable of operating in both host mode and device mode and
>>> keeping it inside the *host* directory is misleading.
>>
>> I have no objections to the patch, it makes a lot of sense, but I think
>> the reasoning above is a bit questionable, as a lot of the other
>> host drivers (at least tegra, mvebu and xgene, probably more) equally support
>> endpoint mode and remain in the same directory.
>>
>> Any suggestion to what we should do with them?
> 
> I'm not sure of the exact IP's used by these SoCs. Now that we decided to group
> the drivers by IPs used, the best would be identify the IPs used in these SoCs
> and create a separate directory for each of the IPs. If the vendors own IP is
> used, then create a directory with the name of the vendor?. I'm sure such a
> change would increase the number of directories but I'm not sure what else to
> do here.

In case of designware based drivers you already did the clean up nicely. Next
would be, like Arnd is sugesting, to do the same to the others. If they are all
self-contained I suggest we leave them as they are and in the future if a
endpoint variant driver comes up for any of them, we can suggest to add a folder
with the vendor or SoC name in order to follow the rule. What do you think?


Joao

> 
> Thanks
> Kishon
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Kishon Vijay Abraham I Jan. 9, 2017, 9:31 a.m. UTC | #4
Hi,

On Friday 06 January 2017 07:10 PM, Joao Pinto wrote:
> Hello,
> 
> Às 1:12 PM de 1/6/2017, Kishon Vijay Abraham I escreveu:
>> Hi Arnd,
>>
>> On Friday 06 January 2017 06:31 PM, Arnd Bergmann wrote:
>>> On Friday, January 6, 2017 6:22:48 PM CET Kishon Vijay Abraham I wrote:
>>>> Group all the PCI drivers that use designware core in dwc directory.
>>>> dwc IP is capable of operating in both host mode and device mode and
>>>> keeping it inside the *host* directory is misleading.
>>>
>>> I have no objections to the patch, it makes a lot of sense, but I think
>>> the reasoning above is a bit questionable, as a lot of the other
>>> host drivers (at least tegra, mvebu and xgene, probably more) equally support
>>> endpoint mode and remain in the same directory.
>>>
>>> Any suggestion to what we should do with them?
>>
>> I'm not sure of the exact IP's used by these SoCs. Now that we decided to group
>> the drivers by IPs used, the best would be identify the IPs used in these SoCs
>> and create a separate directory for each of the IPs. If the vendors own IP is
>> used, then create a directory with the name of the vendor?. I'm sure such a
>> change would increase the number of directories but I'm not sure what else to
>> do here.
> 
> In case of designware based drivers you already did the clean up nicely. Next
> would be, like Arnd is sugesting, to do the same to the others. If they are all
> self-contained I suggest we leave them as they are and in the future if a
> endpoint variant driver comes up for any of them, we can suggest to add a folder
> with the vendor or SoC name in order to follow the rule. What do you think?

That's my idea as well. Arnd, do you think it's okay not to disturb other
drivers/directories until endpoint support is added to those drivers?

Thanks
Kishon
--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Bjorn Helgaas Feb. 3, 2017, 7:19 p.m. UTC | #5
On Fri, Jan 06, 2017 at 06:22:48PM +0530, Kishon Vijay Abraham I wrote:
> Group all the PCI drivers that use designware core in dwc directory.
> dwc IP is capable of operating in both host mode and device mode and
> keeping it inside the *host* directory is misleading.
> 
> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> Cc: Minghuan Lian <minghuan.Lian@freescale.com>
> Cc: Mingkai Hu <mingkai.hu@freescale.com>
> Cc: Roy Zang <tie-fei.zang@freescale.com>
> Cc: Richard Zhu <hongxing.zhu@nxp.com>
> Cc: Lucas Stach <l.stach@pengutronix.de>
> Cc: Murali Karicheri <m-karicheri2@ti.com>
> Cc: Jingoo Han <jingoohan1@gmail.com>
> Cc: Joao Pinto <Joao.Pinto@synopsys.com>
> Cc: Pratyush Anand <pratyush.anand@gmail.com>
> Cc: Niklas Cassel <niklas.cassel@axis.com>
> Cc: Jesper Nilsson <jesper.nilsson@axis.com>
> Cc: Zhou Wang <wangzhou1@hisilicon.com>
> Cc: Gabriele Paoloni <gabriele.paoloni@huawei.com>
> Cc: Stanimir Varbanov <svarbanov@mm-sol.com>
> Acked-by: Jingoo Han <jingoohan1@gmail.com>
> Acked-By: Joao Pinto <jpinto@synopsys.com>
> Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>

I applied this to pci/host-designware.  I might have to do some
fiddling when merging everything together, but I intend to include
this for v4.11.  Thanks for your patience, Kishon!

> ---
> Changes from v4:
> *) modified Kconfig such that the user doesn't have to explicity
>    select PCIE_DW.
> 
> Changes from v3:
> *) Moved pci-keystone.h to dwc directory which was missed earlier
> 
> Changes from v2:
> *) update MAINTAINERS file
> 
> Changes from v1:
> *) instead of renaming *host* directory to *controller* directory,
>    move all the dwc drivers to dwc/ directory.
> Next Steps:
> Split pcie-designware.c to core, host-only and endpoint-only files.
> 
>  MAINTAINERS                                      |   22 ++--
>  drivers/pci/Kconfig                              |    1 +
>  drivers/pci/Makefile                             |    3 +
>  drivers/pci/dwc/Kconfig                          |  117 ++++++++++++++++++++++
>  drivers/pci/dwc/Makefile                         |   23 +++++
>  drivers/pci/{host => dwc}/pci-dra7xx.c           |    0
>  drivers/pci/{host => dwc}/pci-exynos.c           |    0
>  drivers/pci/{host => dwc}/pci-imx6.c             |    0
>  drivers/pci/{host => dwc}/pci-keystone-dw.c      |    0
>  drivers/pci/{host => dwc}/pci-keystone.c         |    0
>  drivers/pci/{host => dwc}/pci-keystone.h         |    0
>  drivers/pci/{host => dwc}/pci-layerscape.c       |    0
>  drivers/pci/{host => dwc}/pcie-armada8k.c        |    0
>  drivers/pci/{host => dwc}/pcie-artpec6.c         |    0
>  drivers/pci/{host => dwc}/pcie-designware-plat.c |    0
>  drivers/pci/{host => dwc}/pcie-designware.c      |    0
>  drivers/pci/{host => dwc}/pcie-designware.h      |    0
>  drivers/pci/{host => dwc}/pcie-hisi.c            |    0
>  drivers/pci/{host => dwc}/pcie-qcom.c            |    0
>  drivers/pci/{host => dwc}/pcie-spear13xx.c       |    0
>  drivers/pci/host/Kconfig                         |  113 ---------------------
>  drivers/pci/host/Makefile                        |   12 ---
>  22 files changed, 155 insertions(+), 136 deletions(-)
>  create mode 100644 drivers/pci/dwc/Kconfig
>  create mode 100644 drivers/pci/dwc/Makefile
>  rename drivers/pci/{host => dwc}/pci-dra7xx.c (100%)
>  rename drivers/pci/{host => dwc}/pci-exynos.c (100%)
>  rename drivers/pci/{host => dwc}/pci-imx6.c (100%)
>  rename drivers/pci/{host => dwc}/pci-keystone-dw.c (100%)
>  rename drivers/pci/{host => dwc}/pci-keystone.c (100%)
>  rename drivers/pci/{host => dwc}/pci-keystone.h (100%)
>  rename drivers/pci/{host => dwc}/pci-layerscape.c (100%)
>  rename drivers/pci/{host => dwc}/pcie-armada8k.c (100%)
>  rename drivers/pci/{host => dwc}/pcie-artpec6.c (100%)
>  rename drivers/pci/{host => dwc}/pcie-designware-plat.c (100%)
>  rename drivers/pci/{host => dwc}/pcie-designware.c (100%)
>  rename drivers/pci/{host => dwc}/pcie-designware.h (100%)
>  rename drivers/pci/{host => dwc}/pcie-hisi.c (100%)
>  rename drivers/pci/{host => dwc}/pcie-qcom.c (100%)
>  rename drivers/pci/{host => dwc}/pcie-spear13xx.c (100%)
> 
> diff --git a/MAINTAINERS b/MAINTAINERS
> index cfff2c9..8672f18 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -9429,7 +9429,7 @@ L:	linux-pci@vger.kernel.org
>  L:	linux-arm-kernel@lists.infradead.org
>  S:	Maintained
>  F:	Documentation/devicetree/bindings/pci/pci-armada8k.txt
> -F:	drivers/pci/host/pcie-armada8k.c
> +F:	drivers/pci/dwc/pcie-armada8k.c
>  
>  PCI DRIVER FOR APPLIEDMICRO XGENE
>  M:	Tanmay Inamdar <tinamdar@apm.com>
> @@ -9447,7 +9447,7 @@ L:	linuxppc-dev@lists.ozlabs.org
>  L:	linux-pci@vger.kernel.org
>  L:	linux-arm-kernel@lists.infradead.org
>  S:	Maintained
> -F:	drivers/pci/host/*layerscape*
> +F:	drivers/pci/dwc/*layerscape*
>  
>  PCI DRIVER FOR IMX6
>  M:	Richard Zhu <hongxing.zhu@nxp.com>
> @@ -9456,14 +9456,14 @@ L:	linux-pci@vger.kernel.org
>  L:	linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
>  S:	Maintained
>  F:	Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.txt
> -F:	drivers/pci/host/*imx6*
> +F:	drivers/pci/dwc/*imx6*
>  
>  PCI DRIVER FOR TI KEYSTONE
>  M:	Murali Karicheri <m-karicheri2@ti.com>
>  L:	linux-pci@vger.kernel.org
>  L:	linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
>  S:	Maintained
> -F:	drivers/pci/host/*keystone*
> +F:	drivers/pci/dwc/*keystone*
>  
>  PCI DRIVER FOR MVEBU (Marvell Armada 370 and Armada XP SOC support)
>  M:	Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> @@ -9495,7 +9495,7 @@ L:	linux-omap@vger.kernel.org
>  L:	linux-pci@vger.kernel.org
>  S:	Supported
>  F:	Documentation/devicetree/bindings/pci/ti-pci.txt
> -F:	drivers/pci/host/pci-dra7xx.c
> +F:	drivers/pci/dwc/pci-dra7xx.c
>  
>  PCI DRIVER FOR RENESAS R-CAR
>  M:	Simon Horman <horms@verge.net.au>
> @@ -9510,7 +9510,7 @@ L:	linux-pci@vger.kernel.org
>  L:	linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
>  L:	linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
>  S:	Maintained
> -F:	drivers/pci/host/pci-exynos.c
> +F:	drivers/pci/dwc/pci-exynos.c
>  
>  PCI DRIVER FOR SYNOPSIS DESIGNWARE
>  M:	Jingoo Han <jingoohan1@gmail.com>
> @@ -9518,7 +9518,7 @@ M:	Joao Pinto <Joao.Pinto@synopsys.com>
>  L:	linux-pci@vger.kernel.org
>  S:	Maintained
>  F:	Documentation/devicetree/bindings/pci/designware-pcie.txt
> -F:	drivers/pci/host/*designware*
> +F:	drivers/pci/dwc/*designware*
>  
>  PCI DRIVER FOR GENERIC OF HOSTS
>  M:	Will Deacon <will.deacon@arm.com>
> @@ -9539,7 +9539,7 @@ PCIE DRIVER FOR ST SPEAR13XX
>  M:	Pratyush Anand <pratyush.anand@gmail.com>
>  L:	linux-pci@vger.kernel.org
>  S:	Maintained
> -F:	drivers/pci/host/*spear*
> +F:	drivers/pci/dwc/*spear*
>  
>  PCI MSI DRIVER FOR ALTERA MSI IP
>  M:	Ley Foon Tan <lftan@altera.com>
> @@ -9564,7 +9564,7 @@ L:	linux-arm-kernel@axis.com
>  L:	linux-pci@vger.kernel.org
>  S:	Maintained
>  F:	Documentation/devicetree/bindings/pci/axis,artpec*
> -F:	drivers/pci/host/*artpec*
> +F:	drivers/pci/dwc/*artpec*
>  
>  PCIE DRIVER FOR HISILICON
>  M:	Zhou Wang <wangzhou1@hisilicon.com>
> @@ -9572,7 +9572,7 @@ M:	Gabriele Paoloni <gabriele.paoloni@huawei.com>
>  L:	linux-pci@vger.kernel.org
>  S:	Maintained
>  F:	Documentation/devicetree/bindings/pci/hisilicon-pcie.txt
> -F:	drivers/pci/host/pcie-hisi.c
> +F:	drivers/pci/dwc/pcie-hisi.c
>  
>  PCIE DRIVER FOR ROCKCHIP
>  M:	Shawn Lin <shawn.lin@rock-chips.com>
> @@ -9588,7 +9588,7 @@ M:     Stanimir Varbanov <svarbanov@mm-sol.com>
>  L:     linux-pci@vger.kernel.org
>  L:     linux-arm-msm@vger.kernel.org
>  S:     Maintained
> -F:     drivers/pci/host/*qcom*
> +F:     drivers/pci/dwc/*qcom*
>  
>  PCIE DRIVER FOR CAVIUM THUNDERX
>  M:	David Daney <david.daney@cavium.com>
> diff --git a/drivers/pci/Kconfig b/drivers/pci/Kconfig
> index 6555eb7..df14142 100644
> --- a/drivers/pci/Kconfig
> +++ b/drivers/pci/Kconfig
> @@ -132,4 +132,5 @@ config PCI_HYPERV
>            PCI devices from a PCI backend to support PCI driver domains.
>  
>  source "drivers/pci/hotplug/Kconfig"
> +source "drivers/pci/dwc/Kconfig"
>  source "drivers/pci/host/Kconfig"
> diff --git a/drivers/pci/Makefile b/drivers/pci/Makefile
> index 8db5079..b7e9751 100644
> --- a/drivers/pci/Makefile
> +++ b/drivers/pci/Makefile
> @@ -66,5 +66,8 @@ obj-$(CONFIG_OF) += of.o
>  
>  ccflags-$(CONFIG_PCI_DEBUG) := -DDEBUG
>  
> +# PCI dwc controller drivers
> +obj-y += dwc/
> +
>  # PCI host controller drivers
>  obj-y += host/
> diff --git a/drivers/pci/dwc/Kconfig b/drivers/pci/dwc/Kconfig
> new file mode 100644
> index 0000000..deae261
> --- /dev/null
> +++ b/drivers/pci/dwc/Kconfig
> @@ -0,0 +1,117 @@
> +menu "DesignWare PCI Core Support"
> +	depends on PCI
> +
> +config PCIE_DW
> +	bool
> +	depends on PCI_MSI_IRQ_DOMAIN
> +
> +config PCI_DRA7XX
> +	bool "TI DRA7xx PCIe controller"
> +	depends on OF && HAS_IOMEM && TI_PIPE3
> +	depends on PCI_MSI_IRQ_DOMAIN
> +	select PCIE_DW
> +	help
> +	 Enables support for the PCIe controller in the DRA7xx SoC.  There
> +	 are two instances of PCIe controller in DRA7xx.  This controller can
> +	 act both as EP and RC.  This reuses the Designware core.
> +
> +config PCIE_DW_PLAT
> +	bool "Platform bus based DesignWare PCIe Controller"
> +	depends on PCI_MSI_IRQ_DOMAIN
> +	select PCIE_DW
> +	---help---
> +	 This selects the DesignWare PCIe controller support. Select this if
> +	 you have a PCIe controller on Platform bus.
> +
> +	 If you have a controller with this interface, say Y or M here.
> +
> +	 If unsure, say N.
> +
> +config PCI_EXYNOS
> +	bool "Samsung Exynos PCIe controller"
> +	depends on SOC_EXYNOS5440
> +	depends on PCI_MSI_IRQ_DOMAIN
> +	select PCIEPORTBUS
> +	select PCIE_DW
> +
> +config PCI_IMX6
> +	bool "Freescale i.MX6 PCIe controller"
> +	depends on SOC_IMX6Q
> +	depends on PCI_MSI_IRQ_DOMAIN
> +	select PCIEPORTBUS
> +	select PCIE_DW
> +
> +config PCIE_SPEAR13XX
> +	bool "STMicroelectronics SPEAr PCIe controller"
> +	depends on ARCH_SPEAR13XX
> +	depends on PCI_MSI_IRQ_DOMAIN
> +	select PCIEPORTBUS
> +	select PCIE_DW
> +	help
> +	  Say Y here if you want PCIe support on SPEAr13XX SoCs.
> +
> +config PCI_KEYSTONE
> +	bool "TI Keystone PCIe controller"
> +	depends on ARCH_KEYSTONE
> +	depends on PCI_MSI_IRQ_DOMAIN
> +	select PCIEPORTBUS
> +	select PCIE_DW
> +	help
> +	  Say Y here if you want to enable PCI controller support on Keystone
> +	  SoCs. The PCI controller on Keystone is based on Designware hardware
> +	  and therefore the driver re-uses the Designware core functions to
> +	  implement the driver.
> +
> +config PCI_LAYERSCAPE
> +	bool "Freescale Layerscape PCIe controller"
> +	depends on OF && (ARM || ARCH_LAYERSCAPE)
> +	depends on PCI_MSI_IRQ_DOMAIN
> +	select MFD_SYSCON
> +	select PCIE_DW
> +	help
> +	  Say Y here if you want PCIe controller support on Layerscape SoCs.
> +
> +config PCI_HISI
> +	depends on OF && ARM64
> +	bool "HiSilicon Hip05 and Hip06 SoCs PCIe controllers"
> +	depends on PCI_MSI_IRQ_DOMAIN
> +	select PCIEPORTBUS
> +	select PCIE_DW
> +	help
> +	  Say Y here if you want PCIe controller support on HiSilicon
> +	  Hip05 and Hip06 SoCs
> +
> +config PCIE_QCOM
> +	bool "Qualcomm PCIe controller"
> +	depends on ARCH_QCOM && OF
> +	depends on PCI_MSI_IRQ_DOMAIN
> +	select PCIEPORTBUS
> +	select PCIE_DW
> +	help
> +	  Say Y here to enable PCIe controller support on Qualcomm SoCs. The
> +	  PCIe controller uses the Designware core plus Qualcomm-specific
> +	  hardware wrappers.
> +
> +config PCIE_ARMADA_8K
> +	bool "Marvell Armada-8K PCIe controller"
> +	depends on ARCH_MVEBU
> +	depends on PCI_MSI_IRQ_DOMAIN
> +	select PCIEPORTBUS
> +	select PCIE_DW
> +	help
> +	  Say Y here if you want to enable PCIe controller support on
> +	  Armada-8K SoCs. The PCIe controller on Armada-8K is based on
> +	  Designware hardware and therefore the driver re-uses the
> +	  Designware core functions to implement the driver.
> +
> +config PCIE_ARTPEC6
> +	bool "Axis ARTPEC-6 PCIe controller"
> +	depends on MACH_ARTPEC6
> +	depends on PCI_MSI_IRQ_DOMAIN
> +	select PCIEPORTBUS
> +	select PCIE_DW
> +	help
> +	  Say Y here to enable PCIe controller support on Axis ARTPEC-6
> +	  SoCs.  This PCIe controller uses the DesignWare core.
> +
> +endmenu
> diff --git a/drivers/pci/dwc/Makefile b/drivers/pci/dwc/Makefile
> new file mode 100644
> index 0000000..7d27c14
> --- /dev/null
> +++ b/drivers/pci/dwc/Makefile
> @@ -0,0 +1,23 @@
> +obj-$(CONFIG_PCIE_DW) += pcie-designware.o
> +obj-$(CONFIG_PCIE_DW_PLAT) += pcie-designware-plat.o
> +obj-$(CONFIG_PCI_DRA7XX) += pci-dra7xx.o
> +obj-$(CONFIG_PCI_EXYNOS) += pci-exynos.o
> +obj-$(CONFIG_PCI_IMX6) += pci-imx6.o
> +obj-$(CONFIG_PCIE_SPEAR13XX) += pcie-spear13xx.o
> +obj-$(CONFIG_PCI_KEYSTONE) += pci-keystone-dw.o pci-keystone.o
> +obj-$(CONFIG_PCI_LAYERSCAPE) += pci-layerscape.o
> +obj-$(CONFIG_PCIE_QCOM) += pcie-qcom.o
> +obj-$(CONFIG_PCIE_ARMADA_8K) += pcie-armada8k.o
> +obj-$(CONFIG_PCIE_ARTPEC6) += pcie-artpec6.o
> +
> +# The following drivers are for devices that use the generic ACPI
> +# pci_root.c driver but don't support standard ECAM config access.
> +# They contain MCFG quirks to replace the generic ECAM accessors with
> +# device-specific ones that are shared with the DT driver.
> +
> +# The ACPI driver is generic and should not require driver-specific
> +# config options to be enabled, so we always build these drivers on
> +# ARM64 and use internal ifdefs to only build the pieces we need
> +# depending on whether ACPI, the DT driver, or both are enabled.
> +
> +obj-$(CONFIG_ARM64) += pcie-hisi.o
> diff --git a/drivers/pci/host/pci-dra7xx.c b/drivers/pci/dwc/pci-dra7xx.c
> similarity index 100%
> rename from drivers/pci/host/pci-dra7xx.c
> rename to drivers/pci/dwc/pci-dra7xx.c
> diff --git a/drivers/pci/host/pci-exynos.c b/drivers/pci/dwc/pci-exynos.c
> similarity index 100%
> rename from drivers/pci/host/pci-exynos.c
> rename to drivers/pci/dwc/pci-exynos.c
> diff --git a/drivers/pci/host/pci-imx6.c b/drivers/pci/dwc/pci-imx6.c
> similarity index 100%
> rename from drivers/pci/host/pci-imx6.c
> rename to drivers/pci/dwc/pci-imx6.c
> diff --git a/drivers/pci/host/pci-keystone-dw.c b/drivers/pci/dwc/pci-keystone-dw.c
> similarity index 100%
> rename from drivers/pci/host/pci-keystone-dw.c
> rename to drivers/pci/dwc/pci-keystone-dw.c
> diff --git a/drivers/pci/host/pci-keystone.c b/drivers/pci/dwc/pci-keystone.c
> similarity index 100%
> rename from drivers/pci/host/pci-keystone.c
> rename to drivers/pci/dwc/pci-keystone.c
> diff --git a/drivers/pci/host/pci-keystone.h b/drivers/pci/dwc/pci-keystone.h
> similarity index 100%
> rename from drivers/pci/host/pci-keystone.h
> rename to drivers/pci/dwc/pci-keystone.h
> diff --git a/drivers/pci/host/pci-layerscape.c b/drivers/pci/dwc/pci-layerscape.c
> similarity index 100%
> rename from drivers/pci/host/pci-layerscape.c
> rename to drivers/pci/dwc/pci-layerscape.c
> diff --git a/drivers/pci/host/pcie-armada8k.c b/drivers/pci/dwc/pcie-armada8k.c
> similarity index 100%
> rename from drivers/pci/host/pcie-armada8k.c
> rename to drivers/pci/dwc/pcie-armada8k.c
> diff --git a/drivers/pci/host/pcie-artpec6.c b/drivers/pci/dwc/pcie-artpec6.c
> similarity index 100%
> rename from drivers/pci/host/pcie-artpec6.c
> rename to drivers/pci/dwc/pcie-artpec6.c
> diff --git a/drivers/pci/host/pcie-designware-plat.c b/drivers/pci/dwc/pcie-designware-plat.c
> similarity index 100%
> rename from drivers/pci/host/pcie-designware-plat.c
> rename to drivers/pci/dwc/pcie-designware-plat.c
> diff --git a/drivers/pci/host/pcie-designware.c b/drivers/pci/dwc/pcie-designware.c
> similarity index 100%
> rename from drivers/pci/host/pcie-designware.c
> rename to drivers/pci/dwc/pcie-designware.c
> diff --git a/drivers/pci/host/pcie-designware.h b/drivers/pci/dwc/pcie-designware.h
> similarity index 100%
> rename from drivers/pci/host/pcie-designware.h
> rename to drivers/pci/dwc/pcie-designware.h
> diff --git a/drivers/pci/host/pcie-hisi.c b/drivers/pci/dwc/pcie-hisi.c
> similarity index 100%
> rename from drivers/pci/host/pcie-hisi.c
> rename to drivers/pci/dwc/pcie-hisi.c
> diff --git a/drivers/pci/host/pcie-qcom.c b/drivers/pci/dwc/pcie-qcom.c
> similarity index 100%
> rename from drivers/pci/host/pcie-qcom.c
> rename to drivers/pci/dwc/pcie-qcom.c
> diff --git a/drivers/pci/host/pcie-spear13xx.c b/drivers/pci/dwc/pcie-spear13xx.c
> similarity index 100%
> rename from drivers/pci/host/pcie-spear13xx.c
> rename to drivers/pci/dwc/pcie-spear13xx.c
> diff --git a/drivers/pci/host/Kconfig b/drivers/pci/host/Kconfig
> index 898d2c4..f7c1d4d 100644
> --- a/drivers/pci/host/Kconfig
> +++ b/drivers/pci/host/Kconfig
> @@ -1,16 +1,6 @@
>  menu "PCI host controller drivers"
>  	depends on PCI
>  
> -config PCI_DRA7XX
> -	bool "TI DRA7xx PCIe controller"
> -	depends on OF && HAS_IOMEM && TI_PIPE3
> -	depends on PCI_MSI_IRQ_DOMAIN
> -	select PCIE_DW
> -	help
> -	 Enables support for the PCIe controller in the DRA7xx SoC.  There
> -	 are two instances of PCIe controller in DRA7xx.  This controller can
> -	 act both as EP and RC.  This reuses the Designware core.
> -
>  config PCI_MVEBU
>  	bool "Marvell EBU PCIe controller"
>  	depends on ARCH_MVEBU || ARCH_DOVE
> @@ -37,36 +27,6 @@ config PCIE_XILINX_NWL
>  	 or End Point. The current option selection will only
>  	 support root port enabling.
>  
> -config PCIE_DW_PLAT
> -	bool "Platform bus based DesignWare PCIe Controller"
> -	depends on PCI_MSI_IRQ_DOMAIN
> -	select PCIE_DW
> -	---help---
> -	 This selects the DesignWare PCIe controller support. Select this if
> -	 you have a PCIe controller on Platform bus.
> -
> -	 If you have a controller with this interface, say Y or M here.
> -
> -	 If unsure, say N.
> -
> -config PCIE_DW
> -	bool
> -	depends on PCI_MSI_IRQ_DOMAIN
> -
> -config PCI_EXYNOS
> -	bool "Samsung Exynos PCIe controller"
> -	depends on SOC_EXYNOS5440
> -	depends on PCI_MSI_IRQ_DOMAIN
> -	select PCIEPORTBUS
> -	select PCIE_DW
> -
> -config PCI_IMX6
> -	bool "Freescale i.MX6 PCIe controller"
> -	depends on SOC_IMX6Q
> -	depends on PCI_MSI_IRQ_DOMAIN
> -	select PCIEPORTBUS
> -	select PCIE_DW
> -
>  config PCI_TEGRA
>  	bool "NVIDIA Tegra PCIe controller"
>  	depends on ARCH_TEGRA
> @@ -103,27 +63,6 @@ config PCI_HOST_GENERIC
>  	  Say Y here if you want to support a simple generic PCI host
>  	  controller, such as the one emulated by kvmtool.
>  
> -config PCIE_SPEAR13XX
> -	bool "STMicroelectronics SPEAr PCIe controller"
> -	depends on ARCH_SPEAR13XX
> -	depends on PCI_MSI_IRQ_DOMAIN
> -	select PCIEPORTBUS
> -	select PCIE_DW
> -	help
> -	  Say Y here if you want PCIe support on SPEAr13XX SoCs.
> -
> -config PCI_KEYSTONE
> -	bool "TI Keystone PCIe controller"
> -	depends on ARCH_KEYSTONE
> -	depends on PCI_MSI_IRQ_DOMAIN
> -	select PCIE_DW
> -	select PCIEPORTBUS
> -	help
> -	  Say Y here if you want to enable PCI controller support on Keystone
> -	  SoCs. The PCI controller on Keystone is based on Designware hardware
> -	  and therefore the driver re-uses the Designware core functions to
> -	  implement the driver.
> -
>  config PCIE_XILINX
>  	bool "Xilinx AXI PCIe host bridge support"
>  	depends on ARCH_ZYNQ || MICROBLAZE
> @@ -150,15 +89,6 @@ config PCI_XGENE_MSI
>  	  Say Y here if you want PCIe MSI support for the APM X-Gene v1 SoC.
>  	  This MSI driver supports 5 PCIe ports on the APM X-Gene v1 SoC.
>  
> -config PCI_LAYERSCAPE
> -	bool "Freescale Layerscape PCIe controller"
> -	depends on OF && (ARM || ARCH_LAYERSCAPE)
> -	depends on PCI_MSI_IRQ_DOMAIN
> -	select PCIE_DW
> -	select MFD_SYSCON
> -	help
> -	  Say Y here if you want PCIe controller support on Layerscape SoCs.
> -
>  config PCI_VERSATILE
>  	bool "ARM Versatile PB PCI controller"
>  	depends on ARCH_VERSATILE
> @@ -217,27 +147,6 @@ config PCIE_ALTERA_MSI
>  	  Say Y here if you want PCIe MSI support for the Altera FPGA.
>  	  This MSI driver supports Altera MSI to GIC controller IP.
>  
> -config PCI_HISI
> -	depends on OF && ARM64
> -	bool "HiSilicon Hip05 and Hip06 SoCs PCIe controllers"
> -	depends on PCI_MSI_IRQ_DOMAIN
> -	select PCIEPORTBUS
> -	select PCIE_DW
> -	help
> -	  Say Y here if you want PCIe controller support on HiSilicon
> -	  Hip05 and Hip06 SoCs
> -
> -config PCIE_QCOM
> -	bool "Qualcomm PCIe controller"
> -	depends on ARCH_QCOM && OF
> -	depends on PCI_MSI_IRQ_DOMAIN
> -	select PCIE_DW
> -	select PCIEPORTBUS
> -	help
> -	  Say Y here to enable PCIe controller support on Qualcomm SoCs. The
> -	  PCIe controller uses the Designware core plus Qualcomm-specific
> -	  hardware wrappers.
> -
>  config PCI_HOST_THUNDER_PEM
>  	bool "Cavium Thunder PCIe controller to off-chip devices"
>  	depends on ARM64
> @@ -254,28 +163,6 @@ config PCI_HOST_THUNDER_ECAM
>  	help
>  	  Say Y here if you want ECAM support for CN88XX-Pass-1.x Cavium Thunder SoCs.
>  
> -config PCIE_ARMADA_8K
> -	bool "Marvell Armada-8K PCIe controller"
> -	depends on ARCH_MVEBU
> -	depends on PCI_MSI_IRQ_DOMAIN
> -	select PCIE_DW
> -	select PCIEPORTBUS
> -	help
> -	  Say Y here if you want to enable PCIe controller support on
> -	  Armada-8K SoCs. The PCIe controller on Armada-8K is based on
> -	  Designware hardware and therefore the driver re-uses the
> -	  Designware core functions to implement the driver.
> -
> -config PCIE_ARTPEC6
> -	bool "Axis ARTPEC-6 PCIe controller"
> -	depends on MACH_ARTPEC6
> -	depends on PCI_MSI_IRQ_DOMAIN
> -	select PCIE_DW
> -	select PCIEPORTBUS
> -	help
> -	  Say Y here to enable PCIe controller support on Axis ARTPEC-6
> -	  SoCs.  This PCIe controller uses the DesignWare core.
> -
>  config PCIE_ROCKCHIP
>  	bool "Rockchip PCIe controller"
>  	depends on ARCH_ROCKCHIP || COMPILE_TEST
> diff --git a/drivers/pci/host/Makefile b/drivers/pci/host/Makefile
> index bfe3179..4d36866 100644
> --- a/drivers/pci/host/Makefile
> +++ b/drivers/pci/host/Makefile
> @@ -1,8 +1,3 @@
> -obj-$(CONFIG_PCIE_DW) += pcie-designware.o
> -obj-$(CONFIG_PCIE_DW_PLAT) += pcie-designware-plat.o
> -obj-$(CONFIG_PCI_DRA7XX) += pci-dra7xx.o
> -obj-$(CONFIG_PCI_EXYNOS) += pci-exynos.o
> -obj-$(CONFIG_PCI_IMX6) += pci-imx6.o
>  obj-$(CONFIG_PCI_HYPERV) += pci-hyperv.o
>  obj-$(CONFIG_PCI_MVEBU) += pci-mvebu.o
>  obj-$(CONFIG_PCI_AARDVARK) += pci-aardvark.o
> @@ -11,12 +6,9 @@ obj-$(CONFIG_PCI_RCAR_GEN2) += pci-rcar-gen2.o
>  obj-$(CONFIG_PCIE_RCAR) += pcie-rcar.o
>  obj-$(CONFIG_PCI_HOST_COMMON) += pci-host-common.o
>  obj-$(CONFIG_PCI_HOST_GENERIC) += pci-host-generic.o
> -obj-$(CONFIG_PCIE_SPEAR13XX) += pcie-spear13xx.o
> -obj-$(CONFIG_PCI_KEYSTONE) += pci-keystone-dw.o pci-keystone.o
>  obj-$(CONFIG_PCIE_XILINX) += pcie-xilinx.o
>  obj-$(CONFIG_PCIE_XILINX_NWL) += pcie-xilinx-nwl.o
>  obj-$(CONFIG_PCI_XGENE_MSI) += pci-xgene-msi.o
> -obj-$(CONFIG_PCI_LAYERSCAPE) += pci-layerscape.o
>  obj-$(CONFIG_PCI_VERSATILE) += pci-versatile.o
>  obj-$(CONFIG_PCIE_IPROC) += pcie-iproc.o
>  obj-$(CONFIG_PCIE_IPROC_MSI) += pcie-iproc-msi.o
> @@ -24,9 +16,6 @@ obj-$(CONFIG_PCIE_IPROC_PLATFORM) += pcie-iproc-platform.o
>  obj-$(CONFIG_PCIE_IPROC_BCMA) += pcie-iproc-bcma.o
>  obj-$(CONFIG_PCIE_ALTERA) += pcie-altera.o
>  obj-$(CONFIG_PCIE_ALTERA_MSI) += pcie-altera-msi.o
> -obj-$(CONFIG_PCIE_QCOM) += pcie-qcom.o
> -obj-$(CONFIG_PCIE_ARMADA_8K) += pcie-armada8k.o
> -obj-$(CONFIG_PCIE_ARTPEC6) += pcie-artpec6.o
>  obj-$(CONFIG_PCIE_ROCKCHIP) += pcie-rockchip.o
>  obj-$(CONFIG_VMD) += vmd.o
>  
> @@ -40,7 +29,6 @@ obj-$(CONFIG_VMD) += vmd.o
>  # ARM64 and use internal ifdefs to only build the pieces we need
>  # depending on whether ACPI, the DT driver, or both are enabled.
>  
> -obj-$(CONFIG_ARM64) += pcie-hisi.o
>  obj-$(CONFIG_ARM64) += pci-thunder-ecam.o
>  obj-$(CONFIG_ARM64) += pci-thunder-pem.o
>  obj-$(CONFIG_ARM64) += pci-xgene.o
> -- 
> 1.7.9.5
>
Kishon Vijay Abraham I Feb. 6, 2017, 12:28 p.m. UTC | #6
On Saturday 04 February 2017 12:49 AM, Bjorn Helgaas wrote:
> On Fri, Jan 06, 2017 at 06:22:48PM +0530, Kishon Vijay Abraham I wrote:
>> Group all the PCI drivers that use designware core in dwc directory.
>> dwc IP is capable of operating in both host mode and device mode and
>> keeping it inside the *host* directory is misleading.
>>
>> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
>> Cc: Minghuan Lian <minghuan.Lian@freescale.com>
>> Cc: Mingkai Hu <mingkai.hu@freescale.com>
>> Cc: Roy Zang <tie-fei.zang@freescale.com>
>> Cc: Richard Zhu <hongxing.zhu@nxp.com>
>> Cc: Lucas Stach <l.stach@pengutronix.de>
>> Cc: Murali Karicheri <m-karicheri2@ti.com>
>> Cc: Jingoo Han <jingoohan1@gmail.com>
>> Cc: Joao Pinto <Joao.Pinto@synopsys.com>
>> Cc: Pratyush Anand <pratyush.anand@gmail.com>
>> Cc: Niklas Cassel <niklas.cassel@axis.com>
>> Cc: Jesper Nilsson <jesper.nilsson@axis.com>
>> Cc: Zhou Wang <wangzhou1@hisilicon.com>
>> Cc: Gabriele Paoloni <gabriele.paoloni@huawei.com>
>> Cc: Stanimir Varbanov <svarbanov@mm-sol.com>
>> Acked-by: Jingoo Han <jingoohan1@gmail.com>
>> Acked-By: Joao Pinto <jpinto@synopsys.com>
>> Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
> 
> I applied this to pci/host-designware.  I might have to do some
> fiddling when merging everything together, but I intend to include
> this for v4.11.  Thanks for your patience, Kishon!

Thanks Bjorn!
> 
>> ---
>> Changes from v4:
>> *) modified Kconfig such that the user doesn't have to explicity
>>    select PCIE_DW.
>>
>> Changes from v3:
>> *) Moved pci-keystone.h to dwc directory which was missed earlier
>>
>> Changes from v2:
>> *) update MAINTAINERS file
>>
>> Changes from v1:
>> *) instead of renaming *host* directory to *controller* directory,
>>    move all the dwc drivers to dwc/ directory.
>> Next Steps:
>> Split pcie-designware.c to core, host-only and endpoint-only files.
>>
>>  MAINTAINERS                                      |   22 ++--
>>  drivers/pci/Kconfig                              |    1 +
>>  drivers/pci/Makefile                             |    3 +
>>  drivers/pci/dwc/Kconfig                          |  117 ++++++++++++++++++++++
>>  drivers/pci/dwc/Makefile                         |   23 +++++
>>  drivers/pci/{host => dwc}/pci-dra7xx.c           |    0
>>  drivers/pci/{host => dwc}/pci-exynos.c           |    0
>>  drivers/pci/{host => dwc}/pci-imx6.c             |    0
>>  drivers/pci/{host => dwc}/pci-keystone-dw.c      |    0
>>  drivers/pci/{host => dwc}/pci-keystone.c         |    0
>>  drivers/pci/{host => dwc}/pci-keystone.h         |    0
>>  drivers/pci/{host => dwc}/pci-layerscape.c       |    0
>>  drivers/pci/{host => dwc}/pcie-armada8k.c        |    0
>>  drivers/pci/{host => dwc}/pcie-artpec6.c         |    0
>>  drivers/pci/{host => dwc}/pcie-designware-plat.c |    0
>>  drivers/pci/{host => dwc}/pcie-designware.c      |    0
>>  drivers/pci/{host => dwc}/pcie-designware.h      |    0
>>  drivers/pci/{host => dwc}/pcie-hisi.c            |    0
>>  drivers/pci/{host => dwc}/pcie-qcom.c            |    0
>>  drivers/pci/{host => dwc}/pcie-spear13xx.c       |    0
>>  drivers/pci/host/Kconfig                         |  113 ---------------------
>>  drivers/pci/host/Makefile                        |   12 ---
>>  22 files changed, 155 insertions(+), 136 deletions(-)
>>  create mode 100644 drivers/pci/dwc/Kconfig
>>  create mode 100644 drivers/pci/dwc/Makefile
>>  rename drivers/pci/{host => dwc}/pci-dra7xx.c (100%)
>>  rename drivers/pci/{host => dwc}/pci-exynos.c (100%)
>>  rename drivers/pci/{host => dwc}/pci-imx6.c (100%)
>>  rename drivers/pci/{host => dwc}/pci-keystone-dw.c (100%)
>>  rename drivers/pci/{host => dwc}/pci-keystone.c (100%)
>>  rename drivers/pci/{host => dwc}/pci-keystone.h (100%)
>>  rename drivers/pci/{host => dwc}/pci-layerscape.c (100%)
>>  rename drivers/pci/{host => dwc}/pcie-armada8k.c (100%)
>>  rename drivers/pci/{host => dwc}/pcie-artpec6.c (100%)
>>  rename drivers/pci/{host => dwc}/pcie-designware-plat.c (100%)
>>  rename drivers/pci/{host => dwc}/pcie-designware.c (100%)
>>  rename drivers/pci/{host => dwc}/pcie-designware.h (100%)
>>  rename drivers/pci/{host => dwc}/pcie-hisi.c (100%)
>>  rename drivers/pci/{host => dwc}/pcie-qcom.c (100%)
>>  rename drivers/pci/{host => dwc}/pcie-spear13xx.c (100%)
>>
>> diff --git a/MAINTAINERS b/MAINTAINERS
>> index cfff2c9..8672f18 100644
>> --- a/MAINTAINERS
>> +++ b/MAINTAINERS
>> @@ -9429,7 +9429,7 @@ L:	linux-pci@vger.kernel.org
>>  L:	linux-arm-kernel@lists.infradead.org
>>  S:	Maintained
>>  F:	Documentation/devicetree/bindings/pci/pci-armada8k.txt
>> -F:	drivers/pci/host/pcie-armada8k.c
>> +F:	drivers/pci/dwc/pcie-armada8k.c
>>  
>>  PCI DRIVER FOR APPLIEDMICRO XGENE
>>  M:	Tanmay Inamdar <tinamdar@apm.com>
>> @@ -9447,7 +9447,7 @@ L:	linuxppc-dev@lists.ozlabs.org
>>  L:	linux-pci@vger.kernel.org
>>  L:	linux-arm-kernel@lists.infradead.org
>>  S:	Maintained
>> -F:	drivers/pci/host/*layerscape*
>> +F:	drivers/pci/dwc/*layerscape*
>>  
>>  PCI DRIVER FOR IMX6
>>  M:	Richard Zhu <hongxing.zhu@nxp.com>
>> @@ -9456,14 +9456,14 @@ L:	linux-pci@vger.kernel.org
>>  L:	linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
>>  S:	Maintained
>>  F:	Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.txt
>> -F:	drivers/pci/host/*imx6*
>> +F:	drivers/pci/dwc/*imx6*
>>  
>>  PCI DRIVER FOR TI KEYSTONE
>>  M:	Murali Karicheri <m-karicheri2@ti.com>
>>  L:	linux-pci@vger.kernel.org
>>  L:	linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
>>  S:	Maintained
>> -F:	drivers/pci/host/*keystone*
>> +F:	drivers/pci/dwc/*keystone*
>>  
>>  PCI DRIVER FOR MVEBU (Marvell Armada 370 and Armada XP SOC support)
>>  M:	Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
>> @@ -9495,7 +9495,7 @@ L:	linux-omap@vger.kernel.org
>>  L:	linux-pci@vger.kernel.org
>>  S:	Supported
>>  F:	Documentation/devicetree/bindings/pci/ti-pci.txt
>> -F:	drivers/pci/host/pci-dra7xx.c
>> +F:	drivers/pci/dwc/pci-dra7xx.c
>>  
>>  PCI DRIVER FOR RENESAS R-CAR
>>  M:	Simon Horman <horms@verge.net.au>
>> @@ -9510,7 +9510,7 @@ L:	linux-pci@vger.kernel.org
>>  L:	linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
>>  L:	linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
>>  S:	Maintained
>> -F:	drivers/pci/host/pci-exynos.c
>> +F:	drivers/pci/dwc/pci-exynos.c
>>  
>>  PCI DRIVER FOR SYNOPSIS DESIGNWARE
>>  M:	Jingoo Han <jingoohan1@gmail.com>
>> @@ -9518,7 +9518,7 @@ M:	Joao Pinto <Joao.Pinto@synopsys.com>
>>  L:	linux-pci@vger.kernel.org
>>  S:	Maintained
>>  F:	Documentation/devicetree/bindings/pci/designware-pcie.txt
>> -F:	drivers/pci/host/*designware*
>> +F:	drivers/pci/dwc/*designware*
>>  
>>  PCI DRIVER FOR GENERIC OF HOSTS
>>  M:	Will Deacon <will.deacon@arm.com>
>> @@ -9539,7 +9539,7 @@ PCIE DRIVER FOR ST SPEAR13XX
>>  M:	Pratyush Anand <pratyush.anand@gmail.com>
>>  L:	linux-pci@vger.kernel.org
>>  S:	Maintained
>> -F:	drivers/pci/host/*spear*
>> +F:	drivers/pci/dwc/*spear*
>>  
>>  PCI MSI DRIVER FOR ALTERA MSI IP
>>  M:	Ley Foon Tan <lftan@altera.com>
>> @@ -9564,7 +9564,7 @@ L:	linux-arm-kernel@axis.com
>>  L:	linux-pci@vger.kernel.org
>>  S:	Maintained
>>  F:	Documentation/devicetree/bindings/pci/axis,artpec*
>> -F:	drivers/pci/host/*artpec*
>> +F:	drivers/pci/dwc/*artpec*
>>  
>>  PCIE DRIVER FOR HISILICON
>>  M:	Zhou Wang <wangzhou1@hisilicon.com>
>> @@ -9572,7 +9572,7 @@ M:	Gabriele Paoloni <gabriele.paoloni@huawei.com>
>>  L:	linux-pci@vger.kernel.org
>>  S:	Maintained
>>  F:	Documentation/devicetree/bindings/pci/hisilicon-pcie.txt
>> -F:	drivers/pci/host/pcie-hisi.c
>> +F:	drivers/pci/dwc/pcie-hisi.c
>>  
>>  PCIE DRIVER FOR ROCKCHIP
>>  M:	Shawn Lin <shawn.lin@rock-chips.com>
>> @@ -9588,7 +9588,7 @@ M:     Stanimir Varbanov <svarbanov@mm-sol.com>
>>  L:     linux-pci@vger.kernel.org
>>  L:     linux-arm-msm@vger.kernel.org
>>  S:     Maintained
>> -F:     drivers/pci/host/*qcom*
>> +F:     drivers/pci/dwc/*qcom*
>>  
>>  PCIE DRIVER FOR CAVIUM THUNDERX
>>  M:	David Daney <david.daney@cavium.com>
>> diff --git a/drivers/pci/Kconfig b/drivers/pci/Kconfig
>> index 6555eb7..df14142 100644
>> --- a/drivers/pci/Kconfig
>> +++ b/drivers/pci/Kconfig
>> @@ -132,4 +132,5 @@ config PCI_HYPERV
>>            PCI devices from a PCI backend to support PCI driver domains.
>>  
>>  source "drivers/pci/hotplug/Kconfig"
>> +source "drivers/pci/dwc/Kconfig"
>>  source "drivers/pci/host/Kconfig"
>> diff --git a/drivers/pci/Makefile b/drivers/pci/Makefile
>> index 8db5079..b7e9751 100644
>> --- a/drivers/pci/Makefile
>> +++ b/drivers/pci/Makefile
>> @@ -66,5 +66,8 @@ obj-$(CONFIG_OF) += of.o
>>  
>>  ccflags-$(CONFIG_PCI_DEBUG) := -DDEBUG
>>  
>> +# PCI dwc controller drivers
>> +obj-y += dwc/
>> +
>>  # PCI host controller drivers
>>  obj-y += host/
>> diff --git a/drivers/pci/dwc/Kconfig b/drivers/pci/dwc/Kconfig
>> new file mode 100644
>> index 0000000..deae261
>> --- /dev/null
>> +++ b/drivers/pci/dwc/Kconfig
>> @@ -0,0 +1,117 @@
>> +menu "DesignWare PCI Core Support"
>> +	depends on PCI
>> +
>> +config PCIE_DW
>> +	bool
>> +	depends on PCI_MSI_IRQ_DOMAIN
>> +
>> +config PCI_DRA7XX
>> +	bool "TI DRA7xx PCIe controller"
>> +	depends on OF && HAS_IOMEM && TI_PIPE3
>> +	depends on PCI_MSI_IRQ_DOMAIN
>> +	select PCIE_DW
>> +	help
>> +	 Enables support for the PCIe controller in the DRA7xx SoC.  There
>> +	 are two instances of PCIe controller in DRA7xx.  This controller can
>> +	 act both as EP and RC.  This reuses the Designware core.
>> +
>> +config PCIE_DW_PLAT
>> +	bool "Platform bus based DesignWare PCIe Controller"
>> +	depends on PCI_MSI_IRQ_DOMAIN
>> +	select PCIE_DW
>> +	---help---
>> +	 This selects the DesignWare PCIe controller support. Select this if
>> +	 you have a PCIe controller on Platform bus.
>> +
>> +	 If you have a controller with this interface, say Y or M here.
>> +
>> +	 If unsure, say N.
>> +
>> +config PCI_EXYNOS
>> +	bool "Samsung Exynos PCIe controller"
>> +	depends on SOC_EXYNOS5440
>> +	depends on PCI_MSI_IRQ_DOMAIN
>> +	select PCIEPORTBUS
>> +	select PCIE_DW
>> +
>> +config PCI_IMX6
>> +	bool "Freescale i.MX6 PCIe controller"
>> +	depends on SOC_IMX6Q
>> +	depends on PCI_MSI_IRQ_DOMAIN
>> +	select PCIEPORTBUS
>> +	select PCIE_DW
>> +
>> +config PCIE_SPEAR13XX
>> +	bool "STMicroelectronics SPEAr PCIe controller"
>> +	depends on ARCH_SPEAR13XX
>> +	depends on PCI_MSI_IRQ_DOMAIN
>> +	select PCIEPORTBUS
>> +	select PCIE_DW
>> +	help
>> +	  Say Y here if you want PCIe support on SPEAr13XX SoCs.
>> +
>> +config PCI_KEYSTONE
>> +	bool "TI Keystone PCIe controller"
>> +	depends on ARCH_KEYSTONE
>> +	depends on PCI_MSI_IRQ_DOMAIN
>> +	select PCIEPORTBUS
>> +	select PCIE_DW
>> +	help
>> +	  Say Y here if you want to enable PCI controller support on Keystone
>> +	  SoCs. The PCI controller on Keystone is based on Designware hardware
>> +	  and therefore the driver re-uses the Designware core functions to
>> +	  implement the driver.
>> +
>> +config PCI_LAYERSCAPE
>> +	bool "Freescale Layerscape PCIe controller"
>> +	depends on OF && (ARM || ARCH_LAYERSCAPE)
>> +	depends on PCI_MSI_IRQ_DOMAIN
>> +	select MFD_SYSCON
>> +	select PCIE_DW
>> +	help
>> +	  Say Y here if you want PCIe controller support on Layerscape SoCs.
>> +
>> +config PCI_HISI
>> +	depends on OF && ARM64
>> +	bool "HiSilicon Hip05 and Hip06 SoCs PCIe controllers"
>> +	depends on PCI_MSI_IRQ_DOMAIN
>> +	select PCIEPORTBUS
>> +	select PCIE_DW
>> +	help
>> +	  Say Y here if you want PCIe controller support on HiSilicon
>> +	  Hip05 and Hip06 SoCs
>> +
>> +config PCIE_QCOM
>> +	bool "Qualcomm PCIe controller"
>> +	depends on ARCH_QCOM && OF
>> +	depends on PCI_MSI_IRQ_DOMAIN
>> +	select PCIEPORTBUS
>> +	select PCIE_DW
>> +	help
>> +	  Say Y here to enable PCIe controller support on Qualcomm SoCs. The
>> +	  PCIe controller uses the Designware core plus Qualcomm-specific
>> +	  hardware wrappers.
>> +
>> +config PCIE_ARMADA_8K
>> +	bool "Marvell Armada-8K PCIe controller"
>> +	depends on ARCH_MVEBU
>> +	depends on PCI_MSI_IRQ_DOMAIN
>> +	select PCIEPORTBUS
>> +	select PCIE_DW
>> +	help
>> +	  Say Y here if you want to enable PCIe controller support on
>> +	  Armada-8K SoCs. The PCIe controller on Armada-8K is based on
>> +	  Designware hardware and therefore the driver re-uses the
>> +	  Designware core functions to implement the driver.
>> +
>> +config PCIE_ARTPEC6
>> +	bool "Axis ARTPEC-6 PCIe controller"
>> +	depends on MACH_ARTPEC6
>> +	depends on PCI_MSI_IRQ_DOMAIN
>> +	select PCIEPORTBUS
>> +	select PCIE_DW
>> +	help
>> +	  Say Y here to enable PCIe controller support on Axis ARTPEC-6
>> +	  SoCs.  This PCIe controller uses the DesignWare core.
>> +
>> +endmenu
>> diff --git a/drivers/pci/dwc/Makefile b/drivers/pci/dwc/Makefile
>> new file mode 100644
>> index 0000000..7d27c14
>> --- /dev/null
>> +++ b/drivers/pci/dwc/Makefile
>> @@ -0,0 +1,23 @@
>> +obj-$(CONFIG_PCIE_DW) += pcie-designware.o
>> +obj-$(CONFIG_PCIE_DW_PLAT) += pcie-designware-plat.o
>> +obj-$(CONFIG_PCI_DRA7XX) += pci-dra7xx.o
>> +obj-$(CONFIG_PCI_EXYNOS) += pci-exynos.o
>> +obj-$(CONFIG_PCI_IMX6) += pci-imx6.o
>> +obj-$(CONFIG_PCIE_SPEAR13XX) += pcie-spear13xx.o
>> +obj-$(CONFIG_PCI_KEYSTONE) += pci-keystone-dw.o pci-keystone.o
>> +obj-$(CONFIG_PCI_LAYERSCAPE) += pci-layerscape.o
>> +obj-$(CONFIG_PCIE_QCOM) += pcie-qcom.o
>> +obj-$(CONFIG_PCIE_ARMADA_8K) += pcie-armada8k.o
>> +obj-$(CONFIG_PCIE_ARTPEC6) += pcie-artpec6.o
>> +
>> +# The following drivers are for devices that use the generic ACPI
>> +# pci_root.c driver but don't support standard ECAM config access.
>> +# They contain MCFG quirks to replace the generic ECAM accessors with
>> +# device-specific ones that are shared with the DT driver.
>> +
>> +# The ACPI driver is generic and should not require driver-specific
>> +# config options to be enabled, so we always build these drivers on
>> +# ARM64 and use internal ifdefs to only build the pieces we need
>> +# depending on whether ACPI, the DT driver, or both are enabled.
>> +
>> +obj-$(CONFIG_ARM64) += pcie-hisi.o
>> diff --git a/drivers/pci/host/pci-dra7xx.c b/drivers/pci/dwc/pci-dra7xx.c
>> similarity index 100%
>> rename from drivers/pci/host/pci-dra7xx.c
>> rename to drivers/pci/dwc/pci-dra7xx.c
>> diff --git a/drivers/pci/host/pci-exynos.c b/drivers/pci/dwc/pci-exynos.c
>> similarity index 100%
>> rename from drivers/pci/host/pci-exynos.c
>> rename to drivers/pci/dwc/pci-exynos.c
>> diff --git a/drivers/pci/host/pci-imx6.c b/drivers/pci/dwc/pci-imx6.c
>> similarity index 100%
>> rename from drivers/pci/host/pci-imx6.c
>> rename to drivers/pci/dwc/pci-imx6.c
>> diff --git a/drivers/pci/host/pci-keystone-dw.c b/drivers/pci/dwc/pci-keystone-dw.c
>> similarity index 100%
>> rename from drivers/pci/host/pci-keystone-dw.c
>> rename to drivers/pci/dwc/pci-keystone-dw.c
>> diff --git a/drivers/pci/host/pci-keystone.c b/drivers/pci/dwc/pci-keystone.c
>> similarity index 100%
>> rename from drivers/pci/host/pci-keystone.c
>> rename to drivers/pci/dwc/pci-keystone.c
>> diff --git a/drivers/pci/host/pci-keystone.h b/drivers/pci/dwc/pci-keystone.h
>> similarity index 100%
>> rename from drivers/pci/host/pci-keystone.h
>> rename to drivers/pci/dwc/pci-keystone.h
>> diff --git a/drivers/pci/host/pci-layerscape.c b/drivers/pci/dwc/pci-layerscape.c
>> similarity index 100%
>> rename from drivers/pci/host/pci-layerscape.c
>> rename to drivers/pci/dwc/pci-layerscape.c
>> diff --git a/drivers/pci/host/pcie-armada8k.c b/drivers/pci/dwc/pcie-armada8k.c
>> similarity index 100%
>> rename from drivers/pci/host/pcie-armada8k.c
>> rename to drivers/pci/dwc/pcie-armada8k.c
>> diff --git a/drivers/pci/host/pcie-artpec6.c b/drivers/pci/dwc/pcie-artpec6.c
>> similarity index 100%
>> rename from drivers/pci/host/pcie-artpec6.c
>> rename to drivers/pci/dwc/pcie-artpec6.c
>> diff --git a/drivers/pci/host/pcie-designware-plat.c b/drivers/pci/dwc/pcie-designware-plat.c
>> similarity index 100%
>> rename from drivers/pci/host/pcie-designware-plat.c
>> rename to drivers/pci/dwc/pcie-designware-plat.c
>> diff --git a/drivers/pci/host/pcie-designware.c b/drivers/pci/dwc/pcie-designware.c
>> similarity index 100%
>> rename from drivers/pci/host/pcie-designware.c
>> rename to drivers/pci/dwc/pcie-designware.c
>> diff --git a/drivers/pci/host/pcie-designware.h b/drivers/pci/dwc/pcie-designware.h
>> similarity index 100%
>> rename from drivers/pci/host/pcie-designware.h
>> rename to drivers/pci/dwc/pcie-designware.h
>> diff --git a/drivers/pci/host/pcie-hisi.c b/drivers/pci/dwc/pcie-hisi.c
>> similarity index 100%
>> rename from drivers/pci/host/pcie-hisi.c
>> rename to drivers/pci/dwc/pcie-hisi.c
>> diff --git a/drivers/pci/host/pcie-qcom.c b/drivers/pci/dwc/pcie-qcom.c
>> similarity index 100%
>> rename from drivers/pci/host/pcie-qcom.c
>> rename to drivers/pci/dwc/pcie-qcom.c
>> diff --git a/drivers/pci/host/pcie-spear13xx.c b/drivers/pci/dwc/pcie-spear13xx.c
>> similarity index 100%
>> rename from drivers/pci/host/pcie-spear13xx.c
>> rename to drivers/pci/dwc/pcie-spear13xx.c
>> diff --git a/drivers/pci/host/Kconfig b/drivers/pci/host/Kconfig
>> index 898d2c4..f7c1d4d 100644
>> --- a/drivers/pci/host/Kconfig
>> +++ b/drivers/pci/host/Kconfig
>> @@ -1,16 +1,6 @@
>>  menu "PCI host controller drivers"
>>  	depends on PCI
>>  
>> -config PCI_DRA7XX
>> -	bool "TI DRA7xx PCIe controller"
>> -	depends on OF && HAS_IOMEM && TI_PIPE3
>> -	depends on PCI_MSI_IRQ_DOMAIN
>> -	select PCIE_DW
>> -	help
>> -	 Enables support for the PCIe controller in the DRA7xx SoC.  There
>> -	 are two instances of PCIe controller in DRA7xx.  This controller can
>> -	 act both as EP and RC.  This reuses the Designware core.
>> -
>>  config PCI_MVEBU
>>  	bool "Marvell EBU PCIe controller"
>>  	depends on ARCH_MVEBU || ARCH_DOVE
>> @@ -37,36 +27,6 @@ config PCIE_XILINX_NWL
>>  	 or End Point. The current option selection will only
>>  	 support root port enabling.
>>  
>> -config PCIE_DW_PLAT
>> -	bool "Platform bus based DesignWare PCIe Controller"
>> -	depends on PCI_MSI_IRQ_DOMAIN
>> -	select PCIE_DW
>> -	---help---
>> -	 This selects the DesignWare PCIe controller support. Select this if
>> -	 you have a PCIe controller on Platform bus.
>> -
>> -	 If you have a controller with this interface, say Y or M here.
>> -
>> -	 If unsure, say N.
>> -
>> -config PCIE_DW
>> -	bool
>> -	depends on PCI_MSI_IRQ_DOMAIN
>> -
>> -config PCI_EXYNOS
>> -	bool "Samsung Exynos PCIe controller"
>> -	depends on SOC_EXYNOS5440
>> -	depends on PCI_MSI_IRQ_DOMAIN
>> -	select PCIEPORTBUS
>> -	select PCIE_DW
>> -
>> -config PCI_IMX6
>> -	bool "Freescale i.MX6 PCIe controller"
>> -	depends on SOC_IMX6Q
>> -	depends on PCI_MSI_IRQ_DOMAIN
>> -	select PCIEPORTBUS
>> -	select PCIE_DW
>> -
>>  config PCI_TEGRA
>>  	bool "NVIDIA Tegra PCIe controller"
>>  	depends on ARCH_TEGRA
>> @@ -103,27 +63,6 @@ config PCI_HOST_GENERIC
>>  	  Say Y here if you want to support a simple generic PCI host
>>  	  controller, such as the one emulated by kvmtool.
>>  
>> -config PCIE_SPEAR13XX
>> -	bool "STMicroelectronics SPEAr PCIe controller"
>> -	depends on ARCH_SPEAR13XX
>> -	depends on PCI_MSI_IRQ_DOMAIN
>> -	select PCIEPORTBUS
>> -	select PCIE_DW
>> -	help
>> -	  Say Y here if you want PCIe support on SPEAr13XX SoCs.
>> -
>> -config PCI_KEYSTONE
>> -	bool "TI Keystone PCIe controller"
>> -	depends on ARCH_KEYSTONE
>> -	depends on PCI_MSI_IRQ_DOMAIN
>> -	select PCIE_DW
>> -	select PCIEPORTBUS
>> -	help
>> -	  Say Y here if you want to enable PCI controller support on Keystone
>> -	  SoCs. The PCI controller on Keystone is based on Designware hardware
>> -	  and therefore the driver re-uses the Designware core functions to
>> -	  implement the driver.
>> -
>>  config PCIE_XILINX
>>  	bool "Xilinx AXI PCIe host bridge support"
>>  	depends on ARCH_ZYNQ || MICROBLAZE
>> @@ -150,15 +89,6 @@ config PCI_XGENE_MSI
>>  	  Say Y here if you want PCIe MSI support for the APM X-Gene v1 SoC.
>>  	  This MSI driver supports 5 PCIe ports on the APM X-Gene v1 SoC.
>>  
>> -config PCI_LAYERSCAPE
>> -	bool "Freescale Layerscape PCIe controller"
>> -	depends on OF && (ARM || ARCH_LAYERSCAPE)
>> -	depends on PCI_MSI_IRQ_DOMAIN
>> -	select PCIE_DW
>> -	select MFD_SYSCON
>> -	help
>> -	  Say Y here if you want PCIe controller support on Layerscape SoCs.
>> -
>>  config PCI_VERSATILE
>>  	bool "ARM Versatile PB PCI controller"
>>  	depends on ARCH_VERSATILE
>> @@ -217,27 +147,6 @@ config PCIE_ALTERA_MSI
>>  	  Say Y here if you want PCIe MSI support for the Altera FPGA.
>>  	  This MSI driver supports Altera MSI to GIC controller IP.
>>  
>> -config PCI_HISI
>> -	depends on OF && ARM64
>> -	bool "HiSilicon Hip05 and Hip06 SoCs PCIe controllers"
>> -	depends on PCI_MSI_IRQ_DOMAIN
>> -	select PCIEPORTBUS
>> -	select PCIE_DW
>> -	help
>> -	  Say Y here if you want PCIe controller support on HiSilicon
>> -	  Hip05 and Hip06 SoCs
>> -
>> -config PCIE_QCOM
>> -	bool "Qualcomm PCIe controller"
>> -	depends on ARCH_QCOM && OF
>> -	depends on PCI_MSI_IRQ_DOMAIN
>> -	select PCIE_DW
>> -	select PCIEPORTBUS
>> -	help
>> -	  Say Y here to enable PCIe controller support on Qualcomm SoCs. The
>> -	  PCIe controller uses the Designware core plus Qualcomm-specific
>> -	  hardware wrappers.
>> -
>>  config PCI_HOST_THUNDER_PEM
>>  	bool "Cavium Thunder PCIe controller to off-chip devices"
>>  	depends on ARM64
>> @@ -254,28 +163,6 @@ config PCI_HOST_THUNDER_ECAM
>>  	help
>>  	  Say Y here if you want ECAM support for CN88XX-Pass-1.x Cavium Thunder SoCs.
>>  
>> -config PCIE_ARMADA_8K
>> -	bool "Marvell Armada-8K PCIe controller"
>> -	depends on ARCH_MVEBU
>> -	depends on PCI_MSI_IRQ_DOMAIN
>> -	select PCIE_DW
>> -	select PCIEPORTBUS
>> -	help
>> -	  Say Y here if you want to enable PCIe controller support on
>> -	  Armada-8K SoCs. The PCIe controller on Armada-8K is based on
>> -	  Designware hardware and therefore the driver re-uses the
>> -	  Designware core functions to implement the driver.
>> -
>> -config PCIE_ARTPEC6
>> -	bool "Axis ARTPEC-6 PCIe controller"
>> -	depends on MACH_ARTPEC6
>> -	depends on PCI_MSI_IRQ_DOMAIN
>> -	select PCIE_DW
>> -	select PCIEPORTBUS
>> -	help
>> -	  Say Y here to enable PCIe controller support on Axis ARTPEC-6
>> -	  SoCs.  This PCIe controller uses the DesignWare core.
>> -
>>  config PCIE_ROCKCHIP
>>  	bool "Rockchip PCIe controller"
>>  	depends on ARCH_ROCKCHIP || COMPILE_TEST
>> diff --git a/drivers/pci/host/Makefile b/drivers/pci/host/Makefile
>> index bfe3179..4d36866 100644
>> --- a/drivers/pci/host/Makefile
>> +++ b/drivers/pci/host/Makefile
>> @@ -1,8 +1,3 @@
>> -obj-$(CONFIG_PCIE_DW) += pcie-designware.o
>> -obj-$(CONFIG_PCIE_DW_PLAT) += pcie-designware-plat.o
>> -obj-$(CONFIG_PCI_DRA7XX) += pci-dra7xx.o
>> -obj-$(CONFIG_PCI_EXYNOS) += pci-exynos.o
>> -obj-$(CONFIG_PCI_IMX6) += pci-imx6.o
>>  obj-$(CONFIG_PCI_HYPERV) += pci-hyperv.o
>>  obj-$(CONFIG_PCI_MVEBU) += pci-mvebu.o
>>  obj-$(CONFIG_PCI_AARDVARK) += pci-aardvark.o
>> @@ -11,12 +6,9 @@ obj-$(CONFIG_PCI_RCAR_GEN2) += pci-rcar-gen2.o
>>  obj-$(CONFIG_PCIE_RCAR) += pcie-rcar.o
>>  obj-$(CONFIG_PCI_HOST_COMMON) += pci-host-common.o
>>  obj-$(CONFIG_PCI_HOST_GENERIC) += pci-host-generic.o
>> -obj-$(CONFIG_PCIE_SPEAR13XX) += pcie-spear13xx.o
>> -obj-$(CONFIG_PCI_KEYSTONE) += pci-keystone-dw.o pci-keystone.o
>>  obj-$(CONFIG_PCIE_XILINX) += pcie-xilinx.o
>>  obj-$(CONFIG_PCIE_XILINX_NWL) += pcie-xilinx-nwl.o
>>  obj-$(CONFIG_PCI_XGENE_MSI) += pci-xgene-msi.o
>> -obj-$(CONFIG_PCI_LAYERSCAPE) += pci-layerscape.o
>>  obj-$(CONFIG_PCI_VERSATILE) += pci-versatile.o
>>  obj-$(CONFIG_PCIE_IPROC) += pcie-iproc.o
>>  obj-$(CONFIG_PCIE_IPROC_MSI) += pcie-iproc-msi.o
>> @@ -24,9 +16,6 @@ obj-$(CONFIG_PCIE_IPROC_PLATFORM) += pcie-iproc-platform.o
>>  obj-$(CONFIG_PCIE_IPROC_BCMA) += pcie-iproc-bcma.o
>>  obj-$(CONFIG_PCIE_ALTERA) += pcie-altera.o
>>  obj-$(CONFIG_PCIE_ALTERA_MSI) += pcie-altera-msi.o
>> -obj-$(CONFIG_PCIE_QCOM) += pcie-qcom.o
>> -obj-$(CONFIG_PCIE_ARMADA_8K) += pcie-armada8k.o
>> -obj-$(CONFIG_PCIE_ARTPEC6) += pcie-artpec6.o
>>  obj-$(CONFIG_PCIE_ROCKCHIP) += pcie-rockchip.o
>>  obj-$(CONFIG_VMD) += vmd.o
>>  
>> @@ -40,7 +29,6 @@ obj-$(CONFIG_VMD) += vmd.o
>>  # ARM64 and use internal ifdefs to only build the pieces we need
>>  # depending on whether ACPI, the DT driver, or both are enabled.
>>  
>> -obj-$(CONFIG_ARM64) += pcie-hisi.o
>>  obj-$(CONFIG_ARM64) += pci-thunder-ecam.o
>>  obj-$(CONFIG_ARM64) += pci-thunder-pem.o
>>  obj-$(CONFIG_ARM64) += pci-xgene.o
>> -- 
>> 1.7.9.5
>>

Patch
diff mbox

diff --git a/MAINTAINERS b/MAINTAINERS
index cfff2c9..8672f18 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -9429,7 +9429,7 @@  L:	linux-pci@vger.kernel.org
 L:	linux-arm-kernel@lists.infradead.org
 S:	Maintained
 F:	Documentation/devicetree/bindings/pci/pci-armada8k.txt
-F:	drivers/pci/host/pcie-armada8k.c
+F:	drivers/pci/dwc/pcie-armada8k.c
 
 PCI DRIVER FOR APPLIEDMICRO XGENE
 M:	Tanmay Inamdar <tinamdar@apm.com>
@@ -9447,7 +9447,7 @@  L:	linuxppc-dev@lists.ozlabs.org
 L:	linux-pci@vger.kernel.org
 L:	linux-arm-kernel@lists.infradead.org
 S:	Maintained
-F:	drivers/pci/host/*layerscape*
+F:	drivers/pci/dwc/*layerscape*
 
 PCI DRIVER FOR IMX6
 M:	Richard Zhu <hongxing.zhu@nxp.com>
@@ -9456,14 +9456,14 @@  L:	linux-pci@vger.kernel.org
 L:	linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 S:	Maintained
 F:	Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.txt
-F:	drivers/pci/host/*imx6*
+F:	drivers/pci/dwc/*imx6*
 
 PCI DRIVER FOR TI KEYSTONE
 M:	Murali Karicheri <m-karicheri2@ti.com>
 L:	linux-pci@vger.kernel.org
 L:	linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 S:	Maintained
-F:	drivers/pci/host/*keystone*
+F:	drivers/pci/dwc/*keystone*
 
 PCI DRIVER FOR MVEBU (Marvell Armada 370 and Armada XP SOC support)
 M:	Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
@@ -9495,7 +9495,7 @@  L:	linux-omap@vger.kernel.org
 L:	linux-pci@vger.kernel.org
 S:	Supported
 F:	Documentation/devicetree/bindings/pci/ti-pci.txt
-F:	drivers/pci/host/pci-dra7xx.c
+F:	drivers/pci/dwc/pci-dra7xx.c
 
 PCI DRIVER FOR RENESAS R-CAR
 M:	Simon Horman <horms@verge.net.au>
@@ -9510,7 +9510,7 @@  L:	linux-pci@vger.kernel.org
 L:	linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 L:	linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
 S:	Maintained
-F:	drivers/pci/host/pci-exynos.c
+F:	drivers/pci/dwc/pci-exynos.c
 
 PCI DRIVER FOR SYNOPSIS DESIGNWARE
 M:	Jingoo Han <jingoohan1@gmail.com>
@@ -9518,7 +9518,7 @@  M:	Joao Pinto <Joao.Pinto@synopsys.com>
 L:	linux-pci@vger.kernel.org
 S:	Maintained
 F:	Documentation/devicetree/bindings/pci/designware-pcie.txt
-F:	drivers/pci/host/*designware*
+F:	drivers/pci/dwc/*designware*
 
 PCI DRIVER FOR GENERIC OF HOSTS
 M:	Will Deacon <will.deacon@arm.com>
@@ -9539,7 +9539,7 @@  PCIE DRIVER FOR ST SPEAR13XX
 M:	Pratyush Anand <pratyush.anand@gmail.com>
 L:	linux-pci@vger.kernel.org
 S:	Maintained
-F:	drivers/pci/host/*spear*
+F:	drivers/pci/dwc/*spear*
 
 PCI MSI DRIVER FOR ALTERA MSI IP
 M:	Ley Foon Tan <lftan@altera.com>
@@ -9564,7 +9564,7 @@  L:	linux-arm-kernel@axis.com
 L:	linux-pci@vger.kernel.org
 S:	Maintained
 F:	Documentation/devicetree/bindings/pci/axis,artpec*
-F:	drivers/pci/host/*artpec*
+F:	drivers/pci/dwc/*artpec*
 
 PCIE DRIVER FOR HISILICON
 M:	Zhou Wang <wangzhou1@hisilicon.com>
@@ -9572,7 +9572,7 @@  M:	Gabriele Paoloni <gabriele.paoloni@huawei.com>
 L:	linux-pci@vger.kernel.org
 S:	Maintained
 F:	Documentation/devicetree/bindings/pci/hisilicon-pcie.txt
-F:	drivers/pci/host/pcie-hisi.c
+F:	drivers/pci/dwc/pcie-hisi.c
 
 PCIE DRIVER FOR ROCKCHIP
 M:	Shawn Lin <shawn.lin@rock-chips.com>
@@ -9588,7 +9588,7 @@  M:     Stanimir Varbanov <svarbanov@mm-sol.com>
 L:     linux-pci@vger.kernel.org
 L:     linux-arm-msm@vger.kernel.org
 S:     Maintained
-F:     drivers/pci/host/*qcom*
+F:     drivers/pci/dwc/*qcom*
 
 PCIE DRIVER FOR CAVIUM THUNDERX
 M:	David Daney <david.daney@cavium.com>
diff --git a/drivers/pci/Kconfig b/drivers/pci/Kconfig
index 6555eb7..df14142 100644
--- a/drivers/pci/Kconfig
+++ b/drivers/pci/Kconfig
@@ -132,4 +132,5 @@  config PCI_HYPERV
           PCI devices from a PCI backend to support PCI driver domains.
 
 source "drivers/pci/hotplug/Kconfig"
+source "drivers/pci/dwc/Kconfig"
 source "drivers/pci/host/Kconfig"
diff --git a/drivers/pci/Makefile b/drivers/pci/Makefile
index 8db5079..b7e9751 100644
--- a/drivers/pci/Makefile
+++ b/drivers/pci/Makefile
@@ -66,5 +66,8 @@  obj-$(CONFIG_OF) += of.o
 
 ccflags-$(CONFIG_PCI_DEBUG) := -DDEBUG
 
+# PCI dwc controller drivers
+obj-y += dwc/
+
 # PCI host controller drivers
 obj-y += host/
diff --git a/drivers/pci/dwc/Kconfig b/drivers/pci/dwc/Kconfig
new file mode 100644
index 0000000..deae261
--- /dev/null
+++ b/drivers/pci/dwc/Kconfig
@@ -0,0 +1,117 @@ 
+menu "DesignWare PCI Core Support"
+	depends on PCI
+
+config PCIE_DW
+	bool
+	depends on PCI_MSI_IRQ_DOMAIN
+
+config PCI_DRA7XX
+	bool "TI DRA7xx PCIe controller"
+	depends on OF && HAS_IOMEM && TI_PIPE3
+	depends on PCI_MSI_IRQ_DOMAIN
+	select PCIE_DW
+	help
+	 Enables support for the PCIe controller in the DRA7xx SoC.  There
+	 are two instances of PCIe controller in DRA7xx.  This controller can
+	 act both as EP and RC.  This reuses the Designware core.
+
+config PCIE_DW_PLAT
+	bool "Platform bus based DesignWare PCIe Controller"
+	depends on PCI_MSI_IRQ_DOMAIN
+	select PCIE_DW
+	---help---
+	 This selects the DesignWare PCIe controller support. Select this if
+	 you have a PCIe controller on Platform bus.
+
+	 If you have a controller with this interface, say Y or M here.
+
+	 If unsure, say N.
+
+config PCI_EXYNOS
+	bool "Samsung Exynos PCIe controller"
+	depends on SOC_EXYNOS5440
+	depends on PCI_MSI_IRQ_DOMAIN
+	select PCIEPORTBUS
+	select PCIE_DW
+
+config PCI_IMX6
+	bool "Freescale i.MX6 PCIe controller"
+	depends on SOC_IMX6Q
+	depends on PCI_MSI_IRQ_DOMAIN
+	select PCIEPORTBUS
+	select PCIE_DW
+
+config PCIE_SPEAR13XX
+	bool "STMicroelectronics SPEAr PCIe controller"
+	depends on ARCH_SPEAR13XX
+	depends on PCI_MSI_IRQ_DOMAIN
+	select PCIEPORTBUS
+	select PCIE_DW
+	help
+	  Say Y here if you want PCIe support on SPEAr13XX SoCs.
+
+config PCI_KEYSTONE
+	bool "TI Keystone PCIe controller"
+	depends on ARCH_KEYSTONE
+	depends on PCI_MSI_IRQ_DOMAIN
+	select PCIEPORTBUS
+	select PCIE_DW
+	help
+	  Say Y here if you want to enable PCI controller support on Keystone
+	  SoCs. The PCI controller on Keystone is based on Designware hardware
+	  and therefore the driver re-uses the Designware core functions to
+	  implement the driver.
+
+config PCI_LAYERSCAPE
+	bool "Freescale Layerscape PCIe controller"
+	depends on OF && (ARM || ARCH_LAYERSCAPE)
+	depends on PCI_MSI_IRQ_DOMAIN
+	select MFD_SYSCON
+	select PCIE_DW
+	help
+	  Say Y here if you want PCIe controller support on Layerscape SoCs.
+
+config PCI_HISI
+	depends on OF && ARM64
+	bool "HiSilicon Hip05 and Hip06 SoCs PCIe controllers"
+	depends on PCI_MSI_IRQ_DOMAIN
+	select PCIEPORTBUS
+	select PCIE_DW
+	help
+	  Say Y here if you want PCIe controller support on HiSilicon
+	  Hip05 and Hip06 SoCs
+
+config PCIE_QCOM
+	bool "Qualcomm PCIe controller"
+	depends on ARCH_QCOM && OF
+	depends on PCI_MSI_IRQ_DOMAIN
+	select PCIEPORTBUS
+	select PCIE_DW
+	help
+	  Say Y here to enable PCIe controller support on Qualcomm SoCs. The
+	  PCIe controller uses the Designware core plus Qualcomm-specific
+	  hardware wrappers.
+
+config PCIE_ARMADA_8K
+	bool "Marvell Armada-8K PCIe controller"
+	depends on ARCH_MVEBU
+	depends on PCI_MSI_IRQ_DOMAIN
+	select PCIEPORTBUS
+	select PCIE_DW
+	help
+	  Say Y here if you want to enable PCIe controller support on
+	  Armada-8K SoCs. The PCIe controller on Armada-8K is based on
+	  Designware hardware and therefore the driver re-uses the
+	  Designware core functions to implement the driver.
+
+config PCIE_ARTPEC6
+	bool "Axis ARTPEC-6 PCIe controller"
+	depends on MACH_ARTPEC6
+	depends on PCI_MSI_IRQ_DOMAIN
+	select PCIEPORTBUS
+	select PCIE_DW
+	help
+	  Say Y here to enable PCIe controller support on Axis ARTPEC-6
+	  SoCs.  This PCIe controller uses the DesignWare core.
+
+endmenu
diff --git a/drivers/pci/dwc/Makefile b/drivers/pci/dwc/Makefile
new file mode 100644
index 0000000..7d27c14
--- /dev/null
+++ b/drivers/pci/dwc/Makefile
@@ -0,0 +1,23 @@ 
+obj-$(CONFIG_PCIE_DW) += pcie-designware.o
+obj-$(CONFIG_PCIE_DW_PLAT) += pcie-designware-plat.o
+obj-$(CONFIG_PCI_DRA7XX) += pci-dra7xx.o
+obj-$(CONFIG_PCI_EXYNOS) += pci-exynos.o
+obj-$(CONFIG_PCI_IMX6) += pci-imx6.o
+obj-$(CONFIG_PCIE_SPEAR13XX) += pcie-spear13xx.o
+obj-$(CONFIG_PCI_KEYSTONE) += pci-keystone-dw.o pci-keystone.o
+obj-$(CONFIG_PCI_LAYERSCAPE) += pci-layerscape.o
+obj-$(CONFIG_PCIE_QCOM) += pcie-qcom.o
+obj-$(CONFIG_PCIE_ARMADA_8K) += pcie-armada8k.o
+obj-$(CONFIG_PCIE_ARTPEC6) += pcie-artpec6.o
+
+# The following drivers are for devices that use the generic ACPI
+# pci_root.c driver but don't support standard ECAM config access.
+# They contain MCFG quirks to replace the generic ECAM accessors with
+# device-specific ones that are shared with the DT driver.
+
+# The ACPI driver is generic and should not require driver-specific
+# config options to be enabled, so we always build these drivers on
+# ARM64 and use internal ifdefs to only build the pieces we need
+# depending on whether ACPI, the DT driver, or both are enabled.
+
+obj-$(CONFIG_ARM64) += pcie-hisi.o
diff --git a/drivers/pci/host/pci-dra7xx.c b/drivers/pci/dwc/pci-dra7xx.c
similarity index 100%
rename from drivers/pci/host/pci-dra7xx.c
rename to drivers/pci/dwc/pci-dra7xx.c
diff --git a/drivers/pci/host/pci-exynos.c b/drivers/pci/dwc/pci-exynos.c
similarity index 100%
rename from drivers/pci/host/pci-exynos.c
rename to drivers/pci/dwc/pci-exynos.c
diff --git a/drivers/pci/host/pci-imx6.c b/drivers/pci/dwc/pci-imx6.c
similarity index 100%
rename from drivers/pci/host/pci-imx6.c
rename to drivers/pci/dwc/pci-imx6.c
diff --git a/drivers/pci/host/pci-keystone-dw.c b/drivers/pci/dwc/pci-keystone-dw.c
similarity index 100%
rename from drivers/pci/host/pci-keystone-dw.c
rename to drivers/pci/dwc/pci-keystone-dw.c
diff --git a/drivers/pci/host/pci-keystone.c b/drivers/pci/dwc/pci-keystone.c
similarity index 100%
rename from drivers/pci/host/pci-keystone.c
rename to drivers/pci/dwc/pci-keystone.c
diff --git a/drivers/pci/host/pci-keystone.h b/drivers/pci/dwc/pci-keystone.h
similarity index 100%
rename from drivers/pci/host/pci-keystone.h
rename to drivers/pci/dwc/pci-keystone.h
diff --git a/drivers/pci/host/pci-layerscape.c b/drivers/pci/dwc/pci-layerscape.c
similarity index 100%
rename from drivers/pci/host/pci-layerscape.c
rename to drivers/pci/dwc/pci-layerscape.c
diff --git a/drivers/pci/host/pcie-armada8k.c b/drivers/pci/dwc/pcie-armada8k.c
similarity index 100%
rename from drivers/pci/host/pcie-armada8k.c
rename to drivers/pci/dwc/pcie-armada8k.c
diff --git a/drivers/pci/host/pcie-artpec6.c b/drivers/pci/dwc/pcie-artpec6.c
similarity index 100%
rename from drivers/pci/host/pcie-artpec6.c
rename to drivers/pci/dwc/pcie-artpec6.c
diff --git a/drivers/pci/host/pcie-designware-plat.c b/drivers/pci/dwc/pcie-designware-plat.c
similarity index 100%
rename from drivers/pci/host/pcie-designware-plat.c
rename to drivers/pci/dwc/pcie-designware-plat.c
diff --git a/drivers/pci/host/pcie-designware.c b/drivers/pci/dwc/pcie-designware.c
similarity index 100%
rename from drivers/pci/host/pcie-designware.c
rename to drivers/pci/dwc/pcie-designware.c
diff --git a/drivers/pci/host/pcie-designware.h b/drivers/pci/dwc/pcie-designware.h
similarity index 100%
rename from drivers/pci/host/pcie-designware.h
rename to drivers/pci/dwc/pcie-designware.h
diff --git a/drivers/pci/host/pcie-hisi.c b/drivers/pci/dwc/pcie-hisi.c
similarity index 100%
rename from drivers/pci/host/pcie-hisi.c
rename to drivers/pci/dwc/pcie-hisi.c
diff --git a/drivers/pci/host/pcie-qcom.c b/drivers/pci/dwc/pcie-qcom.c
similarity index 100%
rename from drivers/pci/host/pcie-qcom.c
rename to drivers/pci/dwc/pcie-qcom.c
diff --git a/drivers/pci/host/pcie-spear13xx.c b/drivers/pci/dwc/pcie-spear13xx.c
similarity index 100%
rename from drivers/pci/host/pcie-spear13xx.c
rename to drivers/pci/dwc/pcie-spear13xx.c
diff --git a/drivers/pci/host/Kconfig b/drivers/pci/host/Kconfig
index 898d2c4..f7c1d4d 100644
--- a/drivers/pci/host/Kconfig
+++ b/drivers/pci/host/Kconfig
@@ -1,16 +1,6 @@ 
 menu "PCI host controller drivers"
 	depends on PCI
 
-config PCI_DRA7XX
-	bool "TI DRA7xx PCIe controller"
-	depends on OF && HAS_IOMEM && TI_PIPE3
-	depends on PCI_MSI_IRQ_DOMAIN
-	select PCIE_DW
-	help
-	 Enables support for the PCIe controller in the DRA7xx SoC.  There
-	 are two instances of PCIe controller in DRA7xx.  This controller can
-	 act both as EP and RC.  This reuses the Designware core.
-
 config PCI_MVEBU
 	bool "Marvell EBU PCIe controller"
 	depends on ARCH_MVEBU || ARCH_DOVE
@@ -37,36 +27,6 @@  config PCIE_XILINX_NWL
 	 or End Point. The current option selection will only
 	 support root port enabling.
 
-config PCIE_DW_PLAT
-	bool "Platform bus based DesignWare PCIe Controller"
-	depends on PCI_MSI_IRQ_DOMAIN
-	select PCIE_DW
-	---help---
-	 This selects the DesignWare PCIe controller support. Select this if
-	 you have a PCIe controller on Platform bus.
-
-	 If you have a controller with this interface, say Y or M here.
-
-	 If unsure, say N.
-
-config PCIE_DW
-	bool
-	depends on PCI_MSI_IRQ_DOMAIN
-
-config PCI_EXYNOS
-	bool "Samsung Exynos PCIe controller"
-	depends on SOC_EXYNOS5440
-	depends on PCI_MSI_IRQ_DOMAIN
-	select PCIEPORTBUS
-	select PCIE_DW
-
-config PCI_IMX6
-	bool "Freescale i.MX6 PCIe controller"
-	depends on SOC_IMX6Q
-	depends on PCI_MSI_IRQ_DOMAIN
-	select PCIEPORTBUS
-	select PCIE_DW
-
 config PCI_TEGRA
 	bool "NVIDIA Tegra PCIe controller"
 	depends on ARCH_TEGRA
@@ -103,27 +63,6 @@  config PCI_HOST_GENERIC
 	  Say Y here if you want to support a simple generic PCI host
 	  controller, such as the one emulated by kvmtool.
 
-config PCIE_SPEAR13XX
-	bool "STMicroelectronics SPEAr PCIe controller"
-	depends on ARCH_SPEAR13XX
-	depends on PCI_MSI_IRQ_DOMAIN
-	select PCIEPORTBUS
-	select PCIE_DW
-	help
-	  Say Y here if you want PCIe support on SPEAr13XX SoCs.
-
-config PCI_KEYSTONE
-	bool "TI Keystone PCIe controller"
-	depends on ARCH_KEYSTONE
-	depends on PCI_MSI_IRQ_DOMAIN
-	select PCIE_DW
-	select PCIEPORTBUS
-	help
-	  Say Y here if you want to enable PCI controller support on Keystone
-	  SoCs. The PCI controller on Keystone is based on Designware hardware
-	  and therefore the driver re-uses the Designware core functions to
-	  implement the driver.
-
 config PCIE_XILINX
 	bool "Xilinx AXI PCIe host bridge support"
 	depends on ARCH_ZYNQ || MICROBLAZE
@@ -150,15 +89,6 @@  config PCI_XGENE_MSI
 	  Say Y here if you want PCIe MSI support for the APM X-Gene v1 SoC.
 	  This MSI driver supports 5 PCIe ports on the APM X-Gene v1 SoC.
 
-config PCI_LAYERSCAPE
-	bool "Freescale Layerscape PCIe controller"
-	depends on OF && (ARM || ARCH_LAYERSCAPE)
-	depends on PCI_MSI_IRQ_DOMAIN
-	select PCIE_DW
-	select MFD_SYSCON
-	help
-	  Say Y here if you want PCIe controller support on Layerscape SoCs.
-
 config PCI_VERSATILE
 	bool "ARM Versatile PB PCI controller"
 	depends on ARCH_VERSATILE
@@ -217,27 +147,6 @@  config PCIE_ALTERA_MSI
 	  Say Y here if you want PCIe MSI support for the Altera FPGA.
 	  This MSI driver supports Altera MSI to GIC controller IP.
 
-config PCI_HISI
-	depends on OF && ARM64
-	bool "HiSilicon Hip05 and Hip06 SoCs PCIe controllers"
-	depends on PCI_MSI_IRQ_DOMAIN
-	select PCIEPORTBUS
-	select PCIE_DW
-	help
-	  Say Y here if you want PCIe controller support on HiSilicon
-	  Hip05 and Hip06 SoCs
-
-config PCIE_QCOM
-	bool "Qualcomm PCIe controller"
-	depends on ARCH_QCOM && OF
-	depends on PCI_MSI_IRQ_DOMAIN
-	select PCIE_DW
-	select PCIEPORTBUS
-	help
-	  Say Y here to enable PCIe controller support on Qualcomm SoCs. The
-	  PCIe controller uses the Designware core plus Qualcomm-specific
-	  hardware wrappers.
-
 config PCI_HOST_THUNDER_PEM
 	bool "Cavium Thunder PCIe controller to off-chip devices"
 	depends on ARM64
@@ -254,28 +163,6 @@  config PCI_HOST_THUNDER_ECAM
 	help
 	  Say Y here if you want ECAM support for CN88XX-Pass-1.x Cavium Thunder SoCs.
 
-config PCIE_ARMADA_8K
-	bool "Marvell Armada-8K PCIe controller"
-	depends on ARCH_MVEBU
-	depends on PCI_MSI_IRQ_DOMAIN
-	select PCIE_DW
-	select PCIEPORTBUS
-	help
-	  Say Y here if you want to enable PCIe controller support on
-	  Armada-8K SoCs. The PCIe controller on Armada-8K is based on
-	  Designware hardware and therefore the driver re-uses the
-	  Designware core functions to implement the driver.
-
-config PCIE_ARTPEC6
-	bool "Axis ARTPEC-6 PCIe controller"
-	depends on MACH_ARTPEC6
-	depends on PCI_MSI_IRQ_DOMAIN
-	select PCIE_DW
-	select PCIEPORTBUS
-	help
-	  Say Y here to enable PCIe controller support on Axis ARTPEC-6
-	  SoCs.  This PCIe controller uses the DesignWare core.
-
 config PCIE_ROCKCHIP
 	bool "Rockchip PCIe controller"
 	depends on ARCH_ROCKCHIP || COMPILE_TEST
diff --git a/drivers/pci/host/Makefile b/drivers/pci/host/Makefile
index bfe3179..4d36866 100644
--- a/drivers/pci/host/Makefile
+++ b/drivers/pci/host/Makefile
@@ -1,8 +1,3 @@ 
-obj-$(CONFIG_PCIE_DW) += pcie-designware.o
-obj-$(CONFIG_PCIE_DW_PLAT) += pcie-designware-plat.o
-obj-$(CONFIG_PCI_DRA7XX) += pci-dra7xx.o
-obj-$(CONFIG_PCI_EXYNOS) += pci-exynos.o
-obj-$(CONFIG_PCI_IMX6) += pci-imx6.o
 obj-$(CONFIG_PCI_HYPERV) += pci-hyperv.o
 obj-$(CONFIG_PCI_MVEBU) += pci-mvebu.o
 obj-$(CONFIG_PCI_AARDVARK) += pci-aardvark.o
@@ -11,12 +6,9 @@  obj-$(CONFIG_PCI_RCAR_GEN2) += pci-rcar-gen2.o
 obj-$(CONFIG_PCIE_RCAR) += pcie-rcar.o
 obj-$(CONFIG_PCI_HOST_COMMON) += pci-host-common.o
 obj-$(CONFIG_PCI_HOST_GENERIC) += pci-host-generic.o
-obj-$(CONFIG_PCIE_SPEAR13XX) += pcie-spear13xx.o
-obj-$(CONFIG_PCI_KEYSTONE) += pci-keystone-dw.o pci-keystone.o
 obj-$(CONFIG_PCIE_XILINX) += pcie-xilinx.o
 obj-$(CONFIG_PCIE_XILINX_NWL) += pcie-xilinx-nwl.o
 obj-$(CONFIG_PCI_XGENE_MSI) += pci-xgene-msi.o
-obj-$(CONFIG_PCI_LAYERSCAPE) += pci-layerscape.o
 obj-$(CONFIG_PCI_VERSATILE) += pci-versatile.o
 obj-$(CONFIG_PCIE_IPROC) += pcie-iproc.o
 obj-$(CONFIG_PCIE_IPROC_MSI) += pcie-iproc-msi.o
@@ -24,9 +16,6 @@  obj-$(CONFIG_PCIE_IPROC_PLATFORM) += pcie-iproc-platform.o
 obj-$(CONFIG_PCIE_IPROC_BCMA) += pcie-iproc-bcma.o
 obj-$(CONFIG_PCIE_ALTERA) += pcie-altera.o
 obj-$(CONFIG_PCIE_ALTERA_MSI) += pcie-altera-msi.o
-obj-$(CONFIG_PCIE_QCOM) += pcie-qcom.o
-obj-$(CONFIG_PCIE_ARMADA_8K) += pcie-armada8k.o
-obj-$(CONFIG_PCIE_ARTPEC6) += pcie-artpec6.o
 obj-$(CONFIG_PCIE_ROCKCHIP) += pcie-rockchip.o
 obj-$(CONFIG_VMD) += vmd.o
 
@@ -40,7 +29,6 @@  obj-$(CONFIG_VMD) += vmd.o
 # ARM64 and use internal ifdefs to only build the pieces we need
 # depending on whether ACPI, the DT driver, or both are enabled.
 
-obj-$(CONFIG_ARM64) += pcie-hisi.o
 obj-$(CONFIG_ARM64) += pci-thunder-ecam.o
 obj-$(CONFIG_ARM64) += pci-thunder-pem.o
 obj-$(CONFIG_ARM64) += pci-xgene.o