diff mbox

[v3,2/5] ARM: bcm4760: Add platform infrastructure

Message ID 20130814221237.350904818@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Domenico Andreoli Aug. 14, 2013, 10:10 p.m. UTC
From: Domenico Andreoli <domenico.andreoli@linux.com>

Platform infrastructure for the Broadcom BCM4760 based ARM11 SoCs.

v3:
* dropped the idea of unconditionally build mach-bcm

v2:
* clocks are now configured via DT
* uart DT nodes have been renamed and hooked to the proper clock nodes
* dropped unneeded config options
* dropped misused initialization of system_rev
* dropped unneeded early io mapping 
* build rule of mach-bcm is moved to separated patch

v1:
* initial release

Cc: devicetree@vger.kernel.org
Cc: linux-arm-kernel@lists.infradead.org
Signed-off-by: Domenico Andreoli <domenico.andreoli@linux.com>
---
 Documentation/devicetree/bindings/arm/bcm4760.txt |    8 ++
 MAINTAINERS                                       |    7 ++
 arch/arm/Makefile                                 |    1 +
 arch/arm/boot/dts/Makefile                        |    1 +
 arch/arm/boot/dts/bcm4760-catalina.dts            |   11 +++
 arch/arm/boot/dts/bcm4760.dtsi                    |   71 +++++++++++++++++++++
 arch/arm/configs/bcm4760_defconfig                |   76 ++++++++++++++++++++++
 arch/arm/mach-bcm/Kconfig                         |    7 ++
 arch/arm/mach-bcm/Makefile                        |    2 +
 arch/arm/mach-bcm/bcm4760.c                       |   37 +++++++++++
 10 files changed, 221 insertions(+)

Comments

Jason Cooper Aug. 15, 2013, 1:28 p.m. UTC | #1
Domenico,

On Thu, Aug 15, 2013 at 12:10:45AM +0200, Domenico Andreoli wrote:
> From: Domenico Andreoli <domenico.andreoli@linux.com>
> 
> Platform infrastructure for the Broadcom BCM4760 based ARM11 SoCs.
> 
> v3:
> * dropped the idea of unconditionally build mach-bcm
> 
> v2:
> * clocks are now configured via DT
> * uart DT nodes have been renamed and hooked to the proper clock nodes
> * dropped unneeded config options
> * dropped misused initialization of system_rev
> * dropped unneeded early io mapping 
> * build rule of mach-bcm is moved to separated patch
> 
> v1:
> * initial release
> 
> Cc: devicetree@vger.kernel.org
> Cc: linux-arm-kernel@lists.infradead.org
> Signed-off-by: Domenico Andreoli <domenico.andreoli@linux.com>
> ---
>  Documentation/devicetree/bindings/arm/bcm4760.txt |    8 ++
>  MAINTAINERS                                       |    7 ++
>  arch/arm/Makefile                                 |    1 +
>  arch/arm/boot/dts/Makefile                        |    1 +
>  arch/arm/boot/dts/bcm4760-catalina.dts            |   11 +++
>  arch/arm/boot/dts/bcm4760.dtsi                    |   71 +++++++++++++++++++++
>  arch/arm/configs/bcm4760_defconfig                |   76 ++++++++++++++++++++++
>  arch/arm/mach-bcm/Kconfig                         |    7 ++
>  arch/arm/mach-bcm/Makefile                        |    2 +
>  arch/arm/mach-bcm/bcm4760.c                       |   37 +++++++++++
>  10 files changed, 221 insertions(+)

Since I raised the original objection to the unconditional build,

Acked-by: Jason Cooper <jason@lakedaemon.net>

thx,

Jason.
Olof Johansson Aug. 29, 2013, 11:17 p.m. UTC | #2
Hi,

