All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH 0/3] ARM: am335x: Support chiliSOM and chiliBoard
@ 2017-01-23 13:39 Marcin Niestroj
  2017-01-23 13:39 ` [U-Boot] [PATCH 1/3] ARM: Makefile: Fix config.mk inclusion for multiple mach-* dirs Marcin Niestroj
                   ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: Marcin Niestroj @ 2017-01-23 13:39 UTC (permalink / raw)
  To: u-boot

These patches add support for chiliSOM (http://grinn-global.com/chilisom/),
and chiliBoard (which uses chiliSOM as it's base).

chiliSOM consists of processor (TI AM335x), RAM memory (up to 512M DDR3)
and flash (NAND). The idea is that every board vendor can use chiliSOM
as it's base for designed board. Hence, we need a way to reuse common code
between those board.

chiliBoard is a development kit (and reference platform for chiliSOM), that
mainly shows possibilities and use cases of chiliSOM.

Patches were developed and tested on 2017.01.

Marcin Niestroj (3):
  ARM: Makefile: Fix config.mk inclusion for multiple mach-* dirs
  ARM: am335x: Add support for chiliSOM
  board/chiliboard: Add support for chiliBoard

 arch/arm/Kconfig                               |   3 +
 arch/arm/Makefile                              |   3 +-
 arch/arm/mach-chilisom/Kconfig                 |   4 +
 arch/arm/mach-chilisom/Makefile                |   6 +
 arch/arm/mach-chilisom/chilisom.c              | 185 +++++++++++++++++
 arch/arm/mach-chilisom/include/mach/chilisom.h |  15 ++
 arch/arm/mach-omap2/am33xx/Kconfig             |   5 +
 board/grinn/chiliboard/Kconfig                 |  15 ++
 board/grinn/chiliboard/MAINTAINERS             |   6 +
 board/grinn/chiliboard/Makefile                |   6 +
 board/grinn/chiliboard/README                  |  31 +++
 board/grinn/chiliboard/board.c                 | 264 +++++++++++++++++++++++++
 configs/chiliboard_defconfig                   |  55 ++++++
 include/configs/chiliboard.h                   | 230 +++++++++++++++++++++
 14 files changed, 827 insertions(+), 1 deletion(-)
 create mode 100644 arch/arm/mach-chilisom/Kconfig
 create mode 100644 arch/arm/mach-chilisom/Makefile
 create mode 100644 arch/arm/mach-chilisom/chilisom.c
 create mode 100644 arch/arm/mach-chilisom/include/mach/chilisom.h
 create mode 100644 board/grinn/chiliboard/Kconfig
 create mode 100644 board/grinn/chiliboard/MAINTAINERS
 create mode 100644 board/grinn/chiliboard/Makefile
 create mode 100644 board/grinn/chiliboard/README
 create mode 100644 board/grinn/chiliboard/board.c
 create mode 100644 configs/chiliboard_defconfig
 create mode 100644 include/configs/chiliboard.h

-- 
2.11.0

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH 1/3] ARM: Makefile: Fix config.mk inclusion for multiple mach-* dirs
  2017-01-23 13:39 [U-Boot] [PATCH 0/3] ARM: am335x: Support chiliSOM and chiliBoard Marcin Niestroj
@ 2017-01-23 13:39 ` Marcin Niestroj
  2017-01-23 13:39 ` [U-Boot] [PATCH 2/3] ARM: am335x: Add support for chiliSOM Marcin Niestroj
  2017-01-23 13:39 ` [U-Boot] [PATCH 3/3] board/chiliboard: Add support for chiliBoard Marcin Niestroj
  2 siblings, 0 replies; 10+ messages in thread
From: Marcin Niestroj @ 2017-01-23 13:39 UTC (permalink / raw)
  To: u-boot

If multiple mach-* directories are enabled in Kconfig then there was a
build error:
make[1]: *** arch/arm/mach-<directory>/: Is a directory. Stop.

Allow to enable multiple mach-* directories by proper config.mk
inclusion for each of them.

Signed-off-by: Marcin Niestroj <m.niestroj@grinn-global.com>
---
 arch/arm/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/Makefile b/arch/arm/Makefile
index 4b8bf80c40..43462fd844 100644
--- a/arch/arm/Makefile
+++ b/arch/arm/Makefile
@@ -109,4 +109,4 @@ libs-y += arch/arm/mach-mvebu/
 endif
 
 # deprecated
--include $(machdirs)/config.mk
+-include $(patsubst %,%/config.mk,$(machdirs))
-- 
2.11.0

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH 2/3] ARM: am335x: Add support for chiliSOM
  2017-01-23 13:39 [U-Boot] [PATCH 0/3] ARM: am335x: Support chiliSOM and chiliBoard Marcin Niestroj
  2017-01-23 13:39 ` [U-Boot] [PATCH 1/3] ARM: Makefile: Fix config.mk inclusion for multiple mach-* dirs Marcin Niestroj
@ 2017-01-23 13:39 ` Marcin Niestroj
  2017-01-23 15:56   ` Tom Rini
  2017-01-23 13:39 ` [U-Boot] [PATCH 3/3] board/chiliboard: Add support for chiliBoard Marcin Niestroj
  2 siblings, 1 reply; 10+ messages in thread
From: Marcin Niestroj @ 2017-01-23 13:39 UTC (permalink / raw)
  To: u-boot

