* [PATCH v2 0/4] Add Broadcom North Star 2 support @ 2015-07-15 4:42 Ray Jui 2015-07-15 4:42 ` [PATCH v2 1/4] PCI: iproc: enable arm64 support for iProc PCIe Ray Jui ` (3 more replies) 0 siblings, 4 replies; 12+ messages in thread From: Ray Jui @ 2015-07-15 4:42 UTC (permalink / raw) To: Catalin Marinas, Will Deacon, Arnd Bergmann, Mark Rutland, Bjorn Helgaas, Hauke Mehrtens Cc: linux-kernel, bcm-kernel-feedback-list, linux-arm-kernel, linux-pci, Ray Jui This patch series adds Broadcom North Star 2 (NS2) SoC support. NS2 is an ARMv8 based SoC and under the Broadcom iProc family. Sorry for tying this with the Broadcom iProc PCIe driver fixes for ARM64. I have to tie them together because iProc PCIe support is enabled by default when ARCH_BCM_IPROC is enabled. Without the fixes in the iProc PCIe driver, enabling CONFIG_ARCH_BCM_IPROC would break the build for arm64 defconfig. Let me know if there's a better way to handle this. This patch series is generated based on v4.2-rc2 and tested on Broadcom NS2 SVK Code available on GITHUB: https://github.com/Broadcom/arm64-linux.git branch is ns2-core-v2 Changes from V1: - Took Arnd's advice to tweak the location of struct pci_sys_data within struct iproc_pcie. This helps to get rid of most of the CONFIG_ARM wrap in iProc PCIe core driver - Use stdout-path and alias for serial console in NS2 SVK dts - Add all 4 CPU descriptions in NS2 dtsi - Remove "clock-frequency" property in the armv8 timer node so timer frequency can be determined based on readings from CNTFRQ_EL0 - Remove config flag ARCH_BCM_NS2. Leave only ARCH_BCM_IPROC for all Broadcom arm64 SoCs as advised Ray Jui (4): PCI: iproc: enable arm64 support for iProc PCIe PCI: iproc: Fix ARM64 dependency in Kconfig arm64: Add Broadcom iProc family support arm64: dts: Add Broadcom North Star 2 support Documentation/devicetree/bindings/arm/bcm/ns2.txt | 9 ++ arch/arm64/Kconfig | 5 + arch/arm64/boot/dts/Makefile | 1 + arch/arm64/boot/dts/broadcom/Makefile | 5 + arch/arm64/boot/dts/broadcom/ns2-svk.dts | 60 +++++++++++ arch/arm64/boot/dts/broadcom/ns2.dtsi | 118 +++++++++++++++++++++ arch/arm64/configs/defconfig | 2 + drivers/pci/host/Kconfig | 2 +- drivers/pci/host/pcie-iproc.c | 15 +-- drivers/pci/host/pcie-iproc.h | 8 +- 10 files changed, 211 insertions(+), 14 deletions(-) create mode 100644 Documentation/devicetree/bindings/arm/bcm/ns2.txt create mode 100644 arch/arm64/boot/dts/broadcom/Makefile create mode 100644 arch/arm64/boot/dts/broadcom/ns2-svk.dts create mode 100644 arch/arm64/boot/dts/broadcom/ns2.dtsi -- 1.7.9.5 ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH v2 1/4] PCI: iproc: enable arm64 support for iProc PCIe 2015-07-15 4:42 [PATCH v2 0/4] Add Broadcom North Star 2 support Ray Jui @ 2015-07-15 4:42 ` Ray Jui 2015-07-15 21:52 ` Hauke Mehrtens 2015-07-15 4:42 ` [PATCH v2 2/4] PCI: iproc: Fix ARM64 dependency in Kconfig Ray Jui ` (2 subsequent siblings) 3 siblings, 1 reply; 12+ messages in thread From: Ray Jui @ 2015-07-15 4:42 UTC (permalink / raw) To: Catalin Marinas, Will Deacon, Arnd Bergmann, Mark Rutland, Bjorn Helgaas, Hauke Mehrtens Cc: linux-kernel, bcm-kernel-feedback-list, linux-arm-kernel, linux-pci, Ray Jui This patch enables arm64 support to the iProc PCIe driver Signed-off-by: Ray Jui <rjui@broadcom.com> Reviewed-by: Scott Branden <sbranden@broadcom.com> --- drivers/pci/host/pcie-iproc.c | 15 ++++----------- drivers/pci/host/pcie-iproc.h | 8 ++++++-- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/drivers/pci/host/pcie-iproc.c b/drivers/pci/host/pcie-iproc.c index d77481e..8a556d5 100644 --- a/drivers/pci/host/pcie-iproc.c +++ b/drivers/pci/host/pcie-iproc.c @@ -58,11 +58,6 @@ #define SYS_RC_INTX_EN 0x330 #define SYS_RC_INTX_MASK 0xf -static inline struct iproc_pcie *sys_to_pcie(struct pci_sys_data *sys) -{ - return sys->private_data; -} - /** * Note access to the configuration registers are protected at the higher layer * by 'pci_lock' in drivers/pci/access.c @@ -71,8 +66,7 @@ static void __iomem *iproc_pcie_map_cfg_bus(struct pci_bus *bus, unsigned int devfn, int where) { - struct pci_sys_data *sys = bus->sysdata; - struct iproc_pcie *pcie = sys_to_pcie(sys); + struct iproc_pcie *pcie = bus->sysdata; unsigned slot = PCI_SLOT(devfn); unsigned fn = PCI_FUNC(devfn); unsigned busno = bus->number; @@ -208,10 +202,7 @@ int iproc_pcie_setup(struct iproc_pcie *pcie, struct list_head *res) iproc_pcie_reset(pcie); - pcie->sysdata.private_data = pcie; - - bus = pci_create_root_bus(pcie->dev, 0, &iproc_pcie_ops, - &pcie->sysdata, res); + bus = pci_create_root_bus(pcie->dev, 0, &iproc_pcie_ops, pcie, res); if (!bus) { dev_err(pcie->dev, "unable to create PCI root bus\n"); ret = -ENOMEM; @@ -229,7 +220,9 @@ int iproc_pcie_setup(struct iproc_pcie *pcie, struct list_head *res) pci_scan_child_bus(bus); pci_assign_unassigned_bus_resources(bus); +#ifdef CONFIG_ARM pci_fixup_irqs(pci_common_swizzle, pcie->map_irq); +#endif pci_bus_add_devices(bus); return 0; diff --git a/drivers/pci/host/pcie-iproc.h b/drivers/pci/host/pcie-iproc.h index ba0a108..0ee9673 100644 --- a/drivers/pci/host/pcie-iproc.h +++ b/drivers/pci/host/pcie-iproc.h @@ -18,18 +18,22 @@ /** * iProc PCIe device + * @sysdata: Per PCI controller data. This needs to be kept at the beginning of + * struct iproc_pcie, to enable support of both ARM32 and ARM64 platforms with + * minimal changes in the iProc PCIe core driver * @dev: pointer to device data structure * @base: PCIe host controller I/O register base * @resources: linked list of all PCI resources - * @sysdata: Per PCI controller data * @root_bus: pointer to root bus * @phy: optional PHY device that controls the Serdes * @irqs: interrupt IDs */ struct iproc_pcie { +#ifdef CONFIG_ARM + struct pci_sys_data sysdata; +#endif struct device *dev; void __iomem *base; - struct pci_sys_data sysdata; struct pci_bus *root_bus; struct phy *phy; int irqs[IPROC_PCIE_MAX_NUM_IRQS]; -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH v2 1/4] PCI: iproc: enable arm64 support for iProc PCIe 2015-07-15 4:42 ` [PATCH v2 1/4] PCI: iproc: enable arm64 support for iProc PCIe Ray Jui @ 2015-07-15 21:52 ` Hauke Mehrtens 2015-07-15 21:57 ` Ray Jui 0 siblings, 1 reply; 12+ messages in thread From: Hauke Mehrtens @ 2015-07-15 21:52 UTC (permalink / raw) To: Ray Jui, Catalin Marinas, Will Deacon, Arnd Bergmann, Mark Rutland, Bjorn Helgaas Cc: linux-kernel, bcm-kernel-feedback-list, linux-arm-kernel, linux-pci On 07/15/2015 06:42 AM, Ray Jui wrote: > This patch enables arm64 support to the iProc PCIe driver > > Signed-off-by: Ray Jui <rjui@broadcom.com> > Reviewed-by: Scott Branden <sbranden@broadcom.com> > --- > drivers/pci/host/pcie-iproc.c | 15 ++++----------- > drivers/pci/host/pcie-iproc.h | 8 ++++++-- > 2 files changed, 10 insertions(+), 13 deletions(-) > > diff --git a/drivers/pci/host/pcie-iproc.c b/drivers/pci/host/pcie-iproc.c > index d77481e..8a556d5 100644 > --- a/drivers/pci/host/pcie-iproc.c > +++ b/drivers/pci/host/pcie-iproc.c > @@ -58,11 +58,6 @@ > #define SYS_RC_INTX_EN 0x330 > #define SYS_RC_INTX_MASK 0xf > > -static inline struct iproc_pcie *sys_to_pcie(struct pci_sys_data *sys) > -{ > - return sys->private_data; > -} > - > /** > * Note access to the configuration registers are protected at the higher layer > * by 'pci_lock' in drivers/pci/access.c > @@ -71,8 +66,7 @@ static void __iomem *iproc_pcie_map_cfg_bus(struct pci_bus *bus, > unsigned int devfn, > int where) > { > - struct pci_sys_data *sys = bus->sysdata; > - struct iproc_pcie *pcie = sys_to_pcie(sys); > + struct iproc_pcie *pcie = bus->sysdata; > unsigned slot = PCI_SLOT(devfn); > unsigned fn = PCI_FUNC(devfn); > unsigned busno = bus->number; > @@ -208,10 +202,7 @@ int iproc_pcie_setup(struct iproc_pcie *pcie, struct list_head *res) > > iproc_pcie_reset(pcie); > > - pcie->sysdata.private_data = pcie; > - > - bus = pci_create_root_bus(pcie->dev, 0, &iproc_pcie_ops, > - &pcie->sysdata, res); > + bus = pci_create_root_bus(pcie->dev, 0, &iproc_pcie_ops, pcie, res); > if (!bus) { > dev_err(pcie->dev, "unable to create PCI root bus\n"); > ret = -ENOMEM; > @@ -229,7 +220,9 @@ int iproc_pcie_setup(struct iproc_pcie *pcie, struct list_head *res) > > pci_scan_child_bus(bus); > pci_assign_unassigned_bus_resources(bus); > +#ifdef CONFIG_ARM > pci_fixup_irqs(pci_common_swizzle, pcie->map_irq); > +#endif > pci_bus_add_devices(bus); > > return 0; > diff --git a/drivers/pci/host/pcie-iproc.h b/drivers/pci/host/pcie-iproc.h > index ba0a108..0ee9673 100644 > --- a/drivers/pci/host/pcie-iproc.h > +++ b/drivers/pci/host/pcie-iproc.h > @@ -18,18 +18,22 @@ > > /** > * iProc PCIe device > + * @sysdata: Per PCI controller data. This needs to be kept at the beginning of > + * struct iproc_pcie, to enable support of both ARM32 and ARM64 platforms with > + * minimal changes in the iProc PCIe core driver > * @dev: pointer to device data structure > * @base: PCIe host controller I/O register base > * @resources: linked list of all PCI resources > - * @sysdata: Per PCI controller data > * @root_bus: pointer to root bus > * @phy: optional PHY device that controls the Serdes > * @irqs: interrupt IDs > */ > struct iproc_pcie { > +#ifdef CONFIG_ARM > + struct pci_sys_data sysdata; > +#endif This looks for me like a dirty hack. Why is the PCIe controller interface between ARM and ARM64 different? I do not know if this patch is the right place to fix it but I think we should come up with a PCI controller interface which works on all archs, as we see here some drivers are shared between different archs. > struct device *dev; > void __iomem *base; > - struct pci_sys_data sysdata; > struct pci_bus *root_bus; > struct phy *phy; > int irqs[IPROC_PCIE_MAX_NUM_IRQS]; > ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v2 1/4] PCI: iproc: enable arm64 support for iProc PCIe 2015-07-15 21:52 ` Hauke Mehrtens @ 2015-07-15 21:57 ` Ray Jui 0 siblings, 0 replies; 12+ messages in thread From: Ray Jui @ 2015-07-15 21:57 UTC (permalink / raw) To: Hauke Mehrtens, Catalin Marinas, Will Deacon, Arnd Bergmann, Mark Rutland, Bjorn Helgaas Cc: linux-kernel, bcm-kernel-feedback-list, linux-arm-kernel, linux-pci On 7/15/2015 2:52 PM, Hauke Mehrtens wrote: > On 07/15/2015 06:42 AM, Ray Jui wrote: >> This patch enables arm64 support to the iProc PCIe driver >> >> Signed-off-by: Ray Jui <rjui@broadcom.com> >> Reviewed-by: Scott Branden <sbranden@broadcom.com> >> --- >> drivers/pci/host/pcie-iproc.c | 15 ++++----------- >> drivers/pci/host/pcie-iproc.h | 8 ++++++-- >> 2 files changed, 10 insertions(+), 13 deletions(-) >> >> diff --git a/drivers/pci/host/pcie-iproc.c b/drivers/pci/host/pcie-iproc.c >> index d77481e..8a556d5 100644 >> --- a/drivers/pci/host/pcie-iproc.c >> +++ b/drivers/pci/host/pcie-iproc.c >> @@ -58,11 +58,6 @@ >> #define SYS_RC_INTX_EN 0x330 >> #define SYS_RC_INTX_MASK 0xf >> >> -static inline struct iproc_pcie *sys_to_pcie(struct pci_sys_data *sys) >> -{ >> - return sys->private_data; >> -} >> - >> /** >> * Note access to the configuration registers are protected at the higher layer >> * by 'pci_lock' in drivers/pci/access.c >> @@ -71,8 +66,7 @@ static void __iomem *iproc_pcie_map_cfg_bus(struct pci_bus *bus, >> unsigned int devfn, >> int where) >> { >> - struct pci_sys_data *sys = bus->sysdata; >> - struct iproc_pcie *pcie = sys_to_pcie(sys); >> + struct iproc_pcie *pcie = bus->sysdata; >> unsigned slot = PCI_SLOT(devfn); >> unsigned fn = PCI_FUNC(devfn); >> unsigned busno = bus->number; >> @@ -208,10 +202,7 @@ int iproc_pcie_setup(struct iproc_pcie *pcie, struct list_head *res) >> >> iproc_pcie_reset(pcie); >> >> - pcie->sysdata.private_data = pcie; >> - >> - bus = pci_create_root_bus(pcie->dev, 0, &iproc_pcie_ops, >> - &pcie->sysdata, res); >> + bus = pci_create_root_bus(pcie->dev, 0, &iproc_pcie_ops, pcie, res); >> if (!bus) { >> dev_err(pcie->dev, "unable to create PCI root bus\n"); >> ret = -ENOMEM; >> @@ -229,7 +220,9 @@ int iproc_pcie_setup(struct iproc_pcie *pcie, struct list_head *res) >> >> pci_scan_child_bus(bus); >> pci_assign_unassigned_bus_resources(bus); >> +#ifdef CONFIG_ARM >> pci_fixup_irqs(pci_common_swizzle, pcie->map_irq); >> +#endif >> pci_bus_add_devices(bus); >> >> return 0; >> diff --git a/drivers/pci/host/pcie-iproc.h b/drivers/pci/host/pcie-iproc.h >> index ba0a108..0ee9673 100644 >> --- a/drivers/pci/host/pcie-iproc.h >> +++ b/drivers/pci/host/pcie-iproc.h >> @@ -18,18 +18,22 @@ >> >> /** >> * iProc PCIe device >> + * @sysdata: Per PCI controller data. This needs to be kept at the beginning of >> + * struct iproc_pcie, to enable support of both ARM32 and ARM64 platforms with >> + * minimal changes in the iProc PCIe core driver >> * @dev: pointer to device data structure >> * @base: PCIe host controller I/O register base >> * @resources: linked list of all PCI resources >> - * @sysdata: Per PCI controller data >> * @root_bus: pointer to root bus >> * @phy: optional PHY device that controls the Serdes >> * @irqs: interrupt IDs >> */ >> struct iproc_pcie { >> +#ifdef CONFIG_ARM >> + struct pci_sys_data sysdata; >> +#endif > > This looks for me like a dirty hack. Why is the PCIe controller > interface between ARM and ARM64 different? Yes I do not disagree. According to Arnd, there's already work in process of removing the need for pci_sys_data on arm32. Before that is done, we need this in the driver for it to work on both arm32 and arm64. Thanks, Ray ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH v2 2/4] PCI: iproc: Fix ARM64 dependency in Kconfig 2015-07-15 4:42 [PATCH v2 0/4] Add Broadcom North Star 2 support Ray Jui 2015-07-15 4:42 ` [PATCH v2 1/4] PCI: iproc: enable arm64 support for iProc PCIe Ray Jui @ 2015-07-15 4:42 ` Ray Jui 2015-07-15 4:42 ` [PATCH v2 3/4] arm64: Add Broadcom iProc family support Ray Jui 2015-07-15 4:42 ` [PATCH v2 4/4] arm64: dts: Add Broadcom North Star 2 support Ray Jui 3 siblings, 0 replies; 12+ messages in thread From: Ray Jui @ 2015-07-15 4:42 UTC (permalink / raw) To: Catalin Marinas, Will Deacon, Arnd Bergmann, Mark Rutland, Bjorn Helgaas, Hauke Mehrtens Cc: linux-kernel, bcm-kernel-feedback-list, linux-arm-kernel, linux-pci, Ray Jui Allow Broadcom iProc PCIe core driver to be compiled for ARM64 Signed-off-by: Ray Jui <rjui@broadcom.com> Reviewed-by: Vikram Prakash <vikramp@broadcom.com> Reviewed-by: Scott Branden <sbranden@broadcom.com> --- drivers/pci/host/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/pci/host/Kconfig b/drivers/pci/host/Kconfig index c132bdd..d2c6144 100644 --- a/drivers/pci/host/Kconfig +++ b/drivers/pci/host/Kconfig @@ -117,7 +117,7 @@ config PCI_VERSATILE config PCIE_IPROC tristate "Broadcom iProc PCIe controller" - depends on OF && ARM + depends on OF && (ARM || ARM64) default n help This enables the iProc PCIe core controller support for Broadcom's -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v2 3/4] arm64: Add Broadcom iProc family support 2015-07-15 4:42 [PATCH v2 0/4] Add Broadcom North Star 2 support Ray Jui 2015-07-15 4:42 ` [PATCH v2 1/4] PCI: iproc: enable arm64 support for iProc PCIe Ray Jui 2015-07-15 4:42 ` [PATCH v2 2/4] PCI: iproc: Fix ARM64 dependency in Kconfig Ray Jui @ 2015-07-15 4:42 ` Ray Jui 2015-07-15 21:53 ` Hauke Mehrtens 2015-07-15 4:42 ` [PATCH v2 4/4] arm64: dts: Add Broadcom North Star 2 support Ray Jui 3 siblings, 1 reply; 12+ messages in thread From: Ray Jui @ 2015-07-15 4:42 UTC (permalink / raw) To: Catalin Marinas, Will Deacon, Arnd Bergmann, Mark Rutland, Bjorn Helgaas, Hauke Mehrtens Cc: linux-kernel, bcm-kernel-feedback-list, linux-arm-kernel, linux-pci, Ray Jui This patch adds support to Broadcom's iProc family of arm64 based SoCs in the arm64 Kconfig and defconfig files Signed-off-by: Ray Jui <rjui@broadcom.com> Reviewed-by: Scott Branden <sbranden@broadcom.com> --- arch/arm64/Kconfig | 5 +++++ arch/arm64/configs/defconfig | 2 ++ 2 files changed, 7 insertions(+) diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index 318175f..969ef4a 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -162,6 +162,11 @@ source "kernel/Kconfig.freezer" menu "Platform selection" +config ARCH_BCM_IPROC + bool "Broadcom iProc SoC Family" + help + This enables support for Broadcom iProc based SoCs + config ARCH_EXYNOS bool help diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig index 4e17e7e..c83d51f 100644 --- a/arch/arm64/configs/defconfig +++ b/arch/arm64/configs/defconfig @@ -31,6 +31,7 @@ CONFIG_MODULES=y CONFIG_MODULE_UNLOAD=y # CONFIG_BLK_DEV_BSG is not set # CONFIG_IOSCHED_DEADLINE is not set +CONFIG_ARCH_BCM_IPROC=y CONFIG_ARCH_EXYNOS7=y CONFIG_ARCH_FSL_LS2085A=y CONFIG_ARCH_HISI=y @@ -102,6 +103,7 @@ CONFIG_SERIO_AMBAKMI=y CONFIG_LEGACY_PTY_COUNT=16 CONFIG_SERIAL_8250=y CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_DW=y CONFIG_SERIAL_8250_MT6577=y CONFIG_SERIAL_AMBA_PL011=y CONFIG_SERIAL_AMBA_PL011_CONSOLE=y -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH v2 3/4] arm64: Add Broadcom iProc family support 2015-07-15 4:42 ` [PATCH v2 3/4] arm64: Add Broadcom iProc family support Ray Jui @ 2015-07-15 21:53 ` Hauke Mehrtens 2015-07-15 22:03 ` Ray Jui 0 siblings, 1 reply; 12+ messages in thread From: Hauke Mehrtens @ 2015-07-15 21:53 UTC (permalink / raw) To: Ray Jui, Catalin Marinas, Will Deacon, Arnd Bergmann, Mark Rutland, Bjorn Helgaas Cc: linux-kernel, bcm-kernel-feedback-list, linux-arm-kernel, linux-pci On 07/15/2015 06:42 AM, Ray Jui wrote: > This patch adds support to Broadcom's iProc family of arm64 based SoCs > in the arm64 Kconfig and defconfig files > > Signed-off-by: Ray Jui <rjui@broadcom.com> > Reviewed-by: Scott Branden <sbranden@broadcom.com> > --- > arch/arm64/Kconfig | 5 +++++ > arch/arm64/configs/defconfig | 2 ++ > 2 files changed, 7 insertions(+) > > diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig > index 318175f..969ef4a 100644 > --- a/arch/arm64/Kconfig > +++ b/arch/arm64/Kconfig > @@ -162,6 +162,11 @@ source "kernel/Kconfig.freezer" > > menu "Platform selection" > > +config ARCH_BCM_IPROC > + bool "Broadcom iProc SoC Family" > + help > + This enables support for Broadcom iProc based SoCs > + Is this working correctly if we have ARCH_BCM_IPROC under ARM and ARM64? They are guarding the same SoC line, which now uses ARM64 CPUS. > config ARCH_EXYNOS > bool > help > diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig > index 4e17e7e..c83d51f 100644 > --- a/arch/arm64/configs/defconfig > +++ b/arch/arm64/configs/defconfig > @@ -31,6 +31,7 @@ CONFIG_MODULES=y > CONFIG_MODULE_UNLOAD=y > # CONFIG_BLK_DEV_BSG is not set > # CONFIG_IOSCHED_DEADLINE is not set > +CONFIG_ARCH_BCM_IPROC=y > CONFIG_ARCH_EXYNOS7=y > CONFIG_ARCH_FSL_LS2085A=y > CONFIG_ARCH_HISI=y > @@ -102,6 +103,7 @@ CONFIG_SERIO_AMBAKMI=y > CONFIG_LEGACY_PTY_COUNT=16 > CONFIG_SERIAL_8250=y > CONFIG_SERIAL_8250_CONSOLE=y > +CONFIG_SERIAL_8250_DW=y > CONFIG_SERIAL_8250_MT6577=y > CONFIG_SERIAL_AMBA_PL011=y > CONFIG_SERIAL_AMBA_PL011_CONSOLE=y > ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v2 3/4] arm64: Add Broadcom iProc family support 2015-07-15 21:53 ` Hauke Mehrtens @ 2015-07-15 22:03 ` Ray Jui 2015-07-15 22:11 ` Florian Fainelli 0 siblings, 1 reply; 12+ messages in thread From: Ray Jui @ 2015-07-15 22:03 UTC (permalink / raw) To: Hauke Mehrtens, Catalin Marinas, Will Deacon, Arnd Bergmann, Mark Rutland, Bjorn Helgaas Cc: linux-kernel, bcm-kernel-feedback-list, linux-arm-kernel, linux-pci On 7/15/2015 2:53 PM, Hauke Mehrtens wrote: > On 07/15/2015 06:42 AM, Ray Jui wrote: >> This patch adds support to Broadcom's iProc family of arm64 based SoCs >> in the arm64 Kconfig and defconfig files >> >> Signed-off-by: Ray Jui <rjui@broadcom.com> >> Reviewed-by: Scott Branden <sbranden@broadcom.com> >> --- >> arch/arm64/Kconfig | 5 +++++ >> arch/arm64/configs/defconfig | 2 ++ >> 2 files changed, 7 insertions(+) >> >> diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig >> index 318175f..969ef4a 100644 >> --- a/arch/arm64/Kconfig >> +++ b/arch/arm64/Kconfig >> @@ -162,6 +162,11 @@ source "kernel/Kconfig.freezer" >> >> menu "Platform selection" >> >> +config ARCH_BCM_IPROC >> + bool "Broadcom iProc SoC Family" >> + help >> + This enables support for Broadcom iProc based SoCs >> + > > Is this working correctly if we have ARCH_BCM_IPROC under ARM and ARM64? > They are guarding the same SoC line, which now uses ARM64 CPUS. > Yes, since the "ARCH=" parameter from the compiler helps to route it to the right directory, arch/arm or arch/arm64, and you cannot compile both in a single image. Same case for other SoCs, e.g., tegra (ARCH_TEGRA), exynos (ARCH_EXYNOS), and etc. The benefit of sharing the same arch flag is that the device driver that exists in iProc family of SoCs (both arm32 and arm64) can be guarded or enabled properly. Thanks, Ray ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v2 3/4] arm64: Add Broadcom iProc family support 2015-07-15 22:03 ` Ray Jui @ 2015-07-15 22:11 ` Florian Fainelli 0 siblings, 0 replies; 12+ messages in thread From: Florian Fainelli @ 2015-07-15 22:11 UTC (permalink / raw) To: Ray Jui, Hauke Mehrtens, Catalin Marinas, Will Deacon, Arnd Bergmann, Mark Rutland, Bjorn Helgaas Cc: linux-kernel, bcm-kernel-feedback-list, linux-arm-kernel, linux-pci On 15/07/15 15:03, Ray Jui wrote: > > > On 7/15/2015 2:53 PM, Hauke Mehrtens wrote: >> On 07/15/2015 06:42 AM, Ray Jui wrote: >>> This patch adds support to Broadcom's iProc family of arm64 based SoCs >>> in the arm64 Kconfig and defconfig files >>> >>> Signed-off-by: Ray Jui <rjui@broadcom.com> >>> Reviewed-by: Scott Branden <sbranden@broadcom.com> >>> --- >>> arch/arm64/Kconfig | 5 +++++ >>> arch/arm64/configs/defconfig | 2 ++ >>> 2 files changed, 7 insertions(+) >>> >>> diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig >>> index 318175f..969ef4a 100644 >>> --- a/arch/arm64/Kconfig >>> +++ b/arch/arm64/Kconfig >>> @@ -162,6 +162,11 @@ source "kernel/Kconfig.freezer" >>> >>> menu "Platform selection" >>> >>> +config ARCH_BCM_IPROC >>> + bool "Broadcom iProc SoC Family" >>> + help >>> + This enables support for Broadcom iProc based SoCs >>> + >> >> Is this working correctly if we have ARCH_BCM_IPROC under ARM and ARM64? >> They are guarding the same SoC line, which now uses ARM64 CPUS. >> > > Yes, since the "ARCH=" parameter from the compiler helps to route it to > the right directory, arch/arm or arch/arm64, and you cannot compile both > in a single image. Same case for other SoCs, e.g., tegra (ARCH_TEGRA), > exynos (ARCH_EXYNOS), and etc. > > The benefit of sharing the same arch flag is that the device driver that > exists in iProc family of SoCs (both arm32 and arm64) can be guarded or > enabled properly. Yes, I like that as well, better maintain a single symbol across two architectures than multiple across multiple architectures. -- Florian ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH v2 4/4] arm64: dts: Add Broadcom North Star 2 support 2015-07-15 4:42 [PATCH v2 0/4] Add Broadcom North Star 2 support Ray Jui ` (2 preceding siblings ...) 2015-07-15 4:42 ` [PATCH v2 3/4] arm64: Add Broadcom iProc family support Ray Jui @ 2015-07-15 4:42 ` Ray Jui 2015-07-15 9:21 ` Mark Rutland 3 siblings, 1 reply; 12+ messages in thread From: Ray Jui @ 2015-07-15 4:42 UTC (permalink / raw) To: Catalin Marinas, Will Deacon, Arnd Bergmann, Mark Rutland, Bjorn Helgaas, Hauke Mehrtens Cc: linux-kernel, bcm-kernel-feedback-list, linux-arm-kernel, linux-pci, Ray Jui, Jon Mason Add Broadcom NS2 device tree binding document. Also add initial device tree dtsi for Broadcom North Star 2 (NS2) SoC and board support for NS2 SVK board Signed-off-by: Jon Mason <jonmason@broadcom.com> Signed-off-by: Ray Jui <rjui@broadcom.com> Reviewed-by: Scott Branden <sbranden@broadcom.com> --- Documentation/devicetree/bindings/arm/bcm/ns2.txt | 9 ++ arch/arm64/boot/dts/Makefile | 1 + arch/arm64/boot/dts/broadcom/Makefile | 5 + arch/arm64/boot/dts/broadcom/ns2-svk.dts | 60 +++++++++++ arch/arm64/boot/dts/broadcom/ns2.dtsi | 118 +++++++++++++++++++++ 5 files changed, 193 insertions(+) create mode 100644 Documentation/devicetree/bindings/arm/bcm/ns2.txt create mode 100644 arch/arm64/boot/dts/broadcom/Makefile create mode 100644 arch/arm64/boot/dts/broadcom/ns2-svk.dts create mode 100644 arch/arm64/boot/dts/broadcom/ns2.dtsi diff --git a/Documentation/devicetree/bindings/arm/bcm/ns2.txt b/Documentation/devicetree/bindings/arm/bcm/ns2.txt new file mode 100644 index 0000000..35f056f --- /dev/null +++ b/Documentation/devicetree/bindings/arm/bcm/ns2.txt @@ -0,0 +1,9 @@ +Broadcom North Star 2 (NS2) device tree bindings +------------------------------------------------ + +Boards with NS2 shall have the following properties: + +Required root node property: + +NS2 SVK board +compatible = "brcm,ns2-svk", "brcm,ns2"; diff --git a/arch/arm64/boot/dts/Makefile b/arch/arm64/boot/dts/Makefile index 38913be..9f95941 100644 --- a/arch/arm64/boot/dts/Makefile +++ b/arch/arm64/boot/dts/Makefile @@ -1,6 +1,7 @@ dts-dirs += amd dts-dirs += apm dts-dirs += arm +dts-dirs += broadcom dts-dirs += cavium dts-dirs += exynos dts-dirs += freescale diff --git a/arch/arm64/boot/dts/broadcom/Makefile b/arch/arm64/boot/dts/broadcom/Makefile new file mode 100644 index 0000000..e21fe66 --- /dev/null +++ b/arch/arm64/boot/dts/broadcom/Makefile @@ -0,0 +1,5 @@ +dtb-$(CONFIG_ARCH_BCM_IPROC) += ns2-svk.dtb + +always := $(dtb-y) +subdir-y := $(dts-dirs) +clean-files := *.dtb diff --git a/arch/arm64/boot/dts/broadcom/ns2-svk.dts b/arch/arm64/boot/dts/broadcom/ns2-svk.dts new file mode 100644 index 0000000..a43d93f --- /dev/null +++ b/arch/arm64/boot/dts/broadcom/ns2-svk.dts @@ -0,0 +1,60 @@ +/* + * BSD LICENSE + * + * Copyright(c) 2015 Broadcom Corporation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Broadcom Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/dts-v1/; + +#include "ns2.dtsi" + +/ { + model = "Broadcom NS2 SVK"; + compatible = "brcm,ns2-svk", "brcm,ns2"; + + aliases { + serial0 = &uart3; + }; + + chosen { + stdout-path = "serial0:115200n8"; + bootargs = "earlycon=uart8250,mmio32,0x66130000"; + }; + + memory { + device_type = "memory"; + reg = <0x000000000 0x80000000 0x00000000 0x40000000>; + }; + + soc: soc { + uart3: serial@66130000 { + status = "ok"; + }; + }; +}; diff --git a/arch/arm64/boot/dts/broadcom/ns2.dtsi b/arch/arm64/boot/dts/broadcom/ns2.dtsi new file mode 100644 index 0000000..3c92d92 --- /dev/null +++ b/arch/arm64/boot/dts/broadcom/ns2.dtsi @@ -0,0 +1,118 @@ +/* + * BSD LICENSE + * + * Copyright(c) 2015 Broadcom Corporation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Broadcom Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include <dt-bindings/interrupt-controller/arm-gic.h> + +/memreserve/ 0x84b00000 0x00000008; + +/ { + compatible = "brcm,ns2"; + interrupt-parent = <&gic>; + #address-cells = <2>; + #size-cells = <2>; + + cpus { + #address-cells = <2>; + #size-cells = <0>; + + cpu@0 { + device_type = "cpu"; + compatible = "arm,cortex-a57", "arm,armv8"; + reg = <0 0>; + enable-method = "spin-table"; + cpu-release-addr = <0 0x84b00000>; + }; + + cpu@1 { + device_type = "cpu"; + compatible = "arm,cortex-a57", "arm,armv8"; + reg = <0 1>; + enable-method = "spin-table"; + cpu-release-addr = <0 0x84b00000>; + }; + + cpu@2 { + device_type = "cpu"; + compatible = "arm,cortex-a57", "arm,armv8"; + reg = <0 2>; + enable-method = "spin-table"; + cpu-release-addr = <0 0x84b00000>; + }; + + cpu@3 { + device_type = "cpu"; + compatible = "arm,cortex-a57", "arm,armv8"; + reg = <0 3>; + enable-method = "spin-table"; + cpu-release-addr = <0 0x84b00000>; + }; + }; + + timer { + compatible = "arm,armv8-timer"; + interrupts = <GIC_PPI 13 (GIC_CPU_MASK_RAW(0xff) | + IRQ_TYPE_EDGE_RISING)>, + <GIC_PPI 14 (GIC_CPU_MASK_RAW(0xff) | + IRQ_TYPE_EDGE_RISING)>, + <GIC_PPI 11 (GIC_CPU_MASK_RAW(0xff) | + IRQ_TYPE_EDGE_RISING)>, + <GIC_PPI 10 (GIC_CPU_MASK_RAW(0xff) | + IRQ_TYPE_EDGE_RISING)>; + }; + + soc: soc { + compatible = "simple-bus"; + #address-cells = <1>; + #size-cells = <1>; + ranges = <0 0 0 0xffffffff>; + + gic: interrupt-controller@65210000 { + compatible = "arm,gic-400"; + #interrupt-cells = <3>; + interrupt-controller; + reg = <0x65210000 0x1000>, + <0x65220000 0x1000>, + <0x65240000 0x2000>, + <0x65260000 0x1000>; + }; + + uart3: serial@66130000 { + compatible = "snps,dw-apb-uart"; + reg = <0x66130000 0x100>; + interrupts = <GIC_SPI 393 IRQ_TYPE_LEVEL_HIGH>; + reg-shift = <2>; + reg-io-width = <4>; + clock-frequency = <23961600>; + status = "disabled"; + }; + }; +}; -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH v2 4/4] arm64: dts: Add Broadcom North Star 2 support 2015-07-15 4:42 ` [PATCH v2 4/4] arm64: dts: Add Broadcom North Star 2 support Ray Jui @ 2015-07-15 9:21 ` Mark Rutland 2015-07-15 17:30 ` Ray Jui 0 siblings, 1 reply; 12+ messages in thread From: Mark Rutland @ 2015-07-15 9:21 UTC (permalink / raw) To: Ray Jui Cc: Catalin Marinas, Will Deacon, Arnd Bergmann, Bjorn Helgaas, Hauke Mehrtens, linux-kernel@vger.kernel.org, bcm-kernel-feedback-list@broadcom.com, linux-arm-kernel@lists.infradead.org, linux-pci@vger.kernel.org, Jon Mason Hi, > + chosen { > + stdout-path = "serial0:115200n8"; > + bootargs = "earlycon=uart8250,mmio32,0x66130000"; > + }; You shouldn't need those earlycon arguments if your driver has of_earlycon support. If that's currently missing, could you add that instead? Thanks, Mark. ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v2 4/4] arm64: dts: Add Broadcom North Star 2 support 2015-07-15 9:21 ` Mark Rutland @ 2015-07-15 17:30 ` Ray Jui 0 siblings, 0 replies; 12+ messages in thread From: Ray Jui @ 2015-07-15 17:30 UTC (permalink / raw) To: Mark Rutland Cc: Catalin Marinas, Will Deacon, Arnd Bergmann, Bjorn Helgaas, Hauke Mehrtens, linux-kernel@vger.kernel.org, bcm-kernel-feedback-list@broadcom.com, linux-arm-kernel@lists.infradead.org, linux-pci@vger.kernel.org, Jon Mason On 7/15/2015 2:21 AM, Mark Rutland wrote: > Hi, > >> + chosen { >> + stdout-path = "serial0:115200n8"; >> + bootargs = "earlycon=uart8250,mmio32,0x66130000"; >> + }; > > You shouldn't need those earlycon arguments if your driver has > of_earlycon support. If that's currently missing, could you add that > instead? > > Thanks, > Mark. > I can look into this and add the of_earlycon support for 8250_dw. It looks like it may be only a matter of hooking it up to the setup function in 8250_early.c, which is quite straightforward. So does it make more sense for me to do the following? 1) Drop the earlycon bootargs from ns2-svk.dts and continue the Broadcom iProc arm64 upstreaming process with the current patch series 2) Start a separate, new patch series with OF_EARLYCON support to 8250 DW driver Thanks, Ray ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2015-07-15 22:13 UTC | newest] Thread overview: 12+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2015-07-15 4:42 [PATCH v2 0/4] Add Broadcom North Star 2 support Ray Jui 2015-07-15 4:42 ` [PATCH v2 1/4] PCI: iproc: enable arm64 support for iProc PCIe Ray Jui 2015-07-15 21:52 ` Hauke Mehrtens 2015-07-15 21:57 ` Ray Jui 2015-07-15 4:42 ` [PATCH v2 2/4] PCI: iproc: Fix ARM64 dependency in Kconfig Ray Jui 2015-07-15 4:42 ` [PATCH v2 3/4] arm64: Add Broadcom iProc family support Ray Jui 2015-07-15 21:53 ` Hauke Mehrtens 2015-07-15 22:03 ` Ray Jui 2015-07-15 22:11 ` Florian Fainelli 2015-07-15 4:42 ` [PATCH v2 4/4] arm64: dts: Add Broadcom North Star 2 support Ray Jui 2015-07-15 9:21 ` Mark Rutland 2015-07-15 17:30 ` Ray Jui
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).