On Thu, Aug 15, 2013 at 12:10:45AM +0200, Domenico Andreoli wrote:
> From: Domenico Andreoli <domenico.andreoli@linux.com>
> 
> Platform infrastructure for the Broadcom BCM4760 based ARM11 SoCs.
> 
> v3:
> * dropped the idea of unconditionally build mach-bcm
> 
> v2:
> * clocks are now configured via DT
> * uart DT nodes have been renamed and hooked to the proper clock nodes
> * dropped unneeded config options
> * dropped misused initialization of system_rev
> * dropped unneeded early io mapping 
> * build rule of mach-bcm is moved to separated patch
> 
> v1:
> * initial release
> 
> Cc: devicetree@vger.kernel.org
> Cc: linux-arm-kernel@lists.infradead.org
> Signed-off-by: Domenico Andreoli <domenico.andreoli@linux.com>
> ---
>  Documentation/devicetree/bindings/arm/bcm4760.txt |    8 ++
>  MAINTAINERS                                       |    7 ++
>  arch/arm/Makefile                                 |    1 +
>  arch/arm/boot/dts/Makefile                        |    1 +
>  arch/arm/boot/dts/bcm4760-catalina.dts            |   11 +++
>  arch/arm/boot/dts/bcm4760.dtsi                    |   71 +++++++++++++++++++++
>  arch/arm/configs/bcm4760_defconfig                |   76 ++++++++++++++++++++++
>  arch/arm/mach-bcm/Kconfig                         |    7 ++
>  arch/arm/mach-bcm/Makefile                        |    2 +
>  arch/arm/mach-bcm/bcm4760.c                       |   37 +++++++++++
>  10 files changed, 221 insertions(+)
> 
> Index: b/Documentation/devicetree/bindings/arm/bcm4760.txt
> ===================================================================
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/arm/bcm4760.txt
> @@ -0,0 +1,8 @@
> +Broadcom BCM4760 ARM11 SoC device tree bindings
> +-----------------------------------------------
> +
> +Boards with the BCM4760 SoC shall have the following properties:
> +
> +Required root node property:
> +
> +compatible = "brcm,bcm4760";
> Index: b/arch/arm/configs/bcm4760_defconfig
> ===================================================================
> --- /dev/null
> +++ b/arch/arm/configs/bcm4760_defconfig
> @@ -0,0 +1,76 @@
> +CONFIG_IRQ_DOMAIN_DEBUG=y
> +CONFIG_IKCONFIG=y
> +CONFIG_IKCONFIG_PROC=y
> +CONFIG_BLK_DEV_INITRD=y
> +CONFIG_CC_OPTIMIZE_FOR_SIZE=y
> +CONFIG_EMBEDDED=y
> +CONFIG_MODULES=y
> +CONFIG_MODULE_UNLOAD=y
> +# CONFIG_BLK_DEV_BSG is not set
> +# CONFIG_IOSCHED_DEADLINE is not set
> +# CONFIG_IOSCHED_CFQ is not set
> +CONFIG_ARCH_MULTI_V6=y
> +# CONFIG_ARCH_MULTI_V7 is not set
> +CONFIG_ARCH_BCM4760=y
> +CONFIG_ARM_ERRATA_411920=y
> +CONFIG_ARM_ERRATA_364296=y
> +CONFIG_AEABI=y
> +CONFIG_DEPRECATED_PARAM_STRUCT=y
> +CONFIG_ARM_APPENDED_DTB=y
> +CONFIG_ARM_ATAG_DTB_COMPAT=y
> +CONFIG_VFP=y
> +# CONFIG_SUSPEND is not set
> +CONFIG_DEVTMPFS=y
> +CONFIG_DEVTMPFS_MOUNT=y
> +CONFIG_CMA=y
> +CONFIG_PROC_DEVICETREE=y
> +CONFIG_BLK_DEV_LOOP=y
> +CONFIG_BLK_DEV_RAM=y
> +CONFIG_SCSI=y
> +# CONFIG_SCSI_PROC_FS is not set
> +CONFIG_BLK_DEV_SD=y
> +CONFIG_SCSI_MULTI_LUN=y
> +# CONFIG_SCSI_LOWLEVEL is not set
> +# CONFIG_INPUT_MOUSEDEV is not set
> +CONFIG_INPUT_EVDEV=y
> +# CONFIG_INPUT_KEYBOARD is not set
> +# CONFIG_INPUT_MOUSE is not set
> +# CONFIG_SERIO is not set
> +# CONFIG_VT is not set
> +# CONFIG_DEVKMEM is not set
> +CONFIG_SERIAL_AMBA_PL011=y
> +CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
> +# CONFIG_HW_RANDOM is not set
> +# CONFIG_HWMON is not set
> +# CONFIG_HID is not set
> +# CONFIG_USB_SUPPORT is not set
> +CONFIG_COMMON_CLK_DEBUG=y
> +# CONFIG_IOMMU_SUPPORT is not set
> +CONFIG_EXT2_FS=y
> +CONFIG_EXT3_FS=y
> +# CONFIG_EXT3_FS_XATTR is not set
> +CONFIG_EXT4_FS=y
> +CONFIG_FANOTIFY=y
> +CONFIG_MSDOS_FS=y
> +CONFIG_VFAT_FS=y
> +# CONFIG_PROC_PAGE_MONITOR is not set
> +CONFIG_TMPFS=y
> +CONFIG_CRAMFS=y
> +CONFIG_ROMFS_FS=y
> +CONFIG_NLS_CODEPAGE_437=y
> +CONFIG_NLS_CODEPAGE_850=y
> +CONFIG_NLS_ISO8859_1=y
> +CONFIG_NLS_ISO8859_15=y
> +CONFIG_PRINTK_TIME=y
> +CONFIG_DEBUG_INFO=y
> +CONFIG_DEBUG_INFO_REDUCED=y
> +CONFIG_STRIP_ASM_SYMS=y
> +CONFIG_DEBUG_SECTION_MISMATCH=y
> +CONFIG_MAGIC_SYSRQ=y
> +# CONFIG_SCHED_DEBUG is not set
> +CONFIG_DEBUG_SPINLOCK=y
> +CONFIG_DEBUG_MUTEXES=y
> +CONFIG_DEBUG_ATOMIC_SLEEP=y
> +# CONFIG_FTRACE is not set
> +# CONFIG_CRYPTO_ANSI_CPRNG is not set
> +# CONFIG_CRYPTO_HW is not set
> Index: b/arch/arm/mach-bcm/bcm4760.c
> ===================================================================
> --- /dev/null
> +++ b/arch/arm/mach-bcm/bcm4760.c
> @@ -0,0 +1,37 @@
> +/*
> + * Broadcom BCM4760 based ARM11 SoCs platform support
> + *
> + * Copyright (C) 2012 Domenico Andreoli <domenico.andreoli@linux.com>
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License as published by
> + * the Free Software Foundation; either version 2 of the License, or
> + * (at your option) any later version.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + * GNU General Public License for more details.
> + */
> +
> +#include <linux/init.h>
> +#include <linux/clk-provider.h>
> +#include <linux/of_platform.h>
> +
> +#include <asm/mach/arch.h>
> +
> +static void __init bcm4760_init(void)
> +{
> +	of_clk_init(NULL);
> +	of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
> +}
> +
> +static const char * const bcm4760_compat[] __initconst = {
> +	"brcm,bcm4760",
> +	NULL
> +};
> +
> +DT_MACHINE_START(BCM4760, "Broadcom BCM4760")
> +	.init_machine = bcm4760_init,
> +	.dt_compat = bcm4760_compat

Please add a , after the last member too, it makes life much easier if someone
is scripting a change across all these in the future (such as sorting them).

