Skip to contentSkip to conversation

Add support for generic BCM SoC chipsets

PATCH Superseded Christian Daudt 7 participants 15 messages Nov 11, 2012 – Nov 13, 2012

Subsystems (6)

v2 of 6 Superseded Latest is v6 →

lore
Share & tools
lore
#0 lore raw

PATCH v2 1/1 Add support for generic BCM SoC chipsets

In order to start upstreaming Broadcom SoC support, create
a starting hierarchy, arch and dts files.
The first support SoC family that is planned is the
BCM281XX (BCM28145/28150/28155/28160) family of dual A9 mobile SoC cores This code is just the skeleton code for get the machine upstreamed. It has been made MULTIPLATFORM compatible.
Next steps
----------
Upstream a basic set of drivers - sufficient for a console boot to ramdisk. These will includer timer, gpio, i2c drivers.
After this basic set, we will proceed with a more comprehensive set of drivers for the 281XX SoC family.

v2 patch mods
--------
- Remove l2x0_of_init call as there were problems with the code. A separate patch will be submitted with cache init code
- Rename capri files and refs to bcm281xx-based names
- Add bcm281xx binding doc
- various misc cleanups

---
 .../devicetree/bindings/arm/bcm/bcm281xx.txt       |    8 ++
 arch/arm/Kconfig                                   |    2 +
 arch/arm/Makefile                                  |    1 +
 arch/arm/boot/dts/Makefile                         |    1 +
 arch/arm/boot/dts/bcm28160-brt.dts                 |   30 +++++
 arch/arm/boot/dts/bcm281xx.dtsi                    |   50 +++++++++
 arch/arm/configs/bcm_defconfig                     |  114 ++++++++++++++++++++
 arch/arm/mach-bcm/Kconfig                          |   18 +++
 arch/arm/mach-bcm/Makefile                         |   13 +++
 arch/arm/mach-bcm/board_bcm.c                      |   58 ++++++++++
 10 files changed, 295 insertions(+), 0 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/arm/bcm/bcm281xx.txt
 create mode 100644 arch/arm/boot/dts/bcm28160-brt.dts
 create mode 100644 arch/arm/boot/dts/bcm281xx.dtsi
 create mode 100644 arch/arm/configs/bcm_defconfig
 create mode 100644 arch/arm/mach-bcm/Kconfig
 create mode 100644 arch/arm/mach-bcm/Makefile
 create mode 100644 arch/arm/mach-bcm/board_bcm.c
Documentation/devicetree/bindings/arm/bcm/bcm281xx.txt new file +8 -0
new file mode 100644
index 0000000..c47200f
@@ -0,0 +1,8 @@
+Broadcom BCM281XX device tree bindings
+-------------------------------------------
+
+Boards with the bcm281xx SoC family shall have the following properties:
+
+Required root node property:
+
+compatible = "bcm,bcm281xx";
arch/arm/Kconfig +2 -0
index ade7e92..3da77ba 100644
@@ -1022,6 +1022,8 @@ source "arch/arm/mach-mvebu/Kconfig"
 
 source "arch/arm/mach-at91/Kconfig"
 
+source "arch/arm/mach-bcm/Kconfig"
+
 source "arch/arm/mach-clps711x/Kconfig"
 
 source "arch/arm/mach-cns3xxx/Kconfig"
arch/arm/Makefile +1 -0
index 5f914fc..8523fdb 100644
@@ -137,6 +137,7 @@ textofs-$(CONFIG_ARCH_MSM8960) := 0x00208000
 # Machine directory name.  This list is sorted alphanumerically
 # by CONFIG_* macro name.
 machine-$(CONFIG_ARCH_AT91)		+= at91
+machine-$(CONFIG_ARCH_BCM)		+= bcm
 machine-$(CONFIG_ARCH_BCM2835)		+= bcm2835
 machine-$(CONFIG_ARCH_CLPS711X)		+= clps711x
 machine-$(CONFIG_ARCH_CNS3XXX)		+= cns3xxx