chiliSOM is a System On Module (http://http://grinn-global.com/chilisom/).
It can't exists on its own, but will be used as part of other boards.

Hardware specification:
 * TI AM335x processor
 * 128M, 256M or 512M DDR3 memory
 * up to 256M NAND

Here we treat SOM similar to SOC, so we place it inside arch/arm/mach-*
directory and make it possible to reuse initialization code (i.e. DDR,
NAND init) for all boards that use it. This approach is similar as for
liteSOM module.

Signed-off-by: Marcin Niestroj <m.niestroj@grinn-global.com>
---
 arch/arm/Kconfig                               |   2 +
 arch/arm/Makefile                              |   1 +
 arch/arm/mach-chilisom/Kconfig                 |   4 +
 arch/arm/mach-chilisom/Makefile                |   6 +
 arch/arm/mach-chilisom/chilisom.c              | 185 +++++++++++++++++++++++++
 arch/arm/mach-chilisom/include/mach/chilisom.h |  15 ++
 6 files changed, 213 insertions(+)
 create mode 100644 arch/arm/mach-chilisom/Kconfig
 create mode 100644 arch/arm/mach-chilisom/Makefile
 create mode 100644 arch/arm/mach-chilisom/chilisom.c
 create mode 100644 arch/arm/mach-chilisom/include/mach/chilisom.h

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 2554a2cd14..7d5f93724e 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -941,6 +941,8 @@ source "arch/arm/mach-at91/Kconfig"
 
 source "arch/arm/mach-bcm283x/Kconfig"
 
+source "arch/arm/mach-chilisom/Kconfig"
+
 source "arch/arm/mach-davinci/Kconfig"
 
 source "arch/arm/mach-exynos/Kconfig"
diff --git a/arch/arm/Makefile b/arch/arm/Makefile
index 43462fd844..61448ea27c 100644
--- a/arch/arm/Makefile
+++ b/arch/arm/Makefile
@@ -52,6 +52,7 @@ PLATFORM_CPPFLAGS += $(arch-y) $(tune-y)
 # by CONFIG_* macro name.
 machine-$(CONFIG_ARCH_AT91)		+= at91
 machine-$(CONFIG_ARCH_BCM283X)		+= bcm283x
+machine-$(CONFIG_CHILISOM)		+= chilisom
 machine-$(CONFIG_ARCH_DAVINCI)		+= davinci
 machine-$(CONFIG_ARCH_EXYNOS)		+= exynos
 machine-$(CONFIG_ARCH_HIGHBANK)		+= highbank
diff --git a/arch/arm/mach-chilisom/Kconfig b/arch/arm/mach-chilisom/Kconfig
new file mode 100644
index 0000000000..6ae102b43a
--- /dev/null
+++ b/arch/arm/mach-chilisom/Kconfig
@@ -0,0 +1,4 @@
+config CHILISOM
+	bool
+	select DM
+	select SUPPORT_SPL
diff --git a/arch/arm/mach-chilisom/Makefile b/arch/arm/mach-chilisom/Makefile
new file mode 100644
index 0000000000..1d80d05589
--- /dev/null
+++ b/arch/arm/mach-chilisom/Makefile
@@ -0,0 +1,6 @@
+# (C) Copyright 2017 Grinn
+#
+# SPDX-License-Identifier:	GPL-2.0+
+#
+
+obj-y  := chilisom.o
diff --git a/arch/arm/mach-chilisom/chilisom.c b/arch/arm/mach-chilisom/chilisom.c
new file mode 100644
index 0000000000..a594f6cf37
--- /dev/null
+++ b/arch/arm/mach-chilisom/chilisom.c
@@ -0,0 +1,185 @@
+/*
+ * Copyright (C) 2011, Texas Instruments, Incorporated - http://www.ti.com/
+ * Copyright (C) 2017, Grinn - http://grinn-global.com/
+ *
+ * SPDX-License-Identifier:	GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/clk_synthesizer.h>
+#include <asm/arch/cpu.h>
+#include <asm/arch/ddr_defs.h>
+#include <asm/arch/hardware.h>
+#include <asm/arch/omap.h>
+#include <asm/arch/mem.h>
+#include <asm/arch/mux.h>
+#include <asm/arch/sys_proto.h>
+#include <asm/emif.h>
+#include <asm/io.h>
+#include <errno.h>
+#include <i2c.h>
+#include <power/tps65217.h>
+#include <spl.h>
+
+#ifndef CONFIG_SKIP_LOWLEVEL_INIT
+
+static struct ctrl_dev *cdev = (struct ctrl_dev *)CTRL_DEVICE_BASE;
+
+static struct module_pin_mux i2c0_pin_mux[] = {
+	{OFFSET(i2c0_sda), (MODE(0) | RXACTIVE |
+			PULLUDEN | SLEWCTRL)}, /* I2C_DATA */
+	{OFFSET(i2c0_scl), (MODE(0) | RXACTIVE |
+			PULLUDEN | SLEWCTRL)}, /* I2C_SCLK */
+	{-1},
+};
+
+static struct module_pin_mux nand_pin_mux[] = {
+	{OFFSET(gpmc_ad0), (MODE(0) | PULLUP_EN | RXACTIVE)},	/* NAND AD0 */
+	{OFFSET(gpmc_ad1), (MODE(0) | PULLUP_EN | RXACTIVE)},	/* NAND AD1 */
+	{OFFSET(gpmc_ad2), (MODE(0) | PULLUP_EN | RXACTIVE)},	/* NAND AD2 */
+	{OFFSET(gpmc_ad3), (MODE(0) | PULLUP_EN | RXACTIVE)},	/* NAND AD3 */
+	{OFFSET(gpmc_ad4), (MODE(0) | PULLUP_EN | RXACTIVE)},	/* NAND AD4 */
+	{OFFSET(gpmc_ad5), (MODE(0) | PULLUP_EN | RXACTIVE)},	/* NAND AD5 */
+	{OFFSET(gpmc_ad6), (MODE(0) | PULLUP_EN | RXACTIVE)},	/* NAND AD6 */
+	{OFFSET(gpmc_ad7), (MODE(0) | PULLUP_EN | RXACTIVE)},	/* NAND AD7 */
+	{OFFSET(gpmc_wait0), (MODE(0) | RXACTIVE | PULLUP_EN)}, /* NAND WAIT */
+	{OFFSET(gpmc_wpn), (MODE(7) | PULLUP_EN | RXACTIVE)},	/* NAND_WPN */
+	{OFFSET(gpmc_csn0), (MODE(0) | PULLUDEN)},	/* NAND_CS0 */
+	{OFFSET(gpmc_advn_ale), (MODE(0) | PULLUDEN)}, /* NAND_ADV_ALE */
+	{OFFSET(gpmc_oen_ren), (MODE(0) | PULLUDEN)},	/* NAND_OE */
+	{OFFSET(gpmc_wen), (MODE(0) | PULLUDEN)},	/* NAND_WEN */
+	{OFFSET(gpmc_be0n_cle), (MODE(0) | PULLUDEN)},	/* NAND_BE_CLE */
+	{-1},
+};
+
+static void enable_i2c0_pin_mux(void)
+{
+	configure_module_pin_mux(i2c0_pin_mux);
+}
+
+void chilisom_enable_pin_mux(void)
+{
+	/* chilisom pin mux */
+	configure_module_pin_mux(nand_pin_mux);
+}
+
+static const struct ddr_data ddr3_chilisom_data = {
+	.datardsratio0 = MT41K256M16HA125E_RD_DQS,
+	.datawdsratio0 = MT41K256M16HA125E_WR_DQS,
+	.datafwsratio0 = MT41K256M16HA125E_PHY_FIFO_WE,
+	.datawrsratio0 = MT41K256M16HA125E_PHY_WR_DATA,
+};
+
+static const struct cmd_control ddr3_chilisom_cmd_ctrl_data = {
+	.cmd0csratio = MT41K256M16HA125E_RATIO,
+	.cmd0iclkout = MT41K256M16HA125E_INVERT_CLKOUT,
+
+	.cmd1csratio = MT41K256M16HA125E_RATIO,
+	.cmd1iclkout = MT41K256M16HA125E_INVERT_CLKOUT,
+
+	.cmd2csratio = MT41K256M16HA125E_RATIO,
+	.cmd2iclkout = MT41K256M16HA125E_INVERT_CLKOUT,
+};
+
+static struct emif_regs ddr3_chilisom_emif_reg_data = {
+	.sdram_config = MT41K256M16HA125E_EMIF_SDCFG,
+	.ref_ctrl = MT41K256M16HA125E_EMIF_SDREF,
+	.sdram_tim1 = MT41K256M16HA125E_EMIF_TIM1,
+	.sdram_tim2 = MT41K256M16HA125E_EMIF_TIM2,
+	.sdram_tim3 = MT41K256M16HA125E_EMIF_TIM3,
+	.ocp_config = 0x00141414,
+	.zq_config = MT41K256M16HA125E_ZQ_CFG,
+	.emif_ddr_phy_ctlr_1 = MT41K256M16HA125E_EMIF_READ_LATENCY,
+};
+
+void chilisom_spl_board_init(void)
+{
+	int mpu_vdd;
+	int usb_cur_lim;
+
+	enable_i2c0_pin_mux();
+
+	/* Get the frequency */
+	dpll_mpu_opp100.m = am335x_get_efuse_mpu_max_freq(cdev);
+
+
+	if (i2c_probe(TPS65217_CHIP_PM))
+		return;
+
+	/*
+	 * Increase USB current limit to 1300mA or 1800mA and set
+	 * the MPU voltage controller as needed.
+	 */
+	if (dpll_mpu_opp100.m == MPUPLL_M_1000) {
+		usb_cur_lim = TPS65217_USB_INPUT_CUR_LIMIT_1800MA;
+		mpu_vdd = TPS65217_DCDC_VOLT_SEL_1325MV;
+	} else {
+		usb_cur_lim = TPS65217_USB_INPUT_CUR_LIMIT_1300MA;
+		mpu_vdd = TPS65217_DCDC_VOLT_SEL_1275MV;
+	}
+
+	if (tps65217_reg_write(TPS65217_PROT_LEVEL_NONE,
+			       TPS65217_POWER_PATH,
+			       usb_cur_lim,
+			       TPS65217_USB_INPUT_CUR_LIMIT_MASK))
+		puts("tps65217_reg_write failure\n");
+
+	/* Set DCDC3 (CORE) voltage to 1.125V */
+	if (tps65217_voltage_update(TPS65217_DEFDCDC3,
+				    TPS65217_DCDC_VOLT_SEL_1125MV)) {
+		puts("tps65217_voltage_update failure\n");
+		return;
+	}
+	/* Set CORE Frequencies to OPP100 */
+	do_setup_dpll(&dpll_core_regs, &dpll_core_opp100);
+
+	/* Set DCDC2 (MPU) voltage */
+	if (tps65217_voltage_update(TPS65217_DEFDCDC2, mpu_vdd)) {
+		puts("tps65217_voltage_update failure\n");
+		return;
+	}
+
+	/* Set LDO3 to 1.8V and LDO4 to 3.3V */
+	if (tps65217_reg_write(TPS65217_PROT_LEVEL_2,
+			       TPS65217_DEFLS1,
+			       TPS65217_LDO_VOLTAGE_OUT_1_8,
+			       TPS65217_LDO_MASK))
+		puts("tps65217_reg_write failure\n");
+
+	if (tps65217_reg_write(TPS65217_PROT_LEVEL_2,
+			       TPS65217_DEFLS2,
+			       TPS65217_LDO_VOLTAGE_OUT_3_3,
+			       TPS65217_LDO_MASK))
+		puts("tps65217_reg_write failure\n");
+
+	/* Set MPU Frequency to what we detected now that voltages are set */
+	do_setup_dpll(&dpll_mpu_regs, &dpll_mpu_opp100);
+}
+
+#define OSC	(V_OSCK/1000000)
+const struct dpll_params dpll_ddr_chilisom = {
+		400, OSC-1, 1, -1, -1, -1, -1};
+
+const struct dpll_params *get_dpll_ddr_params(void)
+{
+	return &dpll_ddr_chilisom;
+}
+
+const struct ctrl_ioregs ioregs_chilisom = {
+	.cm0ioctl		= MT41K256M16HA125E_IOCTRL_VALUE,
+	.cm1ioctl		= MT41K256M16HA125E_IOCTRL_VALUE,
+	.cm2ioctl		= MT41K256M16HA125E_IOCTRL_VALUE,
+	.dt0ioctl		= MT41K256M16HA125E_IOCTRL_VALUE,
+	.dt1ioctl		= MT41K256M16HA125E_IOCTRL_VALUE,
+};
+
+void sdram_init(void)
+{
+	config_ddr(400, &ioregs_chilisom,
+		   &ddr3_chilisom_data,
+		   &ddr3_chilisom_cmd_ctrl_data,
+		   &ddr3_chilisom_emif_reg_data, 0);
+}
+
+#endif /* CONFIG_SKIP_LOWLEVEL_INIT */
diff --git a/arch/arm/mach-chilisom/include/mach/chilisom.h b/arch/arm/mach-chilisom/include/mach/chilisom.h
new file mode 100644
index 0000000000..bd0016e441
--- /dev/null
+++ b/arch/arm/mach-chilisom/include/mach/chilisom.h
@@ -0,0 +1,15 @@
+/*
+ * Copyright (C) 2017 Grinn
+ *
+ * SPDX-License-Identifier:	GPL-2.0+
+ */
+
+#ifndef __ARCH_ARM_MACH_CHILISOM_SOM_H__
+#define __ARCH_ARM_MACH_CHILISOM_SOM_H__
+
+#ifndef CONFIG_SKIP_LOWLEVEL_INIT
+void chilisom_enable_pin_mux(void);
+void chilisom_spl_board_init(void);
+#endif
+
+#endif
-- 
2.11.0

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH 3/3] board/chiliboard: Add support for chiliBoard
  2017-01-23 13:39 [U-Boot] [PATCH 0/3] ARM: am335x: Support chiliSOM and chiliBoard Marcin Niestroj
  2017-01-23 13:39 ` [U-Boot] [PATCH 1/3] ARM: Makefile: Fix config.mk inclusion for multiple mach-* dirs Marcin Niestroj
  2017-01-23 13:39 ` [U-Boot] [PATCH 2/3] ARM: am335x: Add support for chiliSOM Marcin Niestroj