> Index: b/arch/arm/mach-bcm/Kconfig
> ===================================================================
> --- a/arch/arm/mach-bcm/Kconfig
> +++ b/arch/arm/mach-bcm/Kconfig
> @@ -17,3 +17,10 @@ config ARCH_BCM
>  	  It currently supports the 'BCM281XX' family, which includes
>  	  BCM11130, BCM11140, BCM11351, BCM28145 and
>  	  BCM28155 variants.
> +
> +config ARCH_BCM4760
> +	bool "Broadcom BCM4760 based SoCs (ARM11)" if ARCH_MULTI_V6
> +	select ARM_AMBA
> +	select ARM_VIC
> +	select CLKSRC_OF
> +	select SOC_BUS

So I think I mentioned this during previous discussions, but I think this
should be solved by having:

config ARCH_BCM
	bool "Broadcom platforms"
	help
	  This enables support for Broadcom based systems

menu "Broadcom platform selection"
	depends on ARCH_BCM

config ARCH_BCM281XX
	... current ARCH_BCM contents

config ARCH_BCM4760
	... above conents
endmenu


> Index: b/arch/arm/mach-bcm/Makefile
> ===================================================================
> --- a/arch/arm/mach-bcm/Makefile
> +++ b/arch/arm/mach-bcm/Makefile
> @@ -13,3 +13,5 @@
>  obj-$(CONFIG_ARCH_BCM)		:= board_bcm.o bcm_kona_smc.o bcm_kona_smc_asm.o
>  plus_sec := $(call as-instr,.arch_extension sec,+sec)
>  AFLAGS_bcm_kona_smc_asm.o	:=-Wa,-march=armv7-a$(plus_sec)
> +
> +obj-$(CONFIG_ARCH_BCM4760)	+= bcm4760.o
> Index: b/arch/arm/Makefile
> ===================================================================
> --- a/arch/arm/Makefile
> +++ b/arch/arm/Makefile
> @@ -147,6 +147,7 @@ textofs-$(CONFIG_ARCH_MSM8960) := 0x0020
>  machine-$(CONFIG_ARCH_AT91)		+= at91
>  machine-$(CONFIG_ARCH_BCM)		+= bcm
>  machine-$(CONFIG_ARCH_BCM2835)		+= bcm2835
> +machine-$(CONFIG_ARCH_BCM4760)		+= bcm

With the above change, this isn't needed.


-Olof
Domenico Andreoli Aug. 30, 2013, 7:53 a.m. UTC | #3
On Thu, Aug 29, 2013 at 04:17:29PM -0700, Olof Johansson wrote:
> Hi,

Hi,