arch/arm/boot/dts/Makefile +1 -0
index f37cf9f..25d347a 100644
@@ -17,6 +17,7 @@ dtb-$(CONFIG_ARCH_AT91) += aks-cdu.dtb \
 	usb_a9263.dtb \
 	usb_a9g20.dtb
 dtb-$(CONFIG_ARCH_BCM2835) += bcm2835-rpi-b.dtb
+dtb-$(CONFIG_ARCH_BCM) += capri-brt.dtb
 dtb-$(CONFIG_ARCH_DOVE) += dove-cm-a510.dtb \
 	dove-cubox.dtb \
 	dove-dove-db.dtb
arch/arm/boot/dts/bcm28160-brt.dts new file +30 -0
new file mode 100644
index 0000000..1d0a217
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2012 Broadcom Corporation
+ *
+ * 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 version 2.
+ *
+ * This program is distributed "as is" WITHOUT ANY WARRANTY of any
+ * kind, whether express or implied; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+/dts-v1/;
+
+/include/ "bcm281xx.dtsi"
+
+/ {
+	model = "BCM28160 BRT board";
+	compatible = "bcm,bcm28160-brt", "bcm,bcm281xx";
+
+	memory {
+		reg = <0x80000000 0x40000000>; /* 1 GB */
+	};
+
+	uart at 3e000000 {
+		status = "okay";
+	};
+
+};
arch/arm/boot/dts/bcm281xx.dtsi new file +50 -0

50 lines not on this page · raw message

arch/arm/configs/bcm_defconfig new file +114 -0

114 lines not on this page · raw message

arch/arm/mach-bcm/Kconfig new file +18 -0
new file mode 100644
index 0000000..8c1393a
@@ -0,0 +1,18 @@
+config ARCH_BCM
+	bool "Broadcom SoC" if ARCH_MULTI_V7
+	depends on MMU
+	select ARCH_REQUIRE_GPIOLIB
+	select ARM_ERRATA_754322
+	select ARM_ERRATA_764369 if SMP
+	select ARM_GIC
+	select CPU_V7
+	select GENERIC_CLOCKEVENTS
+	select GENERIC_GPIO
+	select GENERIC_TIME
+	select GPIO_BCM
+	select SPARSE_IRQ
+	select TICK_ONESHOT
+	help
+	  This enables support for system based on Broadcom SoCs.
+          It currently supports BCM28145/28150/28155/28160 chips.
+
arch/arm/mach-bcm/Makefile new file +13 -0
new file mode 100644
index 0000000..bbf4122
@@ -0,0 +1,13 @@
+#
+# Copyright (C) 2012 Broadcom Corporation
+#
+# 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 version 2.
+#
+# This program is distributed "as is" WITHOUT ANY WARRANTY of any
+# kind, whether express or implied; without even the implied warranty
+# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+obj-$(CONFIG_ARCH_BCM) := board_bcm.o
arch/arm/mach-bcm/board_bcm.c new file +58 -0

58 lines not on this page · raw message

Signature · 1 line
1.7.1
#1 lore raw

PATCH v2 1/1 Add support for generic BCM SoC chipsets

Hi Christian,

Quoted 4 lines · On Sunday 11 November 2012 06:57:14 Christian Daudt wrote:

In order to start upstreaming Broadcom SoC support, create
a starting hierarchy, arch and dts files.
The first support SoC family that is planned is the
BCM281XX (BCM28145/28150/28155/28160) family of dual A9 mobile SoC cores

Quoted 8 lines

This code is just the skeleton code for get the machine upstreamed. It has been made MULTIPLATFORM compatible.
Next steps
----------
Upstream a basic set of drivers - sufficient for a console boot to ramdisk. These will includer timer, gpio, i2c drivers. After this basic set, we will proceed with a more comprehensive set of drivers for the 281XX SoC family.