@ 2017-01-23 13:39 ` Marcin Niestroj
  2017-01-23 15:56   ` Tom Rini
  2 siblings, 1 reply; 10+ messages in thread
From: Marcin Niestroj @ 2017-01-23 13:39 UTC (permalink / raw)
  To: u-boot

chiliBoard is a development board which uses chiliSOM as its base.

Hardware specification:
 * chiliSOM (TI AM335x, DRAM, NAND)
 * Ethernet PHY (id 0)
 * USB host (usb1)
 * MicroSD slot (mmc0)

Signed-off-by: Marcin Niestroj <m.niestroj@grinn-global.com>
---
 arch/arm/Kconfig                   |   1 +
 arch/arm/mach-omap2/am33xx/Kconfig |   5 +
 board/grinn/chiliboard/Kconfig     |  15 +++
 board/grinn/chiliboard/MAINTAINERS |   6 +
 board/grinn/chiliboard/Makefile    |   6 +
 board/grinn/chiliboard/README      |  31 +++++
 board/grinn/chiliboard/board.c     | 264 +++++++++++++++++++++++++++++++++++++
 configs/chiliboard_defconfig       |  55 ++++++++
 include/configs/chiliboard.h       | 230 ++++++++++++++++++++++++++++++++
 9 files changed, 613 insertions(+)
 create mode 100644 board/grinn/chiliboard/Kconfig
 create mode 100644 board/grinn/chiliboard/MAINTAINERS
 create mode 100644 board/grinn/chiliboard/Makefile
 create mode 100644 board/grinn/chiliboard/README
 create mode 100644 board/grinn/chiliboard/board.c
 create mode 100644 configs/chiliboard_defconfig
 create mode 100644 include/configs/chiliboard.h

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 7d5f93724e..712cc605db 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -1048,6 +1048,7 @@ source "board/freescale/mx53loco/Kconfig"
 source "board/freescale/mx53smd/Kconfig"
 source "board/freescale/s32v234evb/Kconfig"
 source "board/freescale/vf610twr/Kconfig"
+source "board/grinn/chiliboard/Kconfig"
 source "board/gumstix/pepper/Kconfig"
 source "board/h2200/Kconfig"
 source "board/hisilicon/hikey/Kconfig"
diff --git a/arch/arm/mach-omap2/am33xx/Kconfig b/arch/arm/mach-omap2/am33xx/Kconfig
index 56c44062c4..0068ad6eb9 100644
--- a/arch/arm/mach-omap2/am33xx/Kconfig
+++ b/arch/arm/mach-omap2/am33xx/Kconfig
@@ -55,6 +55,11 @@ config TARGET_BAV335X
 
 	  For more information, visit: http://birdland.com/oem
 
+config TARGET_CHILIBOARD
+	bool "Grinn chiliBoard"
+	select CHILISOM
+	select DM_SERIAL
+
 config TARGET_CM_T335
 	bool "Support cm_t335"
 	select DM