> On Thu, Aug 15, 2013 at 12:10:45AM +0200, Domenico Andreoli wrote:
> > From: Domenico Andreoli <domenico.andreoli@linux.com>
> > 
> > Platform infrastructure for the Broadcom BCM4760 based ARM11 SoCs.
> > 
> > v3:
> > * dropped the idea of unconditionally build mach-bcm
> > 
> > v2:
> > * clocks are now configured via DT
> > * uart DT nodes have been renamed and hooked to the proper clock nodes
> > * dropped unneeded config options
> > * dropped misused initialization of system_rev
> > * dropped unneeded early io mapping 
> > * build rule of mach-bcm is moved to separated patch
> > 
> > v1:
> > * initial release
> > 
> > Cc: devicetree@vger.kernel.org
> > Cc: linux-arm-kernel@lists.infradead.org
> > Signed-off-by: Domenico Andreoli <domenico.andreoli@linux.com>
> > ---
> >  Documentation/devicetree/bindings/arm/bcm4760.txt |    8 ++
> >  MAINTAINERS                                       |    7 ++
> >  arch/arm/Makefile                                 |    1 +
> >  arch/arm/boot/dts/Makefile                        |    1 +
> >  arch/arm/boot/dts/bcm4760-catalina.dts            |   11 +++
> >  arch/arm/boot/dts/bcm4760.dtsi                    |   71 +++++++++++++++++++++
> >  arch/arm/configs/bcm4760_defconfig                |   76 ++++++++++++++++++++++
> >  arch/arm/mach-bcm/Kconfig                         |    7 ++
> >  arch/arm/mach-bcm/Makefile                        |    2 +
> >  arch/arm/mach-bcm/bcm4760.c                       |   37 +++++++++++
> >  10 files changed, 221 insertions(+)
> > 
> > Index: b/Documentation/devicetree/bindings/arm/bcm4760.txt
> > ===================================================================
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/arm/bcm4760.txt
> > @@ -0,0 +1,8 @@
> > +Broadcom BCM4760 ARM11 SoC device tree bindings
> > +-----------------------------------------------
> > +
> > +Boards with the BCM4760 SoC shall have the following properties:
> > +
> > +Required root node property:
> > +
> > +compatible = "brcm,bcm4760";
> > Index: b/arch/arm/configs/bcm4760_defconfig
> > ===================================================================
> > --- /dev/null
> > +++ b/arch/arm/configs/bcm4760_defconfig
> > @@ -0,0 +1,76 @@
> > +CONFIG_IRQ_DOMAIN_DEBUG=y
> > +CONFIG_IKCONFIG=y
> > +CONFIG_IKCONFIG_PROC=y
> > +CONFIG_BLK_DEV_INITRD=y
> > +CONFIG_CC_OPTIMIZE_FOR_SIZE=y
> > +CONFIG_EMBEDDED=y
> > +CONFIG_MODULES=y
> > +CONFIG_MODULE_UNLOAD=y
> > +# CONFIG_BLK_DEV_BSG is not set
> > +# CONFIG_IOSCHED_DEADLINE is not set
> > +# CONFIG_IOSCHED_CFQ is not set
> > +CONFIG_ARCH_MULTI_V6=y
> > +# CONFIG_ARCH_MULTI_V7 is not set
> > +CONFIG_ARCH_BCM4760=y
> > +CONFIG_ARM_ERRATA_411920=y
> > +CONFIG_ARM_ERRATA_364296=y
> > +CONFIG_AEABI=y
> > +CONFIG_DEPRECATED_PARAM_STRUCT=y
> > +CONFIG_ARM_APPENDED_DTB=y
> > +CONFIG_ARM_ATAG_DTB_COMPAT=y
> > +CONFIG_VFP=y
> > +# CONFIG_SUSPEND is not set
> > +CONFIG_DEVTMPFS=y
> > +CONFIG_DEVTMPFS_MOUNT=y
> > +CONFIG_CMA=y
> > +CONFIG_PROC_DEVICETREE=y
> > +CONFIG_BLK_DEV_LOOP=y
> > +CONFIG_BLK_DEV_RAM=y
> > +CONFIG_SCSI=y
> > +# CONFIG_SCSI_PROC_FS is not set
> > +CONFIG_BLK_DEV_SD=y
> > +CONFIG_SCSI_MULTI_LUN=y
> > +# CONFIG_SCSI_LOWLEVEL is not set
> > +# CONFIG_INPUT_MOUSEDEV is not set
> > +CONFIG_INPUT_EVDEV=y
> > +# CONFIG_INPUT_KEYBOARD is not set
> > +# CONFIG_INPUT_MOUSE is not set
> > +# CONFIG_SERIO is not set
> > +# CONFIG_VT is not set
> > +# CONFIG_DEVKMEM is not set
> > +CONFIG_SERIAL_AMBA_PL011=y
> > +CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
> > +# CONFIG_HW_RANDOM is not set
> > +# CONFIG_HWMON is not set
> > +# CONFIG_HID is not set
> > +# CONFIG_USB_SUPPORT is not set
> > +CONFIG_COMMON_CLK_DEBUG=y
> > +# CONFIG_IOMMU_SUPPORT is not set
> > +CONFIG_EXT2_FS=y
> > +CONFIG_EXT3_FS=y
> > +# CONFIG_EXT3_FS_XATTR is not set
> > +CONFIG_EXT4_FS=y
> > +CONFIG_FANOTIFY=y
> > +CONFIG_MSDOS_FS=y
> > +CONFIG_VFAT_FS=y
> > +# CONFIG_PROC_PAGE_MONITOR is not set
> > +CONFIG_TMPFS=y
> > +CONFIG_CRAMFS=y
> > +CONFIG_ROMFS_FS=y
> > +CONFIG_NLS_CODEPAGE_437=y
> > +CONFIG_NLS_CODEPAGE_850=y
> > +CONFIG_NLS_ISO8859_1=y
> > +CONFIG_NLS_ISO8859_15=y
> > +CONFIG_PRINTK_TIME=y
> > +CONFIG_DEBUG_INFO=y
> > +CONFIG_DEBUG_INFO_REDUCED=y
> > +CONFIG_STRIP_ASM_SYMS=y
> > +CONFIG_DEBUG_SECTION_MISMATCH=y
> > +CONFIG_MAGIC_SYSRQ=y
> > +# CONFIG_SCHED_DEBUG is not set
> > +CONFIG_DEBUG_SPINLOCK=y
> > +CONFIG_DEBUG_MUTEXES=y
> > +CONFIG_DEBUG_ATOMIC_SLEEP=y
> > +# CONFIG_FTRACE is not set
> > +# CONFIG_CRYPTO_ANSI_CPRNG is not set
> > +# CONFIG_CRYPTO_HW is not set
> > Index: b/arch/arm/mach-bcm/bcm4760.c
> > ===================================================================
> > --- /dev/null
> > +++ b/arch/arm/mach-bcm/bcm4760.c
> > @@ -0,0 +1,37 @@
> > +/*
> > + * Broadcom BCM4760 based ARM11 SoCs platform support
> > + *
> > + * Copyright (C) 2012 Domenico Andreoli <domenico.andreoli@linux.com>
> > + *
> > + * This program is free software; you can redistribute it and/or modify
> > + * it under the terms of the GNU General Public License as published by
> > + * the Free Software Foundation; either version 2 of the License, or
> > + * (at your option) any later version.
> > + *
> > + * This program is distributed in the hope that it will be useful,
> > + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> > + * GNU General Public License for more details.
> > + */
> > +
> > +#include <linux/init.h>
> > +#include <linux/clk-provider.h>
> > +#include <linux/of_platform.h>
> > +
> > +#include <asm/mach/arch.h>
> > +
> > +static void __init bcm4760_init(void)
> > +{
> > +	of_clk_init(NULL);
> > +	of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
> > +}
> > +
> > +static const char * const bcm4760_compat[] __initconst = {
> > +	"brcm,bcm4760",
> > +	NULL
> > +};
> > +
> > +DT_MACHINE_START(BCM4760, "Broadcom BCM4760")
> > +	.init_machine = bcm4760_init,
> > +	.dt_compat = bcm4760_compat
> 
> Please add a , after the last member too, it makes life much easier if someone
> is scripting a change across all these in the future (such as sorting them).

I usually pay attention to this detail. I'll fix.