Would not it make more sense to use mach-bcm281xx as a directory name instead of mach-bcm which sounds a tad too generic? This would also make it consistent with Domenico's mach-bcm47xx and the existing bcm47xx and bcm63xx MIPS-based SoC support.

Signature · 1 line
Florian
#2 lore raw

PATCH v2 1/1 Add support for generic BCM SoC chipsets

Quoted 16 lines · Florian Fainelli

Hi Christian,

Quoted 4 lines · On Sunday 11 November 2012 06:57:14 Christian Daudt wrote:

In order to start upstreaming Broadcom SoC support, create
a starting hierarchy, arch and dts files.
The first support SoC family that is planned is the
BCM281XX (BCM28145/28150/28155/28160) family of dual A9 mobile SoC cores

Quoted 8 lines

This code is just the skeleton code for get the machine upstreamed. It has been made MULTIPLATFORM compatible.
Next steps
----------
Upstream a basic set of drivers - sufficient for a console boot to ramdisk. These will includer timer, gpio, i2c drivers. After this basic set, we will proceed with a more comprehensive set of drivers for the 281XX SoC family.

Quoted 8 lines

Would not it make more sense to use mach-bcm281xx as a directory name instead
of mach-bcm which sounds a tad too generic? This would also make it consistent
with Domenico's mach-bcm47xx and the existing bcm47xx and bcm63xx MIPS-based
SoC support.

I'm following the other mobile ARM SoCs which all have a single mach- directory for various families of chips (mach-tegra, mach-omap2, etc...). Plus the intent is to have a single set of mach files that works across bcm SoCs, so it is preferable to keep it in a single mach-bcm.

thanks,
csd

Quoted 3 lines

--
Florian

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20121111/24d6e94c/attachment-0001.html>

#3 lore raw

PATCH v2 1/1 Add support for generic BCM SoC chipsets

Quoted 27 lines · On Sunday 11 November 2012 09:32:13 Christian Daudt wrote:
Quoted 16 lines · Florian Fainelli

Hi Christian,

Quoted 4 lines · On Sunday 11 November 2012 06:57:14 Christian Daudt wrote:

In order to start upstreaming Broadcom SoC support, create
a starting hierarchy, arch and dts files.
The first support SoC family that is planned is the
BCM281XX (BCM28145/28150/28155/28160) family of dual A9 mobile SoC cores

Quoted 8 lines

This code is just the skeleton code for get the machine upstreamed. It has been made MULTIPLATFORM compatible.
Next steps
----------
Upstream a basic set of drivers - sufficient for a console boot to ramdisk. These will includer timer, gpio, i2c drivers. After this basic set, we will proceed with a more comprehensive set of drivers for the 281XX SoC family.

Quoted 8 lines

Would not it make more sense to use mach-bcm281xx as a directory name instead
of mach-bcm which sounds a tad too generic? This would also make it consistent
with Domenico's mach-bcm47xx and the existing bcm47xx and bcm63xx MIPS-based
SoC support.

Quoted 4 lines

I'm following the other mobile ARM SoCs which all have a single mach- directory for various families of chips (mach-tegra, mach-omap2, etc...). Plus the intent is to have a single set of mach files that works across bcm SoCs, so it is preferable to keep it in a single mach-bcm.

Your argument does not make sense here, if I follow your point, these directories should have been named mach-nvidia or mach-ti respectively if I follow your convention (you use the vendor name, not a commercial product name)

I do understand your intent, yet you announce support for BCM281xx SoCs, and one of your dtsi file is bcm281xx.dtsi. At least something like mach-bcmmobile sounds better to me.

We have had the inclusion of the "socfpga" platform which is already very badly named because it does not make it clear that it is an Altera platform and not some generic SoC + FPGA platform.

Anyway, that's just my 2 cents.

Signature · 1 line
Florian
#4 lore raw

PATCH v2 1/1 Add support for generic BCM SoC chipsets

In reply to Christian Daudt
Quoted 31 lines · Christian Daudt

