[PATCH RFC] powerpc/mpc85xx: add support for the kmp204x reference board
Scott Wood
scottwood at freescale.com
Tue Jan 21 09:37:12 EST 2014
On Mon, 2014-01-20 at 17:38 +0100, Valentin Longchamp wrote:
> On 01/17/2014 10:48 PM, Scott Wood wrote:
> > On Fri, 2014-01-17 at 13:51 +0100, Valentin Longchamp wrote:
> >> Hi Scott,
> >>
> >> Thanks for you feedback.
> >>
> >> On 01/17/2014 12:35 AM, Scott Wood wrote:
> >>> On Thu, 2014-01-16 at 14:38 +0100, Valentin Longchamp wrote:
> >>>> This patch introduces the support for Keymile's kmp204x reference
> >>>> design. This design is based on Freescale's P2040/P2041 SoC.
> >>>>
> >>>> The peripherals used by this design are:
> >>>> - SPI NOR Flash as bootloader medium
> >>>> - NAND Flash with a ubi partition
> >>>> - 2 PCIe busses (hosts 1 and 3)
> >>>> - 3 FMAN Ethernet devices (FMAN1 DTSEC1/2/5)
> >>>> - 4 Local Bus windows, with one dedicated to the QRIO reset/power mgmt
> >>>> FPGA
> >>>> - 2 HW I2C busses
> >>>> - last but not least, the mandatory serial port
> >>>>
> >>>> The patch also adds a defconfig file for this reference design and a DTS
> >>>> file for the kmcoge4 board which is the first one based on this
> >>>> reference design.
> >>>>
> >>>> To try to avoid code duplication, the support was added directly to the
> >>>> corenet_generic.c file.
> >>>>
> >>>> Signed-off-by: Valentin Longchamp <valentin.longchamp at keymile.com>
> >>>> ---
> >>>> arch/powerpc/boot/dts/kmcoge4.dts | 165 ++++++++++++++++++
> >>>> arch/powerpc/configs/85xx/kmp204x_defconfig | 231 ++++++++++++++++++++++++++
> >>>> arch/powerpc/platforms/85xx/Kconfig | 14 ++
> >>>> arch/powerpc/platforms/85xx/Makefile | 1 +
> >>>> arch/powerpc/platforms/85xx/corenet_generic.c | 52 ++++++
> >>>> 5 files changed, 463 insertions(+)
> >>>> create mode 100644 arch/powerpc/boot/dts/kmcoge4.dts
> >>>> create mode 100644 arch/powerpc/configs/85xx/kmp204x_defconfig
> >>>>
> >>>> diff --git a/arch/powerpc/boot/dts/kmcoge4.dts b/arch/powerpc/boot/dts/kmcoge4.dts
> >>>> new file mode 100644
> >>>> index 0000000..c10df6d
> >>>> --- /dev/null
> >>>> +++ b/arch/powerpc/boot/dts/kmcoge4.dts
> >>>> @@ -0,0 +1,165 @@
> >>>> +/*
> >>>> + * Keymile kmcoge4 Device Tree Source, based on the P2041RDB DTS
> >>>> + *
> >>>> + * (C) Copyright 2014
> >>>> + * Valentin Longchamp, Keymile AG, valentin.longchamp at keymile.com
> >>>> + *
> >>>> + * Copyright 2011 Freescale Semiconductor Inc.
> >>>> + *
> >>>> + * 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.
> >>>> + */
> >>>> +
> >>>> +/include/ "fsl/p2041si-pre.dtsi"
> >>>> +
> >>>> +/ {
> >>>> + model = "keymile,kmcoge4";
> >>>> + compatible = "keymile,kmp204x";
> >>>
> >>> Don't put wildcards in compatible.
> >>
> >> Well it's a wildcard in the sense that we support both the p2040 and the p2041,
> >> but it's also the name of the plaftorm, similarly to names like '85xx' or 'tqm85xx'.
> >
> > Names like 85xx are not allowed in device trees.
> >
> > With "p204x", what would happen if a p2042 were introduced, that were
> > not compatible?
>
> What would you suggest as a generic name for the architecture that supports both ?
>
> >
> > Why isn't the compatible "keymile,kmcoge4", like the model?
>
> Because kmcoge4 is the board that is based on the kmp204x architecture/design.
> We expect other boards (kmcoge7 for instance) based on the same kmp204x design.
The top-level compatible isn't for the "architecture" or the "design".
It's for the board. Surely there's something different about kmcoge7
versus kmcoge4 -- is it visible to software?
> You would prefer that I have the model and compatible stricly the same and add
> any future board into the compatible boards[] from corenet_generic ?
That's how it's usually done. Or, at least provide the board
architecture name as a secondary compatible after the board name.
> If possible I would like to be able to see the boards that are based on a
> similar design, that's what I wanted to achieve with this kmp204x name.
Is "kmp204x" an official name of the architecture, rather than a
generalization of "kmp2040" and "kmp2041"? If there were a p2042, and
you made a board for it, is there any chance it would be called kmp204x
even if it were very different from the p2040/p2041 board?
> >>>> + zl30343 at 1 {
> >>>> + compatible = "gen,spidev";
> >>>
> >>> Node names are supposed to be generic. Compatibles are supposed to be
> >>> specific.
> >>
> >> That's a very specific device for which we only have a userspace driver and for
> >> which we must use the generic kernel spidev driver.
> >
> > The device tree describes the hardware, not what driver you want to use.
> >
> > Plus, I don't see any driver that matches "gen,spidev" nor any binding
> > for it, and "gen" doesn't make sense as a vendor prefix. The only
> > instance of that string I can find in the Linux tree is in mgcoge.dts.
>
> Well it comes from mgcoge and that's why I have used this
>
> It's for usage with the spidev driver (driver/spi/spidev.c). I agree that the
> gen brings nothing. Would
>
> spidev at 1 {
> compatible = "spidev";
>
> make more sense ?
It doesn't address any of the other comments.
> >>>> + lbc: localbus at ffe124000 {
> >>>> + reg = <0xf 0xfe124000 0 0x1000>;
> >>>> + ranges = <0 0 0xf 0xffa00000 0x00040000 /* LB 0 */
> >>>> + 1 0 0xf 0xfb000000 0x00010000 /* LB 1 */
> >>>> + 2 0 0xf 0xd0000000 0x10000000 /* LB 2 */
> >>>> + 3 0 0xf 0xe0000000 0x10000000>; /* LB 3 */
> >>>> +
> >>>> + nand at 0,0 {
> >>>> + #address-cells = <1>;
> >>>> + #size-cells = <1>;
> >>>> + compatible = "fsl,elbc-fcm-nand";
> >>>> + reg = <0 0 0x40000>;
> >>>> +
> >>>> + partition at 0 {
> >>>> + label = "ubi0";
> >>>> + reg = <0x0 0x8000000>;
> >>>> + };
> >>>> + };
> >>>> + };
> >>>
> >>> No nodes for those other chipselects?
> >>
> >> Well, there are nodes, but they are internally developed FPGAs and the drivers
> >> are not mainlined that's why I removed the nodes.
> >
> > The device tree describes the hardware, not what drivers are currently
> > mainlined in Linux.
>
> What do you want me to do: add the nodes for which there are no bindings ?
No, ideally you'd add bindings and nodes. I'm not going to insist on it
if bindings aren't ready, but please don't leave things out only because
there's no driver.
> I did this similarly to the situation with the FSL .dtsi that currently in
> mainline do not include the DPAA/QMAN/BMAN nodes.
What we've done with DPAA doesn't make a very good role model,
unfortunately.
-Scott
More information about the Linuxppc-dev
mailing list