> 
> > Index: b/arch/arm/mach-bcm/Kconfig
> > ===================================================================
> > --- a/arch/arm/mach-bcm/Kconfig
> > +++ b/arch/arm/mach-bcm/Kconfig
> > @@ -17,3 +17,10 @@ config ARCH_BCM
> >  	  It currently supports the 'BCM281XX' family, which includes
> >  	  BCM11130, BCM11140, BCM11351, BCM28145 and
> >  	  BCM28155 variants.
> > +
> > +config ARCH_BCM4760
> > +	bool "Broadcom BCM4760 based SoCs (ARM11)" if ARCH_MULTI_V6
> > +	select ARM_AMBA
> > +	select ARM_VIC
> > +	select CLKSRC_OF
> > +	select SOC_BUS
> 
> So I think I mentioned this during previous discussions, but I think this
> should be solved by having:
> 
> config ARCH_BCM
> 	bool "Broadcom platforms"
> 	help
> 	  This enables support for Broadcom based systems
> 
> menu "Broadcom platform selection"
> 	depends on ARCH_BCM
> 
> config ARCH_BCM281XX
> 	... current ARCH_BCM contents
> 
> config ARCH_BCM4760
> 	... above conents
> endmenu

got it.

need to sync with Christian, the current owner of ARCH_BCM.

> 
> 
> > Index: b/arch/arm/mach-bcm/Makefile
> > ===================================================================
> > --- a/arch/arm/mach-bcm/Makefile
> > +++ b/arch/arm/mach-bcm/Makefile
> > @@ -13,3 +13,5 @@
> >  obj-$(CONFIG_ARCH_BCM)		:= board_bcm.o bcm_kona_smc.o bcm_kona_smc_asm.o
> >  plus_sec := $(call as-instr,.arch_extension sec,+sec)
> >  AFLAGS_bcm_kona_smc_asm.o	:=-Wa,-march=armv7-a$(plus_sec)
> > +
> > +obj-$(CONFIG_ARCH_BCM4760)	+= bcm4760.o
> > Index: b/arch/arm/Makefile
> > ===================================================================
> > --- a/arch/arm/Makefile
> > +++ b/arch/arm/Makefile
> > @@ -147,6 +147,7 @@ textofs-$(CONFIG_ARCH_MSM8960) := 0x0020
> >  machine-$(CONFIG_ARCH_AT91)		+= at91
> >  machine-$(CONFIG_ARCH_BCM)		+= bcm
> >  machine-$(CONFIG_ARCH_BCM2835)		+= bcm2835
> > +machine-$(CONFIG_ARCH_BCM4760)		+= bcm
> 
> With the above change, this isn't needed.

clear

> 
> 
> -Olof

Thanks
Domenico
Christian Daudt Aug. 30, 2013, 9:52 p.m. UTC | #4
On 13-08-30 12:53 AM, Domenico Andreoli wrote:
>>> Index: b/arch/arm/mach-bcm/Kconfig
>>> ===================================================================
>>> --- a/arch/arm/mach-bcm/Kconfig
>>> +++ b/arch/arm/mach-bcm/Kconfig
>>> @@ -17,3 +17,10 @@ config ARCH_BCM
>>>   	  It currently supports the 'BCM281XX' family, which includes
>>>   	  BCM11130, BCM11140, BCM11351, BCM28145 and
>>>   	  BCM28155 variants.
>>> +
>>> +config ARCH_BCM4760
>>> +	bool "Broadcom BCM4760 based SoCs (ARM11)" if ARCH_MULTI_V6
>>> +	select ARM_AMBA
>>> +	select ARM_VIC
>>> +	select CLKSRC_OF
>>> +	select SOC_BUS
>> So I think I mentioned this during previous discussions, but I think this
>> should be solved by having:
>>
>> config ARCH_BCM
>> 	bool "Broadcom platforms"
>> 	help
>> 	  This enables support for Broadcom based systems
>>
>> menu "Broadcom platform selection"
>> 	depends on ARCH_BCM
>>
>> config ARCH_BCM281XX
>> 	... current ARCH_BCM contents
>>
>> config ARCH_BCM4760
>> 	... above conents
>> endmenu
> got it.
>
> need to sync with Christian, the current owner of ARCH_BCM.
This is fine, but it is better to name it MOBILEBCM instead for our 
platform, as it plan to keep it single zImage. My plan was to switch the 
current usage of ARCH_BCM for chips to ARCH_MOBILEBCM, and then leave 
ARCH_BCM as a generic BCM menu option as above. I can send a patch to 
that effect if everyone is okay with that.

  thanks,
    csd
Olof Johansson Aug. 30, 2013, 9:58 p.m. UTC | #5
On Fri, Aug 30, 2013 at 2:52 PM, Christian Daudt <csd@broadcom.com> wrote:
> On 13-08-30 12:53 AM, Domenico Andreoli wrote:
>>>>
>>>> Index: b/arch/arm/mach-bcm/Kconfig
>>>> ===================================================================
>>>> --- a/arch/arm/mach-bcm/Kconfig
>>>> +++ b/arch/arm/mach-bcm/Kconfig
>>>> @@ -17,3 +17,10 @@ config ARCH_BCM
>>>>           It currently supports the 'BCM281XX' family, which includes
>>>>           BCM11130, BCM11140, BCM11351, BCM28145 and
>>>>           BCM28155 variants.
>>>> +
>>>> +config ARCH_BCM4760
>>>> +       bool "Broadcom BCM4760 based SoCs (ARM11)" if ARCH_MULTI_V6
>>>> +       select ARM_AMBA
>>>> +       select ARM_VIC
>>>> +       select CLKSRC_OF
>>>> +       select SOC_BUS
>>>
>>> So I think I mentioned this during previous discussions, but I think this
>>> should be solved by having:
>>>
>>> config ARCH_BCM
>>>         bool "Broadcom platforms"
>>>         help
>>>           This enables support for Broadcom based systems
>>>
>>> menu "Broadcom platform selection"
>>>         depends on ARCH_BCM
>>>
>>> config ARCH_BCM281XX
>>>         ... current ARCH_BCM contents
>>>
>>> config ARCH_BCM4760
>>>         ... above conents
>>> endmenu
>>
>> got it.
>>
>> need to sync with Christian, the current owner of ARCH_BCM.
>
> This is fine, but it is better to name it MOBILEBCM instead for our
> platform, as it plan to keep it single zImage. My plan was to switch the
> current usage of ARCH_BCM for chips to ARCH_MOBILEBCM, and then leave
> ARCH_BCM as a generic BCM menu option as above. I can send a patch to that
> effect if everyone is okay with that.