On Sun, Nov 11, 2012 at 7:53 AM, Florian Fainelli <[email protected] <mailto:[email protected]>> wrote:

Hi Christian,

On Sunday 11 November 2012 06:57:14 Christian Daudt wrote:
> In order to start upstreaming Broadcom SoC support, create > a starting hierarchy, arch and dts files.
> The first support SoC family that is planned is the
> BCM281XX (BCM28145/28150/28155/28160) family of dual A9 mobile SoC cores
> This code is just the skeleton code for get the machine upstreamed. It > has been made MULTIPLATFORM compatible.
> Next steps
> ----------
> Upstream a basic set of drivers - sufficient for a console boot to > ramdisk. These will includer timer, gpio, i2c drivers.
> After this basic set, we will proceed with a more comprehensive set > of drivers for the 281XX SoC family.

Would not it make more sense to use mach-bcm281xx as a directory name instead
of mach-bcm which sounds a tad too generic? This would also make it consistent
with Domenico's mach-bcm47xx and the existing bcm47xx and bcm63xx MIPS-based
SoC support.

Quoted 4 lines

I'm following the other mobile ARM SoCs which all have a single mach- directory for various families of chips (mach-tegra, mach-omap2, etc...). Plus the intent is to have a single set of mach files that works across bcm SoCs, so it is preferable to keep it in a single mach-bcm.

It's quite possible to create one directory now, e.g. mach-bcm281xx, and then when consolidation with other mach-bcm* happens, merge all those directories into a single mach-bcm. I would tend to prefer (but only lightly) using mach-bcm281xx now and then renaming later, unless you plan on expanding the SoC support in the pretty near future.

maintainer
#5 lore raw

PATCH v2 1/1 Add support for generic BCM SoC chipsets

Quoted 10 lines · Stephen Warren
Quoted 4 lines

I'm following the other mobile ARM SoCs which all have a single mach- directory for various families of chips (mach-tegra, mach-omap2, etc...). Plus the intent is to have a single set of mach files that works across bcm SoCs, so it is preferable to keep it in a single mach-bcm.

It's quite possible to create one directory now, e.g. mach-bcm281xx, and then when consolidation with other mach-bcm* happens, merge all those directories into a single mach-bcm. I would tend to prefer (but only lightly) using mach-bcm281xx now and then renaming later, unless you plan on expanding the SoC support in the pretty near future.

I think the main question is how many files we expect to see in the platform directories for each of bcm3528, bcm281xx and bcm476x. Right now, my feeling is that each of them can be a single file, since most of the stuff that has traditionally been in mach-* directories is moving out to drivers now.

If that is the case, having one directory for each platform is a little silly and we should just stick them all in one place, using the "mach-bcm" name more as a help for people looking for the code than an indication of being a single soc family or maintained by the same person. We already have some precedent in shmobile, which contains some platforms that were completely distinct at the time they were introduced.

You still have to work out how you want to maintain that directory though, either just having per-file maintainers, or having multiple people take responsible for the entire directory.

Arnd

#6 lore raw

PATCH v2 1/1 Add support for generic BCM SoC chipsets

Quoted 12 lines · Arnd Bergmann
Quoted 10 lines · Stephen Warren
Quoted 4 lines

I'm following the other mobile ARM SoCs which all have a single mach- directory for various families of chips (mach-tegra, mach-omap2, etc...). Plus the intent is to have a single set of mach files that works across bcm SoCs, so it is preferable to keep it in a single mach-bcm.

It's quite possible to create one directory now, e.g. mach-bcm281xx, and then when consolidation with other mach-bcm* happens, merge all those directories into a single mach-bcm. I would tend to prefer (but only lightly) using mach-bcm281xx now and then renaming later, unless you plan on expanding the SoC support in the pretty near future.

Quoted 5 lines

I think the main question is how many files we expect to see in the platform directories for each of bcm3528, bcm281xx and bcm476x. Right now, my feeling is that each of them can be a single file, since most of the stuff that has traditionally been in mach-* directories is moving out to drivers now.