diff --git a/board/grinn/chiliboard/Kconfig b/board/grinn/chiliboard/Kconfig
new file mode 100644
index 0000000000..20056e81a1
--- /dev/null
+++ b/board/grinn/chiliboard/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_CHILIBOARD
+
+config SYS_BOARD
+	default "chiliboard"
+
+config SYS_VENDOR
+	default "grinn"
+
+config SYS_CONFIG_NAME
+	default "chiliboard"
+
+config SYS_SOC
+	default "am33xx"
+
+endif
diff --git a/board/grinn/chiliboard/MAINTAINERS b/board/grinn/chiliboard/MAINTAINERS
new file mode 100644
index 0000000000..56b306f84c
--- /dev/null
+++ b/board/grinn/chiliboard/MAINTAINERS
@@ -0,0 +1,6 @@
+CHILIBOARD
+M:	Marcin Niestroj <m.niestroj@grinn-global.com>
+S:	Maintained
+F:	board/grinn/chiliboard/
+F:	include/configs/chiliboard.h
+F:	configs/chiliboard_defconfig
diff --git a/board/grinn/chiliboard/Makefile b/board/grinn/chiliboard/Makefile
new file mode 100644
index 0000000000..865968d1a7
--- /dev/null
+++ b/board/grinn/chiliboard/Makefile
@@ -0,0 +1,6 @@
+# (C) Copyright 2017 Grinn
+#
+# SPDX-License-Identifier:	GPL-2.0+
+#
+
+obj-y  := board.o
diff --git a/board/grinn/chiliboard/README b/board/grinn/chiliboard/README
new file mode 100644
index 0000000000..cea4c1d42e
--- /dev/null
+++ b/board/grinn/chiliboard/README
@@ -0,0 +1,31 @@
+How to use U-Boot on Grinn's chiliBoard
+--------------------------------------
+
+- Build U-Boot for chiliBoard:
+
+$ make mrproper
+$ make chiliboard_defconfig
+$ make
+
+This will generate the SPL image called MLO and the u-boot.img.
+
+- Flash the SPL image into the micro SD card:
+
+sudo dd if=MLO of=/dev/mmcblk0 bs=128k; sync
+
+- Flash the u-boot.img image into the micro SD card:
+
+sudo dd if=u-boot.img of=/dev/mmcblk0 bs=128k seek=3; sync
+
+- Jumper settings:
+
+S2: 1 1 1 0 1 0
+
+where 0 means bottom position and 1 means top position (from the
+switch label numbers reference).
+
+- Insert the micro SD card in the board.
+
+- Connect USB cable between chiliBoard and the PC for the power and console.
+
+- U-Boot messages should come up.
diff --git a/board/grinn/chiliboard/board.c b/board/grinn/chiliboard/board.c
new file mode 100644
index 0000000000..7f77f241f6
--- /dev/null
+++ b/board/grinn/chiliboard/board.c
@@ -0,0 +1,264 @@
+/*
+ * Copyright (C) 2011, Texas Instruments, Incorporated - http://www.ti.com/
+ * Copyright (C) 2017, Grinn - http://grinn-global.com/
+ *
+ * SPDX-License-Identifier:	GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/arch/cpu.h>
+#include <asm/arch/hardware.h>
+#include <asm/arch/omap.h>
+#include <asm/arch/mem.h>
+#include <asm/arch/mmc_host_def.h>
+#include <asm/arch/mux.h>
+#include <asm/arch/sys_proto.h>
+#include <asm/emif.h>
+#include <asm/io.h>
+#include <cpsw.h>
+#include <environment.h>
+#include <errno.h>
+#include <mach/chilisom.h>
+#include <miiphy.h>
+#include <serial.h>
+#include <spl.h>
+#include <watchdog.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+static __maybe_unused struct ctrl_dev *cdev =
+	(struct ctrl_dev *)CTRL_DEVICE_BASE;
+
+#ifndef CONFIG_SKIP_LOWLEVEL_INIT
+static struct module_pin_mux uart0_pin_mux[] = {
+	{OFFSET(uart0_rxd), (MODE(0) | PULLUP_EN | RXACTIVE)},	/* UART0_RXD */
+	{OFFSET(uart0_txd), (MODE(0) | PULLUDEN)},		/* UART0_TXD */
+	{-1},
+};
+
+static struct module_pin_mux mmc0_pin_mux[] = {
+	{OFFSET(mmc0_dat3), (MODE(0) | RXACTIVE | PULLUP_EN)},	/* MMC0_DAT3 */
+	{OFFSET(mmc0_dat2), (MODE(0) | RXACTIVE | PULLUP_EN)},	/* MMC0_DAT2 */
+	{OFFSET(mmc0_dat1), (MODE(0) | RXACTIVE | PULLUP_EN)},	/* MMC0_DAT1 */
+	{OFFSET(mmc0_dat0), (MODE(0) | RXACTIVE | PULLUP_EN)},	/* MMC0_DAT0 */
+	{OFFSET(mmc0_clk), (MODE(0) | RXACTIVE | PULLUP_EN)},	/* MMC0_CLK */
+	{OFFSET(mmc0_cmd), (MODE(0) | RXACTIVE | PULLUP_EN)},	/* MMC0_CMD */
+	{-1},
+};
+
+static struct module_pin_mux rmii1_pin_mux[] = {
+	{OFFSET(mii1_crs), MODE(1) | RXACTIVE},		/* RMII1_CRS */
+	{OFFSET(mii1_rxerr), MODE(1) | RXACTIVE},	/* RMII1_RXERR */
+	{OFFSET(mii1_txen), MODE(1)},			/* RMII1_TXEN */
+	{OFFSET(mii1_txd1), MODE(1)},			/* RMII1_TXD1 */
+	{OFFSET(mii1_txd0), MODE(1)},			/* RMII1_TXD0 */
+	{OFFSET(mii1_rxd1), MODE(1) | RXACTIVE},	/* RMII1_RXD1 */
+	{OFFSET(mii1_rxd0), MODE(1) | RXACTIVE},	/* RMII1_RXD0 */
+	{OFFSET(mdio_data), MODE(0) | RXACTIVE | PULLUP_EN}, /* MDIO_DATA */
+	{OFFSET(mdio_clk), MODE(0) | PULLUP_EN},	/* MDIO_CLK */
+	{OFFSET(rmii1_refclk), MODE(0) | RXACTIVE},	/* RMII1_REFCLK */
+	{-1},
+};
+
+static void enable_board_pin_mux(void)
+{
+	chilisom_enable_pin_mux();
+
+	/* chiliboard pinmux */
+	configure_module_pin_mux(rmii1_pin_mux);
+	configure_module_pin_mux(mmc0_pin_mux);
+}
+#endif /* CONFIG_SKIP_LOWLEVEL_INIT */
+
+#ifndef CONFIG_DM_SERIAL
+struct serial_device *default_serial_console(void)
+{
+	return &eserial1_device;
+}
+#endif
+
+#ifndef CONFIG_SKIP_LOWLEVEL_INIT
+void set_uart_mux_conf(void)
+{
+	configure_module_pin_mux(uart0_pin_mux);
+}
+
+void set_mux_conf_regs(void)
+{
+	enable_board_pin_mux();
+}
+
+void am33xx_spl_board_init(void)
+{
+	chilisom_spl_board_init();
+}
+#endif
+
+/*
+ * Basic board specific setup.  Pinmux has been handled already.
+ */
+int board_init(void)
+{
+#if defined(CONFIG_HW_WATCHDOG)
+	hw_watchdog_init();
+#endif
+
+	gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100;
+	gpmc_init();
+
+	return 0;
+}
+
+#ifdef CONFIG_BOARD_LATE_INIT
+int board_late_init(void)
+{
+#if !defined(CONFIG_SPL_BUILD)
+	uint8_t mac_addr[6];
+	uint32_t mac_hi, mac_lo;
+
+	/* try reading mac address from efuse */
+	mac_lo = readl(&cdev->macid0l);
+	mac_hi = readl(&cdev->macid0h);
+	mac_addr[0] = mac_hi & 0xFF;
+	mac_addr[1] = (mac_hi & 0xFF00) >> 8;
+	mac_addr[2] = (mac_hi & 0xFF0000) >> 16;
+	mac_addr[3] = (mac_hi & 0xFF000000) >> 24;
+	mac_addr[4] = mac_lo & 0xFF;
+	mac_addr[5] = (mac_lo & 0xFF00) >> 8;
+
+	if (!getenv("ethaddr")) {
+		printf("<ethaddr> not set. Validating first E-fuse MAC\n");
+
+		if (is_valid_ethaddr(mac_addr))
+			eth_setenv_enetaddr("ethaddr", mac_addr);
+	}
+
+	mac_lo = readl(&cdev->macid1l);
+	mac_hi = readl(&cdev->macid1h);
+	mac_addr[0] = mac_hi & 0xFF;
+	mac_addr[1] = (mac_hi & 0xFF00) >> 8;
+	mac_addr[2] = (mac_hi & 0xFF0000) >> 16;
+	mac_addr[3] = (mac_hi & 0xFF000000) >> 24;
+	mac_addr[4] = mac_lo & 0xFF;
+	mac_addr[5] = (mac_lo & 0xFF00) >> 8;
+
+	if (!getenv("eth1addr")) {
+		if (is_valid_ethaddr(mac_addr))
+			eth_setenv_enetaddr("eth1addr", mac_addr);
+	}
+#endif
+
+	return 0;
+}
+#endif
+
+#ifndef CONFIG_DM_ETH
+
+#if (defined(CONFIG_DRIVER_TI_CPSW) && !defined(CONFIG_SPL_BUILD)) || \
+	(defined(CONFIG_SPL_ETH_SUPPORT) && defined(CONFIG_SPL_BUILD))
+static void cpsw_control(int enabled)
+{
+	/* VTP can be added here */
+
+	return;
+}
+
+static struct cpsw_slave_data cpsw_slaves[] = {
+	{
+		.slave_reg_ofs	= 0x208,
+		.sliver_reg_ofs	= 0xd80,
+		.phy_addr	= 0,
+	}
+};
+
+static struct cpsw_platform_data cpsw_data = {
+	.mdio_base		= CPSW_MDIO_BASE,
+	.cpsw_base		= CPSW_BASE,
+	.mdio_div		= 0xff,
+	.channels		= 8,
+	.cpdma_reg_ofs		= 0x800,
+	.slaves			= 1,
+	.slave_data		= cpsw_slaves,
+	.ale_reg_ofs		= 0xd00,
+	.ale_entries		= 1024,
+	.host_port_reg_ofs	= 0x108,
+	.hw_stats_reg_ofs	= 0x900,
+	.bd_ram_ofs		= 0x2000,
+	.mac_control		= (1 << 5),
+	.control		= cpsw_control,
+	.host_port_num		= 0,
+	.version		= CPSW_CTRL_VERSION_2,
+};
+#endif
+
+#if ((defined(CONFIG_SPL_ETH_SUPPORT) || defined(CONFIG_SPL_USBETH_SUPPORT)) &&\
+	defined(CONFIG_SPL_BUILD)) || \
+	((defined(CONFIG_DRIVER_TI_CPSW) || \
+	  defined(CONFIG_USB_ETHER) && defined(CONFIG_MUSB_GADGET)) && \
+	 !defined(CONFIG_SPL_BUILD))
+
+/*
+ * This function will:
+ * Read the eFuse for MAC addresses, and set ethaddr/eth1addr/usbnet_devaddr
+ * in the environment
+ * Perform fixups to the PHY present on certain boards.  We only need this
+ * function in:
+ * - SPL with either CPSW or USB ethernet support
+ * - Full U-Boot, with either CPSW or USB ethernet
+ * Build in only these cases to avoid warnings about unused variables
+ * when we build an SPL that has neither option but full U-Boot will.
+ */
+int board_eth_init(bd_t *bis)
+{
+	int rv, n = 0;
+#if defined(CONFIG_USB_ETHER) && \
+	(!defined(CONFIG_SPL_BUILD) || defined(CONFIG_SPL_USBETH_SUPPORT))
+	uint8_t mac_addr[6];
+	uint32_t mac_hi, mac_lo;
+
+	/*
+	 * use efuse mac address for USB ethernet as we know that
+	 * both CPSW and USB ethernet will never be active@the same time
+	 */
+	mac_lo = readl(&cdev->macid0l);
+	mac_hi = readl(&cdev->macid0h);
+	mac_addr[0] = mac_hi & 0xFF;
+	mac_addr[1] = (mac_hi & 0xFF00) >> 8;
+	mac_addr[2] = (mac_hi & 0xFF0000) >> 16;
+	mac_addr[3] = (mac_hi & 0xFF000000) >> 24;
+	mac_addr[4] = mac_lo & 0xFF;
+	mac_addr[5] = (mac_lo & 0xFF00) >> 8;
+#endif
+
+
+#if (defined(CONFIG_DRIVER_TI_CPSW) && !defined(CONFIG_SPL_BUILD)) || \
+	(defined(CONFIG_SPL_ETH_SUPPORT) && defined(CONFIG_SPL_BUILD))
+
+#ifdef CONFIG_DRIVER_TI_CPSW
+	writel(RMII_MODE_ENABLE | RMII_CHIPCKL_ENABLE, &cdev->miisel);
+	cpsw_slaves[0].phy_if = PHY_INTERFACE_MODE_RMII;
+
+	rv = cpsw_register(&cpsw_data);
+	if (rv < 0)
+		printf("Error %d registering CPSW switch\n", rv);
+	else
+		n += rv;
+#endif
+#endif
+
+#if defined(CONFIG_USB_ETHER) && \
+	(!defined(CONFIG_SPL_BUILD) || defined(CONFIG_SPL_USBETH_SUPPORT))
+	if (is_valid_ethaddr(mac_addr))
+		eth_setenv_enetaddr("usbnet_devaddr", mac_addr);
+
+	rv = usb_eth_initialize(bis);
+	if (rv < 0)
+		printf("Error %d registering USB_ETHER\n", rv);
+	else
+		n += rv;
+#endif
+	return n;
+}
+#endif
+
+#endif /* CONFIG_DM_ETH */
diff --git a/configs/chiliboard_defconfig b/configs/chiliboard_defconfig
new file mode 100644
index 0000000000..ee12eea961
--- /dev/null
+++ b/configs/chiliboard_defconfig
@@ -0,0 +1,55 @@
+CONFIG_ARM=y
+CONFIG_AM33XX=y
+CONFIG_SPL_LIBCOMMON_SUPPORT=y
+CONFIG_SPL_LIBGENERIC_SUPPORT=y
+CONFIG_SPL_FAT_SUPPORT=y
+CONFIG_SPL_I2C_SUPPORT=y
+CONFIG_SPL_LIBDISK_SUPPORT=y
+CONFIG_SPL_MMC_SUPPORT=y
+CONFIG_SPL_NAND_SUPPORT=y
+CONFIG_SPL_POWER_SUPPORT=y
+CONFIG_SPL_SERIAL_SUPPORT=y
+CONFIG_TARGET_CHILIBOARD=y
+CONFIG_SPL_WATCHDOG_SUPPORT=y
+CONFIG_SPL_STACK_R_ADDR=0x82000000
+CONFIG_FIT=y
+CONFIG_BOOTDELAY=1
+CONFIG_SYS_CONSOLE_INFO_QUIET=y
+CONFIG_BOARD_LATE_INIT=y
+CONFIG_SPL=y
+CONFIG_SPL_STACK_R=y
+CONFIG_SPL_MUSB_NEW_SUPPORT=y
+CONFIG_HUSH_PARSER=y
+CONFIG_CMD_BOOTZ=y
+# CONFIG_CMD_IMLS is not set
+CONFIG_CMD_ASKENV=y
+# CONFIG_CMD_FLASH is not set
+CONFIG_CMD_MMC=y
+CONFIG_CMD_I2C=y
+CONFIG_CMD_USB=y
+CONFIG_CMD_DFU=y
+CONFIG_CMD_GPIO=y
+# CONFIG_CMD_SETEXPR is not set
+CONFIG_CMD_DHCP=y
+CONFIG_CMD_MII=y
+CONFIG_CMD_PING=y
+CONFIG_CMD_EXT2=y
+CONFIG_CMD_EXT4=y
+CONFIG_CMD_EXT4_WRITE=y
+CONFIG_CMD_FAT=y
+CONFIG_CMD_FS_GENERIC=y
+CONFIG_DM_GPIO=y
+CONFIG_MMC_OMAP_HS=y
+CONFIG_SPI_FLASH=y
+CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SYS_NS16550=y
+CONFIG_USB=y
+CONFIG_USB_MUSB_HOST=y
+CONFIG_USB_MUSB_GADGET=y
+CONFIG_USB_STORAGE=y
+CONFIG_USB_GADGET=y
+CONFIG_USB_GADGET_DOWNLOAD=y
+CONFIG_G_DNL_MANUFACTURER="Texas Instruments"
+CONFIG_G_DNL_VENDOR_NUM=0x0451
+CONFIG_G_DNL_PRODUCT_NUM=0xd022
+CONFIG_OF_LIBFDT=y
diff --git a/include/configs/chiliboard.h b/include/configs/chiliboard.h
new file mode 100644
index 0000000000..1d854a44b5
--- /dev/null
+++ b/include/configs/chiliboard.h
@@ -0,0 +1,230 @@
+/*
+ * chiliboard.h
+ *
+ * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
+ * Copyright (C) 2017 Grinn - http://grinn-global.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 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.
+ */
+
+#ifndef __CONFIG_CHILIBOARD_H
+#define __CONFIG_CHILIBOARD_H
+
+#define CONFIG_NAND
+
+#include <configs/ti_am335x_common.h>
+
+#define CONFIG_CONS_INDEX		1
+
+#ifndef CONFIG_SPL_BUILD
+# define CONFIG_TIMESTAMP
+# define CONFIG_LZO
+#endif
+
+/* Clock Defines */
+#define V_OSCK				24000000  /* Clock output from T2 */
+#define V_SCLK				(V_OSCK)
+
+#define NANDARGS \
+	"mtdids=" MTDIDS_DEFAULT "\0" \
+	"mtdparts=" MTDPARTS_DEFAULT "\0" \
+	"nandargs=setenv bootargs console=${console} ${optargs} " \
+		"${mtdparts} " \
+		"root=${nandroot} " \
+		"rootfstype=${nandrootfstype}\0" \
+	"nandroot=ubi0:rootfs rw ubi.mtd=NAND.file-system\0" \
+	"nandrootfstype=ubifs rootwait=1\0" \
+	"nandboot=echo Booting from nand ...; " \
+		"run nandargs; " \
+		"nand read ${fdt_addr} NAND.u-boot-spl-os; " \
+		"nand read ${loadaddr} NAND.kernel; " \
+		"bootz ${loadaddr} - ${fdt_addr}\0"
+
+#define CONFIG_BOOTCOMMAND \
+	"run mmcboot; " \
+	"run nandboot; " \
+	"run netboot"
+
+#define CONFIG_EXTRA_ENV_SETTINGS \
+	"loadaddr=0x82000000\0" \
+	"fdt_addr=0x87800000\0" \
+	"boot_fdt=try\0" \
+	"console=ttyO0,115200n8\0" \
+	"image=zImage\0" \
+	"fdt_file=am335x-chiliboard.dtb\0" \
+	"ip_dyn=yes\0" \
+	"optargs=\0" \
+	"loadbootscript=" \
+		"load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};\0" \
+	"bootscript=echo Running bootscript from mmc ...; " \
+		"source\0" \
+	"loadimage=load mmc ${mmcdev}:${mmcpart} ${loadaddr} " \
+		"${boot_dir}/${image}\0" \
+	"loadfdt=load mmc ${mmcdev}:${mmcpart} ${fdt_addr} " \
+		"${boot_dir}/${fdt_file}\0" \
+	"mmcdev=0\0" \
+	"mmcpart=1\0" \
+	"mmcroot=/dev/mmcblk0p2 rootwait rw\0" \
+	"mmcargs=setenv bootargs console=${console},${baudrate} ${optargs} " \
+		"${mtdparts} " \
+		"root=${mmcroot}\0" \
+	"mmcloados=run mmcargs; " \
+		"if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
+			"if run loadfdt; then " \
+				"bootz ${loadaddr} - ${fdt_addr}; " \
+			"else " \
+				"if test ${boot_fdt} = try; then " \
+					"bootz; " \
+				"else " \
+					"echo WARN: Cannot load the DT; " \
+				"fi; " \
+			"fi; " \
+		"else " \
+			"bootz; " \
+		"fi;\0" \
+	"mmcboot=mmc dev ${mmcdev}; " \
+		"if mmc rescan; then " \
+			"echo SD/MMC found on device ${mmcdev};" \
+			"if run loadimage; then " \
+				"run mmcloados;" \
+			"fi;" \
+		"fi;\0" \
+	"netargs=setenv bootargs console=${console},${baudrate} ${optargs} " \
+		"${mtdparts} " \
+		"root=/dev/nfs " \
+		"ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp\0" \
+	"netboot=echo Booting from net ...; " \
+		"run netargs; " \
+		"if test ${ip_dyn} = yes; then " \
+			"setenv get_cmd dhcp; " \
+		"else " \
+			"setenv get_cmd tftp; " \
+		"fi; " \
+		"${get_cmd} ${image}; " \
+		"if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
+			"if ${get_cmd} ${fdt_addr} ${fdt_file}; then " \
+				"bootz ${loadaddr} - ${fdt_addr}; " \
+			"else " \
+				"if test ${boot_fdt} = try; then " \
+					"bootz; " \
+				"else " \
+					"echo WARN: Cannot load the DT; " \
+				"fi; " \
+			"fi; " \
+		"else " \
+			"bootz; " \
+		"fi;\0" \
+	NANDARGS
+
+/* NS16550 Configuration */
+#define CONFIG_SYS_NS16550_COM1		0x44e09000	/* UART0 */
+#define CONFIG_SYS_NS16550_COM2		0x48022000	/* UART1 */
+#define CONFIG_SYS_NS16550_COM3		0x48024000	/* UART2 */
+#define CONFIG_SYS_NS16550_COM4		0x481a6000	/* UART3 */
+#define CONFIG_SYS_NS16550_COM5		0x481a8000	/* UART4 */
+#define CONFIG_SYS_NS16550_COM6		0x481aa000	/* UART5 */
+#define CONFIG_BAUDRATE			115200
+
+/* PMIC support */
+#define CONFIG_POWER_TPS65217
+
+/* SPL */
+/* Bootcount using the RTC block */
+#define CONFIG_BOOTCOUNT_LIMIT
+#define CONFIG_BOOTCOUNT_AM33XX
+#define CONFIG_SYS_BOOTCOUNT_BE
+
+#define CONFIG_SPL_LDSCRIPT	"arch/arm/mach-omap2/am33xx/u-boot-spl.lds"
+
+/* NAND: device related configs */
+#define CONFIG_SYS_NAND_5_ADDR_CYCLE
+#define CONFIG_SYS_NAND_PAGE_COUNT	(CONFIG_SYS_NAND_BLOCK_SIZE / \
+					 CONFIG_SYS_NAND_PAGE_SIZE)
+#define CONFIG_SYS_NAND_PAGE_SIZE	2048
+#define CONFIG_SYS_NAND_OOBSIZE		64
+#define CONFIG_SYS_NAND_BLOCK_SIZE	(128*1024)
+/* NAND: driver related configs */
+#define CONFIG_NAND_OMAP_GPMC
+#define CONFIG_NAND_OMAP_GPMC_PREFETCH
+#define CONFIG_NAND_OMAP_ELM
+#define CONFIG_SYS_NAND_BAD_BLOCK_POS	NAND_LARGE_BADBLOCK_POS
+#define CONFIG_SYS_NAND_ECCPOS		{ 2, 3, 4, 5, 6, 7, 8, 9, \
+					 10, 11, 12, 13, 14, 15, 16, 17, \
+					 18, 19, 20, 21, 22, 23, 24, 25, \
+					 26, 27, 28, 29, 30, 31, 32, 33, \
+					 34, 35, 36, 37, 38, 39, 40, 41, \
+					 42, 43, 44, 45, 46, 47, 48, 49, \
+					 50, 51, 52, 53, 54, 55, 56, 57, }
+
+#define CONFIG_SYS_NAND_ECCSIZE		512
+#define CONFIG_SYS_NAND_ECCBYTES	14
+#define CONFIG_SYS_NAND_ONFI_DETECTION
+#define CONFIG_NAND_OMAP_ECCSCHEME	OMAP_ECC_BCH8_CODE_HW
+#define MTDIDS_DEFAULT			"nand0=8000000.nand"
+#define MTDPARTS_DEFAULT		"mtdparts=8000000.nand:" \
+					"128k(NAND.SPL)," \
+					"128k(NAND.SPL.backup1)," \
+					"128k(NAND.SPL.backup2)," \
+					"128k(NAND.SPL.backup3)," \
+					"256k(NAND.u-boot-spl-os)," \
+					"1m(NAND.u-boot)," \
+					"128k(NAND.u-boot-env)," \
+					"128k(NAND.u-boot-env.backup1)," \
+					"8m(NAND.kernel)," \
+					"-(NAND.file-system)"
+#define CONFIG_SYS_NAND_U_BOOT_OFFS	0x000c0000
+/* NAND: SPL related configs */
+#ifdef CONFIG_SPL_NAND_SUPPORT
+#define CONFIG_SPL_NAND_AM33XX_BCH
+#endif
+
+/* USB configuration */
+#define CONFIG_USB_MUSB_DSPS
+#define CONFIG_ARCH_MISC_INIT
+#define CONFIG_USB_MUSB_PIO_ONLY
+#define CONFIG_USB_MUSB_DISABLE_BULK_COMBINE_SPLIT
+#define CONFIG_AM335X_USB1
+#define CONFIG_AM335X_USB1_MODE MUSB_HOST
+
+/*
+ * Disable MMC DM for SPL build and can be re-enabled after adding
+ * DM support in SPL
+ */
+#ifdef CONFIG_SPL_BUILD
+#undef CONFIG_DM_MMC
+#undef CONFIG_TIMER
+#undef CONFIG_DM_USB
+#endif
+
+#if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_USBETH_SUPPORT)
+/* Remove other SPL modes. */
+#define CONFIG_ENV_IS_NOWHERE
+#undef CONFIG_ENV_IS_IN_NAND
+#endif
+
+#if defined(CONFIG_ENV_IS_IN_NAND)
+#define CONFIG_ENV_OFFSET		0x001c0000
+#define CONFIG_ENV_OFFSET_REDUND	0x001e0000
+#define CONFIG_ENV_SIZE			SZ_128K
+#define CONFIG_SYS_ENV_SECT_SIZE	CONFIG_SYS_NAND_BLOCK_SIZE
+#else
+#define CONFIG_ENV_IS_IN_MMC
+#define CONFIG_SYS_MMC_ENV_DEV		0
+#define CONFIG_ENV_OFFSET		SZ_128K
+#define CONFIG_ENV_OFFSET_REDUND	(CONFIG_ENV_OFFSET + CONFIG_ENV_SIZE)
+#define CONFIG_ENV_SIZE			SZ_8K
+#define CONFIG_SYS_REDUNDAND_ENVIRONMENT
+#endif
+
+/* Network. */
+#define CONFIG_PHYLIB
+#define CONFIG_PHY_SMSC
+
+#endif	/* ! __CONFIG_CHILIBOARD_H */
-- 
2.11.0

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH 2/3] ARM: am335x: Add support for chiliSOM
  2017-01-23 13:39 ` [U-Boot] [PATCH 2/3] ARM: am335x: Add support for chiliSOM Marcin Niestroj
@ 2017-01-23 15:56   ` Tom Rini
  2017-01-23 16:27     ` Marcin Niestroj
  0 siblings, 1 reply; 10+ messages in thread
From: Tom Rini @ 2017-01-23 15:56 UTC (permalink / raw)
  To: u-boot

On Mon, Jan 23, 2017 at 02:39:15PM +0100, Marcin Niestroj wrote:

> chiliSOM is a System On Module (http://http://grinn-global.com/chilisom/).
> It can't exists on its own, but will be used as part of other boards.
> 
> Hardware specification:
>  * TI AM335x processor
>  * 128M, 256M or 512M DDR3 memory
>  * up to 256M NAND
> 
> Here we treat SOM similar to SOC, so we place it inside arch/arm/mach-*
> directory and make it possible to reuse initialization code (i.e. DDR,
> NAND init) for all boards that use it. This approach is similar as for
> liteSOM module.
> 
> Signed-off-by: Marcin Niestroj <m.niestroj@grinn-global.com>
> ---
>  arch/arm/Kconfig                               |   2 +
>  arch/arm/Makefile                              |   1 +
>  arch/arm/mach-chilisom/Kconfig                 |   4 +
>  arch/arm/mach-chilisom/Makefile                |   6 +
>  arch/arm/mach-chilisom/chilisom.c              | 185 +++++++++++++++++++++++++
>  arch/arm/mach-chilisom/include/mach/chilisom.h |  15 ++
>  6 files changed, 213 insertions(+)

These don't belong in a new mach directory, this should end up in
board/grinn/common/ instead, thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20170123/ccbe06fe/attachment.sig>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH 3/3] board/chiliboard: Add support for chiliBoard
  2017-01-23 13:39 ` [U-Boot] [PATCH 3/3] board/chiliboard: Add support for chiliBoard Marcin Niestroj