Sounds good. Let's do that for 2.13.


-Olof
Domenico Andreoli Sept. 10, 2013, 4:16 p.m. UTC | #6
On Fri, Aug 30, 2013 at 02:58:58PM -0700, Olof Johansson wrote:
> On Fri, Aug 30, 2013 at 2:52 PM, Christian Daudt <csd@broadcom.com> wrote:
> > On 13-08-30 12:53 AM, Domenico Andreoli wrote:
> >>>>
> >>>> Index: b/arch/arm/mach-bcm/Kconfig
> >>>> ===================================================================
> >>>> --- a/arch/arm/mach-bcm/Kconfig
> >>>> +++ b/arch/arm/mach-bcm/Kconfig
> >>>> @@ -17,3 +17,10 @@ config ARCH_BCM
> >>>>           It currently supports the 'BCM281XX' family, which includes
> >>>>           BCM11130, BCM11140, BCM11351, BCM28145 and
> >>>>           BCM28155 variants.
> >>>> +
> >>>> +config ARCH_BCM4760
> >>>> +       bool "Broadcom BCM4760 based SoCs (ARM11)" if ARCH_MULTI_V6
> >>>> +       select ARM_AMBA
> >>>> +       select ARM_VIC
> >>>> +       select CLKSRC_OF
> >>>> +       select SOC_BUS
> >>>
> >>> So I think I mentioned this during previous discussions, but I think this
> >>> should be solved by having:
> >>>
> >>> config ARCH_BCM
> >>>         bool "Broadcom platforms"
> >>>         help
> >>>           This enables support for Broadcom based systems
> >>>
> >>> menu "Broadcom platform selection"
> >>>         depends on ARCH_BCM
> >>>
> >>> config ARCH_BCM281XX
> >>>         ... current ARCH_BCM contents
> >>>
> >>> config ARCH_BCM4760
> >>>         ... above conents
> >>> endmenu
> >>
> >> got it.
> >>
> >> need to sync with Christian, the current owner of ARCH_BCM.
> >
> > This is fine, but it is better to name it MOBILEBCM instead for our
> > platform, as it plan to keep it single zImage. My plan was to switch the
> > current usage of ARCH_BCM for chips to ARCH_MOBILEBCM, and then leave
> > ARCH_BCM as a generic BCM menu option as above. I can send a patch to that
> > effect if everyone is okay with that.
> 
> Sounds good. Let's do that for 2.13.

Christian, can I assume you will prepare a patch to rename ARCH_BCM or do
you prefer I include it my series, maybe simplifying the merge of it? I'm
fine with both.

Regards,
Domenico
Christian Daudt Sept. 13, 2013, 11:16 p.m. UTC | #7
On 13-09-10 09:16 AM, Domenico Andreoli wrote:
> On Fri, Aug 30, 2013 at 02:58:58PM -0700, Olof Johansson wrote:
>> On Fri, Aug 30, 2013 at 2:52 PM, Christian Daudt <csd@broadcom.com> wrote:
>>> On 13-08-30 12:53 AM, Domenico Andreoli wrote:
>>>>>> Index: b/arch/arm/mach-bcm/Kconfig
>>>>>> ===================================================================
>>>>>> --- a/arch/arm/mach-bcm/Kconfig
>>>>>> +++ b/arch/arm/mach-bcm/Kconfig
>>>>>> @@ -17,3 +17,10 @@ config ARCH_BCM
>>>>>>            It currently supports the 'BCM281XX' family, which includes
>>>>>>            BCM11130, BCM11140, BCM11351, BCM28145 and
>>>>>>            BCM28155 variants.
>>>>>> +
>>>>>> +config ARCH_BCM4760
>>>>>> +       bool "Broadcom BCM4760 based SoCs (ARM11)" if ARCH_MULTI_V6
>>>>>> +       select ARM_AMBA
>>>>>> +       select ARM_VIC
>>>>>> +       select CLKSRC_OF
>>>>>> +       select SOC_BUS
>>>>> So I think I mentioned this during previous discussions, but I think this
>>>>> should be solved by having:
>>>>>
>>>>> config ARCH_BCM
>>>>>          bool "Broadcom platforms"
>>>>>          help
>>>>>            This enables support for Broadcom based systems
>>>>>
>>>>> menu "Broadcom platform selection"
>>>>>          depends on ARCH_BCM
>>>>>
>>>>> config ARCH_BCM281XX
>>>>>          ... current ARCH_BCM contents
>>>>>
>>>>> config ARCH_BCM4760
>>>>>          ... above conents
>>>>> endmenu
>>>> got it.
>>>>
>>>> need to sync with Christian, the current owner of ARCH_BCM.
>>> This is fine, but it is better to name it MOBILEBCM instead for our
>>> platform, as it plan to keep it single zImage. My plan was to switch the
>>> current usage of ARCH_BCM for chips to ARCH_MOBILEBCM, and then leave
>>> ARCH_BCM as a generic BCM menu option as above. I can send a patch to that
>>> effect if everyone is okay with that.
>> Sounds good. Let's do that for 2.13.
> Christian, can I assume you will prepare a patch to rename ARCH_BCM or do
> you prefer I include it my series, maybe simplifying the merge of it? I'm
> fine with both.
>
> Regards,
> Domenico
>
Yes. I have a patch going through internal review, I'll post it early 
next week.
  thanks,
    csd