I expect only DT-only stuff will be mainlined so one directory (plat-brcm?) should be ok, right?

Quoted 3 lines

You still have to work out how you want to maintain that directory though, either just having per-file maintainers, or having multiple people take responsible for the entire directory.

I'd like to take care of the bcm476x and related drivers unless Broadcom wants to do it. Let me know in which directory.

Regards,
Domenico

maintainer
#7 lore raw

PATCH v2 1/1 Add support for generic BCM SoC chipsets

Quoted 13 lines · Domenico Andreoli
Quoted 12 lines · Arnd Bergmann
Quoted 10 lines · Stephen Warren
Quoted 4 lines

I'm following the other mobile ARM SoCs which all have a single mach- directory for various families of chips (mach-tegra, mach-omap2, etc...). Plus the intent is to have a single set of mach files that works across bcm SoCs, so it is preferable to keep it in a single mach-bcm.

It's quite possible to create one directory now, e.g. mach-bcm281xx, and then when consolidation with other mach-bcm* happens, merge all those directories into a single mach-bcm. I would tend to prefer (but only lightly) using mach-bcm281xx now and then renaming later, unless you plan on expanding the SoC support in the pretty near future.

Quoted 8 lines
Quoted 5 lines

I think the main question is how many files we expect to see in the platform directories for each of bcm3528, bcm281xx and bcm476x. Right now, my feeling is that each of them can be a single file, since most of the stuff that has traditionally been in mach-* directories is moving out to drivers now.

I expect only DT-only stuff will be mainlined so one directory (plat-brcm?) should be ok, right?

Right. The usual naming is to use 'mach-*' for one platform, and 'plat-*' for stuff that spreads multiple 'mach-*' directories. In this case, the name I would expect is either 'mach-bcm' as Christian suggested, or 'mach-brcm' if people have strong opinions in favor of that, but not 'plat-brcm'.

Quoted 6 lines
Quoted 3 lines

You still have to work out how you want to maintain that directory though, either just having per-file maintainers, or having multiple people take responsible for the entire directory.

I'd like to take care of the bcm476x and related drivers unless Broadcom wants to do it.

Yes, of course.

Quoted 1 line

Let me know in which directory.

I'll let you work that out with Stephen and Christian. I think just 'mach-bcm' is sufficent, but I think the three of you should come to an agreement first.

Arnd

#8 lore raw

PATCH v2 1/1 Add support for generic BCM SoC chipsets

Quoted 36 lines · Arnd Bergmann
Quoted 13 lines · Domenico Andreoli
Quoted 12 lines · Arnd Bergmann
Quoted 10 lines · Stephen Warren
Quoted 4 lines

I'm following the other mobile ARM SoCs which all have a single mach- directory for various families of chips (mach-tegra, mach-omap2, etc...). Plus the intent is to have a single set of mach files that works across bcm SoCs, so it is preferable to keep it in a single mach-bcm.

It's quite possible to create one directory now, e.g. mach-bcm281xx, and then when consolidation with other mach-bcm* happens, merge all those directories into a single mach-bcm. I would tend to prefer (but only lightly) using mach-bcm281xx now and then renaming later, unless you plan on expanding the SoC support in the pretty near future.

Quoted 8 lines
Quoted 5 lines

I think the main question is how many files we expect to see in the platform directories for each of bcm3528, bcm281xx and bcm476x. Right now, my feeling is that each of them can be a single file, since most of the stuff that has traditionally been in mach-* directories is moving out to drivers now.

I expect only DT-only stuff will be mainlined so one directory (plat-brcm?) should be ok, right?

Right. The usual naming is to use 'mach-*' for one platform, and 'plat-*' for stuff that spreads multiple 'mach-*' directories. In this case, the name I would expect is either 'mach-bcm' as Christian suggested, or 'mach-brcm' if people have strong opinions in favor of that, but not 'plat-brcm'.

Quoted 6 lines
Quoted 3 lines