@ 2017-01-23 15:56   ` Tom Rini
  0 siblings, 0 replies; 10+ messages in thread
From: Tom Rini @ 2017-01-23 15:56 UTC (permalink / raw)
  To: u-boot

On Mon, Jan 23, 2017 at 02:39:16PM +0100, Marcin Niestroj wrote:

> chiliBoard is a development board which uses chiliSOM as its base.
> 
> Hardware specification:
>  * chiliSOM (TI AM335x, DRAM, NAND)
>  * Ethernet PHY (id 0)
>  * USB host (usb1)
>  * MicroSD slot (mmc0)
> 
> Signed-off-by: Marcin Niestroj <m.niestroj@grinn-global.com>
[snip]
> +++ b/include/configs/chiliboard.h
> @@ -0,0 +1,230 @@
> +/*
> + * chiliboard.h
> + *
> + * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
> + * Copyright (C) 2017 Grinn - http://grinn-global.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 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.
> + */

Need to convert to the SPDX header format here, thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20170123/db63fd7f/attachment.sig>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH 2/3] ARM: am335x: Add support for chiliSOM
  2017-01-23 15:56   ` Tom Rini
@ 2017-01-23 16:27     ` Marcin Niestroj
  2017-01-23 17:07       ` Tom Rini
  0 siblings, 1 reply; 10+ messages in thread