diff mbox

Patch

Index: b/Documentation/devicetree/bindings/arm/bcm4760.txt
===================================================================
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/bcm4760.txt
@@ -0,0 +1,8 @@ 
+Broadcom BCM4760 ARM11 SoC device tree bindings
+-----------------------------------------------
+
+Boards with the BCM4760 SoC shall have the following properties:
+
+Required root node property:
+
+compatible = "brcm,bcm4760";
Index: b/arch/arm/configs/bcm4760_defconfig
===================================================================
--- /dev/null
+++ b/arch/arm/configs/bcm4760_defconfig
@@ -0,0 +1,76 @@ 
+CONFIG_IRQ_DOMAIN_DEBUG=y
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_EMBEDDED=y
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_BLK_DEV_BSG is not set
+# CONFIG_IOSCHED_DEADLINE is not set
+# CONFIG_IOSCHED_CFQ is not set
+CONFIG_ARCH_MULTI_V6=y
+# CONFIG_ARCH_MULTI_V7 is not set
+CONFIG_ARCH_BCM4760=y
+CONFIG_ARM_ERRATA_411920=y
+CONFIG_ARM_ERRATA_364296=y
+CONFIG_AEABI=y
+CONFIG_DEPRECATED_PARAM_STRUCT=y
+CONFIG_ARM_APPENDED_DTB=y
+CONFIG_ARM_ATAG_DTB_COMPAT=y
+CONFIG_VFP=y
+# CONFIG_SUSPEND is not set
+CONFIG_DEVTMPFS=y
+CONFIG_DEVTMPFS_MOUNT=y
+CONFIG_CMA=y
+CONFIG_PROC_DEVICETREE=y
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_RAM=y
+CONFIG_SCSI=y
+# CONFIG_SCSI_PROC_FS is not set
+CONFIG_BLK_DEV_SD=y
+CONFIG_SCSI_MULTI_LUN=y
+# CONFIG_SCSI_LOWLEVEL is not set
+# CONFIG_INPUT_MOUSEDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_KEYBOARD is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_SERIO is not set
+# CONFIG_VT is not set
+# CONFIG_DEVKMEM is not set
+CONFIG_SERIAL_AMBA_PL011=y
+CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
+# CONFIG_HW_RANDOM is not set
+# CONFIG_HWMON is not set
+# CONFIG_HID is not set
+# CONFIG_USB_SUPPORT is not set
+CONFIG_COMMON_CLK_DEBUG=y
+# CONFIG_IOMMU_SUPPORT is not set
+CONFIG_EXT2_FS=y
+CONFIG_EXT3_FS=y
+# CONFIG_EXT3_FS_XATTR is not set
+CONFIG_EXT4_FS=y
+CONFIG_FANOTIFY=y
+CONFIG_MSDOS_FS=y
+CONFIG_VFAT_FS=y
+# CONFIG_PROC_PAGE_MONITOR is not set
+CONFIG_TMPFS=y
+CONFIG_CRAMFS=y
+CONFIG_ROMFS_FS=y
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_CODEPAGE_850=y
+CONFIG_NLS_ISO8859_1=y
+CONFIG_NLS_ISO8859_15=y
+CONFIG_PRINTK_TIME=y
+CONFIG_DEBUG_INFO=y
+CONFIG_DEBUG_INFO_REDUCED=y
+CONFIG_STRIP_ASM_SYMS=y
+CONFIG_DEBUG_SECTION_MISMATCH=y
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_SCHED_DEBUG is not set
+CONFIG_DEBUG_SPINLOCK=y
+CONFIG_DEBUG_MUTEXES=y
+CONFIG_DEBUG_ATOMIC_SLEEP=y
+# CONFIG_FTRACE is not set
+# CONFIG_CRYPTO_ANSI_CPRNG is not set
+# CONFIG_CRYPTO_HW is not set
Index: b/arch/arm/mach-bcm/bcm4760.c
===================================================================
--- /dev/null
+++ b/arch/arm/mach-bcm/bcm4760.c
@@ -0,0 +1,37 @@ 
+/*
+ * Broadcom BCM4760 based ARM11 SoCs platform support
+ *
+ * Copyright (C) 2012 Domenico Andreoli <domenico.andreoli@linux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+#include <linux/init.h>
+#include <linux/clk-provider.h>
+#include <linux/of_platform.h>
+
+#include <asm/mach/arch.h>
+
+static void __init bcm4760_init(void)
+{
+	of_clk_init(NULL);
+	of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
+}
+
+static const char * const bcm4760_compat[] __initconst = {
+	"brcm,bcm4760",
+	NULL
+};
+
+DT_MACHINE_START(BCM4760, "Broadcom BCM4760")
+	.init_machine = bcm4760_init,
+	.dt_compat = bcm4760_compat
+MACHINE_END
Index: b/MAINTAINERS
===================================================================
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1807,6 +1807,13 @@  F:	arch/arm/boot/dts/bcm2835*
 F:	arch/arm/configs/bcm2835_defconfig
 F:	drivers/*/*bcm2835*
 
