tegra124: Add support for Avionic Design platform
Subsystems (3)
cover tegra124: Add support for Avionic Design platform
This adds support for the Avionic Design Tegra124 platform. It consists of the Meerkat SOM and a minimal baseboard Kein Baseboard.
The as3722 is placed on a different bus as compared to nvidia Jetson, which makes the as3722 required.
Alban Bedel (1):
power: as3722: Allow using on any i2c bus with any address
Julian Scheel (1):
Add support the Avionic Design Meerkat COM and Kein Baseboard
arch/arm/dts/Makefile | 1 + arch/arm/dts/tegra124-kein-baseboard.dts | 66 ++++ arch/arm/dts/tegra124-meerkat.dtsi | 395 +++++++++++++++++++++ arch/arm/mach-tegra/board2.c | 2 +- arch/arm/mach-tegra/tegra124/Kconfig | 9 + board/avionic-design/common/meerkat.c | 70 ++++ .../avionic-design/common/pinmux-config-meerkat.h | 233 ++++++++++++ board/avionic-design/kein-baseboard/Kconfig | 15 + board/avionic-design/kein-baseboard/MAINTAINERS | 7 + board/avionic-design/kein-baseboard/Makefile | 9 + board/nvidia/jetson-tk1/jetson-tk1.c | 2 +- configs/kein-baseboard_defconfig | 21 ++ drivers/power/as3722.c | 4 +- include/configs/kein-baseboard.h | 76 ++++ include/power/as3722.h | 2 +- 15 files changed, 906 insertions(+), 6 deletions(-) create mode 100644 arch/arm/dts/tegra124-kein-baseboard.dts create mode 100644 arch/arm/dts/tegra124-meerkat.dtsi create mode 100644 board/avionic-design/common/meerkat.c create mode 100644 board/avionic-design/common/pinmux-config-meerkat.h create mode 100644 board/avionic-design/kein-baseboard/Kconfig create mode 100644 board/avionic-design/kein-baseboard/MAINTAINERS create mode 100644 board/avionic-design/kein-baseboard/Makefile create mode 100644 configs/kein-baseboard_defconfig create mode 100644 include/configs/kein-baseboard.h
Signature · 1 line
2.7.1
PATCH 1/2 power: as3722: Allow using on any i2c bus with any address
From: Alban Bedel <[email protected]>
The init simply hardcoded the i2c bus and address to those used on jetson. Extend the init function to take the bus number and device address as parameter. As only jetson is using this code for now just fix this single use of the function.
--- arch/arm/mach-tegra/board2.c | 2 +- board/nvidia/jetson-tk1/jetson-tk1.c | 2 +- drivers/power/as3722.c | 4 +--- include/power/as3722.h | 2 +- 4 files changed, 4 insertions(+), 6 deletions(-)
arch/arm/mach-tegra/board2.c +1 -1
@@ -148,7 +148,7 @@ int board_init(void)# endif # endif /* CONFIG_TEGRA_PMU */ #ifdef CONFIG_AS3722_POWER - err =as3722_init (NULL ); + err =as3722_init (NULL ,0 ,0x40 );if (err && err != -ENODEV )return err;#endif
board/nvidia/jetson-tk1/jetson-tk1.c +1 -1
@@ -39,7 +39,7 @@ int tegra_pcie_board_init(void)struct udevice *pmic;int err; - err =as3722_init (&pmic); + err =as3722_init (&pmic,0 ,0x40 );if (err) {error ("failed to initialize AS3722 PMIC: %d\n" , err);return err;
drivers/power/as3722.c +1 -3
@@ -243,12 +243,10 @@ int as3722_get(struct udevice **devp)return i2c_get_chip_for_busnum (bus, address,1 , devp); } -int as3722_init (struct udevice **devp) +int as3722_init (struct udevice **devp,unsigned int bus,unsigned int address) {struct udevice *pmic;u8 id, revision; -const unsigned int bus =0 ; -const unsigned int address =0x40 ;int err; err =i2c_get_chip_for_busnum (bus, address,1 , &pmic);
include/power/as3722.h +1 -1
@@ -14,7 +14,7 @@struct udevice ; -int as3722_init (struct udevice **devp); +int as3722_init (struct udevice **devp,unsigned int bus,unsigned int address);int as3722_sd_enable (struct udevice *pmic,unsigned int sd);int as3722_sd_set_voltage (struct udevice *pmic,unsigned int sd,u8 value);int as3722_ldo_enable (struct udevice *pmic,unsigned int ldo);
Signature · 1 line
2.7.1
PATCH 1/2 power: as3722: Allow using on any i2c bus with any address
Quoted 9 lines · Julian Scheel
From: Alban Bedel <[email protected]>
The init simply hardcoded the i2c bus and address to those used on jetson. Extend the init function to take the bus number and device address as parameter. As only jetson is using this code for now just fix this single use of the function.
Signed-off-by Alban Bedel <[email protected]>Reviewed-by Julian Scheel <[email protected]>
Since you (Julian) are submitting this, it should be s-o-b you too.
Irrespective of my comments on the cover letter, this patch seems fine, so once the s-o-b is fixed,
PATCH 2/2 Add support the Avionic Design Meerkat COM and Kein Baseboard
In reply to Julian ScheelAdd support for platforms based on the Meerkat COM module. Includes support for the minimal reference platform called Kein Baseboard, which in fact is sufficient to run most existing Meerkat carriers.
--- arch/arm/dts/Makefile | 1 + arch/arm/dts/tegra124-kein-baseboard.dts | 66 ++++ arch/arm/dts/tegra124-meerkat.dtsi | 395 +++++++++++++++++++++ arch/arm/mach-tegra/tegra124/Kconfig | 9 + board/avionic-design/common/meerkat.c | 70 ++++ .../avionic-design/common/pinmux-config-meerkat.h | 233 ++++++++++++ board/avionic-design/kein-baseboard/Kconfig | 15 + board/avionic-design/kein-baseboard/MAINTAINERS | 7 + board/avionic-design/kein-baseboard/Makefile | 9 + configs/kein-baseboard_defconfig | 21 ++ include/configs/kein-baseboard.h | 76 ++++ 11 files changed, 902 insertions(+) create mode 100644 arch/arm/dts/tegra124-kein-baseboard.dts create mode 100644 arch/arm/dts/tegra124-meerkat.dtsi create mode 100644 board/avionic-design/common/meerkat.c create mode 100644 board/avionic-design/common/pinmux-config-meerkat.h create mode 100644 board/avionic-design/kein-baseboard/Kconfig create mode 100644 board/avionic-design/kein-baseboard/MAINTAINERS create mode 100644 board/avionic-design/kein-baseboard/Makefile create mode 100644 configs/kein-baseboard_defconfig create mode 100644 include/configs/kein-baseboard.h
arch/arm/dts/Makefile +1 -0
@@ -41,6 +41,7 @@ dtb-$(CONFIG_TEGRA) += tegra20-harmony.dtb \ tegra30-tec-ng.dtb \ tegra114-dalmore.dtb \ tegra124-jetson-tk1.dtb \ + tegra124-kein-baseboard.dtb \ tegra124-nyan-big.dtb \ tegra124-venice2.dtb \ tegra210-e2220-1170.dtb \
arch/arm/dts/tegra124-kein-baseboard.dts new file +66 -0
66 lines not on this page · raw message
arch/arm/dts/tegra124-meerkat.dtsi new file +395 -0
395 lines not on this page · raw message
arch/arm/mach-tegra/tegra124/Kconfig +9 -0
@@ -21,6 +21,14 @@ config TARGET_NYAN_BIG config TARGET_VENICE2 bool "NVIDIA Tegra124 Venice2" +config TARGET_KBB + bool "Avionic Design Kein Baseboard" + select CPU_V7_HAS_NONSEC if !SPL_BUILD + select CPU_V7_HAS_VIRT if !SPL_BUILD + help + Minimal baseboard for Avionic Design Meerkat COM. Should work with most + baseboard that follow the reference design. + endchoice config SYS_SOC
@@ -29,5 +37,6 @@ config SYS_SOC source "board/nvidia/jetson-tk1/Kconfig" source "board/nvidia/nyan-big/Kconfig" source "board/nvidia/venice2/Kconfig" +source "board/avionic-design/kein-baseboard/Kconfig" endif
board/avionic-design/common/meerkat.c new file +70 -0
70 lines not on this page · raw message
board/avionic-design/common/pinmux-config-meerkat.h new file +233 -0
233 lines not on this page · raw message
board/avionic-design/kein-baseboard/Kconfig new file +15 -0
@@ -0,0 +1,15 @@ +if TARGET_KBB + +config SYS_BOARD + string + default "kein-baseboard" + +config SYS_VENDOR + string + default "avionic-design" + +config SYS_CONFIG_NAME + string + default "kein-baseboard" + +endif
board/avionic-design/kein-baseboard/MAINTAINERS new file +7 -0
@@ -0,0 +1,7 @@ +Kein Baseboard +M: Julian Scheel <[email protected]> +M: Alban Bedel <[email protected]> +S: Maintained +F: board/avionic-design/kein-baseboard +F: include/configs/kein-baseboard.h +F: configs/kein-baseboard_defconfig
board/avionic-design/kein-baseboard/Makefile new file +9 -0
@@ -0,0 +1,9 @@ +# +# (C) Copyright 2015 +# Avionic Design GmbH <www.avionic-design.de> +# +# SPDX-License-Identifier: GPL-2.0+ +# + +obj-y += ../../nvidia/venice2/as3722_init.o +obj-y += ../common/meerkat.o
configs/kein-baseboard_defconfig new file +21 -0
@@ -0,0 +1,21 @@ +CONFIG_ARM=y +CONFIG_TEGRA=y +CONFIG_SPL_DM=y +CONFIG_TEGRA124=y +CONFIG_TARGET_KBB=y +CONFIG_DEFAULT_DEVICE_TREE="tegra124-kein-baseboard" +CONFIG_SYS_PROMPT="Tegra124 (kein-baseboard) # " +# CONFIG_CMD_IMI is not set +# CONFIG_CMD_IMLS is not set +# CONFIG_CMD_FLASH is not set +# CONFIG_CMD_FPGA is not set +CONFIG_CMD_GPIO=y +CONFIG_CMD_GPT=y +# CONFIG_CMD_SETEXPR is not set +# CONFIG_CMD_NFS is not set +CONFIG_PCI_TEGRA=y +CONFIG_SYS_NS16550=y +CONFIG_USB=y +CONFIG_DM_USB=y +CONFIG_USE_PRIVATE_LIBGCC=y +CONFIG_RADOM_UUID=y
include/configs/kein-baseboard.h new file +76 -0
76 lines not on this page · raw message
Signature · 1 line
2.7.1
PATCH 2/2 Add support the Avionic Design Meerkat COM and Kein Baseboard
arch/arm/dts/tegra124-meerkat.dtsi line 14
Quoted 13 lines · Julian Scheel
Add support for platforms based on the Meerkat COM module. Includes support for the minimal reference platform called Kein Baseboard, which in fact is sufficient to run most existing Meerkat carriers.
arch/arm/dts/tegra124-meerkat.dtsi +7
-0+ aliases { + i2c0 = "/i2c at 7000c000"; + i2c1 = "/i2c at 7000c400"; + i2c2 = "/i2c at 7000c500"; + i2c3 = "/i2c at 7000c700"; + i2c4 = "/i2c at 7000d000"; + i2c5 = "/i2c at 7000d100";
/i2c at 7000d000 is alias i2c0 on all other Tegra boards that have I2C aliases.
arch/arm/mach-tegra/tegra124/Kconfig config TARGET_NYAN_BIG · line 30
Quoted 9 lines
arch/arm/mach-tegra/tegra124/Kconfig +7
-0+config TARGET_KBB + bool "Avionic Design Kein Baseboard" + select CPU_V7_HAS_NONSEC if !SPL_BUILD + select CPU_V7_HAS_VIRT if !SPL_BUILD + help + Minimal baseboard for Avionic Design Meerkat COM. Should work with most + baseboard that follow the reference design.
I hope "KBB" doesn't turn out to be too generic and cause conflicts. I might suggest TARGET_AD_KBB. However, I suppose we can just rename this if it becomes a problem later, so perhaps it isn't worth fixing.
Quoted 6 lines
board/avionic-design/common/meerkat.c +3
-0+int tegra_pcie_board_init (void ) + err =as3722_gpio_configure (pmic,1 ,AS3722_GPIO_OUTPUT_VDDH | +AS3722_GPIO_INVERT );
board/avionic-design/common/meerkat.c line 66
Quoted 10 lines
board/avionic-design/common/meerkat.c +10
-0+if (err <0 ) { +error ("failed to configure GPIO#1 as output: %d\n" , err); +return err; + } + + err =as3722_gpio_direction_output (pmic,2 ,1 ); +if (err <0 ) { +error ("failed to set GPIO#2 high: %d\n" , err); +return err; + }
Those two GPIO manipulations should likely be removed; see the recent change to similar code in jetson-tk1.c.
board/avionic-design/common/pinmux-config-meerkat.h
Quoted 1 line
board/avionic-design/common/pinmux-config-meerkat.h +0
-0
I'd like to see the pinmux config for this board added to
https://github.com/NVIDIA/tegra-pinmux-scripts
That way, if we want to support other SW stacks and/or e.g. change the structure of these pinmux tables, we can simply re-generate this file with no issue.
Was this file auto-generated using a downstream version of tegra-pinmux-scripts? There's no comment indicating it was, and the most recent tegra-pinmux-scripts does add such a comment...
board/avionic-design/kein-baseboard/Kconfig
Quoted 3 lines
board/avionic-design/kein-baseboard/Kconfig +1
-0+if TARGET_KBB
It'd be nice if this directory name matched the Kconfig symbol.
include/configs/kein-baseboard.h
Quoted 5 lines
configs/kein-baseboard_defconfig +0
-0include/configs/kein-baseboard.h +1
-0+#define CONFIG_USB_MAX_CONTROLLER_COUNT 3
That define shouldn't be necessary any more, following the conversion of Tegra to DM USB.
Quoted 1 line
+#define
CONFIG_CMD_PCI_ENUM
That define shouldn't be necessary any more, following the conversion of Tegra to DM PCI.
PATCH 2/2 Add support the Avionic Design Meerkat COM and Kein Baseboard
Quoted 18 lines · Stephen Warren
Quoted 8 lines · Julian Scheel
Add support for platforms based on the Meerkat COM module. Includes support
for the minimal reference platform called Kein Baseboard, which in fact is
sufficient to run most existing Meerkat carriers.arch/arm/dts/tegra124-meerkat.dtsi line 14
Quoted 8 lines
arch/arm/dts/tegra124-meerkat.dtsi +7
-0+ aliases { + i2c0 = "/i2c at 7000c000"; + i2c1 = "/i2c at 7000c400"; + i2c2 = "/i2c at 7000c500"; + i2c3 = "/i2c at 7000c700"; + i2c4 = "/i2c at 7000d000"; + i2c5 = "/i2c at 7000d100";
Quoted 2 lines
/i2c at
7000d000is alias i2c0 on all other Tegra boards that have I2C aliases.
See topic mail, I think we can change that.
Quoted 12 lines
Quoted 11 lines
arch/arm/mach-tegra/tegra124/Kconfig +6
-0+config TARGET_KBB + bool "Avionic Design Kein Baseboard" + select CPU_V7_HAS_NONSEC if !SPL_BUILD + select CPU_V7_HAS_VIRT if !SPL_BUILD + help + Minimal baseboard for Avionic Design Meerkat COM. Should workwith most
+ baseboard that follow the reference design.
Quoted 3 lines
I hope "KBB" doesn't turn out to be too generic and cause conflicts. I might suggest
TARGET_AD_KBB. However, I suppose we can just rename this if it becomes a problem later, so perhaps it isn't worth fixing.
I think changing to TARGET_KEIN_BASEBOARD might be the best? Matches the directory name and is unlikely to conflict with anything... Only a bit bulky.
Quoted 18 lines
Quoted 7 lines
board/avionic-design/common/meerkat.c +3
-0+int tegra_pcie_board_init (void ) + err =as3722_gpio_configure (pmic,1 ,AS3722_GPIO_OUTPUT_VDDH | +AS3722_GPIO_INVERT );board/avionic-design/common/meerkat.c line 66
Quoted 10 lines
board/avionic-design/common/meerkat.c +10
-0+if (err <0 ) { +error ("failed to configure GPIO#1 as output: %d\n" , err); +return err; + } + + err =as3722_gpio_direction_output (pmic,2 ,1 ); +if (err <0 ) { +error ("failed to set GPIO#2 high: %d\n" , err); +return err; + }
Quoted 2 lines
Those two GPIO manipulations should likely be removed; see the recent change to similar code in
jetson-tk1.c.
Ack. I think this code was shamelessly stolen from jetson-tk1.c without rethinking, anyway.
Quoted 6 lines
board/avionic-design/common/pinmux-config-meerkat.h
Quoted 2 lines
board/avionic-design/common/pinmux-config-meerkat.h +0
-0I'd like to see the pinmux config for this board added to
https://github.com/NVIDIA/tegra-pinmux-scripts
Quoted 7 lines
That way, if we want to support other SW stacks and/or e.g. change the structure of these pinmux tables, we can simply re-generate this file with no issue.
Was this file auto-generated using a downstream version of tegra-pinmux-scripts? There's no comment indicating it was, and the most recent tegra-pinmux-scripts does add such a comment...
In fact this pinmux is handcrafted and we do not maintain that excel sheet which tegra-pinmux-scripts uses.
I'll start a discussion internally if we could provide it with reasonable effort.
Quoted 6 lines
board/avionic-design/kein-baseboard/Kconfig
Quoted 4 lines
board/avionic-design/kein-baseboard/Kconfig +1
-0+if TARGET_KBBIt'd be nice if this directory name matched the
Kconfigsymbol.
See above.
Quoted 10 lines
include/configs/kein-baseboard.h
Quoted 7 lines
configs/kein-baseboard_defconfig +0
-0include/configs/kein-baseboard.h +1
-0+#define CONFIG_USB_MAX_CONTROLLER_COUNT 3That define shouldn't be necessary any more, following the conversion of Tegra to DM USB.
Ack, didn't spot that when rebasing to recent u-boot.
Quoted 4 lines
Quoted 1 line
+#define
CONFIG_CMD_PCI_ENUMThat define shouldn't be necessary any more, following the conversion of Tegra to DM PCI.
Ack again.
Thanks for the super fast review :)
-Julian
PATCH 2/2 Add support the Avionic Design Meerkat COM and Kein Baseboard
In reply to Stephen WarrenHi Stephen,
Quoted 18 lines · Stephen Warren
Quoted 8 lines · Julian Scheel
Add support for platforms based on the Meerkat COM module. Includes support
for the minimal reference platform called Kein Baseboard, which in fact is
sufficient to run most existing Meerkat carriers.arch/arm/dts/tegra124-meerkat.dtsi line 14
Quoted 8 lines
arch/arm/dts/tegra124-meerkat.dtsi +7
-0+ aliases { + i2c0 = "/i2c at 7000c000"; + i2c1 = "/i2c at 7000c400"; + i2c2 = "/i2c at 7000c500"; + i2c3 = "/i2c at 7000c700"; + i2c4 = "/i2c at 7000d000"; + i2c5 = "/i2c at 7000d100";
Quoted 2 lines
/i2c at
7000d000is alias i2c0 on all other Tegra boards that have I2C aliases.
we just had a quick discussion about this and actually we explicitly changed it in our tree to a linear mapping of the controller addresses to be in sync with what we have in the l4t kernel.
If it won't hurt you too much we'd like to keep it that way. Though if you feel really bad about it, we can change it to use the same mapping as Jetson uses.
-Julian
PATCH 2/2 Add support the Avionic Design Meerkat COM and Kein Baseboard
Quoted 24 lines · Julian Scheel
Hi Stephen,
Quoted 18 lines · Stephen Warren
Quoted 8 lines · Julian Scheel
Add support for platforms based on the Meerkat COM module. Includes support
for the minimal reference platform called Kein Baseboard, which in fact is
sufficient to run most existing Meerkat carriers.arch/arm/dts/tegra124-meerkat.dtsi line 14
Quoted 8 lines
arch/arm/dts/tegra124-meerkat.dtsi +7
-0+ aliases { + i2c0 = "/i2c at 7000c000"; + i2c1 = "/i2c at 7000c400"; + i2c2 = "/i2c at 7000c500"; + i2c3 = "/i2c at 7000c700"; + i2c4 = "/i2c at 7000d000"; + i2c5 = "/i2c at 7000d100";Quoted 2 lines
/i2c at
7000d000is alias i2c0 on all other Tegra boards that have I2C aliases.
Quoted 6 lines
we just had a quick discussion about this and actually we explicitly changed it in our tree to a linear mapping of the controller addresses to be in sync with what we have in the l4t kernel.
If it won't hurt you too much we'd like to keep it that way. Though if you feel really bad about it, we can change it to use the same mapping as Jetson uses.
That's probably fine; hopefully it won't be too confusing since aliases are supposed to be board-specific.
Let's make sure that the Linux kernel patches for this board have matching aliases and get Ack'd soon to make sure they don't diverge.
PATCH 2/2 Add support the Avionic Design Meerkat COM and Kein Baseboard
Quoted 32 lines · Stephen Warren
Quoted 24 lines · Julian Scheel
Hi Stephen,
Quoted 18 lines · Stephen Warren
Quoted 8 lines · Julian Scheel
Add support for platforms based on the Meerkat COM module. Includes support
for the minimal reference platform called Kein Baseboard, which in fact is
sufficient to run most existing Meerkat carriers.arch/arm/dts/tegra124-meerkat.dtsi line 14
Quoted 8 lines
arch/arm/dts/tegra124-meerkat.dtsi +7
-0+ aliases { + i2c0 = "/i2c at 7000c000"; + i2c1 = "/i2c at 7000c400"; + i2c2 = "/i2c at 7000c500"; + i2c3 = "/i2c at 7000c700"; + i2c4 = "/i2c at 7000d000"; + i2c5 = "/i2c at 7000d100";Quoted 2 lines
/i2c at
7000d000is alias i2c0 on all other Tegra boards that have I2C aliases.Quoted 6 lines
we just had a quick discussion about this and actually we explicitly changed it in our tree to a linear mapping of the controller addresses to be in sync with what we have in the l4t kernel.
If it won't hurt you too much we'd like to keep it that way. Though if you feel really bad about it, we can change it to use the same mapping as Jetson uses.
Quoted 5 lines
That's probably fine; hopefully it won't be too confusing since aliases are supposed to be board-specific.
Let's make sure that the Linux kernel patches for this board have matching aliases and get Ack'd soon to make sure they don't diverge.
I don't mind having the mapping like this for Meerkat. For anything in kernel space this should be completely irrelevant since the association is done via parent-child relationships in DT anyway.
The only place where the numbering matters is if you want to use the I2C busses from userspace (using i2c-dev) and in that case you're probably better off if you use some sort of lookup mechanism to find the correct I2C bus based on the MMIO address, instead of relying on hardcoded bus numbers.
Thierry
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20160302/00f3a3fd/attachment.sig>
cover tegra124: Add support for Avionic Design platform
In reply to Julian ScheelQuoted 5 lines · Julian Scheel
This adds support for the Avionic Design Tegra124 platform. It consists of the Meerkat SOM and a minimal baseboard Kein Baseboard.
The as3722 is placed on a different bus as compared to nvidia Jetson, which makes the as3722 required.
This doesn't appear to be quite true. It looks like the AS3722 is on the same physical bus, it's just that the I2C aliases in DT assign this bus a different number. Typically, all Tegra boards have the PMIC I2C bus as U-Boot I2C bus 0. Is there a good reason not to do that here?
cover tegra124: Add support for Avionic Design platform
Quoted 5 lines · Stephen Warren
Quoted 3 lines · Julian Scheel
This adds support for the Avionic Design Tegra124 platform. It consists of the
Meerkat SOM and a minimal baseboard Kein Baseboard.
Quoted 8 lines
Quoted 3 lines
The as3722 is placed on a different bus as compared to nvidia Jetson, which
makes the as3722 required.This doesn't appear to be quite true. It looks like the AS3722 is on the same physical bus, it's just that the I2C aliases in DT assign this bus a different number. Typically, all Tegra boards have the PMIC I2C bus as U-Boot I2C bus 0. Is there a good reason not to do that here?
You are indeed right. I was so sure about it being a different bus that I did not check it at all...
In fact I don't see a real reason not do reorder the i2c to match the other platforms. But let me discuss it with Alban before changing.