From: Marcin Niestroj @ 2017-01-23 16:27 UTC (permalink / raw)
  To: u-boot

Hi,
Thanks for review! See my comment below.

On 23.01.2017 16:56, Tom Rini wrote:
> On Mon, Jan 23, 2017 at 02:39:15PM +0100, Marcin Niestroj wrote:
>
>> chiliSOM is a System On Module (http://http://grinn-global.com/chilisom/).
>> It can't exists on its own, but will be used as part of other boards.
>>
>> Hardware specification:
>>  * TI AM335x processor
>>  * 128M, 256M or 512M DDR3 memory
>>  * up to 256M NAND
>>
>> Here we treat SOM similar to SOC, so we place it inside arch/arm/mach-*
>> directory and make it possible to reuse initialization code (i.e. DDR,
>> NAND init) for all boards that use it. This approach is similar as for
>> liteSOM module.
>>
>> Signed-off-by: Marcin Niestroj <m.niestroj@grinn-global.com>
>> ---
>>  arch/arm/Kconfig                               |   2 +
>>  arch/arm/Makefile                              |   1 +
>>  arch/arm/mach-chilisom/Kconfig                 |   4 +
>>  arch/arm/mach-chilisom/Makefile                |   6 +
>>  arch/arm/mach-chilisom/chilisom.c              | 185 +++++++++++++++++++++++++
>>  arch/arm/mach-chilisom/include/mach/chilisom.h |  15 ++
>>  6 files changed, 213 insertions(+)
>
> These don't belong in a new mach directory, this should end up in
> board/grinn/common/ instead, thanks!
>

This will work for all grinn boards. But the idea is that some other
vendor can make a board that will use chilisom as it's base. And in
that case sources from board/grinn/common/ directory won't compile.
Do you have any idea how to bypass this restriction?

-- 
Marcin Niestroj

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH 2/3] ARM: am335x: Add support for chiliSOM
  2017-01-23 16:27     ` Marcin Niestroj
@ 2017-01-23 17:07       ` Tom Rini
  2017-01-24 16:27         ` Marcin Niestroj
  0 siblings, 1 reply; 10+ messages in thread
From: Tom Rini @ 2017-01-23 17:07 UTC (permalink / raw)
  To: u-boot

On Mon, Jan 23, 2017 at 05:27:09PM +0100, Marcin Niestroj wrote:
> Hi,
> Thanks for review! See my comment below.
> 
> On 23.01.2017 16:56, Tom Rini wrote:
> >On Mon, Jan 23, 2017 at 02:39:15PM +0100, Marcin Niestroj wrote:
> >
> >>chiliSOM is a System On Module (http://http://grinn-global.com/chilisom/).
> >>It can't exists on its own, but will be used as part of other boards.
> >>
> >>Hardware specification:
> >> * TI AM335x processor
> >> * 128M, 256M or 512M DDR3 memory
> >> * up to 256M NAND
> >>
> >>Here we treat SOM similar to SOC, so we place it inside arch/arm/mach-*
> >>directory and make it possible to reuse initialization code (i.e. DDR,
> >>NAND init) for all boards that use it. This approach is similar as for
> >>liteSOM module.
> >>
> >>Signed-off-by: Marcin Niestroj <m.niestroj@grinn-global.com>
> >>---
> >> arch/arm/Kconfig                               |   2 +
> >> arch/arm/Makefile                              |   1 +
> >> arch/arm/mach-chilisom/Kconfig                 |   4 +
> >> arch/arm/mach-chilisom/Makefile                |   6 +
> >> arch/arm/mach-chilisom/chilisom.c              | 185 +++++++++++++++++++++++++
> >> arch/arm/mach-chilisom/include/mach/chilisom.h |  15 ++
> >> 6 files changed, 213 insertions(+)
> >
> >These don't belong in a new mach directory, this should end up in
> >board/grinn/common/ instead, thanks!
> >
> 
> This will work for all grinn boards. But the idea is that some other
> vendor can make a board that will use chilisom as it's base. And in
> that case sources from board/grinn/common/ directory won't compile.
> Do you have any idea how to bypass this restriction?

Good question.  I think the full answer here is that oops,
arch/arm/mach-litesom shouldn't have been ACK'd as other SoMs (say
board/solidrun/mx6cuboxi/) just keep everything central to the board
directory and expect that derivations will just copy the directory and
edit in-place.  That said, that is indeed not optimal, especially since
you've already done the leg-work to split things for SoM and carrier.
Perhaps arch/arm/mach-omap2/am33xx/chilisom.c (depends on
CONFIG_AM33XX_CHILISOM, which gets select'd by the boards in question).
And then a similar change for mach-litesom into arch/arm/cpu/armv7/mx6/
(which will get moved to arch/arm/mach-imx at some point I believe).
Thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20170123/8e7d5ce1/attachment.sig>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH 2/3] ARM: am335x: Add support for chiliSOM
  2017-01-23 17:07       ` Tom Rini