You still have to work out how you want to maintain that directory though, either just having per-file maintainers, or having multiple people take responsible for the entire directory.

I'd like to take care of the bcm476x and related drivers unless Broadcom wants to do it.

Quoted 7 lines

Yes, of course.

Quoted 1 line

Let me know in which directory.

I'll let you work that out with Stephen and Christian. I think just 'mach-bcm' is sufficent, but I think the three of you should come to an agreement first.

I don't really have too strong of a preference. If the eventual intent is for the directory to host all ARM Broadcom SoCs, then mach-bcm seems reasonable.

#9 lore raw

PATCH v2 1/1 Add support for generic BCM SoC chipsets

Quoted 33 lines · Stephen Warren
Quoted 32 lines · Arnd Bergmann
Quoted 11 lines · Domenico Andreoli
Quoted 10 lines · Arnd Bergmann
Quoted 9 lines · Stephen Warren
Quoted 4 lines

I'm following the other mobile ARM SoCs which all have a single mach- directory for various families of chips (mach-tegra, mach-omap2, etc...). Plus the intent is to have a single set of mach files that works across bcm SoCs, so it is preferable to keep it in a single mach-bcm.

It's quite possible to create one directory now, e.g. mach-bcm281xx, and then when consolidation with other mach-bcm* happens, merge all those directories into a single mach-bcm. I would tend to prefer (but only lightly) using mach-bcm281xx now and then renaming later, unless you plan on expanding the SoC support in the pretty near future.

Quoted 7 lines
Quoted 5 lines

I think the main question is how many files we expect to see in the platform directories for each of bcm3528, bcm281xx and bcm476x. Right now, my feeling is that each of them can be a single file, since most of the stuff that has traditionally been in mach-* directories is moving out to drivers now.

I expect only DT-only stuff will be mainlined so one directory (plat-brcm?) should be ok, right?

Right. The usual naming is to use 'mach-*' for one platform, and 'plat-*' for stuff that spreads multiple 'mach-*' directories. In this case, the name I would expect is either 'mach-bcm' as Christian suggested, or 'mach-brcm' if people have strong opinions in favor of that, but not 'plat-brcm'.

Quoted 5 lines
Quoted 3 lines

You still have to work out how you want to maintain that directory though, either just having per-file maintainers, or having multiple people take responsible for the entire directory.

I'd like to take care of the bcm476x and related drivers unless Broadcom wants to do it.

Yes, of course.

Quoted 8 lines
Quoted 4 lines
Quoted 1 line

Let me know in which directory.

I'll let you work that out with Stephen and Christian. I think just 'mach-bcm' is sufficent, but I think the three of you should come to an agreement first.

I don't really have too strong of a preference. If the eventual intent is for the directory to host all ARM Broadcom SoCs, then mach-bcm seems reasonable.

Ok, sounds like sticking to mach-bcm has sufficient acks. What I was thinking of doing is, once mach-bcm had been introduced, to propose to pull in the 476x and 2835 into also, to do some consolidation. And have the separate files can keep separate owners - we'd just have Kconfig + Makefile shared most likely.
Or not. Ultimately I don't mind keeping 2835 and 476x as separate
mach- either. Those are v6 SoCs, and at this point I have no plans on working on mobile v6 SoCs, only v7 onwards. So we can also say that mach-bcm is for v7+ SoCs and v6 SoCs keep their existing mach- dirs for now.
I personally have no strong preference either, just went with mach-bcm
because, as Arnd mentioned, going forward these are going to be mostly empty dirs if we stick to one dir per chipset family. So unless there are strong objections, I'll just stick to mach-bcm for my patches, and if Stephen and/or Domenico want to consolidate into a single dir later, we can do that. If not, we can stick to these 3 dirs.

Thanks,
csd

#10 lore raw

PATCH v2 1/1 Add support for generic BCM SoC chipsets

Quoted 1 line · Christian Daudt

On 12-11-12 09:15 AM, Stephen Warren wrote:

...