+BROADCOM BCM4760 ARM ARCHITECTURE
+M:	Domenico Andreoli <domenico.andreoli@linux.com>
+L:	linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
+S:	Maintained
+F:	arch/arm/mach-bcm/bcm4760.c
+F:	drivers/*/*bcm4760*
+
 BROADCOM TG3 GIGABIT ETHERNET DRIVER
 M:	Nithin Nayak Sujir <nsujir@broadcom.com>
 M:	Michael Chan <mchan@broadcom.com>
Index: b/arch/arm/boot/dts/Makefile
===================================================================
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -42,6 +42,7 @@  dtb-$(CONFIG_ARCH_AT91)	+= sama5d34ek.dt
 dtb-$(CONFIG_ARCH_AT91)	+= sama5d35ek.dtb
 
 dtb-$(CONFIG_ARCH_BCM2835) += bcm2835-rpi-b.dtb
+dtb-$(CONFIG_ARCH_BCM4760) += bcm4760-catalina.dtb
 dtb-$(CONFIG_ARCH_BCM) += bcm11351-brt.dtb
 dtb-$(CONFIG_ARCH_DAVINCI) += da850-enbw-cmc.dtb \
 	da850-evm.dtb
Index: b/arch/arm/boot/dts/bcm4760-catalina.dts
===================================================================
--- /dev/null
+++ b/arch/arm/boot/dts/bcm4760-catalina.dts
@@ -0,0 +1,11 @@ 
+/dts-v1/;
+#include "bcm4760.dtsi"
+
+/ {
+	compatible = "brcm,catalina", "brcm,bcm4760";
+	model = "Broadcom Catalina";
+
+	memory {
+		reg = <0x30000000 0x4000000>;
+	};
+};
Index: b/arch/arm/boot/dts/bcm4760.dtsi
===================================================================
--- /dev/null
+++ b/arch/arm/boot/dts/bcm4760.dtsi
@@ -0,0 +1,71 @@ 
+#include "skeleton.dtsi"
+
+/ {
+	compatible = "brcm,bcm4760";
+	model = "Broadcom BCM4760";
+
+	clocks {
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		pclk: plc_m1 {
+			compatible = "fixed-clock";
+			#clock-cells = <0>;
+			clock-frequency = <100100000>;
+		};
+
+		uartclk: pla_m1 {
+			compatible = "fixed-clock";
+			#clock-cells = <0>;
+			clock-frequency = <78000000>;
+		};
+	};
+
+	amba {
+		compatible = "arm,amba-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges;
+
+		vic0: interrupt-controller@80000 {
+			compatible = "brcm,bcm4760-pl192", "arm,pl192-vic", "arm,primecell";
+			reg = <0x80000 0x1000>;
+			interrupt-controller;
+			#interrupt-cells = <1>;
+		};
+
+		vic1: interrupt-controller@81000 {
+			compatible = "brcm,bcm4760-pl192", "arm,pl192-vic", "arm,primecell";
+			reg = <0x81000 0x1000>;
+			interrupt-controller;
+			#interrupt-cells = <1>;
+		};
+
+		serial0: uart@c0000 {
+			compatible = "brcm,bcm4760-pl011", "arm,pl011", "arm,primecell";
+			reg = <0xc0000 0x1000>;
+			interrupt-parent = <&vic0>;
+			interrupts = <14>;
+			clocks = <&uartclk>, <&pclk>;
+			clock-names = "uartclk", "apb_pclk";
+		};
+
+		serial1: uart@c1000 {
+			compatible = "brcm,bcm4760-pl011", "arm,pl011", "arm,primecell";
+			reg = <0xc1000 0x1000>;
+			interrupt-parent = <&vic0>;
+			interrupts = <15>;
+			clocks = <&uartclk>, <&pclk>;
+			clock-names = "uartclk", "apb_pclk";
+		};
+
+		serial2: uart@b2000 {
+			compatible = "brcm,bcm4760-pl011", "arm,pl011", "arm,primecell";
+			reg = <0xb2000 0x1000>;
+			interrupt-parent = <&vic0>;
+			interrupts = <16>;
+			clocks = <&uartclk>, <&pclk>;
+			clock-names = "uartclk", "apb_pclk";
+		};
+	};
+};
Index: b/arch/arm/mach-bcm/Kconfig
===================================================================
--- a/arch/arm/mach-bcm/Kconfig
+++ b/arch/arm/mach-bcm/Kconfig
@@ -17,3 +17,10 @@  config ARCH_BCM
 	  It currently supports the 'BCM281XX' family, which includes
 	  BCM11130, BCM11140, BCM11351, BCM28145 and
 	  BCM28155 variants.
+
+config ARCH_BCM4760
+	bool "Broadcom BCM4760 based SoCs (ARM11)" if ARCH_MULTI_V6
+	select ARM_AMBA
+	select ARM_VIC
+	select CLKSRC_OF
+	select SOC_BUS
Index: b/arch/arm/mach-bcm/Makefile
===================================================================
--- a/arch/arm/mach-bcm/Makefile
+++ b/arch/arm/mach-bcm/Makefile
@@ -13,3 +13,5 @@ 
 obj-$(CONFIG_ARCH_BCM)		:= board_bcm.o bcm_kona_smc.o bcm_kona_smc_asm.o
 plus_sec := $(call as-instr,.arch_extension sec,+sec)
 AFLAGS_bcm_kona_smc_asm.o	:=-Wa,-march=armv7-a$(plus_sec)
+
+obj-$(CONFIG_ARCH_BCM4760)	+= bcm4760.o
Index: b/arch/arm/Makefile
===================================================================
--- a/arch/arm/Makefile
+++ b/arch/arm/Makefile
@@ -147,6 +147,7 @@  textofs-$(CONFIG_ARCH_MSM8960) := 0x0020
 machine-$(CONFIG_ARCH_AT91)		+= at91
 machine-$(CONFIG_ARCH_BCM)		+= bcm
 machine-$(CONFIG_ARCH_BCM2835)		+= bcm2835
+machine-$(CONFIG_ARCH_BCM4760)		+= bcm
 machine-$(CONFIG_ARCH_CLPS711X)		+= clps711x
 machine-$(CONFIG_ARCH_CNS3XXX)		+= cns3xxx
 machine-$(CONFIG_ARCH_DAVINCI)		+= davinci