@ 2017-01-24 16:27         ` Marcin Niestroj
  2017-01-24 16:29           ` Tom Rini
  0 siblings, 1 reply; 10+ messages in thread
From: Marcin Niestroj @ 2017-01-24 16:27 UTC (permalink / raw)
  To: u-boot



On 23.01.2017 18:07, Tom Rini wrote:
> On Mon, Jan 23, 2017 at 05:27:09PM +0100, Marcin Niestroj wrote:
>> Hi,
>> Thanks for review! See my comment below.
>>
>> On 23.01.2017 16:56, Tom Rini wrote:
>>> On Mon, Jan 23, 2017 at 02:39:15PM +0100, Marcin Niestroj wrote:
>>>
>>>> chiliSOM is a System On Module (http://http://grinn-global.com/chilisom/).
>>>> It can't exists on its own, but will be used as part of other boards.
>>>>
>>>> Hardware specification:
>>>> * TI AM335x processor
>>>> * 128M, 256M or 512M DDR3 memory
>>>> * up to 256M NAND
>>>>
>>>> Here we treat SOM similar to SOC, so we place it inside arch/arm/mach-*
>>>> directory and make it possible to reuse initialization code (i.e. DDR,
>>>> NAND init) for all boards that use it. This approach is similar as for
>>>> liteSOM module.
>>>>
>>>> Signed-off-by: Marcin Niestroj <m.niestroj@grinn-global.com>
>>>> ---
>>>> arch/arm/Kconfig                               |   2 +
>>>> arch/arm/Makefile                              |   1 +
>>>> arch/arm/mach-chilisom/Kconfig                 |   4 +
>>>> arch/arm/mach-chilisom/Makefile                |   6 +
>>>> arch/arm/mach-chilisom/chilisom.c              | 185 +++++++++++++++++++++++++
>>>> arch/arm/mach-chilisom/include/mach/chilisom.h |  15 ++
>>>> 6 files changed, 213 insertions(+)
>>>
>>> These don't belong in a new mach directory, this should end up in
>>> board/grinn/common/ instead, thanks!
>>>
>>
>> This will work for all grinn boards. But the idea is that some other
>> vendor can make a board that will use chilisom as it's base. And in
>> that case sources from board/grinn/common/ directory won't compile.
>> Do you have any idea how to bypass this restriction?
>
> Good question.  I think the full answer here is that oops,
> arch/arm/mach-litesom shouldn't have been ACK'd as other SoMs (say
> board/solidrun/mx6cuboxi/) just keep everything central to the board
> directory and expect that derivations will just copy the directory and
> edit in-place.  That said, that is indeed not optimal, especially since
> you've already done the leg-work to split things for SoM and carrier.
> Perhaps arch/arm/mach-omap2/am33xx/chilisom.c (depends on
> CONFIG_AM33XX_CHILISOM, which gets select'd by the boards in question).
> And then a similar change for mach-litesom into arch/arm/cpu/armv7/mx6/
> (which will get moved to arch/arm/mach-imx at some point I believe).
> Thanks!
>

Ok, so I will move source to arch/arm/mach-omap2/am33xx/chilisom.c as
you suggested. What about chilisom.h? Should it go to
arch/arm/mach-omap2/include/mach/ (which is not existing right now) or
should it be in arch/arm/include/asm/arch-am33xx/ as other headers?

-- 
Marcin Niestroj

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH 2/3] ARM: am335x: Add support for chiliSOM
  2017-01-24 16:27         ` Marcin Niestroj
@ 2017-01-24 16:29           ` Tom Rini
  0 siblings, 0 replies; 10+ messages in thread
From: Tom Rini @ 2017-01-24 16:29 UTC (permalink / raw)
  To: u-boot

On Tue, Jan 24, 2017 at 05:27:50PM +0100, Marcin Niestroj wrote:
> 
> 
> On 23.01.2017 18:07, Tom Rini wrote:
> >On Mon, Jan 23, 2017 at 05:27:09PM +0100, Marcin Niestroj wrote:
> >>Hi,
> >>Thanks for review! See my comment below.
> >>
> >>On 23.01.2017 16:56, Tom Rini wrote:
> >>>On Mon, Jan 23, 2017 at 02:39:15PM +0100, Marcin Niestroj wrote:
> >>>
> >>>>chiliSOM is a System On Module (http://http://grinn-global.com/chilisom/).
> >>>>It can't exists on its own, but will be used as part of other boards.
> >>>>
> >>>>Hardware specification:
> >>>>* TI AM335x processor
> >>>>* 128M, 256M or 512M DDR3 memory
> >>>>* up to 256M NAND
> >>>>
> >>>>Here we treat SOM similar to SOC, so we place it inside arch/arm/mach-*
> >>>>directory and make it possible to reuse initialization code (i.e. DDR,
> >>>>NAND init) for all boards that use it. This approach is similar as for
> >>>>liteSOM module.
> >>>>
> >>>>Signed-off-by: Marcin Niestroj <m.niestroj@grinn-global.com>
> >>>>---
> >>>>arch/arm/Kconfig                               |   2 +
> >>>>arch/arm/Makefile                              |   1 +
> >>>>arch/arm/mach-chilisom/Kconfig                 |   4 +
> >>>>arch/arm/mach-chilisom/Makefile                |   6 +
> >>>>arch/arm/mach-chilisom/chilisom.c              | 185 +++++++++++++++++++++++++
> >>>>arch/arm/mach-chilisom/include/mach/chilisom.h |  15 ++
> >>>>6 files changed, 213 insertions(+)
> >>>
> >>>These don't belong in a new mach directory, this should end up in
> >>>board/grinn/common/ instead, thanks!
> >>>
> >>
> >>This will work for all grinn boards. But the idea is that some other
> >>vendor can make a board that will use chilisom as it's base. And in
> >>that case sources from board/grinn/common/ directory won't compile.
> >>Do you have any idea how to bypass this restriction?
> >
> >Good question.  I think the full answer here is that oops,
> >arch/arm/mach-litesom shouldn't have been ACK'd as other SoMs (say
> >board/solidrun/mx6cuboxi/) just keep everything central to the board
> >directory and expect that derivations will just copy the directory and
> >edit in-place.  That said, that is indeed not optimal, especially since
> >you've already done the leg-work to split things for SoM and carrier.
> >Perhaps arch/arm/mach-omap2/am33xx/chilisom.c (depends on
> >CONFIG_AM33XX_CHILISOM, which gets select'd by the boards in question).
> >And then a similar change for mach-litesom into arch/arm/cpu/armv7/mx6/
> >(which will get moved to arch/arm/mach-imx at some point I believe).
> >Thanks!
> >
> 
> Ok, so I will move source to arch/arm/mach-omap2/am33xx/chilisom.c as
> you suggested. What about chilisom.h? Should it go to
> arch/arm/mach-omap2/include/mach/ (which is not existing right now) or
> should it be in arch/arm/include/asm/arch-am33xx/ as other headers?

It should go in arch/arm/include/asm/arch-am33xx/ and then please also
do a follow-up series to change litesom, thanks again!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20170124/efc969f7/attachment.sig>

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2017-01-24 16:29 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-01-23 13:39 [U-Boot] [PATCH 0/3] ARM: am335x: Support chiliSOM and chiliBoard Marcin Niestroj
2017-01-23 13:39 ` [U-Boot] [PATCH 1/3] ARM: Makefile: Fix config.mk inclusion for multiple mach-* dirs Marcin Niestroj
2017-01-23 13:39 ` [U-Boot] [PATCH 2/3] ARM: am335x: Add support for chiliSOM Marcin Niestroj
2017-01-23 15:56   ` Tom Rini
2017-01-23 16:27     ` Marcin Niestroj
2017-01-23 17:07       ` Tom Rini
2017-01-24 16:27         ` Marcin Niestroj
2017-01-24 16:29           ` Tom Rini
2017-01-23 13:39 ` [U-Boot] [PATCH 3/3] board/chiliboard: Add support for chiliBoard Marcin Niestroj
2017-01-23 15:56   ` Tom Rini

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.