Quoted 9 lines
Quoted 4 lines

I don't really have too strong of a preference. If the eventual intent is for the directory to host all ARM Broadcom SoCs, then mach-bcm seems reasonable.

Ok, sounds like sticking to mach-bcm has sufficient acks. What I was thinking of doing is, once mach-bcm had been introduced, to propose to pull in the 476x and 2835 into also, to do some consolidation. And have the separate files can keep separate owners - we'd just have Kconfig + Makefile shared most likely.

ok also for me

Quoted 5 lines

Or not. Ultimately I don't mind keeping 2835 and 476x as separate
mach- either. Those are v6 SoCs, and at this point I have no plans on working on mobile v6 SoCs, only v7 onwards. So we can also say that mach-bcm is for v7+ SoCs and v6 SoCs keep their existing mach- dirs for now.

bcm476x is a non-existent directory yet so I'll be happy to switch to mach-bcm at the next round (*).

thanks,
Domenico

(*) I'm a bit late with it because I've been distracted by a crazy way to track kernel regressions I'm hacking on. it's an experiment to test a few ideas: http://filibusta.crema.unimi.it/~cavok/kbts/. early comments are very welcome.

#11 lore raw

PATCH v2 1/1 Add support for generic BCM SoC chipsets

In reply to Christian Daudt

arch/arm/mach-bcm/board_bcm.c line 19

Quoted 6 lines · Christian Daudt
arch/arm/mach-bcm/board_bcm.c new file +6 -0
+#include <linux/of_irq.h>
+#include <linux/of_platform.h>
+#include <linux/init.h>
+#include <linux/device.h>
+#include <linux/platform_device.h>
+#include <asm/io.h>

Please use linux/io.h rather than asm/io.h throughout your patch sets. However, I don't see anything in this file which requires this header, so it's better off being removed entirely.

#12 lore raw

PATCH v2 1/1 Add support for generic BCM SoC chipsets

Quoted 11 lines · Russell King - ARM Linux

arch/arm/mach-bcm/board_bcm.c line 19

Quoted 6 lines · Christian Daudt
arch/arm/mach-bcm/board_bcm.c new file +6 -0
+#include <linux/of_irq.h>
+#include <linux/of_platform.h>
+#include <linux/init.h>
+#include <linux/device.h>
+#include <linux/platform_device.h>
+#include <asm/io.h>

Please use linux/io.h rather than asm/io.h throughout your patch sets. However, I don't see anything in this file which requires this header, so it's better off being removed entirely.

that will be required later, but you're right. It is not being used at this point so I've removed it.
thanks,
csd

#13 lore raw

PATCH v2 1/1 Add support for generic BCM SoC chipsets

In reply to Christian Daudt

arch/arm/boot/dts/Makefile

Quoted 11 lines · Christian Daudt

In order to start upstreaming Broadcom SoC support, create
a starting hierarchy, arch and dts files.
The first support SoC family that is planned is the
BCM281XX (BCM28145/28150/28155/28160) family of dual A9 mobile SoC cores This code is just the skeleton code for get the machine upstreamed. It has been made MULTIPLATFORM compatible.
Next steps

arch/arm/boot/dts/Makefile +1 -0
 
+dtb-$(CONFIG_ARCH_BCM) += capri-brt.dtb

I think that needs to be renamed too.

arch/arm/boot/dts/bcm281xx.dtsi line 18

Quoted 5 lines
arch/arm/boot/dts/bcm281xx.dtsi +3 -0
 
+/ {
+	model = "BCM281xx SoC";
+	compatible = "bcm,bcm281xx";

I think this should list the specific SoC rather than (or perhaps in addition to) a wildcard.

Out of curiosity though, what kind of differences exist between the various SoCs this wildcard is intended to cover; bcm28145/28150/28155/28160? Are they simply package/pinout differences, or something more involved?

arch/arm/boot/dts/bcm281xx.dtsi line 35

Quoted 2 lines
arch/arm/boot/dts/bcm281xx.dtsi +2 -0
+	uart at 3e000000 {
+		compatible = "snps,dw-apb-uart";

As I mentioned in my earlier reply, I think this should indicate the specific instantiation of the IP too; something like bcm,bcm28160-dw-apb-uart.

arch/arm/mach-bcm/Kconfig line 17

Quoted 5 lines
arch/arm/mach-bcm/Kconfig +3 -0
 
+	help
+	  This enables support for system based on Broadcom SoCs.
+          It currently supports BCM28145/28150/28155/28160 chips.

The indentation looks a little odd there.

arch/arm/mach-bcm/board_bcm.c

Quoted 3 lines
arch/arm/mach-bcm/board_bcm.c +1 -0
 
+static const char * const capri_dt_compat[] = { "bcm,capri", NULL, };

I think that needs to be updated too.

#14 lore raw

PATCH v2 1/1 Add support for generic BCM SoC chipsets

Quoted 11 lines · Stephen Warren

arch/arm/boot/dts/Makefile dtb-$(CONFIG_ARCH_AT91) += aks-cdu.dtb \ · line 20

Quoted 9 lines · Christian Daudt

In order to start upstreaming Broadcom SoC support, create
a starting hierarchy, arch and dts files.
The first support SoC family that is planned is the
BCM281XX (BCM28145/28150/28155/28160) family of dual A9 mobile SoC cores This code is just the skeleton code for get the machine upstreamed. It has been made MULTIPLATFORM compatible.
Next steps

arch/arm/boot/dts/Makefile +1 -0
+dtb-$(CONFIG_ARCH_BCM) += capri-brt.dtb

I think that needs to be renamed too.

done

Quoted 7 lines

arch/arm/boot/dts/bcm281xx.dtsi line 18

Quoted 5 lines
arch/arm/boot/dts/bcm281xx.dtsi +3 -0
+/ {
+	model = "BCM281xx SoC";
+	compatible = "bcm,bcm281xx";

I think this should list the specific SoC rather than (or perhaps in addition to) a wildcard.

The idea here is that bcm281xx contains the family-wide definitions, and once there are multiple boards that use the same specific chip then I'd create a chip-specific dtsi file. So eventually it'd be:
bcm281xx.dtsi - for the family

bcm28145.dtsi
bcm28155.dtsi
... for chip-specific

and
bcm28160-brt.dts
... for board specific.

But to simplify I'm just starting with bcm281xx and bcm28160-brt

Quoted 4 lines

Out of curiosity though, what kind of differences exist between the various SoCs this wildcard is intended to cover; bcm28145/28150/28155/28160? Are they simply package/pinout differences, or something more involved?

It mostly revolves around single or dual memory controller, and POP or external DDR. I've only used internal names prior to upstreaming, and it turns out that my understanding of the numbering is not quite right, so I'll be adjusting the patchset a bit before sending the next version out.

Quoted 5 lines

arch/arm/boot/dts/bcm281xx.dtsi line 35

Quoted 2 lines
arch/arm/boot/dts/bcm281xx.dtsi +2 -0
+	uart at 3e000000 {
+		compatible = "snps,dw-apb-uart";

As I mentioned in my earlier reply, I think this should indicate the specific instantiation of the IP too; something like bcm,bcm28160-dw-apb-uart.

ok. added.

Quoted 5 lines

arch/arm/mach-bcm/Kconfig line 17

Quoted 4 lines
arch/arm/mach-bcm/Kconfig +3 -0
+	help
+	  This enables support for system based on Broadcom SoCs.
+          It currently supports BCM28145/28150/28155/28160 chips.

The indentation looks a little odd there.

fixed.

Quoted 3 lines

arch/arm/mach-bcm/board_bcm.c line 50

Quoted 2 lines
arch/arm/mach-bcm/board_bcm.c +1 -0
+static const char * const capri_dt_compat[] = { "bcm,capri", NULL, };

I think that needs to be updated too.

fixed.

Quoted 1 line