All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH 00/31] ARM: k2g: Add support for new K2G ICE EVM.
@ 2017-03-02 19:04 Franklin S Cooper Jr
  2017-03-02 19:04 ` [U-Boot] [PATCH 01/31] ti: common: board_detect: Allow settings board detection variables manually Franklin S Cooper Jr
                   ` (30 more replies)
  0 siblings, 31 replies; 68+ messages in thread
From: Franklin S Cooper Jr @ 2017-03-02 19:04 UTC (permalink / raw)
  To: u-boot

This patchset adds support for the new Keystone 2 Industrial Communication
Engine board.

This patchset includes the introduction of embedded FIT images in U-boot.
This creates a FIT image of dtb files that enables board specific code to
select which DTB to use at runtime. Initially during boot a generic DTB is
required that enables board detection to occur and once it has can later be
swapped out for the correct dtb.

Franklin S Cooper Jr (28):
  spl: fit: Break out some functions into a common file
  boot_fit: Create helper functions that can be used to select DTB out
    of FIT
  fdt: Enable selecting correct DTB from append FIT Image
  ti: common: board_detect: Add function to determine if EEPROM was read
  dts: Allow OF_LIST to depend on FIT_EMBED
  arm: dts: Add new "generic" 66AK2Gx device tree file.
  ti_armv7_keystone2: Define scratch space in SRAM
  ARM: k2g: Enable TI board detection code
  board_f: Add new function to allow runtime DTB selection
  Makefile: Build additional binaries for dtb FIT blobs appended to
    U-boot
  ARM: keystone2: Allow to build with all image formats
  ARM: k2g: Define embedded_dtb_select for runtime DTB selection in
    U-boot
  ARM: keystone2: Define board_fit_config_name_match for Keystone 2
    boards
  ks2_evm: Add EEPROM based board detection
  defconfig: keystone2: Enable U-boot runtime DTB detection
  ARM: keystone2: Add additional fields used for DDR3 configuration
  ARM: k2g: Program DDR PHY MR2 register with the default value
  ARM: k2g: Program DDRPHY_DATX8 registers via mask and value variables
  ks2_evm: Add EEPROM based board detection helper functions
  ARM: k2g: Add pinmux support for K2G ICE evm
  ARM: k2g: Add DDR3 configuration for K2G ICE evm
  board: ks2: Use board detection to wrap code not specific to K2G ICE
    evm
  ARM: k2g: Use board detection to wrap K2G GP specific calls
  ARM: k2g: Update board_name u-boot env variable at runtime
  ARM: dts: k2g: Disable netcp by default
  ARM: dts: k2g: Add DT support for K2G Industrial Communication Engine
    evm
  ARM: k2g: Add K2G ICE DTB to the list of possible DTBs
  defconfig: k2g_evm_defconfig: Add K2G ICE to OF_LIST

Lokesh Vutla (1):
  ti: common: board_detect: Rename EEPROM scratch start macro

Nishanth Menon (1):
  ti: common: board_detect: Allow settings board detection variables
    manually

Roger Quadros (1):
  ARM: Use Kconfig for board EEPROM's I2C bus and chip address

 .gitignore                                     |  1 +
 Makefile                                       | 18 ++++-
 arch/arm/dts/Makefile                          |  4 +-
 arch/arm/dts/keystone-k2g-evm.dts              |  4 ++
 arch/arm/dts/keystone-k2g-generic.dts          | 21 ++++++
 arch/arm/dts/keystone-k2g-ice.dts              | 25 +++++++
 arch/arm/dts/keystone-k2g-netcp.dtsi           |  1 +
 arch/arm/include/asm/omap_common.h             |  8 ++-
 arch/arm/mach-keystone/Kconfig                 |  1 +
 arch/arm/mach-keystone/config.mk               |  4 +-
 arch/arm/mach-keystone/ddr3.c                  | 35 ++++++++--
 arch/arm/mach-keystone/include/mach/ddr3.h     | 14 ++++
 arch/arm/mach-keystone/include/mach/hardware.h |  3 +
 board/ti/common/Kconfig                        | 20 +++++-
 board/ti/common/board_detect.c                 | 34 ++++++++++
 board/ti/common/board_detect.h                 | 28 +++++++-
 board/ti/ks2_evm/Kconfig                       |  2 +
 board/ti/ks2_evm/board.c                       | 21 ++++--
 board/ti/ks2_evm/board.h                       | 21 ++++++
 board/ti/ks2_evm/board_k2e.c                   | 10 +++
 board/ti/ks2_evm/board_k2g.c                   | 93 +++++++++++++++++++++++---
 board/ti/ks2_evm/board_k2hk.c                  | 10 +++
 board/ti/ks2_evm/board_k2l.c                   | 10 +++
 board/ti/ks2_evm/ddr3_k2g.c                    | 78 ++++++++++++++++++++-
 board/ti/ks2_evm/mux-k2g.h                     | 45 ++++++++++++-
 common/Kconfig                                 | 18 +++++
 common/Makefile                                |  2 +
 common/board_f.c                               |  3 +
 common/boot_fit.c                              | 58 ++++++++++++++++
 common/common_fit.c                            | 86 ++++++++++++++++++++++++
 common/spl/spl_fit.c                           | 76 +--------------------
 configs/k2e_evm_defconfig                      |  3 +
 configs/k2g_evm_defconfig                      |  3 +
 configs/k2hk_evm_defconfig                     |  3 +
 configs/k2l_evm_defconfig                      |  3 +
 dts/Kconfig                                    | 11 +--
 include/boot_fit.h                             |  9 +++
 include/common.h                               |  4 ++
 include/configs/am57xx_evm.h                   |  4 --
 include/configs/dra7xx_evm.h                   |  4 --
 include/configs/k2g_evm.h                      | 14 +++-
 include/configs/ti_armv7_keystone2.h           |  7 ++
 include/image.h                                |  8 +++
 lib/fdtdec.c                                   | 10 +++
 44 files changed, 710 insertions(+), 127 deletions(-)
 create mode 100644 arch/arm/dts/keystone-k2g-generic.dts
 create mode 100644 arch/arm/dts/keystone-k2g-ice.dts
 create mode 100644 common/boot_fit.c
 create mode 100644 common/common_fit.c
 create mode 100644 include/boot_fit.h

-- 
2.10.0

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

* [U-Boot] [PATCH 01/31] ti: common: board_detect: Allow settings board detection variables manually
  2017-03-02 19:04 [U-Boot] [PATCH 00/31] ARM: k2g: Add support for new K2G ICE EVM Franklin S Cooper Jr
@ 2017-03-02 19:04 ` Franklin S Cooper Jr
  2017-03-02 19:10   ` Felipe Balbi
  2017-03-02 19:04 ` [U-Boot] [PATCH 02/31] spl: fit: Break out some functions into a common file Franklin S Cooper Jr
                   ` (29 subsequent siblings)
  30 siblings, 1 reply; 68+ messages in thread
From: Franklin S Cooper Jr @ 2017-03-02 19:04 UTC (permalink / raw)
  To: u-boot

From: Nishanth Menon <nm@ti.com>

In some situations the EEPROM used for board detection may not be
programmed or simply programmed incorrectly. Therefore, it may be
necessary to "simulate" reading the contents of the EEPROM to set
appropriate variables used in the board detection code.

This may also be helpful in certain boot modes where doing i2c reads
may be costly and the config supports running only a specific board.

Signed-off-by: Nishanth Menon <nm@ti.com>
Signed-off-by: Tero Kristo <t-kristo@ti.com>
Signed-off-by: Keerthy <j-keerthy@ti.com>
Signed-off-by: Franklin S Cooper Jr. <fcooper@ti.com>
---
 board/ti/common/board_detect.c | 24 ++++++++++++++++++++++++
 board/ti/common/board_detect.h | 17 +++++++++++++++++
 2 files changed, 41 insertions(+)

diff --git a/board/ti/common/board_detect.c b/board/ti/common/board_detect.c
index a5dba94..5aaf884 100644
--- a/board/ti/common/board_detect.c
+++ b/board/ti/common/board_detect.c
@@ -116,6 +116,30 @@ static int __maybe_unused ti_i2c_eeprom_get(int bus_addr, int dev_addr,
 	return 0;
 }
 
+int __maybe_unused ti_i2c_eeprom_am_set(const char *name, const char *rev)
+{
+	struct ti_common_eeprom *ep;
+
+	if (!name || !rev)
+		return -1;
+
+	ep = TI_EEPROM_DATA;
+	if (ep->header == TI_EEPROM_HEADER_MAGIC)
+		goto already_set;
+
+	/* Set to 0 all fields */
+	memset(ep, 0, sizeof(*ep));
+	strncpy(ep->name, name, TI_EEPROM_HDR_NAME_LEN);
+	strncpy(ep->version, rev, TI_EEPROM_HDR_REV_LEN);
+	/* Some dummy serial number to identify the platform */
+	strncpy(ep->serial, "0000", TI_EEPROM_HDR_SERIAL_LEN);
+	/* Mark it with a valid header */
+	ep->header = TI_EEPROM_HEADER_MAGIC;
+
+already_set:
+	return 0;
+}
+
 int __maybe_unused ti_i2c_eeprom_am_get(int bus_addr, int dev_addr)
 {
 	int rc;
diff --git a/board/ti/common/board_detect.h b/board/ti/common/board_detect.h
index 343fcb4..eeeacd3 100644
--- a/board/ti/common/board_detect.h
+++ b/board/ti/common/board_detect.h
@@ -193,4 +193,21 @@ u64 board_ti_get_emif2_size(void);
  */
 void set_board_info_env(char *name);
 
+/**
+ * ti_i2c_eeprom_am_set() - Setup the eeprom data with predefined values
+ * @name:	Name of the board
+ * @rev:	Revision of the board
+ *
+ * In some cases such as in RTC-only mode, we are able to skip reading eeprom
+ * and wasting i2c based initialization time by using predefined flags for
+ * detecting what platform we are booting on. For those platforms, provide
+ * a handy function to pre-program information.
+ *
+ * NOTE: many eeprom information such as serial number, mac address etc is not
+ * available.
+ *
+ * Return: 0 if all went fine, else return error.
+ */
+int ti_i2c_eeprom_am_set(const char *name, const char *rev);
+
 #endif	/* __BOARD_DETECT_H */
-- 
2.10.0

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

* [U-Boot] [PATCH 02/31] spl: fit: Break out some functions into a common file
  2017-03-02 19:04 [U-Boot] [PATCH 00/31] ARM: k2g: Add support for new K2G ICE EVM Franklin S Cooper Jr
  2017-03-02 19:04 ` [U-Boot] [PATCH 01/31] ti: common: board_detect: Allow settings board detection variables manually Franklin S Cooper Jr
@ 2017-03-02 19:04 ` Franklin S Cooper Jr
  2017-03-08 21:01   ` Simon Glass
  2017-03-13 12:33   ` Simon Glass
  2017-03-02 19:04 ` [U-Boot] [PATCH 03/31] boot_fit: Create helper functions that can be used to select DTB out of FIT Franklin S Cooper Jr
                   ` (28 subsequent siblings)
  30 siblings, 2 replies; 68+ messages in thread
From: Franklin S Cooper Jr @ 2017-03-02 19:04 UTC (permalink / raw)
  To: u-boot

Some of the functions within spl_fit will be used for non spl purposes.
Instead of duplicating functions simply break the functions to be reused
into its own file.

Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
---
 common/Makefile      |  1 +
 common/common_fit.c  | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 common/spl/spl_fit.c | 76 +---------------------------------------------
 include/image.h      |  8 +++++
 4 files changed, 96 insertions(+), 75 deletions(-)
 create mode 100644 common/common_fit.c

diff --git a/common/Makefile b/common/Makefile
index 86225f1..692ebc4 100644
--- a/common/Makefile
+++ b/common/Makefile
@@ -94,6 +94,7 @@ obj-$(CONFIG_SPL_DFU_SUPPORT) += cli_hush.o
 obj-$(CONFIG_SPL_HASH_SUPPORT) += hash.o
 obj-$(CONFIG_ENV_IS_IN_FLASH) += env_flash.o
 obj-$(CONFIG_SPL_YMODEM_SUPPORT) += xyzModem.o
+obj-$(CONFIG_SPL_LOAD_FIT) += common_fit.o
 obj-$(CONFIG_SPL_NET_SUPPORT) += miiphyutil.o
 obj-$(CONFIG_SPL_OF_TRANSLATE) += fdt_support.o
 ifdef CONFIG_SPL_USB_HOST_SUPPORT
diff --git a/common/common_fit.c b/common/common_fit.c
new file mode 100644
index 0000000..a08af72
--- /dev/null
+++ b/common/common_fit.c
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2016 Google, Inc
+ * Written by Simon Glass <sjg@chromium.org>
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+
+#include <common.h>
+#include <errno.h>
+#include <image.h>
+#include <libfdt.h>
+#include <spl.h>
+
+ulong fdt_getprop_u32(const void *fdt, int node, const char *prop)
+{
+	const u32 *cell;
+	int len;
+
+	cell = fdt_getprop(fdt, node, prop, &len);
+	if (len != sizeof(*cell))
+		return -1U;
+	return fdt32_to_cpu(*cell);
+}
+
+int fit_select_fdt(const void *fdt, int images, int *fdt_offsetp)
+{
+	const char *name, *fdt_name;
+	int conf, node, fdt_node;
+	int len;
+
+	*fdt_offsetp = 0;
+	conf = fdt_path_offset(fdt, FIT_CONFS_PATH);
+	if (conf < 0) {
+		debug("%s: Cannot find /configurations node: %d\n", __func__,
+		      conf);
+		return -EINVAL;
+	}
+	for (node = fdt_first_subnode(fdt, conf);
+	     node >= 0;
+	     node = fdt_next_subnode(fdt, node)) {
+		name = fdt_getprop(fdt, node, "description", &len);
+		if (!name) {
+#ifdef CONFIG_SPL_LIBCOMMON_SUPPORT
+			printf("%s: Missing FDT description in DTB\n",
+			       __func__);
+#endif
+			return -EINVAL;
+		}
+		if (board_fit_config_name_match(name))
+			continue;
+
+		debug("Selecting config '%s'", name);
+		fdt_name = fdt_getprop(fdt, node, FIT_FDT_PROP, &len);
+		if (!fdt_name) {
+			debug("%s: Cannot find fdt name property: %d\n",
+			      __func__, len);
+			return -EINVAL;
+		}
+
+		debug(", fdt '%s'\n", fdt_name);
+		fdt_node = fdt_subnode_offset(fdt, images, fdt_name);
+		if (fdt_node < 0) {
+			debug("%s: Cannot find fdt node '%s': %d\n",
+			      __func__, fdt_name, fdt_node);
+			return -EINVAL;
+		}
+
+		*fdt_offsetp = fdt_getprop_u32(fdt, fdt_node, "data-offset");
+		len = fdt_getprop_u32(fdt, fdt_node, "data-size");
+		debug("FIT: Selected '%s'\n", name);
+
+		return len;
+	}
+
+#ifdef CONFIG_SPL_LIBCOMMON_SUPPORT
+	printf("No matching DT out of these options:\n");
+	for (node = fdt_first_subnode(fdt, conf);
+	     node >= 0;
+	     node = fdt_next_subnode(fdt, node)) {
+		name = fdt_getprop(fdt, node, "description", &len);
+		printf("   %s\n", name);
+	}
+#endif
+
+	return -ENOENT;
+}
diff --git a/common/spl/spl_fit.c b/common/spl/spl_fit.c
index aae556f..3a722d3 100644
--- a/common/spl/spl_fit.c
+++ b/common/spl/spl_fit.c
@@ -11,80 +11,6 @@
 #include <libfdt.h>
 #include <spl.h>
 
-static ulong fdt_getprop_u32(const void *fdt, int node, const char *prop)
-{
-	const u32 *cell;
-	int len;
-
-	cell = fdt_getprop(fdt, node, prop, &len);
-	if (len != sizeof(*cell))
-		return -1U;
-	return fdt32_to_cpu(*cell);
-}
-
-static int spl_fit_select_fdt(const void *fdt, int images, int *fdt_offsetp)
-{
-	const char *name, *fdt_name;
-	int conf, node, fdt_node;
-	int len;
-
-	*fdt_offsetp = 0;
-	conf = fdt_path_offset(fdt, FIT_CONFS_PATH);
-	if (conf < 0) {
-		debug("%s: Cannot find /configurations node: %d\n", __func__,
-		      conf);
-		return -EINVAL;
-	}
-	for (node = fdt_first_subnode(fdt, conf);
-	     node >= 0;
-	     node = fdt_next_subnode(fdt, node)) {
-		name = fdt_getprop(fdt, node, "description", &len);
-		if (!name) {
-#ifdef CONFIG_SPL_LIBCOMMON_SUPPORT
-			printf("%s: Missing FDT description in DTB\n",
-			       __func__);
-#endif
-			return -EINVAL;
-		}
-		if (board_fit_config_name_match(name))
-			continue;
-
-		debug("Selecting config '%s'", name);
-		fdt_name = fdt_getprop(fdt, node, FIT_FDT_PROP, &len);
-		if (!fdt_name) {
-			debug("%s: Cannot find fdt name property: %d\n",
-			      __func__, len);
-			return -EINVAL;
-		}
-
-		debug(", fdt '%s'\n", fdt_name);
-		fdt_node = fdt_subnode_offset(fdt, images, fdt_name);
-		if (fdt_node < 0) {
-			debug("%s: Cannot find fdt node '%s': %d\n",
-			      __func__, fdt_name, fdt_node);
-			return -EINVAL;
-		}
-
-		*fdt_offsetp = fdt_getprop_u32(fdt, fdt_node, "data-offset");
-		len = fdt_getprop_u32(fdt, fdt_node, "data-size");
-		debug("FIT: Selected '%s'\n", name);
-
-		return len;
-	}
-
-#ifdef CONFIG_SPL_LIBCOMMON_SUPPORT
-	printf("No matching DT out of these options:\n");
-	for (node = fdt_first_subnode(fdt, conf);
-	     node >= 0;
-	     node = fdt_next_subnode(fdt, node)) {
-		name = fdt_getprop(fdt, node, "description", &len);
-		printf("   %s\n", name);
-	}
-#endif
-
-	return -ENOENT;
-}
-
 static int get_aligned_image_offset(struct spl_load_info *info, int offset)
 {
 	/*
@@ -218,7 +144,7 @@ int spl_load_simple_fit(struct spl_image_info *spl_image,
 	memcpy(dst, src, data_size);
 
 	/* Figure out which device tree the board wants to use */
-	fdt_len = spl_fit_select_fdt(fit, images, &fdt_offset);
+	fdt_len = fit_select_fdt(fit, images, &fdt_offset);
 	if (fdt_len < 0)
 		return fdt_len;
 
diff --git a/include/image.h b/include/image.h
index 1e686b7..bb8d699 100644
--- a/include/image.h
+++ b/include/image.h
@@ -18,6 +18,7 @@
 
 #include "compiler.h"
 #include <asm/byteorder.h>
+#include <linux/kconfig.h>
 
 /* Define this to avoid #ifdefs later on */
 struct lmb;
@@ -1274,6 +1275,13 @@ int board_fit_config_name_match(const char *name);
 void board_fit_image_post_process(void **p_image, size_t *p_size);
 #endif /* CONFIG_SPL_FIT_IMAGE_POST_PROCESS */
 
+#if IS_ENABLED(CONFIG_SPL_LOAD_FIT)
+
+ulong fdt_getprop_u32(const void *fdt, int node, const char *prop);
+int fit_select_fdt(const void *fdt, int images, int *fdt_offsetp);
+
+#endif
+
 /**
  * Mapping of image types to function handlers to be invoked on the associated
  * loaded images
-- 
2.10.0

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

* [U-Boot] [PATCH 03/31] boot_fit: Create helper functions that can be used to select DTB out of FIT
  2017-03-02 19:04 [U-Boot] [PATCH 00/31] ARM: k2g: Add support for new K2G ICE EVM Franklin S Cooper Jr
  2017-03-02 19:04 ` [U-Boot] [PATCH 01/31] ti: common: board_detect: Allow settings board detection variables manually Franklin S Cooper Jr
  2017-03-02 19:04 ` [U-Boot] [PATCH 02/31] spl: fit: Break out some functions into a common file Franklin S Cooper Jr
@ 2017-03-02 19:04 ` Franklin S Cooper Jr
  2017-03-02 19:04 ` [U-Boot] [PATCH 04/31] fdt: Enable selecting correct DTB from append FIT Image Franklin S Cooper Jr
                   ` (27 subsequent siblings)
  30 siblings, 0 replies; 68+ messages in thread
From: Franklin S Cooper Jr @ 2017-03-02 19:04 UTC (permalink / raw)
  To: u-boot

Some platforms may append a FIT image to the U-boot image. This function
aids in parsing the FIT image and selecting the correct DTB at runtime.

Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
---
 common/Kconfig     |  8 ++++++++
 common/Makefile    |  1 +
 common/boot_fit.c  | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 include/boot_fit.h |  9 +++++++++
 include/image.h    |  2 +-
 5 files changed, 77 insertions(+), 1 deletion(-)
 create mode 100644 common/boot_fit.c
 create mode 100644 include/boot_fit.h

diff --git a/common/Kconfig b/common/Kconfig
index 8f73c8f..11495f3 100644
--- a/common/Kconfig
+++ b/common/Kconfig
@@ -352,6 +352,14 @@ config SYS_STDIO_DEREGISTER
 
 endmenu
 
+config FIT_EMBED
+	bool "Support a FIT image embedded in the U-boot image"
+	default n
+	help
+	  This option provides hooks to allow U-boot to parse an
+	  appended FIT image and enable board specific code to then select
+	  the correct DTB to be used.
+
 config DEFAULT_FDT_FILE
 	string "Default fdt file"
 	help
diff --git a/common/Makefile b/common/Makefile
index 692ebc4..4dfebfc 100644
--- a/common/Makefile
+++ b/common/Makefile
@@ -150,6 +150,7 @@ obj-y += image.o
 obj-$(CONFIG_ANDROID_BOOT_IMAGE) += image-android.o
 obj-$(CONFIG_$(SPL_)OF_LIBFDT) += image-fdt.o
 obj-$(CONFIG_$(SPL_)FIT) += image-fit.o
+obj-$(CONFIG_FIT_EMBED) += boot_fit.o common_fit.o
 obj-$(CONFIG_$(SPL_)FIT_SIGNATURE) += image-sig.o
 obj-$(CONFIG_IO_TRACE) += iotrace.o
 obj-y += memsize.o
diff --git a/common/boot_fit.c b/common/boot_fit.c
new file mode 100644
index 0000000..ff26cf7
--- /dev/null
+++ b/common/boot_fit.c
@@ -0,0 +1,58 @@
+/*
+ * (C) Copyright 2017
+ * Texas Instruments, <www.ti.com>
+ *
+ * Franklin S Cooper Jr. <fcooper@ti.com>
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+
+#include <boot_fit.h>
+#include <common.h>
+#include <errno.h>
+#include <image.h>
+#include <libfdt.h>
+
+int fdt_offset(void *fit)
+{
+	int fdt_offset, fdt_len;
+	int images;
+
+	images = fdt_path_offset(fit, FIT_IMAGES_PATH);
+	if (images < 0) {
+		debug("%s: Cannot find /images node: %d\n", __func__, images);
+		return -1;
+	}
+
+	/* Figure out which device tree the board wants to use */
+	fdt_len = fit_select_fdt(fit, images, &fdt_offset);
+
+	if (fdt_len < 0)
+		return fdt_len;
+
+	return fdt_offset;
+}
+
+void *locate_dtb_in_fit(void *fit)
+{
+	struct image_header *header;
+	int size;
+	int ret;
+
+	size = fdt_totalsize(fit);
+	size = (size + 3) & ~3;
+
+	header = (struct image_header *)fit;
+
+	if (image_get_magic(header) != FDT_MAGIC) {
+		debug("No FIT image appended to U-boot\n");
+		return NULL;
+	}
+
+	ret = fdt_offset(fit);
+
+	if (ret <= 0)
+		return NULL;
+	else
+		return (void *)fit+size+ret;
+}
diff --git a/include/boot_fit.h b/include/boot_fit.h
new file mode 100644
index 0000000..b7d2462
--- /dev/null
+++ b/include/boot_fit.h
@@ -0,0 +1,9 @@
+/*
+ * Copyright (C) 2017 Texas Instruments
+ * Written by Franklin Cooper Jr. <fcooper@ti.com>
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+
+int fdt_offset(void *fit);
+void *locate_dtb_in_fit(void *fit);
diff --git a/include/image.h b/include/image.h
index bb8d699..2674cef 100644
--- a/include/image.h
+++ b/include/image.h
@@ -1275,7 +1275,7 @@ int board_fit_config_name_match(const char *name);
 void board_fit_image_post_process(void **p_image, size_t *p_size);
 #endif /* CONFIG_SPL_FIT_IMAGE_POST_PROCESS */
 
-#if IS_ENABLED(CONFIG_SPL_LOAD_FIT)
+#if IS_ENABLED(CONFIG_SPL_LOAD_FIT) || IS_ENABLED(CONFIG_FIT_EMBED)
 
 ulong fdt_getprop_u32(const void *fdt, int node, const char *prop);
 int fit_select_fdt(const void *fdt, int images, int *fdt_offsetp);
-- 
2.10.0

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

* [U-Boot] [PATCH 04/31] fdt: Enable selecting correct DTB from append FIT Image
  2017-03-02 19:04 [U-Boot] [PATCH 00/31] ARM: k2g: Add support for new K2G ICE EVM Franklin S Cooper Jr
                   ` (2 preceding siblings ...)
  2017-03-02 19:04 ` [U-Boot] [PATCH 03/31] boot_fit: Create helper functions that can be used to select DTB out of FIT Franklin S Cooper Jr
@ 2017-03-02 19:04 ` Franklin S Cooper Jr
  2017-03-09 13:08   ` Tom Rini
  2017-03-02 19:04 ` [U-Boot] [PATCH 05/31] ti: common: board_detect: Add function to determine if EEPROM was read Franklin S Cooper Jr
                   ` (26 subsequent siblings)
  30 siblings, 1 reply; 68+ messages in thread
From: Franklin S Cooper Jr @ 2017-03-02 19:04 UTC (permalink / raw)
  To: u-boot

This patch gives U-boot the runtime support to have the board specific
code decide which FDT to use. This is especially useful for devices
that need this type of runtime determination and also doesn't use SPL.

Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>
Reviewed-by: Lokesh Vutla <lokeshvutla@ti.com>
---
 lib/fdtdec.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/lib/fdtdec.c b/lib/fdtdec.c
index 81f47ef..38db61c 100644
--- a/lib/fdtdec.c
+++ b/lib/fdtdec.c
@@ -4,6 +4,7 @@
  */
 
 #ifndef USE_HOSTCC
+#include <boot_fit.h>
 #include <common.h>
 #include <dm.h>
 #include <errno.h>
@@ -1243,6 +1244,15 @@ int fdtdec_setup(void)
 		gd->fdt_blob = (ulong *)&_image_binary_end;
 	else
 		gd->fdt_blob = (ulong *)&__bss_end;
+
+#  elif defined CONFIG_FIT_EMBED
+	gd->fdt_blob = locate_dtb_in_fit(&_end);
+
+	if (gd->fdt_blob == NULL || gd->fdt_blob <= ((void *)&_end)) {
+		puts("Failed to find proper dtb in embedded FIT Image\n");
+		return -1;
+	}
+
 #  else
 	/* FDT is@end of image */
 	gd->fdt_blob = (ulong *)&_end;
-- 
2.10.0

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

* [U-Boot] [PATCH 05/31] ti: common: board_detect: Add function to determine if EEPROM was read
  2017-03-02 19:04 [U-Boot] [PATCH 00/31] ARM: k2g: Add support for new K2G ICE EVM Franklin S Cooper Jr
                   ` (3 preceding siblings ...)
  2017-03-02 19:04 ` [U-Boot] [PATCH 04/31] fdt: Enable selecting correct DTB from append FIT Image Franklin S Cooper Jr
@ 2017-03-02 19:04 ` Franklin S Cooper Jr
  2017-03-09 13:08   ` Tom Rini
  2017-03-02 19:04 ` [U-Boot] [PATCH 06/31] dts: Allow OF_LIST to depend on FIT_EMBED Franklin S Cooper Jr
                   ` (25 subsequent siblings)
  30 siblings, 1 reply; 68+ messages in thread
From: Franklin S Cooper Jr @ 2017-03-02 19:04 UTC (permalink / raw)
  To: u-boot

When the EEPROM is first read its contents are stored in memory as a
cache to avoid further I2C operations. To determine if the EEPROM was
previously read the easiest way is to check the memory to see if the
EEPROM's magic header value is set. Create a new function that can
determine if the EEPROM was previously read or not without having to
perform a I2C transaction.

Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>
---
 board/ti/common/board_detect.c | 10 ++++++++++
 board/ti/common/board_detect.h |  9 +++++++++
 2 files changed, 19 insertions(+)

diff --git a/board/ti/common/board_detect.c b/board/ti/common/board_detect.c
index 5aaf884..b29807a 100644
--- a/board/ti/common/board_detect.c
+++ b/board/ti/common/board_detect.c
@@ -338,3 +338,13 @@ void __maybe_unused set_board_info_env(char *name)
 	else
 		setenv("board_serial", unknown);
 }
+
+bool __maybe_unused board_ti_was_eeprom_read(void)
+{
+	struct ti_common_eeprom *ep = TI_EEPROM_DATA;
+
+	if (ep->header == TI_EEPROM_HEADER_MAGIC)
+		return true;
+	else
+		return false;
+}
diff --git a/board/ti/common/board_detect.h b/board/ti/common/board_detect.h
index eeeacd3..97dc4e4 100644
--- a/board/ti/common/board_detect.h
+++ b/board/ti/common/board_detect.h
@@ -194,6 +194,15 @@ u64 board_ti_get_emif2_size(void);
 void set_board_info_env(char *name);
 
 /**
+ * board_ti_was_eeprom_read() - Check to see if the eeprom contents have been read
+ *
+ * This function is useful to determine if the eeprom has already been read and
+ * its contents have already been loaded into memory. It utiltzes the magic
+ * number that the header value is set to upon successful eeprom read.
+ */
+bool board_ti_was_eeprom_read(void);
+
+/**
  * ti_i2c_eeprom_am_set() - Setup the eeprom data with predefined values
  * @name:	Name of the board
  * @rev:	Revision of the board
-- 
2.10.0

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

* [U-Boot] [PATCH 06/31] dts: Allow OF_LIST to depend on FIT_EMBED
  2017-03-02 19:04 [U-Boot] [PATCH 00/31] ARM: k2g: Add support for new K2G ICE EVM Franklin S Cooper Jr
                   ` (4 preceding siblings ...)
  2017-03-02 19:04 ` [U-Boot] [PATCH 05/31] ti: common: board_detect: Add function to determine if EEPROM was read Franklin S Cooper Jr
@ 2017-03-02 19:04 ` Franklin S Cooper Jr
  2017-03-02 19:04 ` [U-Boot] [PATCH 07/31] arm: dts: Add new "generic" 66AK2Gx device tree file Franklin S Cooper Jr
                   ` (24 subsequent siblings)
  30 siblings, 0 replies; 68+ messages in thread
From: Franklin S Cooper Jr @ 2017-03-02 19:04 UTC (permalink / raw)
  To: u-boot

OF_LIST will be useable by SPL and U-boot. Therefore, update its
dependency to allow it to be enable by either SPL or U-boot specific
config option.

Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Lokesh Vutla <lokeshvutla@ti.com>
Acked-by: Andrew F. Davis <afd@ti.com>
---
 dts/Kconfig | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/dts/Kconfig b/dts/Kconfig
index 4b7d8b1..ba019a8 100644
--- a/dts/Kconfig
+++ b/dts/Kconfig
@@ -61,14 +61,15 @@ config DEFAULT_DEVICE_TREE
 
 config OF_LIST
 	string "List of device tree files to include for DT control"
-	depends on SPL_LOAD_FIT
+	depends on SPL_LOAD_FIT || FIT_EMBED
 	default DEFAULT_DEVICE_TREE
 	help
 	  This option specifies a list of device tree files to use for DT
-	  control. These will be packaged into a FIT. At run-time, SPL will
-	  select the correct DT to use by examining the hardware (e.g.
-	  reading a board ID value). This is a list of device tree files
-	  (without the directory or .dtb suffix) separated by <space>.
+	  control. These will be packaged into a FIT. At run-time, U-boot
+	  or SPL will select the correct DT to use by examining the
+	  hardware (e.g. reading a board ID value). This is a list of
+	  device tree files (without the directory or .dtb suffix)
+	  separated by <space>.
 
 config OF_SPL_REMOVE_PROPS
 	string "List of device tree properties to drop for SPL"
-- 
2.10.0

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

* [U-Boot] [PATCH 07/31] arm: dts: Add new "generic" 66AK2Gx device tree file.
  2017-03-02 19:04 [U-Boot] [PATCH 00/31] ARM: k2g: Add support for new K2G ICE EVM Franklin S Cooper Jr
                   ` (5 preceding siblings ...)
  2017-03-02 19:04 ` [U-Boot] [PATCH 06/31] dts: Allow OF_LIST to depend on FIT_EMBED Franklin S Cooper Jr
@ 2017-03-02 19:04 ` Franklin S Cooper Jr
  2017-03-02 19:04 ` [U-Boot] [PATCH 08/31] ti: common: board_detect: Rename EEPROM scratch start macro Franklin S Cooper Jr
                   ` (23 subsequent siblings)
  30 siblings, 0 replies; 68+ messages in thread
From: Franklin S Cooper Jr @ 2017-03-02 19:04 UTC (permalink / raw)
  To: u-boot

With U-boot runtime board detect for DTB selection a "default" dtb needs
to be created. This will be used temporarily until the "proper" dtb is
selected.

Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
---
 arch/arm/dts/Makefile                 |  3 ++-
 arch/arm/dts/keystone-k2g-generic.dts | 21 +++++++++++++++++++++
 2 files changed, 23 insertions(+), 1 deletion(-)
 create mode 100644 arch/arm/dts/keystone-k2g-generic.dts

diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
index eb68c20..06ebbf0 100644
--- a/arch/arm/dts/Makefile
+++ b/arch/arm/dts/Makefile
@@ -323,7 +323,8 @@ dtb-$(CONFIG_MX7) += imx7-colibri.dtb
 dtb-$(CONFIG_SOC_KEYSTONE) += keystone-k2hk-evm.dtb \
 	keystone-k2l-evm.dtb \
 	keystone-k2e-evm.dtb \
-	keystone-k2g-evm.dtb
+	keystone-k2g-evm.dtb \
+	keystone-k2g-generic.dtb
 
 dtb-$(CONFIG_TARGET_SAMA5D2_XPLAINED) += \
 	at91-sama5d2_xplained.dtb
diff --git a/arch/arm/dts/keystone-k2g-generic.dts b/arch/arm/dts/keystone-k2g-generic.dts
new file mode 100644
index 0000000..cff9155
--- /dev/null
+++ b/arch/arm/dts/keystone-k2g-generic.dts
@@ -0,0 +1,21 @@
+/*
+ * Copyright 2017 Texas Instruments, Inc.
+ *
+ * 66AK2G0X Generic File
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+/dts-v1/;
+
+#include "keystone-k2g.dtsi"
+
+/ {
+	compatible =  "ti,k2g-generic", "ti,k2g", "ti,keystone";
+	model = "Texas Instruments 66AK2G02 Generic";
+
+	chosen {
+		stdout-path = &uart0;
+	};
+};
-- 
2.10.0

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

* [U-Boot] [PATCH 08/31] ti: common: board_detect: Rename EEPROM scratch start macro
  2017-03-02 19:04 [U-Boot] [PATCH 00/31] ARM: k2g: Add support for new K2G ICE EVM Franklin S Cooper Jr
                   ` (6 preceding siblings ...)
  2017-03-02 19:04 ` [U-Boot] [PATCH 07/31] arm: dts: Add new "generic" 66AK2Gx device tree file Franklin S Cooper Jr
@ 2017-03-02 19:04 ` Franklin S Cooper Jr
  2017-03-02 19:04 ` [U-Boot] [PATCH 09/31] ti_armv7_keystone2: Define scratch space in SRAM Franklin S Cooper Jr
                   ` (22 subsequent siblings)
  30 siblings, 0 replies; 68+ messages in thread
From: Franklin S Cooper Jr @ 2017-03-02 19:04 UTC (permalink / raw)
  To: u-boot

From: Lokesh Vutla <lokeshvutla@ti.com>

Non OMAP platforms i.e. Keystone will also need to use the board
EEPROM helpers so let's make the macro platform independent.

Signed-off-by: Roger Quadros <rogerq@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
---
 arch/arm/include/asm/omap_common.h | 8 +++++---
 board/ti/common/board_detect.h     | 2 +-
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/arch/arm/include/asm/omap_common.h b/arch/arm/include/asm/omap_common.h
index 2034a5e..c1a70b1 100644
--- a/arch/arm/include/asm/omap_common.h
+++ b/arch/arm/include/asm/omap_common.h
@@ -767,9 +767,11 @@ static inline u8 is_dra72x(void)
 #define OMAP_SRAM_SCRATCH_VCORES_PTR    (SRAM_SCRATCH_SPACE_ADDR + 0x1C)
 #define OMAP_SRAM_SCRATCH_SYS_CTRL	(SRAM_SCRATCH_SPACE_ADDR + 0x20)
 #define OMAP_SRAM_SCRATCH_BOOT_PARAMS	(SRAM_SCRATCH_SPACE_ADDR + 0x24)
-#define OMAP_SRAM_SCRATCH_BOARD_EEPROM_START (SRAM_SCRATCH_SPACE_ADDR + 0x28)
-#define OMAP_SRAM_SCRATCH_BOARD_EEPROM_END (SRAM_SCRATCH_SPACE_ADDR + 0x200)
-#define OMAP_SRAM_SCRATCH_SPACE_END	(OMAP_SRAM_SCRATCH_BOARD_EEPROM_END)
+#ifndef TI_SRAM_SCRATCH_BOARD_EEPROM_START
+#define TI_SRAM_SCRATCH_BOARD_EEPROM_START (SRAM_SCRATCH_SPACE_ADDR + 0x28)
+#define TI_SRAM_SCRATCH_BOARD_EEPROM_END (SRAM_SCRATCH_SPACE_ADDR + 0x200)
+#endif
+#define OMAP_SRAM_SCRATCH_SPACE_END	(TI_SRAM_SCRATCH_BOARD_EEPROM_END)
 
 /* Boot parameters */
 #define DEVICE_DATA_OFFSET	0x18
diff --git a/board/ti/common/board_detect.h b/board/ti/common/board_detect.h
index 97dc4e4..1ea4d68 100644
--- a/board/ti/common/board_detect.h
+++ b/board/ti/common/board_detect.h
@@ -98,7 +98,7 @@ struct ti_common_eeprom {
 };
 
 #define TI_EEPROM_DATA ((struct ti_common_eeprom *)\
-				OMAP_SRAM_SCRATCH_BOARD_EEPROM_START)
+				TI_SRAM_SCRATCH_BOARD_EEPROM_START)
 
 /**
  * ti_i2c_eeprom_am_get() - Consolidated eeprom data collection for AM* TI EVMs
-- 
2.10.0

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

* [U-Boot] [PATCH 09/31] ti_armv7_keystone2: Define scratch space in SRAM
  2017-03-02 19:04 [U-Boot] [PATCH 00/31] ARM: k2g: Add support for new K2G ICE EVM Franklin S Cooper Jr
                   ` (7 preceding siblings ...)
  2017-03-02 19:04 ` [U-Boot] [PATCH 08/31] ti: common: board_detect: Rename EEPROM scratch start macro Franklin S Cooper Jr
@ 2017-03-02 19:04 ` Franklin S Cooper Jr
  2017-03-09 13:08   ` Tom Rini
  2017-03-02 19:04 ` [U-Boot] [PATCH 10/31] ARM: Use Kconfig for board EEPROM's I2C bus and chip address Franklin S Cooper Jr
                   ` (21 subsequent siblings)
  30 siblings, 1 reply; 68+ messages in thread
From: Franklin S Cooper Jr @ 2017-03-02 19:04 UTC (permalink / raw)
  To: u-boot

Scratch space can be used for features such as board detection. Define
an area within SRAM that can be used for this purpose.

Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>
Signed-off-by: Roger Quadros <rogerq@ti.com>
---
 include/configs/ti_armv7_keystone2.h | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/include/configs/ti_armv7_keystone2.h b/include/configs/ti_armv7_keystone2.h
index 5d4ef58..f76e0a5 100644
--- a/include/configs/ti_armv7_keystone2.h
+++ b/include/configs/ti_armv7_keystone2.h
@@ -55,6 +55,13 @@
 #define CONFIG_SPL_SPI_LOAD
 #define CONFIG_SYS_SPI_U_BOOT_OFFS	CONFIG_SPL_PAD_TO
 
+/* SRAM scratch space entries  */
+#define SRAM_SCRATCH_SPACE_ADDR	CONFIG_SPL_STACK + 0x8
+
+#define TI_SRAM_SCRATCH_BOARD_EEPROM_START	(SRAM_SCRATCH_SPACE_ADDR)
+#define TI_SRAM_SCRATCH_BOARD_EEPROM_END	(SRAM_SCRATCH_SPACE_ADDR + 0x200)
+#define KEYSTONE_SRAM_SCRATCH_SPACE_END		(TI_SRAM_SCRATCH_BOARD_EEPROM_END)
+
 /* UART Configuration */
 #define CONFIG_SYS_NS16550_MEM32
 #if defined(CONFIG_SPL_BUILD) || !defined(CONFIG_DM_SERIAL)
-- 
2.10.0

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

* [U-Boot] [PATCH 10/31] ARM: Use Kconfig for board EEPROM's I2C bus and chip address
  2017-03-02 19:04 [U-Boot] [PATCH 00/31] ARM: k2g: Add support for new K2G ICE EVM Franklin S Cooper Jr
                   ` (8 preceding siblings ...)
  2017-03-02 19:04 ` [U-Boot] [PATCH 09/31] ti_armv7_keystone2: Define scratch space in SRAM Franklin S Cooper Jr
@ 2017-03-02 19:04 ` Franklin S Cooper Jr
  2017-03-02 19:04 ` [U-Boot] [PATCH 11/31] ARM: k2g: Enable TI board detection code Franklin S Cooper Jr
                   ` (20 subsequent siblings)
  30 siblings, 0 replies; 68+ messages in thread
From: Franklin S Cooper Jr @ 2017-03-02 19:04 UTC (permalink / raw)
  To: u-boot

From: Roger Quadros <rogerq@ti.com>

In stead of defining the board EEPROM address in the board headers
let's define them in the board config files and make them
configurable by Kconfig.

Signed-off-by: Roger Quadros <rogerq@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
---
 board/ti/common/Kconfig      | 20 +++++++++++++++++---
 board/ti/ks2_evm/Kconfig     |  2 ++
 include/configs/am57xx_evm.h |  4 ----
 include/configs/dra7xx_evm.h |  4 ----
 4 files changed, 19 insertions(+), 11 deletions(-)

diff --git a/board/ti/common/Kconfig b/board/ti/common/Kconfig
index 4980a04..162248c 100644
--- a/board/ti/common/Kconfig
+++ b/board/ti/common/Kconfig
@@ -1,12 +1,24 @@
-config SPL_ENV_SUPPORT
-	default y
-
 config TI_I2C_BOARD_DETECT
 	bool "Support for Board detection for TI platforms"
 	help
 	   Support for detection board information on Texas Instrument's
 	   Evaluation Boards which have I2C based EEPROM detection
 
+config EEPROM_BUS_ADDRESS
+	int "Board EEPROM's I2C bus address"
+	range 0 8
+	default 0
+
+config EEPROM_CHIP_ADDRESS
+	hex "Board EEPROM's I2C chip address"
+	range 0 0xff
+	default 0x50
+
+if ARCH_OMAP2
+
+config SPL_ENV_SUPPORT
+	default y
+
 config SPL_EXT_SUPPORT
 	default y
 
@@ -39,3 +51,5 @@ config SPL_POWER_SUPPORT
 
 config SPL_SERIAL_SUPPORT
 	default y
+
+endif
diff --git a/board/ti/ks2_evm/Kconfig b/board/ti/ks2_evm/Kconfig
index c0568ec..9477f53 100644
--- a/board/ti/ks2_evm/Kconfig
+++ b/board/ti/ks2_evm/Kconfig
@@ -49,3 +49,5 @@ config SYS_CONFIG_NAME
 	default "k2g_evm"
 
 endif
+
+source "board/ti/common/Kconfig"
diff --git a/include/configs/am57xx_evm.h b/include/configs/am57xx_evm.h
index 3d8b996..40a3bbd 100644
--- a/include/configs/am57xx_evm.h
+++ b/include/configs/am57xx_evm.h
@@ -103,10 +103,6 @@
 #define CONFIG_SYS_SCSI_MAX_DEVICE	(CONFIG_SYS_SCSI_MAX_SCSI_ID * \
 						CONFIG_SYS_SCSI_MAX_LUN)
 
-/* EEPROM */
-#define CONFIG_EEPROM_CHIP_ADDRESS 0x50
-#define CONFIG_EEPROM_BUS_ADDRESS 0
-
 /*
  * Default to using SPI for environment, etc.
  * 0x000000 - 0x040000 : QSPI.SPL (256KiB)
diff --git a/include/configs/dra7xx_evm.h b/include/configs/dra7xx_evm.h
index 549439e..2996807 100644
--- a/include/configs/dra7xx_evm.h
+++ b/include/configs/dra7xx_evm.h
@@ -261,8 +261,4 @@
 #endif
 #endif  /* NOR support */
 
-/* EEPROM */
-#define CONFIG_EEPROM_CHIP_ADDRESS 0x50
-#define CONFIG_EEPROM_BUS_ADDRESS 0
-
 #endif /* __CONFIG_DRA7XX_EVM_H */
-- 
2.10.0

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

* [U-Boot] [PATCH 11/31] ARM: k2g: Enable TI board detection code
  2017-03-02 19:04 [U-Boot] [PATCH 00/31] ARM: k2g: Add support for new K2G ICE EVM Franklin S Cooper Jr
                   ` (9 preceding siblings ...)
  2017-03-02 19:04 ` [U-Boot] [PATCH 10/31] ARM: Use Kconfig for board EEPROM's I2C bus and chip address Franklin S Cooper Jr
@ 2017-03-02 19:04 ` Franklin S Cooper Jr
  2017-03-09 13:08   ` Tom Rini
  2017-03-02 19:04 ` [U-Boot] [PATCH 12/31] board_f: Add new function to allow runtime DTB selection Franklin S Cooper Jr
                   ` (19 subsequent siblings)
  30 siblings, 1 reply; 68+ messages in thread
From: Franklin S Cooper Jr @ 2017-03-02 19:04 UTC (permalink / raw)
  To: u-boot

K2G boards have a EEPROM that will be used for board detection. Therefore,
select the board detection config for K2G evms.

Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>
---
 arch/arm/mach-keystone/Kconfig | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/arm/mach-keystone/Kconfig b/arch/arm/mach-keystone/Kconfig
index e1962c7..5c880fa 100644
--- a/arch/arm/mach-keystone/Kconfig
+++ b/arch/arm/mach-keystone/Kconfig
@@ -15,6 +15,7 @@ config TARGET_K2L_EVM
 
 config TARGET_K2G_EVM
 	bool "TI Keystone 2 Galileo EVM"
+	select TI_I2C_BOARD_DETECT
 
 endchoice
 
-- 
2.10.0

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

* [U-Boot] [PATCH 12/31] board_f: Add new function to allow runtime DTB selection
  2017-03-02 19:04 [U-Boot] [PATCH 00/31] ARM: k2g: Add support for new K2G ICE EVM Franklin S Cooper Jr
                   ` (10 preceding siblings ...)
  2017-03-02 19:04 ` [U-Boot] [PATCH 11/31] ARM: k2g: Enable TI board detection code Franklin S Cooper Jr
@ 2017-03-02 19:04 ` Franklin S Cooper Jr
  2017-03-09 13:08   ` Tom Rini
  2017-03-02 19:04 ` [U-Boot] [PATCH 13/31] Makefile: Build additional binaries for dtb FIT blobs appended to U-boot Franklin S Cooper Jr
                   ` (18 subsequent siblings)
  30 siblings, 1 reply; 68+ messages in thread
From: Franklin S Cooper Jr @ 2017-03-02 19:04 UTC (permalink / raw)
  To: u-boot

Runtime U-boot dtb selection is generally a two step process. First step
is to simply use an initial generic dtb. The second step is to select
the dtb and perhaps execute additional code ones U-boot knows what board
it is running on. Embedded_dtb_select handles the second step by allowing
board specific code to run and perform what ever necessary configuration
that is needed.

Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>
---
 common/Kconfig   | 10 ++++++++++
 common/board_f.c |  3 +++
 include/common.h |  4 ++++
 3 files changed, 17 insertions(+)

diff --git a/common/Kconfig b/common/Kconfig
index 11495f3..bf4e94b 100644
--- a/common/Kconfig
+++ b/common/Kconfig
@@ -352,6 +352,16 @@ config SYS_STDIO_DEREGISTER
 
 endmenu
 
+config DTB_RESELECT
+	bool "Support swapping dtbs at a later point in boot"
+	depends on FIT_EMBED
+	default n
+	help
+	  It is possible during initial boot you may need to use a generic
+	  dtb until you can fully determine the board your running on. This
+	  config allows boards to implement a function at a later point
+	  during boot to switch to the "correct" dtb.
+
 config FIT_EMBED
 	bool "Support a FIT image embedded in the U-boot image"
 	default n
diff --git a/common/board_f.c b/common/board_f.c
index ae6cd85..2e69b3a 100644
--- a/common/board_f.c
+++ b/common/board_f.c
@@ -920,6 +920,9 @@ static const init_fnc_t init_sequence_f[] = {
 #if defined(CONFIG_DISPLAY_CPUINFO)
 	print_cpuinfo,		/* display cpu info (and speed) */
 #endif
+#if defined(CONFIG_DTB_RESELECT)
+	embedded_dtb_select,
+#endif
 #if defined(CONFIG_DISPLAY_BOARDINFO)
 	show_board_info,
 #endif
diff --git a/include/common.h b/include/common.h
index fbbc2cb..7bc85d8 100644
--- a/include/common.h
+++ b/include/common.h
@@ -451,6 +451,10 @@ void	pci_init_board(void);
 #endif
 #endif
 
+#if defined(CONFIG_DTB_RESELECT)
+int	embedded_dtb_select(void);
+#endif
+
 int	misc_init_f   (void);
 int	misc_init_r   (void);
 
-- 
2.10.0

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

* [U-Boot] [PATCH 13/31] Makefile: Build additional binaries for dtb FIT blobs appended to U-boot
  2017-03-02 19:04 [U-Boot] [PATCH 00/31] ARM: k2g: Add support for new K2G ICE EVM Franklin S Cooper Jr
                   ` (11 preceding siblings ...)
  2017-03-02 19:04 ` [U-Boot] [PATCH 12/31] board_f: Add new function to allow runtime DTB selection Franklin S Cooper Jr
@ 2017-03-02 19:04 ` Franklin S Cooper Jr
  2017-03-09 13:08   ` Tom Rini
  2017-03-02 19:04 ` [U-Boot] [PATCH 14/31] ARM: keystone2: Allow to build with all image formats Franklin S Cooper Jr
                   ` (17 subsequent siblings)
  30 siblings, 1 reply; 68+ messages in thread
From: Franklin S Cooper Jr @ 2017-03-02 19:04 UTC (permalink / raw)
  To: u-boot

Add additional make targets and options for building embedded FIT U-boot
images.

Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>
---
 .gitignore |  1 +
 Makefile   | 18 ++++++++++++++++--
 2 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/.gitignore b/.gitignore
index 7fac5b3..29757aa 100644
--- a/.gitignore
+++ b/.gitignore
@@ -30,6 +30,7 @@
 #
 # Top-level generic files
 #
+fit-dtb.blob
 /MLO*
 /SPL*
 /System.map
diff --git a/Makefile b/Makefile
index 7cbb610..24254a5 100644
--- a/Makefile
+++ b/Makefile
@@ -862,7 +862,21 @@ dts/dt.dtb: checkdtc u-boot
 quiet_cmd_copy = COPY    $@
       cmd_copy = cp $< $@
 
-ifeq ($(CONFIG_OF_SEPARATE),y)
+ifeq ($(CONFIG_FIT_EMBED),y)
+
+fit-dtb.blob: dts/dt.dtb FORCE
+	$(call if_changed,mkimage)
+
+MKIMAGEFLAGS_fit-dtb.blob = -f auto -A $(ARCH) -T firmware -C none -O u-boot \
+	-a 0 -e 0 -E \
+	$(patsubst %,-b arch/$(ARCH)/dts/%.dtb,$(subst ",,$(CONFIG_OF_LIST))) -d /dev/null
+
+u-boot-fit-dtb.bin: u-boot-nodtb.bin fit-dtb.blob
+	$(call if_changed,cat)
+
+u-boot.bin: u-boot-fit-dtb.bin FORCE
+	$(call if_changed,copy)
+else ifeq ($(CONFIG_OF_SEPARATE),y)
 u-boot-dtb.bin: u-boot-nodtb.bin dts/dt.dtb FORCE
 	$(call if_changed,cat)
 
@@ -1429,7 +1443,7 @@ CLEAN_DIRS  += $(MODVERDIR) \
 			$(filter-out include, $(shell ls -1 $d 2>/dev/null))))
 
 CLEAN_FILES += include/bmp_logo.h include/bmp_logo_data.h \
-	       boot* u-boot* MLO* SPL System.map
+	       boot* u-boot* MLO* SPL System.map fit-dtb.blob
 
 # Directories & files removed with 'make mrproper'
 MRPROPER_DIRS  += include/config include/generated spl tpl \
-- 
2.10.0

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

* [U-Boot] [PATCH 14/31] ARM: keystone2: Allow to build with all image formats
  2017-03-02 19:04 [U-Boot] [PATCH 00/31] ARM: k2g: Add support for new K2G ICE EVM Franklin S Cooper Jr
                   ` (12 preceding siblings ...)
  2017-03-02 19:04 ` [U-Boot] [PATCH 13/31] Makefile: Build additional binaries for dtb FIT blobs appended to U-boot Franklin S Cooper Jr
@ 2017-03-02 19:04 ` Franklin S Cooper Jr
  2017-03-09 13:08   ` Tom Rini
  2017-03-02 19:04 ` [U-Boot] [PATCH 15/31] ARM: k2g: Define embedded_dtb_select for runtime DTB selection in U-boot Franklin S Cooper Jr
                   ` (16 subsequent siblings)
  30 siblings, 1 reply; 68+ messages in thread
From: Franklin S Cooper Jr @ 2017-03-02 19:04 UTC (permalink / raw)
  To: u-boot

u-boot.bin is a copy of:
u-boot-fit-dtb.bin if CONFIG_FIT_EMBED is enabled,
u-boot-dtb.bin if CONFIG_OF_SEPARATE is enabled,
u-boot-nodtb.bin if DT is not enabled.
So, use u-boot.bin to to generate keystone images instead of
u-boot-dtb.bin

Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>
---
 arch/arm/mach-keystone/config.mk | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm/mach-keystone/config.mk b/arch/arm/mach-keystone/config.mk
index 9ae1e9a..ceacffa 100644
--- a/arch/arm/mach-keystone/config.mk
+++ b/arch/arm/mach-keystone/config.mk
@@ -16,13 +16,13 @@ spl/u-boot-spl.gph: spl/u-boot-spl.bin FORCE
 
 OBJCOPYFLAGS_u-boot-spi.gph = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO) \
 			  --gap-fill=0
-u-boot-spi.gph: spl/u-boot-spl.gph u-boot-dtb.img FORCE
+u-boot-spi.gph: spl/u-boot-spl.gph u-boot.img FORCE
 	$(call if_changed,pad_cat)
 
 ifndef CONFIG_SPL_BUILD
 MKIMAGEFLAGS_MLO = -A $(ARCH) -T gpimage -C none \
 	-a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_TEXT_BASE) -n U-Boot
-MLO: u-boot-dtb.bin FORCE
+MLO: u-boot.bin FORCE
 	$(call if_changed,mkimage)
 	@dd if=/dev/zero bs=8 count=1 2>/dev/null >> $@
 endif
-- 
2.10.0

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

* [U-Boot] [PATCH 15/31] ARM: k2g: Define embedded_dtb_select for runtime DTB selection in U-boot
  2017-03-02 19:04 [U-Boot] [PATCH 00/31] ARM: k2g: Add support for new K2G ICE EVM Franklin S Cooper Jr
                   ` (13 preceding siblings ...)
  2017-03-02 19:04 ` [U-Boot] [PATCH 14/31] ARM: keystone2: Allow to build with all image formats Franklin S Cooper Jr
@ 2017-03-02 19:04 ` Franklin S Cooper Jr
  2017-03-09 13:08   ` Tom Rini
  2017-03-02 19:04 ` [U-Boot] [PATCH 16/31] ARM: keystone2: Define board_fit_config_name_match for Keystone 2 boards Franklin S Cooper Jr
                   ` (15 subsequent siblings)
  30 siblings, 1 reply; 68+ messages in thread
From: Franklin S Cooper Jr @ 2017-03-02 19:04 UTC (permalink / raw)
  To: u-boot

For K2G, runtime DTB selection utilitizes the embedded_dtb_select function.
Therefore, define the function which will perform a EEPROM read and then
retries selecting the correct dtb now that it can detect which board its
on. For other Keystone devices use an empty function since they will still
use the embedded FIT functionality but their FIT will only contain a single
dtb.

Most production K2G boards do not have their EEPROM programmed. Therefore,
perform a test to verify a K2G GP is currently being used and if it is then
set the values normally set by a EEPROM read.

Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>
---
 board/ti/ks2_evm/board.c     |  7 +++++++
 board/ti/ks2_evm/board_k2g.c | 38 ++++++++++++++++++++++++++++++++++++++
 2 files changed, 45 insertions(+)

diff --git a/board/ti/ks2_evm/board.c b/board/ti/ks2_evm/board.c
index 03254e1..4792311 100644
--- a/board/ti/ks2_evm/board.c
+++ b/board/ti/ks2_evm/board.c
@@ -277,3 +277,10 @@ void ft_board_setup_ex(void *blob, bd_t *bd)
 	ddr3_check_ecc_int(KS2_DDR3A_EMIF_CTRL_BASE);
 }
 #endif /* CONFIG_OF_BOARD_SETUP */
+
+#if defined(CONFIG_DTB_RESELECT)
+int __weak embedded_dtb_select(void)
+{
+	return 0;
+}
+#endif
diff --git a/board/ti/ks2_evm/board_k2g.c b/board/ti/ks2_evm/board_k2g.c
index 40edbaa..110d9cf 100644
--- a/board/ti/ks2_evm/board_k2g.c
+++ b/board/ti/ks2_evm/board_k2g.c
@@ -11,9 +11,13 @@
 #include <asm/ti-common/keystone_net.h>
 #include <asm/arch/psc_defs.h>
 #include <asm/arch/mmc_host_def.h>
+#include <fdtdec.h>
+#include <i2c.h>
+#include "../common/board_detect.h"
 #include "mux-k2g.h"
 
 #define SYS_CLK		24000000
+#define K2G_GP_AUDIO_CODEC_ADDRESS	0x1B
 
 unsigned int external_clk[ext_clk_count] = {
 	[sys_clk]	=	SYS_CLK,
@@ -116,6 +120,40 @@ int board_mmc_init(bd_t *bis)
 }
 #endif
 
+#if defined(CONFIG_DTB_RESELECT)
+static int k2g_alt_board_detect(void)
+{
+	int rc;
+
+	rc = i2c_set_bus_num(1);
+	if (rc)
+		return rc;
+
+	rc = i2c_probe(K2G_GP_AUDIO_CODEC_ADDRESS);
+	if (rc)
+		return rc;
+
+	ti_i2c_eeprom_am_set("66AK2GGP", "1.0X");
+
+	return 0;
+}
+
+int embedded_dtb_select(void)
+{
+	int rc;
+
+	rc = k2g_alt_board_detect();
+	if (rc) {
+		printf("Unable to do board detection\n");
+		return -1;
+	}
+
+	fdtdec_setup();
+
+	return 0;
+}
+#endif
+
 #ifdef CONFIG_BOARD_EARLY_INIT_F
 
 static void k2g_reset_mux_config(void)
-- 
2.10.0

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

* [U-Boot] [PATCH 16/31] ARM: keystone2: Define board_fit_config_name_match for Keystone 2 boards
  2017-03-02 19:04 [U-Boot] [PATCH 00/31] ARM: k2g: Add support for new K2G ICE EVM Franklin S Cooper Jr
                   ` (14 preceding siblings ...)
  2017-03-02 19:04 ` [U-Boot] [PATCH 15/31] ARM: k2g: Define embedded_dtb_select for runtime DTB selection in U-boot Franklin S Cooper Jr
@ 2017-03-02 19:04 ` Franklin S Cooper Jr
  2017-03-09 13:08   ` Tom Rini
  2017-03-02 19:04 ` [U-Boot] [PATCH 17/31] ks2_evm: Add EEPROM based board detection Franklin S Cooper Jr
                   ` (14 subsequent siblings)
  30 siblings, 1 reply; 68+ messages in thread
From: Franklin S Cooper Jr @ 2017-03-02 19:04 UTC (permalink / raw)
  To: u-boot

Now with support for U-boot runtime dtb selection each board needs to
define board_fit_config_name_match so U-boot can determine what the
correct dtb is within the FIT blob.

Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>
---
 board/ti/ks2_evm/board_k2e.c  | 10 ++++++++++
 board/ti/ks2_evm/board_k2g.c  | 14 ++++++++++++++
 board/ti/ks2_evm/board_k2hk.c | 10 ++++++++++
 board/ti/ks2_evm/board_k2l.c  | 10 ++++++++++
 4 files changed, 44 insertions(+)

diff --git a/board/ti/ks2_evm/board_k2e.c b/board/ti/ks2_evm/board_k2e.c
index cbb3077..4bbcf2d 100644
--- a/board/ti/ks2_evm/board_k2e.c
+++ b/board/ti/ks2_evm/board_k2e.c
@@ -148,6 +148,16 @@ int get_num_eth_ports(void)
 }
 #endif
 
+#if defined(CONFIG_FIT_EMBED)
+int board_fit_config_name_match(const char *name)
+{
+	if (!strcmp(name, "keystone-k2e-evm"))
+		return 0;
+
+	return -1;
+}
+#endif
+
 #if defined(CONFIG_BOARD_EARLY_INIT_F)
 int board_early_init_f(void)
 {
diff --git a/board/ti/ks2_evm/board_k2g.c b/board/ti/ks2_evm/board_k2g.c
index 110d9cf..d47b43d 100644
--- a/board/ti/ks2_evm/board_k2g.c
+++ b/board/ti/ks2_evm/board_k2g.c
@@ -120,6 +120,20 @@ int board_mmc_init(bd_t *bis)
 }
 #endif
 
+#if defined(CONFIG_FIT_EMBED)
+int board_fit_config_name_match(const char *name)
+{
+	bool eeprom_read = board_ti_was_eeprom_read();
+
+	if (!strcmp(name, "keystone-k2g-generic") && !eeprom_read)
+		return 0;
+	else if (!strcmp(name, "keystone-k2g-evm") && board_ti_is("66AK2GGP"))
+		return 0;
+	else
+		return -1;
+}
+#endif
+
 #if defined(CONFIG_DTB_RESELECT)
 static int k2g_alt_board_detect(void)
 {
diff --git a/board/ti/ks2_evm/board_k2hk.c b/board/ti/ks2_evm/board_k2hk.c
index e217bea..6f2246f 100644
--- a/board/ti/ks2_evm/board_k2hk.c
+++ b/board/ti/ks2_evm/board_k2hk.c
@@ -119,6 +119,16 @@ int board_early_init_f(void)
 }
 #endif
 
+#if defined(CONFIG_FIT_EMBED)
+int board_fit_config_name_match(const char *name)
+{
+	if (!strcmp(name, "keystone-k2hk-evm"))
+		return 0;
+
+	return -1;
+}
+#endif
+
 #ifdef CONFIG_SPL_BUILD
 void spl_init_keystone_plls(void)
 {
diff --git a/board/ti/ks2_evm/board_k2l.c b/board/ti/ks2_evm/board_k2l.c
index 2a2e005..dfd8216 100644
--- a/board/ti/ks2_evm/board_k2l.c
+++ b/board/ti/ks2_evm/board_k2l.c
@@ -118,6 +118,16 @@ int board_early_init_f(void)
 }
 #endif
 
+#if defined(CONFIG_FIT_EMBED)
+int board_fit_config_name_match(const char *name)
+{
+	if (!strcmp(name, "keystone-k2l-evm"))
+		return 0;
+
+	return -1;
+}
+#endif
+
 #ifdef CONFIG_SPL_BUILD
 void spl_init_keystone_plls(void)
 {
-- 
2.10.0

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

* [U-Boot] [PATCH 17/31] ks2_evm: Add EEPROM based board detection
  2017-03-02 19:04 [U-Boot] [PATCH 00/31] ARM: k2g: Add support for new K2G ICE EVM Franklin S Cooper Jr
                   ` (15 preceding siblings ...)
  2017-03-02 19:04 ` [U-Boot] [PATCH 16/31] ARM: keystone2: Define board_fit_config_name_match for Keystone 2 boards Franklin S Cooper Jr
@ 2017-03-02 19:04 ` Franklin S Cooper Jr
  2017-03-09 13:08   ` Tom Rini
  2017-03-02 19:04 ` [U-Boot] [PATCH 18/31] defconfig: keystone2: Enable U-boot runtime DTB detection Franklin S Cooper Jr
                   ` (13 subsequent siblings)
  30 siblings, 1 reply; 68+ messages in thread
From: Franklin S Cooper Jr @ 2017-03-02 19:04 UTC (permalink / raw)
  To: u-boot

Some K2G evms have their EEPROM programming while most do not. Therefore,
add EEPROM board detection to be used as the default method and fall back
to the alternative board detection when needed.

Also reorder board configuration. Perform bare minimal configuration
initially since board detection hasn't ran. Finish board configuration
once the board has been identified.

Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>
---
 board/ti/ks2_evm/board.h     |  1 +
 board/ti/ks2_evm/board_k2g.c | 44 +++++++++++++++++++++++---------------------
 2 files changed, 24 insertions(+), 21 deletions(-)

diff --git a/board/ti/ks2_evm/board.h b/board/ti/ks2_evm/board.h
index 2bbd792..0698921 100644
--- a/board/ti/ks2_evm/board.h
+++ b/board/ti/ks2_evm/board.h
@@ -11,6 +11,7 @@
 #define _KS2_BOARD
 
 #include <asm/ti-common/keystone_net.h>
+#include "../common/board_detect.h"
 
 extern struct eth_priv_t eth_priv_cfg[];
 
diff --git a/board/ti/ks2_evm/board_k2g.c b/board/ti/ks2_evm/board_k2g.c
index d47b43d..64b1f6b 100644
--- a/board/ti/ks2_evm/board_k2g.c
+++ b/board/ti/ks2_evm/board_k2g.c
@@ -152,24 +152,6 @@ static int k2g_alt_board_detect(void)
 	return 0;
 }
 
-int embedded_dtb_select(void)
-{
-	int rc;
-
-	rc = k2g_alt_board_detect();
-	if (rc) {
-		printf("Unable to do board detection\n");
-		return -1;
-	}
-
-	fdtdec_setup();
-
-	return 0;
-}
-#endif
-
-#ifdef CONFIG_BOARD_EARLY_INIT_F
-
 static void k2g_reset_mux_config(void)
 {
 	/* Unlock the reset mux register */
@@ -183,11 +165,20 @@ static void k2g_reset_mux_config(void)
 	setbits_le32(KS2_RSTMUX8, RSTMUX_LOCK8_MASK);
 }
 
-int board_early_init_f(void)
+int embedded_dtb_select(void)
 {
-	init_plls();
+	int rc;
+	rc = ti_i2c_eeprom_am_get(CONFIG_EEPROM_BUS_ADDRESS,
+			CONFIG_EEPROM_CHIP_ADDRESS);
+	if (rc) {
+		rc = k2g_alt_board_detect();
+		if (rc) {
+			printf("Unable to do board detection\n");
+			return -1;
+		}
+	}
 
-	k2g_mux_config();
+	fdtdec_setup();
 
 	k2g_reset_mux_config();
 
@@ -201,6 +192,17 @@ int board_early_init_f(void)
 }
 #endif
 
+#ifdef CONFIG_BOARD_EARLY_INIT_F
+int board_early_init_f(void)
+{
+	init_plls();
+
+	k2g_mux_config();
+
+	return 0;
+}
+#endif
+
 #ifdef CONFIG_SPL_BUILD
 void spl_init_keystone_plls(void)
 {
-- 
2.10.0

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

* [U-Boot] [PATCH 18/31] defconfig: keystone2: Enable U-boot runtime DTB detection
  2017-03-02 19:04 [U-Boot] [PATCH 00/31] ARM: k2g: Add support for new K2G ICE EVM Franklin S Cooper Jr
                   ` (16 preceding siblings ...)
  2017-03-02 19:04 ` [U-Boot] [PATCH 17/31] ks2_evm: Add EEPROM based board detection Franklin S Cooper Jr
@ 2017-03-02 19:04 ` Franklin S Cooper Jr
  2017-03-09 13:08   ` Tom Rini
  2017-03-02 19:04 ` [U-Boot] [PATCH 19/31] ARM: keystone2: Add additional fields used for DDR3 configuration Franklin S Cooper Jr
                   ` (12 subsequent siblings)
  30 siblings, 1 reply; 68+ messages in thread
From: Franklin S Cooper Jr @ 2017-03-02 19:04 UTC (permalink / raw)
  To: u-boot

Enable various config options to allow U-boot at runtime to select the
proper dtb to use from the list of dtb's within the FIT image.

Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>
---
 configs/k2e_evm_defconfig  | 3 +++
 configs/k2g_evm_defconfig  | 3 +++
 configs/k2hk_evm_defconfig | 3 +++
 configs/k2l_evm_defconfig  | 3 +++
 4 files changed, 12 insertions(+)

diff --git a/configs/k2e_evm_defconfig b/configs/k2e_evm_defconfig
index a42a485..801a4e4 100644
--- a/configs/k2e_evm_defconfig
+++ b/configs/k2e_evm_defconfig
@@ -54,3 +54,6 @@ CONFIG_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_USB_STORAGE=y
+CONFIG_DTB_RESELECT=y
+CONFIG_FIT_EMBED=y
+CONFIG_OF_LIST="keystone-k2e-evm"
diff --git a/configs/k2g_evm_defconfig b/configs/k2g_evm_defconfig
index f3ee01a..1352877 100644
--- a/configs/k2g_evm_defconfig
+++ b/configs/k2g_evm_defconfig
@@ -58,3 +58,6 @@ CONFIG_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_USB_STORAGE=y
+CONFIG_DTB_RESELECT=y
+CONFIG_FIT_EMBED=y
+CONFIG_OF_LIST="keystone-k2g-generic keystone-k2g-evm"
diff --git a/configs/k2hk_evm_defconfig b/configs/k2hk_evm_defconfig
index d924796..0fa74b6 100644
--- a/configs/k2hk_evm_defconfig
+++ b/configs/k2hk_evm_defconfig
@@ -54,3 +54,6 @@ CONFIG_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_USB_STORAGE=y
+CONFIG_DTB_RESELECT=y
+CONFIG_FIT_EMBED=y
+CONFIG_OF_LIST="keystone-k2hk-evm"
diff --git a/configs/k2l_evm_defconfig b/configs/k2l_evm_defconfig
index c817585..caad57c 100644
--- a/configs/k2l_evm_defconfig
+++ b/configs/k2l_evm_defconfig
@@ -54,3 +54,6 @@ CONFIG_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_USB_STORAGE=y
+CONFIG_DTB_RESELECT=y
+CONFIG_FIT_EMBED=y
+CONFIG_OF_LIST="keystone-k2l-evm"
-- 
2.10.0

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

* [U-Boot] [PATCH 19/31] ARM: keystone2: Add additional fields used for DDR3 configuration
  2017-03-02 19:04 [U-Boot] [PATCH 00/31] ARM: k2g: Add support for new K2G ICE EVM Franklin S Cooper Jr
                   ` (17 preceding siblings ...)
  2017-03-02 19:04 ` [U-Boot] [PATCH 18/31] defconfig: keystone2: Enable U-boot runtime DTB detection Franklin S Cooper Jr
@ 2017-03-02 19:04 ` Franklin S Cooper Jr
  2017-03-09 13:08   ` Tom Rini
  2017-03-02 19:04 ` [U-Boot] [PATCH 20/31] ARM: k2g: Program DDR PHY MR2 register with the default value Franklin S Cooper Jr
                   ` (11 subsequent siblings)
  30 siblings, 1 reply; 68+ messages in thread
From: Franklin S Cooper Jr @ 2017-03-02 19:04 UTC (permalink / raw)
  To: u-boot

Future boards will need to configure DDR3 registers in a slightly
different manner. Support this by defining additional variables and
defines that will be utilized later.

Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>
---
 arch/arm/mach-keystone/include/mach/ddr3.h     | 14 ++++++++++++++
 arch/arm/mach-keystone/include/mach/hardware.h |  3 +++
 2 files changed, 17 insertions(+)

diff --git a/arch/arm/mach-keystone/include/mach/ddr3.h b/arch/arm/mach-keystone/include/mach/ddr3.h
index 5feffe8..93789fd 100644
--- a/arch/arm/mach-keystone/include/mach/ddr3.h
+++ b/arch/arm/mach-keystone/include/mach/ddr3.h
@@ -35,6 +35,20 @@ struct ddr3_phy_config {
 	unsigned int zq1cr1;
 	unsigned int zq2cr1;
 	unsigned int pir_v1;
+	unsigned int datx8_2_mask;
+	unsigned int datx8_2_val;
+	unsigned int datx8_3_mask;
+	unsigned int datx8_3_val;
+	unsigned int datx8_4_mask;
+	unsigned int datx8_4_val;
+	unsigned int datx8_5_mask;
+	unsigned int datx8_5_val;
+	unsigned int datx8_6_mask;
+	unsigned int datx8_6_val;
+	unsigned int datx8_7_mask;
+	unsigned int datx8_7_val;
+	unsigned int datx8_8_mask;
+	unsigned int datx8_8_val;
 	unsigned int pir_v2;
 };
 
diff --git a/arch/arm/mach-keystone/include/mach/hardware.h b/arch/arm/mach-keystone/include/mach/hardware.h
index 38d0190..1969a10 100644
--- a/arch/arm/mach-keystone/include/mach/hardware.h
+++ b/arch/arm/mach-keystone/include/mach/hardware.h
@@ -52,6 +52,8 @@ typedef volatile unsigned int   *dv_reg_p;
 #define KS2_DDRPHY_ZQ2CR1_OFFSET        0x1A4
 #define KS2_DDRPHY_ZQ3CR1_OFFSET        0x1B4
 
+#define KS2_DDRPHY_DATX8_2_OFFSET       0x240
+#define KS2_DDRPHY_DATX8_3_OFFSET       0x280
 #define KS2_DDRPHY_DATX8_4_OFFSET       0x2C0
 #define KS2_DDRPHY_DATX8_5_OFFSET       0x300
 #define KS2_DDRPHY_DATX8_6_OFFSET       0x340
@@ -70,6 +72,7 @@ typedef volatile unsigned int   *dv_reg_p;
 #define PDQ_MASK                        0x00000070
 #define NOSRA_MASK                      0x08000000
 #define ECC_MASK                        0x00000001
+#define DXEN_MASK                       0x00000001
 
 /* DDR3 definitions */
 #define KS2_DDR3A_EMIF_CTRL_BASE	0x21010000
-- 
2.10.0

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

* [U-Boot] [PATCH 20/31] ARM: k2g: Program DDR PHY MR2 register with the default value
  2017-03-02 19:04 [U-Boot] [PATCH 00/31] ARM: k2g: Add support for new K2G ICE EVM Franklin S Cooper Jr
                   ` (18 preceding siblings ...)
  2017-03-02 19:04 ` [U-Boot] [PATCH 19/31] ARM: keystone2: Add additional fields used for DDR3 configuration Franklin S Cooper Jr
@ 2017-03-02 19:04 ` Franklin S Cooper Jr
  2017-03-09 13:08   ` Tom Rini
  2017-03-02 19:04 ` [U-Boot] [PATCH 21/31] ARM: k2g: Program DDRPHY_DATX8 registers via mask and value variables Franklin S Cooper Jr
                   ` (10 subsequent siblings)
  30 siblings, 1 reply; 68+ messages in thread
From: Franklin S Cooper Jr @ 2017-03-02 19:04 UTC (permalink / raw)
  To: u-boot

K2G GP doesn't require the MR2 register to be programed since the
default is good enough. However, newer K2G boards do need to change
this register value. Therefore, instead of not writing this register if
ran on a K2G board just program the value to be written to match the
default/reset value.

Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>
---
 arch/arm/mach-keystone/ddr3.c | 3 +--
 board/ti/ks2_evm/ddr3_k2g.c   | 2 +-
 2 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/arch/arm/mach-keystone/ddr3.c b/arch/arm/mach-keystone/ddr3.c
index ee8e12e..25a9637 100644
--- a/arch/arm/mach-keystone/ddr3.c
+++ b/arch/arm/mach-keystone/ddr3.c
@@ -52,8 +52,7 @@ void ddr3_init_ddrphy(u32 base, struct ddr3_phy_config *phy_cfg)
 	__raw_writel(phy_cfg->dtpr2, base + KS2_DDRPHY_DTPR2_OFFSET);
 	__raw_writel(phy_cfg->mr0,   base + KS2_DDRPHY_MR0_OFFSET);
 	__raw_writel(phy_cfg->mr1,   base + KS2_DDRPHY_MR1_OFFSET);
-	if (!cpu_is_k2g())
-		__raw_writel(phy_cfg->mr2,   base + KS2_DDRPHY_MR2_OFFSET);
+	__raw_writel(phy_cfg->mr2,   base + KS2_DDRPHY_MR2_OFFSET);
 	__raw_writel(phy_cfg->dtcr,  base + KS2_DDRPHY_DTCR_OFFSET);
 	__raw_writel(phy_cfg->pgcr2, base + KS2_DDRPHY_PGCR2_OFFSET);
 
diff --git a/board/ti/ks2_evm/ddr3_k2g.c b/board/ti/ks2_evm/ddr3_k2g.c
index 344961d..aeb7da6 100644
--- a/board/ti/ks2_evm/ddr3_k2g.c
+++ b/board/ti/ks2_evm/ddr3_k2g.c
@@ -27,7 +27,7 @@ struct ddr3_phy_config ddr3phy_800_2g = {
 	.dtpr2          = 0x50022A00ul,
 	.mr0            = 0x00001430ul,
 	.mr1            = 0x00000006ul,
-	.mr2            = 0x00000018ul,
+	.mr2            = 0x00000000ul,
 	.dtcr           = 0x710035C7ul,
 	.pgcr2          = 0x00F03D09ul,
 	.zq0cr1         = 0x0001005Dul,
-- 
2.10.0

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

* [U-Boot] [PATCH 21/31] ARM: k2g: Program DDRPHY_DATX8 registers via mask and value variables
  2017-03-02 19:04 [U-Boot] [PATCH 00/31] ARM: k2g: Add support for new K2G ICE EVM Franklin S Cooper Jr
                   ` (19 preceding siblings ...)
  2017-03-02 19:04 ` [U-Boot] [PATCH 20/31] ARM: k2g: Program DDR PHY MR2 register with the default value Franklin S Cooper Jr
@ 2017-03-02 19:04 ` Franklin S Cooper Jr
  2017-03-09 13:09   ` Tom Rini
  2017-03-02 19:04 ` [U-Boot] [PATCH 22/31] ks2_evm: Add EEPROM based board detection helper functions Franklin S Cooper Jr
                   ` (9 subsequent siblings)
  30 siblings, 1 reply; 68+ messages in thread
From: Franklin S Cooper Jr @ 2017-03-02 19:04 UTC (permalink / raw)
  To: u-boot

Different K2G evms may need to program the various
KS2_DDRPHY_DATX8_X_OFFSET registers in different ways. Therefore, use
the mask and val registers for each KS2_DDRPHY_DATAX_X_OFFSET to
properly program the register.

Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>
---
 arch/arm/mach-keystone/ddr3.c | 32 +++++++++++++++++++++++++++-----
 board/ti/ks2_evm/ddr3_k2g.c   | 14 ++++++++++++++
 2 files changed, 41 insertions(+), 5 deletions(-)

diff --git a/arch/arm/mach-keystone/ddr3.c b/arch/arm/mach-keystone/ddr3.c
index 25a9637..4cad6a2 100644
--- a/arch/arm/mach-keystone/ddr3.c
+++ b/arch/arm/mach-keystone/ddr3.c
@@ -65,11 +65,33 @@ void ddr3_init_ddrphy(u32 base, struct ddr3_phy_config *phy_cfg)
 		;
 
 	if (cpu_is_k2g()) {
-		setbits_le32(base + KS2_DDRPHY_DATX8_4_OFFSET, 0x1);
-		clrbits_le32(base + KS2_DDRPHY_DATX8_5_OFFSET, 0x1);
-		clrbits_le32(base + KS2_DDRPHY_DATX8_6_OFFSET, 0x1);
-		clrbits_le32(base + KS2_DDRPHY_DATX8_7_OFFSET, 0x1);
-		clrbits_le32(base + KS2_DDRPHY_DATX8_8_OFFSET, 0x1);
+		clrsetbits_le32(base + KS2_DDRPHY_DATX8_2_OFFSET,
+				phy_cfg->datx8_2_mask,
+				phy_cfg->datx8_2_val);
+
+		clrsetbits_le32(base + KS2_DDRPHY_DATX8_3_OFFSET,
+				phy_cfg->datx8_3_mask,
+				phy_cfg->datx8_3_val);
+
+		clrsetbits_le32(base + KS2_DDRPHY_DATX8_4_OFFSET,
+				phy_cfg->datx8_4_mask,
+				phy_cfg->datx8_4_val);
+
+		clrsetbits_le32(base + KS2_DDRPHY_DATX8_5_OFFSET,
+				phy_cfg->datx8_5_mask,
+				phy_cfg->datx8_5_val);
+
+		clrsetbits_le32(base + KS2_DDRPHY_DATX8_6_OFFSET,
+				phy_cfg->datx8_6_mask,
+				phy_cfg->datx8_6_val);
+
+		clrsetbits_le32(base + KS2_DDRPHY_DATX8_7_OFFSET,
+				phy_cfg->datx8_7_mask,
+				phy_cfg->datx8_7_val);
+
+		clrsetbits_le32(base + KS2_DDRPHY_DATX8_8_OFFSET,
+				phy_cfg->datx8_8_mask,
+				phy_cfg->datx8_8_val);
 	}
 
 	__raw_writel(phy_cfg->pir_v2, base + KS2_DDRPHY_PIR_OFFSET);
diff --git a/board/ti/ks2_evm/ddr3_k2g.c b/board/ti/ks2_evm/ddr3_k2g.c
index aeb7da6..3b12943 100644
--- a/board/ti/ks2_evm/ddr3_k2g.c
+++ b/board/ti/ks2_evm/ddr3_k2g.c
@@ -34,6 +34,20 @@ struct ddr3_phy_config ddr3phy_800_2g = {
 	.zq1cr1         = 0x0001005Bul,
 	.zq2cr1         = 0x0001005Bul,
 	.pir_v1         = 0x00000033ul,
+	.datx8_2_mask   = 0,
+	.datx8_2_val    = 0,
+	.datx8_3_mask   = 0,
+	.datx8_3_val    = 0,
+	.datx8_4_mask   = 0,
+	.datx8_4_val    = ((1 << 0)),
+	.datx8_5_mask   = DXEN_MASK,
+	.datx8_5_val    = 0,
+	.datx8_6_mask   = DXEN_MASK,
+	.datx8_6_val    = 0,
+	.datx8_7_mask   = DXEN_MASK,
+	.datx8_7_val    = 0,
+	.datx8_8_mask   = DXEN_MASK,
+	.datx8_8_val    = 0,
 	.pir_v2         = 0x00000F81ul,
 };
 
-- 
2.10.0

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

* [U-Boot] [PATCH 22/31] ks2_evm: Add EEPROM based board detection helper functions
  2017-03-02 19:04 [U-Boot] [PATCH 00/31] ARM: k2g: Add support for new K2G ICE EVM Franklin S Cooper Jr
                   ` (20 preceding siblings ...)
  2017-03-02 19:04 ` [U-Boot] [PATCH 21/31] ARM: k2g: Program DDRPHY_DATX8 registers via mask and value variables Franklin S Cooper Jr
@ 2017-03-02 19:04 ` Franklin S Cooper Jr
  2017-03-09 13:09   ` Tom Rini
  2017-03-02 19:04 ` [U-Boot] [PATCH 23/31] ARM: k2g: Add pinmux support for K2G ICE evm Franklin S Cooper Jr
                   ` (8 subsequent siblings)
  30 siblings, 1 reply; 68+ messages in thread
From: Franklin S Cooper Jr @ 2017-03-02 19:04 UTC (permalink / raw)
  To: u-boot

Add a function that can be used to determine if the board being ran on is
a K2G Industrial Communication Engine EVM or K2G General Purpose EVM based
on values programmed on the EEPROM.

Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>
---
 board/ti/ks2_evm/board.h | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/board/ti/ks2_evm/board.h b/board/ti/ks2_evm/board.h
index 0698921..b3ad188 100644
--- a/board/ti/ks2_evm/board.h
+++ b/board/ti/ks2_evm/board.h
@@ -15,6 +15,26 @@
 
 extern struct eth_priv_t eth_priv_cfg[];
 
+#if defined(CONFIG_TI_I2C_BOARD_DETECT)
+static inline int board_is_k2g_gp(void)
+{
+	return board_ti_is("66AK2GGP");
+}
+static inline int board_is_k2g_ice(void)
+{
+	return board_ti_is("66AK2GIC");
+}
+#else
+static inline int board_is_k2g_gp(void)
+{
+	return false;
+}
+static inline int board_is_k2g_ice(void)
+{
+	return false;
+}
+#endif
+
 int get_num_eth_ports(void);
 void spl_init_keystone_plls(void);
 
-- 
2.10.0

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

* [U-Boot] [PATCH 23/31] ARM: k2g: Add pinmux support for K2G ICE evm
  2017-03-02 19:04 [U-Boot] [PATCH 00/31] ARM: k2g: Add support for new K2G ICE EVM Franklin S Cooper Jr
                   ` (21 preceding siblings ...)
  2017-03-02 19:04 ` [U-Boot] [PATCH 22/31] ks2_evm: Add EEPROM based board detection helper functions Franklin S Cooper Jr
@ 2017-03-02 19:04 ` Franklin S Cooper Jr
  2017-03-09 13:09   ` Tom Rini
  2017-03-02 19:04 ` [U-Boot] [PATCH 24/31] ARM: k2g: Add DDR3 configuration " Franklin S Cooper Jr
                   ` (7 subsequent siblings)
  30 siblings, 1 reply; 68+ messages in thread
From: Franklin S Cooper Jr @ 2017-03-02 19:04 UTC (permalink / raw)
  To: u-boot

Add basic pinmux data for new K2G ICE evm. Also add pinmuxing for a
generic K2G evm which includes I2C 0 and 1 used for board detection
purposes.

Since multiple K2G boards are supported that means initially generic
pinmuxing should be used when board detection hasn't ran. Once board
detection runs the proper pinmuxing can be reran to match the board
being ran on.

Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>
---
 board/ti/ks2_evm/board_k2g.c |  2 ++
 board/ti/ks2_evm/mux-k2g.h   | 45 +++++++++++++++++++++++++++++++++++++++++++-
 2 files changed, 46 insertions(+), 1 deletion(-)

diff --git a/board/ti/ks2_evm/board_k2g.c b/board/ti/ks2_evm/board_k2g.c
index 64b1f6b..8340cde 100644
--- a/board/ti/ks2_evm/board_k2g.c
+++ b/board/ti/ks2_evm/board_k2g.c
@@ -180,6 +180,8 @@ int embedded_dtb_select(void)
 
 	fdtdec_setup();
 
+	k2g_mux_config();
+
 	k2g_reset_mux_config();
 
 	/* deassert FLASH_HOLD */
diff --git a/board/ti/ks2_evm/mux-k2g.h b/board/ti/ks2_evm/mux-k2g.h
index 773f9b7..630103d 100644
--- a/board/ti/ks2_evm/mux-k2g.h
+++ b/board/ti/ks2_evm/mux-k2g.h
@@ -11,6 +11,22 @@
 #include <asm/io.h>
 #include <asm/arch/mux-k2g.h>
 #include <asm/arch/hardware.h>
+#include "board.h"
+
+struct pin_cfg k2g_generic_pin_cfg[] = {
+	/* UART0 */
+	{ 115,  MODE(0) },	/* SOC_UART0_RXD */
+	{ 116,  MODE(0) },	/* SOC_UART0_TXD */
+
+	/* I2C 0 */
+	{ 223,  MODE(0) },	/* SOC_I2C0_SCL */
+	{ 224,  MODE(0) },	/* SOC_I2C0_SDA */
+
+	/* I2C 1 */
+	{ 225,  MODE(0) },	/* SOC_I2C1_SCL */
+	{ 226,  MODE(0) },	/* SOC_I2C1_SDA */
+	{ MAX_PIN_N, }
+};
 
 struct pin_cfg k2g_evm_pin_cfg[] = {
 	/* GPMC */
@@ -307,7 +323,34 @@ struct pin_cfg k2g_evm_pin_cfg[] = {
 	{ MAX_PIN_N, }
 };
 
+struct pin_cfg k2g_ice_evm_pin_cfg[] = {
+	/* MMC 1 */
+	{ 63, MODE(0) | PIN_PTD },	/* MMC1_DAT3.MMC1_DAT3 */
+	{ 64, MODE(0) | PIN_PTU },	/* MMC1_DAT2.MMC1_DAT2 */
+	{ 65, MODE(0) | PIN_PTU },	/* MMC1_DAT1.MMC1_DAT1 */
+	{ 66, MODE(0) | PIN_PTD },	/* MMC1_DAT0.MMC1_DAT0 */
+	{ 67, MODE(0) | PIN_PTD },	/* MMC1_CLK.MMC1_CLK   */
+	{ 68, MODE(0) | PIN_PTD },	/* MMC1_CMD.MMC1_CMD   */
+	{ 69, MODE(3) | PIN_PTU },	/* MMC1_SDCD.GPIO0_69  */
+	{ 70, MODE(0) | PIN_PTU },	/* MMC1_SDWP.MMC1_SDWP */
+	{ 71, MODE(0) | PIN_PTD },	/* MMC1_POW.MMC1_POW   */
+
+	/* I2C 0 */
+	{ 223,  MODE(0) },		/* SOC_I2C0_SCL */
+	{ 224,  MODE(0) },		/* SOC_I2C0_SDA */
+	{ MAX_PIN_N, }
+};
+
 void k2g_mux_config(void)
 {
-	configure_pin_mux(k2g_evm_pin_cfg);
+	if (!board_ti_was_eeprom_read()) {
+		configure_pin_mux(k2g_generic_pin_cfg);
+	} else if (board_is_k2g_gp()) {
+		configure_pin_mux(k2g_evm_pin_cfg);
+	} else if (board_is_k2g_ice()) {
+		configure_pin_mux(k2g_ice_evm_pin_cfg);
+	} else {
+		puts("Unknown board, cannot configure pinmux.");
+		hang();
+	}
 }
-- 
2.10.0

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

* [U-Boot] [PATCH 24/31] ARM: k2g: Add DDR3 configuration for K2G ICE evm
  2017-03-02 19:04 [U-Boot] [PATCH 00/31] ARM: k2g: Add support for new K2G ICE EVM Franklin S Cooper Jr
                   ` (22 preceding siblings ...)
  2017-03-02 19:04 ` [U-Boot] [PATCH 23/31] ARM: k2g: Add pinmux support for K2G ICE evm Franklin S Cooper Jr
@ 2017-03-02 19:04 ` Franklin S Cooper Jr
  2017-03-09 13:09   ` Tom Rini
  2017-03-02 19:04 ` [U-Boot] [PATCH 25/31] board: ks2: Use board detection to wrap code not specific to " Franklin S Cooper Jr
                   ` (6 subsequent siblings)
  30 siblings, 1 reply; 68+ messages in thread
From: Franklin S Cooper Jr @ 2017-03-02 19:04 UTC (permalink / raw)
  To: u-boot

Add configuration settings used by the K2G ICE evm. Also use board
detection to determine which DDR3 configuration to use.

Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>
---
 board/ti/ks2_evm/ddr3_k2g.c | 62 +++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 60 insertions(+), 2 deletions(-)

diff --git a/board/ti/ks2_evm/ddr3_k2g.c b/board/ti/ks2_evm/ddr3_k2g.c
index 3b12943..44db335 100644
--- a/board/ti/ks2_evm/ddr3_k2g.c
+++ b/board/ti/ks2_evm/ddr3_k2g.c
@@ -10,7 +10,9 @@
 #include <common.h>
 #include "ddr3_cfg.h"
 #include <asm/arch/ddr3.h>
+#include "board.h"
 
+/* K2G GP EVM DDR3 Configuration */
 struct ddr3_phy_config ddr3phy_800_2g = {
 	.pllcr          = 0x000DC000ul,
 	.pgcr1_mask     = (IODDRM_MASK | ZCKSEL_MASK),
@@ -61,13 +63,69 @@ struct ddr3_emif_config ddr3_800_2g = {
 	.sdrfc          = 0x00000C34ul,
 };
 
+/* K2G ICE evm DDR3 Configuration */
+struct ddr3_phy_config ddr3phy_800_512mb = {
+	.pllcr          = 0x000DC000ul,
+	.pgcr1_mask     = (IODDRM_MASK | ZCKSEL_MASK),
+	.pgcr1_val      = ((1 << 2) | (2 << 7) | (1 << 23)),
+	.ptr0           = 0x42C21590ul,
+	.ptr1           = 0xD05612C0ul,
+	.ptr2           = 0,
+	.ptr3           = 0x06C30D40ul,
+	.ptr4           = 0x06413880ul,
+	.dcr_mask       = (PDQ_MASK | MPRDQ_MASK | BYTEMASK_MASK),
+	.dcr_val        = ((1 << 10)),
+	.dtpr0          = 0x550E6644ul,
+	.dtpr1          = 0x32834200ul,
+	.dtpr2          = 0x50022A00ul,
+	.mr0            = 0x00001430ul,
+	.mr1            = 0x00000006ul,
+	.mr2            = 0x00000008ul,
+	.dtcr           = 0x710035C7ul,
+	.pgcr2          = 0x00F03D09ul,
+	.zq0cr1         = 0x0001005Dul,
+	.zq1cr1         = 0x0001005Bul,
+	.zq2cr1         = 0x0001005Bul,
+	.pir_v1         = 0x00000033ul,
+	.datx8_2_mask   = DXEN_MASK,
+	.datx8_2_val    = 0,
+	.datx8_3_mask   = DXEN_MASK,
+	.datx8_3_val    = 0,
+	.datx8_4_mask   = DXEN_MASK,
+	.datx8_4_val    = 0,
+	.datx8_5_mask   = DXEN_MASK,
+	.datx8_5_val    = 0,
+	.datx8_6_mask   = DXEN_MASK,
+	.datx8_6_val    = 0,
+	.datx8_7_mask   = DXEN_MASK,
+	.datx8_7_val    = 0,
+	.datx8_8_mask   = DXEN_MASK,
+	.datx8_8_val    = 0,
+	.pir_v2         = 0x00000F81ul,
+};
+
+struct ddr3_emif_config ddr3_800_512mb = {
+	.sdcfg          = 0x62006662ul,
+	.sdtim1         = 0x0A385033ul,
+	.sdtim2         = 0x00001CA5ul,
+	.sdtim3         = 0x21ADFF32ul,
+	.sdtim4         = 0x533F067Ful,
+	.zqcfg          = 0x70073200ul,
+	.sdrfc          = 0x00000C34ul,
+};
+
 u32 ddr3_init(void)
 {
 	/* Reset DDR3 PHY after PLL enabled */
 	ddr3_reset_ddrphy();
 
-	ddr3_init_ddrphy(KS2_DDR3A_DDRPHYC, &ddr3phy_800_2g);
-	ddr3_init_ddremif(KS2_DDR3A_EMIF_CTRL_BASE, &ddr3_800_2g);
+	if (board_is_k2g_gp()) {
+		ddr3_init_ddrphy(KS2_DDR3A_DDRPHYC, &ddr3phy_800_2g);
+		ddr3_init_ddremif(KS2_DDR3A_EMIF_CTRL_BASE, &ddr3_800_2g);
+	} else if (board_is_k2g_ice()) {
+		ddr3_init_ddrphy(KS2_DDR3A_DDRPHYC, &ddr3phy_800_512mb);
+		ddr3_init_ddremif(KS2_DDR3A_EMIF_CTRL_BASE, &ddr3_800_512mb);
+	}
 
 	return 0;
 }
-- 
2.10.0

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

* [U-Boot] [PATCH 25/31] board: ks2: Use board detection to wrap code not specific to K2G ICE evm
  2017-03-02 19:04 [U-Boot] [PATCH 00/31] ARM: k2g: Add support for new K2G ICE EVM Franklin S Cooper Jr
                   ` (23 preceding siblings ...)
  2017-03-02 19:04 ` [U-Boot] [PATCH 24/31] ARM: k2g: Add DDR3 configuration " Franklin S Cooper Jr
@ 2017-03-02 19:04 ` Franklin S Cooper Jr
  2017-03-09 13:09   ` Tom Rini
  2017-03-02 19:04 ` [U-Boot] [PATCH 26/31] ARM: k2g: Use board detection to wrap K2G GP specific calls Franklin S Cooper Jr
                   ` (5 subsequent siblings)
  30 siblings, 1 reply; 68+ messages in thread
From: Franklin S Cooper Jr @ 2017-03-02 19:04 UTC (permalink / raw)
  To: u-boot

Some code doesn't apply to K2G ICE evm. Therefore, use board detection to
wrap these calls.

Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>
---
 board/ti/ks2_evm/board.c | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/board/ti/ks2_evm/board.c b/board/ti/ks2_evm/board.c
index 4792311..c61baee 100644
--- a/board/ti/ks2_evm/board.c
+++ b/board/ti/ks2_evm/board.c
@@ -45,13 +45,17 @@ int dram_init(void)
 	gd->ram_size = get_ram_size((long *)CONFIG_SYS_SDRAM_BASE,
 				    CONFIG_MAX_RAM_BANK_SIZE);
 #if defined(CONFIG_TI_AEMIF)
-	aemif_init(ARRAY_SIZE(aemif_configs), aemif_configs);
+	if (!board_is_k2g_ice())
+		aemif_init(ARRAY_SIZE(aemif_configs), aemif_configs);
 #endif
 
-	if (ddr3_size)
-		ddr3_init_ecc(KS2_DDR3A_EMIF_CTRL_BASE, ddr3_size);
-	else
-		ddr3_init_ecc(KS2_DDR3A_EMIF_CTRL_BASE, gd->ram_size >> 30);
+	if (!board_is_k2g_ice()) {
+		if (ddr3_size)
+			ddr3_init_ecc(KS2_DDR3A_EMIF_CTRL_BASE, ddr3_size);
+		else
+			ddr3_init_ecc(KS2_DDR3A_EMIF_CTRL_BASE,
+				      gd->ram_size >> 30);
+	}
 
 	return 0;
 }
-- 
2.10.0

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

* [U-Boot] [PATCH 26/31] ARM: k2g: Use board detection to wrap K2G GP specific calls
  2017-03-02 19:04 [U-Boot] [PATCH 00/31] ARM: k2g: Add support for new K2G ICE EVM Franklin S Cooper Jr
                   ` (24 preceding siblings ...)
  2017-03-02 19:04 ` [U-Boot] [PATCH 25/31] board: ks2: Use board detection to wrap code not specific to " Franklin S Cooper Jr
@ 2017-03-02 19:04 ` Franklin S Cooper Jr
  2017-03-09 13:09   ` Tom Rini
  2017-03-02 19:04 ` [U-Boot] [PATCH 27/31] ARM: k2g: Update board_name u-boot env variable at runtime Franklin S Cooper Jr
                   ` (4 subsequent siblings)
  30 siblings, 1 reply; 68+ messages in thread
From: Franklin S Cooper Jr @ 2017-03-02 19:04 UTC (permalink / raw)
  To: u-boot

Certain peripherals used by K2G GP aren't used on K2G ICE evm. Or
configuration is slightly different. Therefore, use board detection to
deal with these variations.

Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>
---
 board/ti/ks2_evm/board_k2g.c | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/board/ti/ks2_evm/board_k2g.c b/board/ti/ks2_evm/board_k2g.c
index 8340cde..0fbc64a 100644
--- a/board/ti/ks2_evm/board_k2g.c
+++ b/board/ti/ks2_evm/board_k2g.c
@@ -114,7 +114,9 @@ int board_mmc_init(bd_t *bis)
 		return -1;
 	}
 
-	omap_mmc_init(0, 0, 0, -1, -1);
+	if (board_is_k2g_gp())
+		omap_mmc_init(0, 0, 0, -1, -1);
+
 	omap_mmc_init(1, 0, 0, -1, -1);
 	return 0;
 }
@@ -184,11 +186,13 @@ int embedded_dtb_select(void)
 
 	k2g_reset_mux_config();
 
-	/* deassert FLASH_HOLD */
-	clrbits_le32(K2G_GPIO1_BANK2_BASE + K2G_GPIO_DIR_OFFSET,
-		     BIT(9));
-	setbits_le32(K2G_GPIO1_BANK2_BASE + K2G_GPIO_SETDATA_OFFSET,
-		     BIT(9));
+	if (board_is_k2g_gp()) {
+		/* deassert FLASH_HOLD */
+		clrbits_le32(K2G_GPIO1_BANK2_BASE + K2G_GPIO_DIR_OFFSET,
+			     BIT(9));
+		setbits_le32(K2G_GPIO1_BANK2_BASE + K2G_GPIO_SETDATA_OFFSET,
+			     BIT(9));
+	}
 
 	return 0;
 }
-- 
2.10.0

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

* [U-Boot] [PATCH 27/31] ARM: k2g: Update board_name u-boot env variable at runtime
  2017-03-02 19:04 [U-Boot] [PATCH 00/31] ARM: k2g: Add support for new K2G ICE EVM Franklin S Cooper Jr
                   ` (25 preceding siblings ...)
  2017-03-02 19:04 ` [U-Boot] [PATCH 26/31] ARM: k2g: Use board detection to wrap K2G GP specific calls Franklin S Cooper Jr
@ 2017-03-02 19:04 ` Franklin S Cooper Jr
  2017-03-09 13:09   ` Tom Rini
  2017-03-02 19:04 ` [U-Boot] [PATCH 28/31] ARM: dts: k2g: Disable netcp by default Franklin S Cooper Jr
                   ` (3 subsequent siblings)
  30 siblings, 1 reply; 68+ messages in thread
From: Franklin S Cooper Jr @ 2017-03-02 19:04 UTC (permalink / raw)
  To: u-boot

Enable CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG to allow "board_name" to
be set depending on the board it is being ran on.

Update findfdt to use this new dynamic board_name value to determine
which dtb should be used.

Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>
---
 board/ti/ks2_evm/board_k2g.c | 13 +++++++++++++
 include/configs/k2g_evm.h    | 14 ++++++++++++--
 2 files changed, 25 insertions(+), 2 deletions(-)

diff --git a/board/ti/ks2_evm/board_k2g.c b/board/ti/ks2_evm/board_k2g.c
index 0fbc64a..70164ee 100644
--- a/board/ti/ks2_evm/board_k2g.c
+++ b/board/ti/ks2_evm/board_k2g.c
@@ -198,6 +198,19 @@ int embedded_dtb_select(void)
 }
 #endif
 
+#ifdef CONFIG_BOARD_LATE_INIT
+int board_late_init(void)
+{
+#ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
+	if (board_is_k2g_gp())
+		setenv("board_name", "66AK2GGP\0");
+	else if (board_is_k2g_ice())
+		setenv("board_name", "66AK2GIC\0");
+#endif
+	return 0;
+}
+#endif
+
 #ifdef CONFIG_BOARD_EARLY_INIT_F
 int board_early_init_f(void)
 {
diff --git a/include/configs/k2g_evm.h b/include/configs/k2g_evm.h
index bd25231..0d11e4e 100644
--- a/include/configs/k2g_evm.h
+++ b/include/configs/k2g_evm.h
@@ -13,6 +13,9 @@
 /* Platform type */
 #define CONFIG_SOC_K2G
 
+#define CONFIG_BOARD_LATE_INIT
+#define CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
+
 /* U-Boot general configuration */
 #define CONFIG_EXTRA_ENV_KS2_BOARD_SETTINGS				\
 	DEFAULT_MMC_TI_ARGS						\
@@ -25,7 +28,14 @@
 	"rd_spec=-\0"							\
 	"args_ubi=setenv bootargs ${bootargs} rootfstype=ubifs "	\
 	"root=ubi0:rootfs rootflags=sync rw ubi.mtd=ubifs,2048\0"	\
-	"name_fdt=keystone-k2g-evm.dtb\0"				\
+	"findfdt="\
+		"if test $board_name = 66AK2GGP; then " \
+			 "setenv name_fdt keystone-k2g-evm.dtb; " \
+		"else if test $board_name = 66AK2GIC; then " \
+			 "setenv name_fdt keystone-k2g-ice.dtb; " \
+		"else if test $name_fdt = undefined; then " \
+			"echo WARNING: Could not determine device tree to use;"\
+		"fi;fi;fi;\0" \
 	"name_mon=skern-k2g.bin\0"					\
 	"name_ubi=k2g-evm-ubifs.ubi\0"					\
 	"name_uboot=u-boot-spi-k2g-evm.gph\0"				\
@@ -43,7 +53,7 @@
 	"run envboot; "							\
 	"run set_name_pmmc init_${boot} init_fw_rd_${boot} "		\
 	"get_pmmc_${boot} run_pmmc get_mon_${boot} run_mon "		\
-	"get_fdt_${boot} get_kern_${boot} run_kern"
+	"findfdt get_fdt_${boot} get_kern_${boot} run_kern"
 
 #include <configs/ti_armv7_keystone2.h>
 
-- 
2.10.0

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

* [U-Boot] [PATCH 28/31] ARM: dts: k2g: Disable netcp by default
  2017-03-02 19:04 [U-Boot] [PATCH 00/31] ARM: k2g: Add support for new K2G ICE EVM Franklin S Cooper Jr
                   ` (26 preceding siblings ...)
  2017-03-02 19:04 ` [U-Boot] [PATCH 27/31] ARM: k2g: Update board_name u-boot env variable at runtime Franklin S Cooper Jr
@ 2017-03-02 19:04 ` Franklin S Cooper Jr
  2017-03-09 13:09   ` Tom Rini
  2017-03-02 19:04 ` [U-Boot] [PATCH 29/31] ARM: dts: k2g: Add DT support for K2G Industrial Communication Engine evm Franklin S Cooper Jr
                   ` (2 subsequent siblings)
  30 siblings, 1 reply; 68+ messages in thread
From: Franklin S Cooper Jr @ 2017-03-02 19:04 UTC (permalink / raw)
  To: u-boot

Disable netcp by default like all other peripherals in the dtsi file.
Enable the peripheral explicitly in the board specific dts file.

Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>
---
 arch/arm/dts/keystone-k2g-evm.dts    | 4 ++++
 arch/arm/dts/keystone-k2g-netcp.dtsi | 1 +
 2 files changed, 5 insertions(+)

diff --git a/arch/arm/dts/keystone-k2g-evm.dts b/arch/arm/dts/keystone-k2g-evm.dts
index 696a0d7..594543f 100644
--- a/arch/arm/dts/keystone-k2g-evm.dts
+++ b/arch/arm/dts/keystone-k2g-evm.dts
@@ -32,6 +32,10 @@
 	phy-handle = <&ethphy0>;
 };
 
+&netcp {
+	status = "okay";
+};
+
 &spi1 {
 	status = "okay";
 
diff --git a/arch/arm/dts/keystone-k2g-netcp.dtsi b/arch/arm/dts/keystone-k2g-netcp.dtsi
index a9b26c3..d76f2a1 100644
--- a/arch/arm/dts/keystone-k2g-netcp.dtsi
+++ b/arch/arm/dts/keystone-k2g-netcp.dtsi
@@ -99,6 +99,7 @@ netcp: netcp at 4000000 {
 	reg = <0x2620110 0x8>;
 	reg-names = "efuse";
 	compatible = "ti,netcp-1.0";
+	status = "disabled";
 	#address-cells = <1>;
 	#size-cells = <1>;
 	/* power-domains = <&k2g_pds K2G_DEV_NSS0>; */
-- 
2.10.0

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

* [U-Boot] [PATCH 29/31] ARM: dts: k2g: Add DT support for K2G Industrial Communication Engine evm
  2017-03-02 19:04 [U-Boot] [PATCH 00/31] ARM: k2g: Add support for new K2G ICE EVM Franklin S Cooper Jr
                   ` (27 preceding siblings ...)
  2017-03-02 19:04 ` [U-Boot] [PATCH 28/31] ARM: dts: k2g: Disable netcp by default Franklin S Cooper Jr
@ 2017-03-02 19:04 ` Franklin S Cooper Jr
  2017-03-09 13:09   ` Tom Rini
  2017-03-02 19:04 ` [U-Boot] [PATCH 30/31] ARM: k2g: Add K2G ICE DTB to the list of possible DTBs Franklin S Cooper Jr
  2017-03-02 19:04 ` [U-Boot] [PATCH 31/31] defconfig: k2g_evm_defconfig: Add K2G ICE to OF_LIST Franklin S Cooper Jr
  30 siblings, 1 reply; 68+ messages in thread
From: Franklin S Cooper Jr @ 2017-03-02 19:04 UTC (permalink / raw)
  To: u-boot

Add basic DT support for K2G ICE evm. Only minimal peripherals are
supported to allow console output and MMC boot.

Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>
---
 arch/arm/dts/Makefile             |  3 ++-
 arch/arm/dts/keystone-k2g-ice.dts | 25 +++++++++++++++++++++++++
 2 files changed, 27 insertions(+), 1 deletion(-)
 create mode 100644 arch/arm/dts/keystone-k2g-ice.dts

diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
index 06ebbf0..eb92480 100644
--- a/arch/arm/dts/Makefile
+++ b/arch/arm/dts/Makefile
@@ -324,7 +324,8 @@ dtb-$(CONFIG_SOC_KEYSTONE) += keystone-k2hk-evm.dtb \
 	keystone-k2l-evm.dtb \
 	keystone-k2e-evm.dtb \
 	keystone-k2g-evm.dtb \
-	keystone-k2g-generic.dtb
+	keystone-k2g-generic.dtb \
+	keystone-k2g-ice.dtb
 
 dtb-$(CONFIG_TARGET_SAMA5D2_XPLAINED) += \
 	at91-sama5d2_xplained.dtb
diff --git a/arch/arm/dts/keystone-k2g-ice.dts b/arch/arm/dts/keystone-k2g-ice.dts
new file mode 100644
index 0000000..d06bdc6
--- /dev/null
+++ b/arch/arm/dts/keystone-k2g-ice.dts
@@ -0,0 +1,25 @@
+/*
+ * Copyright 2017 Texas Instruments, Inc.
+ *
+ * K2G Industrial Communication Engine EVM device tree
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+/dts-v1/;
+
+#include "keystone-k2g.dtsi"
+
+/ {
+	compatible = "ti,k2g-ice", "ti,k2g", "ti,keystone";
+	model = "Texas Instruments K2G Industrial Communication EVM";
+
+	chosen {
+		stdout-path = &uart0;
+	};
+};
+
+&mmc1 {
+	status = "okay";
+};
-- 
2.10.0

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

* [U-Boot] [PATCH 30/31] ARM: k2g: Add K2G ICE DTB to the list of possible DTBs
  2017-03-02 19:04 [U-Boot] [PATCH 00/31] ARM: k2g: Add support for new K2G ICE EVM Franklin S Cooper Jr
                   ` (28 preceding siblings ...)
  2017-03-02 19:04 ` [U-Boot] [PATCH 29/31] ARM: dts: k2g: Add DT support for K2G Industrial Communication Engine evm Franklin S Cooper Jr
@ 2017-03-02 19:04 ` Franklin S Cooper Jr
  2017-03-09 13:10   ` Tom Rini
  2017-03-02 19:04 ` [U-Boot] [PATCH 31/31] defconfig: k2g_evm_defconfig: Add K2G ICE to OF_LIST Franklin S Cooper Jr
  30 siblings, 1 reply; 68+ messages in thread
From: Franklin S Cooper Jr @ 2017-03-02 19:04 UTC (permalink / raw)
  To: u-boot

K2G ICE evm will have its own dtb. Therefore, add it to the list of dtbs
located in the appended U-boot dtb FIT image. Therefore, when swapping out
dtbs K2G ICE boards can grab the correct one.

Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>
---
 board/ti/ks2_evm/board_k2g.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/board/ti/ks2_evm/board_k2g.c b/board/ti/ks2_evm/board_k2g.c
index 70164ee..e7b9bab 100644
--- a/board/ti/ks2_evm/board_k2g.c
+++ b/board/ti/ks2_evm/board_k2g.c
@@ -131,6 +131,8 @@ int board_fit_config_name_match(const char *name)
 		return 0;
 	else if (!strcmp(name, "keystone-k2g-evm") && board_ti_is("66AK2GGP"))
 		return 0;
+	else if (!strcmp(name, "keystone-k2g-ice") && board_ti_is("66AK2GIC"))
+		return 0;
 	else
 		return -1;
 }
-- 
2.10.0

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

* [U-Boot] [PATCH 31/31] defconfig: k2g_evm_defconfig: Add K2G ICE to OF_LIST
  2017-03-02 19:04 [U-Boot] [PATCH 00/31] ARM: k2g: Add support for new K2G ICE EVM Franklin S Cooper Jr
                   ` (29 preceding siblings ...)
  2017-03-02 19:04 ` [U-Boot] [PATCH 30/31] ARM: k2g: Add K2G ICE DTB to the list of possible DTBs Franklin S Cooper Jr
@ 2017-03-02 19:04 ` Franklin S Cooper Jr
  2017-03-09 13:10   ` Tom Rini
  30 siblings, 1 reply; 68+ messages in thread
From: Franklin S Cooper Jr @ 2017-03-02 19:04 UTC (permalink / raw)
  To: u-boot

Include K2G ICE to OF_LIST so it can be used for runtime board
detection.

Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>
---
 configs/k2g_evm_defconfig | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/configs/k2g_evm_defconfig b/configs/k2g_evm_defconfig
index 1352877..ed94f19 100644
--- a/configs/k2g_evm_defconfig
+++ b/configs/k2g_evm_defconfig
@@ -60,4 +60,4 @@ CONFIG_USB_XHCI_DWC3=y
 CONFIG_USB_STORAGE=y
 CONFIG_DTB_RESELECT=y
 CONFIG_FIT_EMBED=y
-CONFIG_OF_LIST="keystone-k2g-generic keystone-k2g-evm"
+CONFIG_OF_LIST="keystone-k2g-generic keystone-k2g-evm keystone-k2g-ice"
-- 
2.10.0

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

* [U-Boot] [PATCH 01/31] ti: common: board_detect: Allow settings board detection variables manually
  2017-03-02 19:04 ` [U-Boot] [PATCH 01/31] ti: common: board_detect: Allow settings board detection variables manually Franklin S Cooper Jr
@ 2017-03-02 19:10   ` Felipe Balbi
  2017-03-02 19:52     ` Franklin S Cooper Jr
  0 siblings, 1 reply; 68+ messages in thread
From: Felipe Balbi @ 2017-03-02 19:10 UTC (permalink / raw)
  To: u-boot


Hi,

Franklin S Cooper Jr <fcooper@ti.com> writes:
> From: Nishanth Menon <nm@ti.com>
>
> In some situations the EEPROM used for board detection may not be
> programmed or simply programmed incorrectly. Therefore, it may be
> necessary to "simulate" reading the contents of the EEPROM to set
> appropriate variables used in the board detection code.
>
> This may also be helpful in certain boot modes where doing i2c reads
> may be costly and the config supports running only a specific board.
>
> Signed-off-by: Nishanth Menon <nm@ti.com>
> Signed-off-by: Tero Kristo <t-kristo@ti.com>
> Signed-off-by: Keerthy <j-keerthy@ti.com>
> Signed-off-by: Franklin S Cooper Jr. <fcooper@ti.com>
> ---
>  board/ti/common/board_detect.c | 24 ++++++++++++++++++++++++
>  board/ti/common/board_detect.h | 17 +++++++++++++++++
>  2 files changed, 41 insertions(+)
>
> diff --git a/board/ti/common/board_detect.c b/board/ti/common/board_detect.c
> index a5dba94..5aaf884 100644
> --- a/board/ti/common/board_detect.c
> +++ b/board/ti/common/board_detect.c
> @@ -116,6 +116,30 @@ static int __maybe_unused ti_i2c_eeprom_get(int bus_addr, int dev_addr,
>  	return 0;
>  }
>  
> +int __maybe_unused ti_i2c_eeprom_am_set(const char *name, const char *rev)
> +{
> +	struct ti_common_eeprom *ep;
> +
> +	if (!name || !rev)
> +		return -1;
> +
> +	ep = TI_EEPROM_DATA;
> +	if (ep->header == TI_EEPROM_HEADER_MAGIC)
> +		goto already_set;
> +
> +	/* Set to 0 all fields */
> +	memset(ep, 0, sizeof(*ep));
> +	strncpy(ep->name, name, TI_EEPROM_HDR_NAME_LEN);
> +	strncpy(ep->version, rev, TI_EEPROM_HDR_REV_LEN);
> +	/* Some dummy serial number to identify the platform */
> +	strncpy(ep->serial, "0000", TI_EEPROM_HDR_SERIAL_LEN);
> +	/* Mark it with a valid header */
> +	ep->header = TI_EEPROM_HEADER_MAGIC;
> +
> +already_set:
> +	return 0;
> +}
> +
>  int __maybe_unused ti_i2c_eeprom_am_get(int bus_addr, int dev_addr)
>  {
>  	int rc;
> diff --git a/board/ti/common/board_detect.h b/board/ti/common/board_detect.h
> index 343fcb4..eeeacd3 100644
> --- a/board/ti/common/board_detect.h
> +++ b/board/ti/common/board_detect.h
> @@ -193,4 +193,21 @@ u64 board_ti_get_emif2_size(void);
>   */
>  void set_board_info_env(char *name);
>  
> +/**
> + * ti_i2c_eeprom_am_set() - Setup the eeprom data with predefined values
> + * @name:	Name of the board
> + * @rev:	Revision of the board
> + *
> + * In some cases such as in RTC-only mode, we are able to skip reading eeprom
> + * and wasting i2c based initialization time by using predefined flags for
> + * detecting what platform we are booting on. For those platforms, provide
> + * a handy function to pre-program information.

there's a micro-optimization for some cases here. You can try to read
i2c only on first time and save the result to environment. Something
like:

if (!getenv("serial#")) {
	read_serial_from_eeprom(&serial);
        setenv("serial#", serial);
        saveenv();
}

Of course, this assumes i2c is available and eeprom is properly
programmed. For bogus eeprom data, well, can't do much.

-- 
balbi

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

* [U-Boot] [PATCH 01/31] ti: common: board_detect: Allow settings board detection variables manually
  2017-03-02 19:10   ` Felipe Balbi
@ 2017-03-02 19:52     ` Franklin S Cooper Jr
  0 siblings, 0 replies; 68+ messages in thread
From: Franklin S Cooper Jr @ 2017-03-02 19:52 UTC (permalink / raw)
  To: u-boot



On 03/02/2017 01:10 PM, Felipe Balbi wrote:
> 
> Hi,
> 
> Franklin S Cooper Jr <fcooper@ti.com> writes:
>> From: Nishanth Menon <nm@ti.com>
>>
>> In some situations the EEPROM used for board detection may not be
>> programmed or simply programmed incorrectly. Therefore, it may be
>> necessary to "simulate" reading the contents of the EEPROM to set
>> appropriate variables used in the board detection code.
>>
>> This may also be helpful in certain boot modes where doing i2c reads
>> may be costly and the config supports running only a specific board.
>>
>> Signed-off-by: Nishanth Menon <nm@ti.com>
>> Signed-off-by: Tero Kristo <t-kristo@ti.com>
>> Signed-off-by: Keerthy <j-keerthy@ti.com>
>> Signed-off-by: Franklin S Cooper Jr. <fcooper@ti.com>
>> ---
>>  board/ti/common/board_detect.c | 24 ++++++++++++++++++++++++
>>  board/ti/common/board_detect.h | 17 +++++++++++++++++
>>  2 files changed, 41 insertions(+)
>>
>> diff --git a/board/ti/common/board_detect.c b/board/ti/common/board_detect.c
>> index a5dba94..5aaf884 100644
>> --- a/board/ti/common/board_detect.c
>> +++ b/board/ti/common/board_detect.c
>> @@ -116,6 +116,30 @@ static int __maybe_unused ti_i2c_eeprom_get(int bus_addr, int dev_addr,
>>  	return 0;
>>  }
>>  
>> +int __maybe_unused ti_i2c_eeprom_am_set(const char *name, const char *rev)
>> +{
>> +	struct ti_common_eeprom *ep;
>> +
>> +	if (!name || !rev)
>> +		return -1;
>> +
>> +	ep = TI_EEPROM_DATA;
>> +	if (ep->header == TI_EEPROM_HEADER_MAGIC)
>> +		goto already_set;
>> +
>> +	/* Set to 0 all fields */
>> +	memset(ep, 0, sizeof(*ep));
>> +	strncpy(ep->name, name, TI_EEPROM_HDR_NAME_LEN);
>> +	strncpy(ep->version, rev, TI_EEPROM_HDR_REV_LEN);
>> +	/* Some dummy serial number to identify the platform */
>> +	strncpy(ep->serial, "0000", TI_EEPROM_HDR_SERIAL_LEN);
>> +	/* Mark it with a valid header */
>> +	ep->header = TI_EEPROM_HEADER_MAGIC;
>> +
>> +already_set:
>> +	return 0;
>> +}
>> +
>>  int __maybe_unused ti_i2c_eeprom_am_get(int bus_addr, int dev_addr)
>>  {
>>  	int rc;
>> diff --git a/board/ti/common/board_detect.h b/board/ti/common/board_detect.h
>> index 343fcb4..eeeacd3 100644
>> --- a/board/ti/common/board_detect.h
>> +++ b/board/ti/common/board_detect.h
>> @@ -193,4 +193,21 @@ u64 board_ti_get_emif2_size(void);
>>   */
>>  void set_board_info_env(char *name);
>>  
>> +/**
>> + * ti_i2c_eeprom_am_set() - Setup the eeprom data with predefined values
>> + * @name:	Name of the board
>> + * @rev:	Revision of the board
>> + *
>> + * In some cases such as in RTC-only mode, we are able to skip reading eeprom
>> + * and wasting i2c based initialization time by using predefined flags for
>> + * detecting what platform we are booting on. For those platforms, provide
>> + * a handy function to pre-program information.
> 
> there's a micro-optimization for some cases here. You can try to read
> i2c only on first time and save the result to environment. Something
> like:
> 
> if (!getenv("serial#")) {
> 	read_serial_from_eeprom(&serial);
>         setenv("serial#", serial);
>         saveenv();
> }
> 
> Of course, this assumes i2c is available and eeprom is properly
> programmed. For bogus eeprom data, well, can't do much.

Atleast for the purposes I'm using it for I have to deal with non
programmed eeprom. The other usecase I've seen was wanting to avoid
touching the EEPROM at all.
> 

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

* [U-Boot] [PATCH 02/31] spl: fit: Break out some functions into a common file
  2017-03-02 19:04 ` [U-Boot] [PATCH 02/31] spl: fit: Break out some functions into a common file Franklin S Cooper Jr
@ 2017-03-08 21:01   ` Simon Glass
  2017-03-08 21:30     ` Franklin S Cooper Jr
  2017-03-13 12:33   ` Simon Glass
  1 sibling, 1 reply; 68+ messages in thread
From: Simon Glass @ 2017-03-08 21:01 UTC (permalink / raw)
  To: u-boot

Hi Franklin,

On 2 March 2017 at 12:04, Franklin S Cooper Jr <fcooper@ti.com> wrote:
> Some of the functions within spl_fit will be used for non spl purposes.
> Instead of duplicating functions simply break the functions to be reused
> into its own file.
>
> Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>
> Reviewed-by: Tom Rini <trini@konsulko.com>
> ---
>  common/Makefile      |  1 +
>  common/common_fit.c  | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++++
>  common/spl/spl_fit.c | 76 +---------------------------------------------
>  include/image.h      |  8 +++++
>  4 files changed, 96 insertions(+), 75 deletions(-)
>  create mode 100644 common/common_fit.c

This seems to conflict with Andre's series. What is the plan here?

- Simon

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

* [U-Boot] [PATCH 02/31] spl: fit: Break out some functions into a common file
  2017-03-08 21:01   ` Simon Glass
@ 2017-03-08 21:30     ` Franklin S Cooper Jr
  0 siblings, 0 replies; 68+ messages in thread
From: Franklin S Cooper Jr @ 2017-03-08 21:30 UTC (permalink / raw)
  To: u-boot

+Andre

On 03/08/2017 03:01 PM, Simon Glass wrote:
> Hi Franklin,
> 
> On 2 March 2017 at 12:04, Franklin S Cooper Jr <fcooper@ti.com> wrote:
>> Some of the functions within spl_fit will be used for non spl purposes.
>> Instead of duplicating functions simply break the functions to be reused
>> into its own file.
>>
>> Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>
>> Reviewed-by: Tom Rini <trini@konsulko.com>
>> ---
>>  common/Makefile      |  1 +
>>  common/common_fit.c  | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++++
>>  common/spl/spl_fit.c | 76 +---------------------------------------------
>>  include/image.h      |  8 +++++
>>  4 files changed, 96 insertions(+), 75 deletions(-)
>>  create mode 100644 common/common_fit.c
> 
> This seems to conflict with Andre's series. What is the plan here?

I'll have to look at it closely again but from what I remember Andre's
series was adding additional functionality to functions within spl_fit
while I only care about making those same functions accessible beyond
SPL. So it depends on whose code is merged first but I don't think it is
a big problem to manage.

> 
> - Simon
> 

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

* [U-Boot] [PATCH 04/31] fdt: Enable selecting correct DTB from append FIT Image
  2017-03-02 19:04 ` [U-Boot] [PATCH 04/31] fdt: Enable selecting correct DTB from append FIT Image Franklin S Cooper Jr
@ 2017-03-09 13:08   ` Tom Rini
  0 siblings, 0 replies; 68+ messages in thread
From: Tom Rini @ 2017-03-09 13:08 UTC (permalink / raw)
  To: u-boot

On Thu, Mar 02, 2017 at 01:04:08PM -0600, Franklin S Cooper Jr wrote:

> This patch gives U-boot the runtime support to have the board specific
> code decide which FDT to use. This is especially useful for devices
> that need this type of runtime determination and also doesn't use SPL.
> 
> Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>
> Reviewed-by: Lokesh Vutla <lokeshvutla@ti.com>

Reviewed-by: Tom Rini <trini@konsulko.com>

-- 
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/20170309/598a6049/attachment.sig>

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

* [U-Boot] [PATCH 05/31] ti: common: board_detect: Add function to determine if EEPROM was read
  2017-03-02 19:04 ` [U-Boot] [PATCH 05/31] ti: common: board_detect: Add function to determine if EEPROM was read Franklin S Cooper Jr
@ 2017-03-09 13:08   ` Tom Rini
  0 siblings, 0 replies; 68+ messages in thread
From: Tom Rini @ 2017-03-09 13:08 UTC (permalink / raw)
  To: u-boot

On Thu, Mar 02, 2017 at 01:04:09PM -0600, Franklin S Cooper Jr wrote:

> When the EEPROM is first read its contents are stored in memory as a
> cache to avoid further I2C operations. To determine if the EEPROM was
> previously read the easiest way is to check the memory to see if the
> EEPROM's magic header value is set. Create a new function that can
> determine if the EEPROM was previously read or not without having to
> perform a I2C transaction.
> 
> Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>

Reviewed-by: Tom Rini <trini@konsulko.com>

-- 
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/20170309/7b3505a2/attachment.sig>

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

* [U-Boot] [PATCH 09/31] ti_armv7_keystone2: Define scratch space in SRAM
  2017-03-02 19:04 ` [U-Boot] [PATCH 09/31] ti_armv7_keystone2: Define scratch space in SRAM Franklin S Cooper Jr
@ 2017-03-09 13:08   ` Tom Rini
  0 siblings, 0 replies; 68+ messages in thread
From: Tom Rini @ 2017-03-09 13:08 UTC (permalink / raw)
  To: u-boot

On Thu, Mar 02, 2017 at 01:04:13PM -0600, Franklin S Cooper Jr wrote:
> Scratch space can be used for features such as board detection. Define
> an area within SRAM that can be used for this purpose.
> 
> Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>
> Signed-off-by: Roger Quadros <rogerq@ti.com>
> ---
>  include/configs/ti_armv7_keystone2.h | 7 +++++++
>  1 file changed, 7 insertions(+)
> 
> diff --git a/include/configs/ti_armv7_keystone2.h b/include/configs/ti_armv7_keystone2.h
> index 5d4ef58..f76e0a5 100644
> --- a/include/configs/ti_armv7_keystone2.h
> +++ b/include/configs/ti_armv7_keystone2.h
> @@ -55,6 +55,13 @@
>  #define CONFIG_SPL_SPI_LOAD
>  #define CONFIG_SYS_SPI_U_BOOT_OFFS	CONFIG_SPL_PAD_TO
>  
> +/* SRAM scratch space entries  */
> +#define SRAM_SCRATCH_SPACE_ADDR	CONFIG_SPL_STACK + 0x8
> +
> +#define TI_SRAM_SCRATCH_BOARD_EEPROM_START	(SRAM_SCRATCH_SPACE_ADDR)
> +#define TI_SRAM_SCRATCH_BOARD_EEPROM_END	(SRAM_SCRATCH_SPACE_ADDR + 0x200)
> +#define KEYSTONE_SRAM_SCRATCH_SPACE_END		(TI_SRAM_SCRATCH_BOARD_EEPROM_END)

Lets start figuring out a better place for this information that's not
in include/configs/ so that when these files go away there'll be one
less thing to worry about.  There must be some reasonable
<asm/arch/xxxx> file that's common to all of the various platforms
already to place this in.  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/20170309/f6ba4784/attachment.sig>

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

* [U-Boot] [PATCH 11/31] ARM: k2g: Enable TI board detection code
  2017-03-02 19:04 ` [U-Boot] [PATCH 11/31] ARM: k2g: Enable TI board detection code Franklin S Cooper Jr
@ 2017-03-09 13:08   ` Tom Rini
  0 siblings, 0 replies; 68+ messages in thread
From: Tom Rini @ 2017-03-09 13:08 UTC (permalink / raw)
  To: u-boot

On Thu, Mar 02, 2017 at 01:04:15PM -0600, Franklin S Cooper Jr wrote:

> K2G boards have a EEPROM that will be used for board detection. Therefore,
> select the board detection config for K2G evms.
> 
> Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>

Reviewed-by: Tom Rini <trini@konsulko.com>

-- 
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/20170309/3fb1e577/attachment.sig>

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

* [U-Boot] [PATCH 12/31] board_f: Add new function to allow runtime DTB selection
  2017-03-02 19:04 ` [U-Boot] [PATCH 12/31] board_f: Add new function to allow runtime DTB selection Franklin S Cooper Jr
@ 2017-03-09 13:08   ` Tom Rini
  2017-03-09 20:12     ` Lukasz Majewski
  0 siblings, 1 reply; 68+ messages in thread
From: Tom Rini @ 2017-03-09 13:08 UTC (permalink / raw)
  To: u-boot

On Thu, Mar 02, 2017 at 01:04:16PM -0600, Franklin S Cooper Jr wrote:

> Runtime U-boot dtb selection is generally a two step process. First step
> is to simply use an initial generic dtb. The second step is to select
> the dtb and perhaps execute additional code ones U-boot knows what board
> it is running on. Embedded_dtb_select handles the second step by allowing
> board specific code to run and perform what ever necessary configuration
> that is needed.

So I'm not 100% sure on how to proceed here exactly.  We have a few
things to consider.  First, I bet the generic dtb is good enough for
loading up and booting to Linux (and loading/passing a different,
complete and board specific DTB).  Second, we have the (reasonable)
set of patches and discussion to make the DTB that we use available
easily so that it could be passed on to Linux (or EFI apps or whatever).
So, this is probably the right thing to do in the long run, but is also
another data point in the "but we need to think and talk about if some
platforms really shouldn't be shipping their full FT on the HW
somewhere".

> 
> Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>
[snip]
> +config DTB_RESELECT
> +	bool "Support swapping dtbs at a later point in boot"
> +	depends on FIT_EMBED
> +	default n

This is the default, you can drop it.

-- 
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/20170309/458ac87b/attachment.sig>

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

* [U-Boot] [PATCH 13/31] Makefile: Build additional binaries for dtb FIT blobs appended to U-boot
  2017-03-02 19:04 ` [U-Boot] [PATCH 13/31] Makefile: Build additional binaries for dtb FIT blobs appended to U-boot Franklin S Cooper Jr
@ 2017-03-09 13:08   ` Tom Rini
  0 siblings, 0 replies; 68+ messages in thread
From: Tom Rini @ 2017-03-09 13:08 UTC (permalink / raw)
  To: u-boot

On Thu, Mar 02, 2017 at 01:04:17PM -0600, Franklin S Cooper Jr wrote:

> Add additional make targets and options for building embedded FIT U-boot
> images.
> 
> Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>

Reviewed-by: Tom Rini <trini@konsulko.com>

-- 
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/20170309/615bdf50/attachment.sig>

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

* [U-Boot] [PATCH 14/31] ARM: keystone2: Allow to build with all image formats
  2017-03-02 19:04 ` [U-Boot] [PATCH 14/31] ARM: keystone2: Allow to build with all image formats Franklin S Cooper Jr
@ 2017-03-09 13:08   ` Tom Rini
  0 siblings, 0 replies; 68+ messages in thread
From: Tom Rini @ 2017-03-09 13:08 UTC (permalink / raw)
  To: u-boot

On Thu, Mar 02, 2017 at 01:04:18PM -0600, Franklin S Cooper Jr wrote:

> u-boot.bin is a copy of:
> u-boot-fit-dtb.bin if CONFIG_FIT_EMBED is enabled,
> u-boot-dtb.bin if CONFIG_OF_SEPARATE is enabled,
> u-boot-nodtb.bin if DT is not enabled.
> So, use u-boot.bin to to generate keystone images instead of
> u-boot-dtb.bin
> 
> Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>

Reviewed-by: Tom Rini <trini@konsulko.com>

-- 
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/20170309/68b5beb5/attachment.sig>

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

* [U-Boot] [PATCH 15/31] ARM: k2g: Define embedded_dtb_select for runtime DTB selection in U-boot
  2017-03-02 19:04 ` [U-Boot] [PATCH 15/31] ARM: k2g: Define embedded_dtb_select for runtime DTB selection in U-boot Franklin S Cooper Jr
@ 2017-03-09 13:08   ` Tom Rini
  0 siblings, 0 replies; 68+ messages in thread
From: Tom Rini @ 2017-03-09 13:08 UTC (permalink / raw)
  To: u-boot

On Thu, Mar 02, 2017 at 01:04:19PM -0600, Franklin S Cooper Jr wrote:

> For K2G, runtime DTB selection utilitizes the embedded_dtb_select function.
> Therefore, define the function which will perform a EEPROM read and then
> retries selecting the correct dtb now that it can detect which board its
> on. For other Keystone devices use an empty function since they will still
> use the embedded FIT functionality but their FIT will only contain a single
> dtb.
> 
> Most production K2G boards do not have their EEPROM programmed. Therefore,
> perform a test to verify a K2G GP is currently being used and if it is then
> set the values normally set by a EEPROM read.
> 
> Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>

Reviewed-by: Tom Rini <trini@konsulko.com>

-- 
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/20170309/0decc728/attachment.sig>

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

* [U-Boot] [PATCH 16/31] ARM: keystone2: Define board_fit_config_name_match for Keystone 2 boards
  2017-03-02 19:04 ` [U-Boot] [PATCH 16/31] ARM: keystone2: Define board_fit_config_name_match for Keystone 2 boards Franklin S Cooper Jr
@ 2017-03-09 13:08   ` Tom Rini
  0 siblings, 0 replies; 68+ messages in thread
From: Tom Rini @ 2017-03-09 13:08 UTC (permalink / raw)
  To: u-boot

On Thu, Mar 02, 2017 at 01:04:20PM -0600, Franklin S Cooper Jr wrote:

> Now with support for U-boot runtime dtb selection each board needs to
> define board_fit_config_name_match so U-boot can determine what the
> correct dtb is within the FIT blob.
> 
> Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>

Reviewed-by: Tom Rini <trini@konsulko.com>

-- 
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/20170309/e6b8728b/attachment.sig>

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

* [U-Boot] [PATCH 17/31] ks2_evm: Add EEPROM based board detection
  2017-03-02 19:04 ` [U-Boot] [PATCH 17/31] ks2_evm: Add EEPROM based board detection Franklin S Cooper Jr
@ 2017-03-09 13:08   ` Tom Rini
  0 siblings, 0 replies; 68+ messages in thread
From: Tom Rini @ 2017-03-09 13:08 UTC (permalink / raw)
  To: u-boot

On Thu, Mar 02, 2017 at 01:04:21PM -0600, Franklin S Cooper Jr wrote:

> Some K2G evms have their EEPROM programming while most do not. Therefore,
> add EEPROM board detection to be used as the default method and fall back
> to the alternative board detection when needed.
> 
> Also reorder board configuration. Perform bare minimal configuration
> initially since board detection hasn't ran. Finish board configuration
> once the board has been identified.
> 
> Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>

Reviewed-by: Tom Rini <trini@konsulko.com>

-- 
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/20170309/a11c1afd/attachment.sig>

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

* [U-Boot] [PATCH 18/31] defconfig: keystone2: Enable U-boot runtime DTB detection
  2017-03-02 19:04 ` [U-Boot] [PATCH 18/31] defconfig: keystone2: Enable U-boot runtime DTB detection Franklin S Cooper Jr
@ 2017-03-09 13:08   ` Tom Rini
  2017-03-16 21:52     ` Franklin S Cooper Jr
  0 siblings, 1 reply; 68+ messages in thread
From: Tom Rini @ 2017-03-09 13:08 UTC (permalink / raw)
  To: u-boot

On Thu, Mar 02, 2017 at 01:04:22PM -0600, Franklin S Cooper Jr wrote:

> Enable various config options to allow U-boot at runtime to select the
> proper dtb to use from the list of dtb's within the FIT image.
> 
> Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>

... but is the goal here to eventually support more than one EVM in a
single binary, on all of these platforms?

Reviewed-by: Tom Rini <trini@konsulko.com>

-- 
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/20170309/ad8586c0/attachment.sig>

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

* [U-Boot] [PATCH 19/31] ARM: keystone2: Add additional fields used for DDR3 configuration
  2017-03-02 19:04 ` [U-Boot] [PATCH 19/31] ARM: keystone2: Add additional fields used for DDR3 configuration Franklin S Cooper Jr
@ 2017-03-09 13:08   ` Tom Rini
  0 siblings, 0 replies; 68+ messages in thread
From: Tom Rini @ 2017-03-09 13:08 UTC (permalink / raw)
  To: u-boot

On Thu, Mar 02, 2017 at 01:04:23PM -0600, Franklin S Cooper Jr wrote:

> Future boards will need to configure DDR3 registers in a slightly
> different manner. Support this by defining additional variables and
> defines that will be utilized later.
> 
> Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>

Reviewed-by: Tom Rini <trini@konsulko.com>

-- 
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/20170309/b3a7dbd2/attachment.sig>

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

* [U-Boot] [PATCH 20/31] ARM: k2g: Program DDR PHY MR2 register with the default value
  2017-03-02 19:04 ` [U-Boot] [PATCH 20/31] ARM: k2g: Program DDR PHY MR2 register with the default value Franklin S Cooper Jr
@ 2017-03-09 13:08   ` Tom Rini
  0 siblings, 0 replies; 68+ messages in thread
From: Tom Rini @ 2017-03-09 13:08 UTC (permalink / raw)
  To: u-boot

On Thu, Mar 02, 2017 at 01:04:24PM -0600, Franklin S Cooper Jr wrote:

> K2G GP doesn't require the MR2 register to be programed since the
> default is good enough. However, newer K2G boards do need to change
> this register value. Therefore, instead of not writing this register if
> ran on a K2G board just program the value to be written to match the
> default/reset value.
> 
> Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>

Reviewed-by: Tom Rini <trini@konsulko.com>

-- 
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/20170309/73484f32/attachment.sig>

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

* [U-Boot] [PATCH 21/31] ARM: k2g: Program DDRPHY_DATX8 registers via mask and value variables
  2017-03-02 19:04 ` [U-Boot] [PATCH 21/31] ARM: k2g: Program DDRPHY_DATX8 registers via mask and value variables Franklin S Cooper Jr
@ 2017-03-09 13:09   ` Tom Rini
  0 siblings, 0 replies; 68+ messages in thread
From: Tom Rini @ 2017-03-09 13:09 UTC (permalink / raw)
  To: u-boot

On Thu, Mar 02, 2017 at 01:04:25PM -0600, Franklin S Cooper Jr wrote:

> Different K2G evms may need to program the various
> KS2_DDRPHY_DATX8_X_OFFSET registers in different ways. Therefore, use
> the mask and val registers for each KS2_DDRPHY_DATAX_X_OFFSET to
> properly program the register.
> 
> Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>

Reviewed-by: Tom Rini <trini@konsulko.com>

-- 
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/20170309/791aaff5/attachment.sig>

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

* [U-Boot] [PATCH 22/31] ks2_evm: Add EEPROM based board detection helper functions
  2017-03-02 19:04 ` [U-Boot] [PATCH 22/31] ks2_evm: Add EEPROM based board detection helper functions Franklin S Cooper Jr
@ 2017-03-09 13:09   ` Tom Rini
  0 siblings, 0 replies; 68+ messages in thread
From: Tom Rini @ 2017-03-09 13:09 UTC (permalink / raw)
  To: u-boot

On Thu, Mar 02, 2017 at 01:04:26PM -0600, Franklin S Cooper Jr wrote:

> Add a function that can be used to determine if the board being ran on is
> a K2G Industrial Communication Engine EVM or K2G General Purpose EVM based
> on values programmed on the EEPROM.
> 
> Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>

Reviewed-by: Tom Rini <trini@konsulko.com>

-- 
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/20170309/2c6a39c6/attachment.sig>

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

* [U-Boot] [PATCH 23/31] ARM: k2g: Add pinmux support for K2G ICE evm
  2017-03-02 19:04 ` [U-Boot] [PATCH 23/31] ARM: k2g: Add pinmux support for K2G ICE evm Franklin S Cooper Jr
@ 2017-03-09 13:09   ` Tom Rini
  0 siblings, 0 replies; 68+ messages in thread
From: Tom Rini @ 2017-03-09 13:09 UTC (permalink / raw)
  To: u-boot

On Thu, Mar 02, 2017 at 01:04:27PM -0600, Franklin S Cooper Jr wrote:

> Add basic pinmux data for new K2G ICE evm. Also add pinmuxing for a
> generic K2G evm which includes I2C 0 and 1 used for board detection
> purposes.
> 
> Since multiple K2G boards are supported that means initially generic
> pinmuxing should be used when board detection hasn't ran. Once board
> detection runs the proper pinmuxing can be reran to match the board
> being ran on.
> 
> Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>

Reviewed-by: Tom Rini <trini@konsulko.com>

-- 
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/20170309/82e1c899/attachment.sig>

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

* [U-Boot] [PATCH 24/31] ARM: k2g: Add DDR3 configuration for K2G ICE evm
  2017-03-02 19:04 ` [U-Boot] [PATCH 24/31] ARM: k2g: Add DDR3 configuration " Franklin S Cooper Jr
@ 2017-03-09 13:09   ` Tom Rini
  0 siblings, 0 replies; 68+ messages in thread
From: Tom Rini @ 2017-03-09 13:09 UTC (permalink / raw)
  To: u-boot

On Thu, Mar 02, 2017 at 01:04:28PM -0600, Franklin S Cooper Jr wrote:

> Add configuration settings used by the K2G ICE evm. Also use board
> detection to determine which DDR3 configuration to use.
> 
> Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>

Reviewed-by: Tom Rini <trini@konsulko.com>

-- 
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/20170309/d45289df/attachment.sig>

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

* [U-Boot] [PATCH 25/31] board: ks2: Use board detection to wrap code not specific to K2G ICE evm
  2017-03-02 19:04 ` [U-Boot] [PATCH 25/31] board: ks2: Use board detection to wrap code not specific to " Franklin S Cooper Jr
@ 2017-03-09 13:09   ` Tom Rini
  0 siblings, 0 replies; 68+ messages in thread
From: Tom Rini @ 2017-03-09 13:09 UTC (permalink / raw)
  To: u-boot

On Thu, Mar 02, 2017 at 01:04:29PM -0600, Franklin S Cooper Jr wrote:

> Some code doesn't apply to K2G ICE evm. Therefore, use board detection to
> wrap these calls.
> 
> Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>

Reviewed-by: Tom Rini <trini@konsulko.com>

-- 
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/20170309/517c95bd/attachment.sig>

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

* [U-Boot] [PATCH 26/31] ARM: k2g: Use board detection to wrap K2G GP specific calls
  2017-03-02 19:04 ` [U-Boot] [PATCH 26/31] ARM: k2g: Use board detection to wrap K2G GP specific calls Franklin S Cooper Jr
@ 2017-03-09 13:09   ` Tom Rini
  0 siblings, 0 replies; 68+ messages in thread
From: Tom Rini @ 2017-03-09 13:09 UTC (permalink / raw)
  To: u-boot

On Thu, Mar 02, 2017 at 01:04:30PM -0600, Franklin S Cooper Jr wrote:

> Certain peripherals used by K2G GP aren't used on K2G ICE evm. Or
> configuration is slightly different. Therefore, use board detection to
> deal with these variations.
> 
> Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>

Reviewed-by: Tom Rini <trini@konsulko.com>

-- 
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/20170309/61dd9858/attachment.sig>

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

* [U-Boot] [PATCH 27/31] ARM: k2g: Update board_name u-boot env variable at runtime
  2017-03-02 19:04 ` [U-Boot] [PATCH 27/31] ARM: k2g: Update board_name u-boot env variable at runtime Franklin S Cooper Jr
@ 2017-03-09 13:09   ` Tom Rini
  0 siblings, 0 replies; 68+ messages in thread
From: Tom Rini @ 2017-03-09 13:09 UTC (permalink / raw)
  To: u-boot

On Thu, Mar 02, 2017 at 01:04:31PM -0600, Franklin S Cooper Jr wrote:

> Enable CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG to allow "board_name" to
> be set depending on the board it is being ran on.
> 
> Update findfdt to use this new dynamic board_name value to determine
> which dtb should be used.
> 
> Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>

Reviewed-by: Tom Rini <trini@konsulko.com>

-- 
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/20170309/9bddbdac/attachment.sig>

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

* [U-Boot] [PATCH 28/31] ARM: dts: k2g: Disable netcp by default
  2017-03-02 19:04 ` [U-Boot] [PATCH 28/31] ARM: dts: k2g: Disable netcp by default Franklin S Cooper Jr
@ 2017-03-09 13:09   ` Tom Rini
  2017-03-16 21:55     ` Franklin S Cooper Jr
  0 siblings, 1 reply; 68+ messages in thread
From: Tom Rini @ 2017-03-09 13:09 UTC (permalink / raw)
  To: u-boot

On Thu, Mar 02, 2017 at 01:04:32PM -0600, Franklin S Cooper Jr wrote:

> Disable netcp by default like all other peripherals in the dtsi file.
> Enable the peripheral explicitly in the board specific dts file.
> 
> Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>

Has this been pushed up to Linux yet?  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/20170309/f40b1a9a/attachment.sig>

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

* [U-Boot] [PATCH 29/31] ARM: dts: k2g: Add DT support for K2G Industrial Communication Engine evm
  2017-03-02 19:04 ` [U-Boot] [PATCH 29/31] ARM: dts: k2g: Add DT support for K2G Industrial Communication Engine evm Franklin S Cooper Jr
@ 2017-03-09 13:09   ` Tom Rini
  2017-03-16 21:56     ` Franklin S Cooper Jr
  0 siblings, 1 reply; 68+ messages in thread
From: Tom Rini @ 2017-03-09 13:09 UTC (permalink / raw)
  To: u-boot

On Thu, Mar 02, 2017 at 01:04:33PM -0600, Franklin S Cooper Jr wrote:

> Add basic DT support for K2G ICE evm. Only minimal peripherals are
> supported to allow console output and MMC boot.
> 
> Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>
> ---
>  arch/arm/dts/Makefile             |  3 ++-
>  arch/arm/dts/keystone-k2g-ice.dts | 25 +++++++++++++++++++++++++

Has this been pushed up to Linux yet?  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/20170309/0c22b4ba/attachment.sig>

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

* [U-Boot] [PATCH 30/31] ARM: k2g: Add K2G ICE DTB to the list of possible DTBs
  2017-03-02 19:04 ` [U-Boot] [PATCH 30/31] ARM: k2g: Add K2G ICE DTB to the list of possible DTBs Franklin S Cooper Jr
@ 2017-03-09 13:10   ` Tom Rini
  0 siblings, 0 replies; 68+ messages in thread
From: Tom Rini @ 2017-03-09 13:10 UTC (permalink / raw)
  To: u-boot

On Thu, Mar 02, 2017 at 01:04:34PM -0600, Franklin S Cooper Jr wrote:

> K2G ICE evm will have its own dtb. Therefore, add it to the list of dtbs
> located in the appended U-boot dtb FIT image. Therefore, when swapping out
> dtbs K2G ICE boards can grab the correct one.
> 
> Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>

Reviewed-by: Tom Rini <trini@konsulko.com>

-- 
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/20170309/fe125b7b/attachment.sig>

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

* [U-Boot] [PATCH 31/31] defconfig: k2g_evm_defconfig: Add K2G ICE to OF_LIST
  2017-03-02 19:04 ` [U-Boot] [PATCH 31/31] defconfig: k2g_evm_defconfig: Add K2G ICE to OF_LIST Franklin S Cooper Jr
@ 2017-03-09 13:10   ` Tom Rini
  0 siblings, 0 replies; 68+ messages in thread
From: Tom Rini @ 2017-03-09 13:10 UTC (permalink / raw)
  To: u-boot

On Thu, Mar 02, 2017 at 01:04:35PM -0600, Franklin S Cooper Jr wrote:

> Include K2G ICE to OF_LIST so it can be used for runtime board
> detection.
> 
> Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>

Reviewed-by: Tom Rini <trini@konsulko.com>

-- 
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/20170309/3b3d9cda/attachment.sig>

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

* [U-Boot] [PATCH 12/31] board_f: Add new function to allow runtime DTB selection
  2017-03-09 13:08   ` Tom Rini
@ 2017-03-09 20:12     ` Lukasz Majewski
  2017-03-10 15:42       ` Tom Rini
  0 siblings, 1 reply; 68+ messages in thread
From: Lukasz Majewski @ 2017-03-09 20:12 UTC (permalink / raw)
  To: u-boot

On Thu, 9 Mar 2017 08:08:20 -0500
Tom Rini <trini@konsulko.com> wrote:

> On Thu, Mar 02, 2017 at 01:04:16PM -0600, Franklin S Cooper Jr wrote:
> 
> > Runtime U-boot dtb selection is generally a two step process. First
> > step is to simply use an initial generic dtb. The second step is to
> > select the dtb and perhaps execute additional code ones U-boot
> > knows what board it is running on. Embedded_dtb_select handles the
> > second step by allowing board specific code to run and perform what
> > ever necessary configuration that is needed.
> 
> So I'm not 100% sure on how to proceed here exactly.  We have a few
> things to consider.  First, I bet the generic dtb is good enough for
> loading up and booting to Linux (and loading/passing a different,
> complete and board specific DTB).  Second, we have the (reasonable)
> set of patches and discussion to make the DTB that we use available
> easily so that it could be passed on to Linux (or EFI apps or
> whatever). So, this is probably the right thing to do in the long
> run, but is also another data point in the "but we need to think and
> talk about if some platforms really shouldn't be shipping their full
> FT on the HW somewhere".

It might also happen that somebody would like to have one "blessed"
u-boot binary stored in one place and then only change u-boot DTB stored
on another memory region (like eMMC, NOR).

The above also seems like a valid use case, especially when one wants to
support device for a long time (many DTBs) and avoid uncontrolled grown
of final u-boot.img binary size (as this is now the case for TI).

> 
> > 
> > Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>
> [snip]
> > +config DTB_RESELECT
> > +	bool "Support swapping dtbs at a later point in boot"
> > +	depends on FIT_EMBED
> > +	default n
> 
> This is the default, you can drop it.
> 




Best regards,

Lukasz Majewski

--

DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 181 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20170309/d7f70d6c/attachment.sig>

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

* [U-Boot] [PATCH 12/31] board_f: Add new function to allow runtime DTB selection
  2017-03-09 20:12     ` Lukasz Majewski
@ 2017-03-10 15:42       ` Tom Rini
  2017-03-30 16:22         ` Franklin S Cooper Jr
  0 siblings, 1 reply; 68+ messages in thread
From: Tom Rini @ 2017-03-10 15:42 UTC (permalink / raw)
  To: u-boot

On Thu, Mar 09, 2017 at 09:12:56PM +0100, Lukasz Majewski wrote:
> On Thu, 9 Mar 2017 08:08:20 -0500
> Tom Rini <trini@konsulko.com> wrote:
> 
> > On Thu, Mar 02, 2017 at 01:04:16PM -0600, Franklin S Cooper Jr wrote:
> > 
> > > Runtime U-boot dtb selection is generally a two step process. First
> > > step is to simply use an initial generic dtb. The second step is to
> > > select the dtb and perhaps execute additional code ones U-boot
> > > knows what board it is running on. Embedded_dtb_select handles the
> > > second step by allowing board specific code to run and perform what
> > > ever necessary configuration that is needed.
> > 
> > So I'm not 100% sure on how to proceed here exactly.  We have a few
> > things to consider.  First, I bet the generic dtb is good enough for
> > loading up and booting to Linux (and loading/passing a different,
> > complete and board specific DTB).  Second, we have the (reasonable)
> > set of patches and discussion to make the DTB that we use available
> > easily so that it could be passed on to Linux (or EFI apps or
> > whatever). So, this is probably the right thing to do in the long
> > run, but is also another data point in the "but we need to think and
> > talk about if some platforms really shouldn't be shipping their full
> > FT on the HW somewhere".
> 
> It might also happen that somebody would like to have one "blessed"
> u-boot binary stored in one place and then only change u-boot DTB stored
> on another memory region (like eMMC, NOR).
> 
> The above also seems like a valid use case, especially when one wants to
> support device for a long time (many DTBs) and avoid uncontrolled grown
> of final u-boot.img binary size (as this is now the case for TI).

I'd rather stress that the problem is that when we want to support N
boards and we do that by including N device tree blobs, the size is
going to grow with each board.  What's not happening yet is the DTB is
being stored in the device and accessed that way.  I'd really like to
see some boards moving in that direction.  And it seems like perhaps
you're working on some that could?  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/20170310/b556d77c/attachment.sig>

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

* [U-Boot] [PATCH 02/31] spl: fit: Break out some functions into a common file
  2017-03-02 19:04 ` [U-Boot] [PATCH 02/31] spl: fit: Break out some functions into a common file Franklin S Cooper Jr
  2017-03-08 21:01   ` Simon Glass
@ 2017-03-13 12:33   ` Simon Glass
  1 sibling, 0 replies; 68+ messages in thread
From: Simon Glass @ 2017-03-13 12:33 UTC (permalink / raw)
  To: u-boot

On 2 March 2017 at 12:04, Franklin S Cooper Jr <fcooper@ti.com> wrote:
> Some of the functions within spl_fit will be used for non spl purposes.
> Instead of duplicating functions simply break the functions to be reused
> into its own file.
>
> Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>
> Reviewed-by: Tom Rini <trini@konsulko.com>
> ---
>  common/Makefile      |  1 +
>  common/common_fit.c  | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++++
>  common/spl/spl_fit.c | 76 +---------------------------------------------
>  include/image.h      |  8 +++++
>  4 files changed, 96 insertions(+), 75 deletions(-)
>  create mode 100644 common/common_fit.c

Reviewed-by: Simon Glass <sjg@chromium.org>

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

* [U-Boot] [PATCH 18/31] defconfig: keystone2: Enable U-boot runtime DTB detection
  2017-03-09 13:08   ` Tom Rini
@ 2017-03-16 21:52     ` Franklin S Cooper Jr
  0 siblings, 0 replies; 68+ messages in thread
From: Franklin S Cooper Jr @ 2017-03-16 21:52 UTC (permalink / raw)
  To: u-boot



On 03/09/2017 07:08 AM, Tom Rini wrote:
> On Thu, Mar 02, 2017 at 01:04:22PM -0600, Franklin S Cooper Jr wrote:
> 
>> Enable various config options to allow U-boot at runtime to select the
>> proper dtb to use from the list of dtb's within the FIT image.
>>
>> Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>
> 
> ... but is the goal here to eventually support more than one EVM in a
> single binary, on all of these platforms?

Yes the goal is to have a single binary that support multiple evms for a
given SoC family. Similar to what we are doing for OMAP devices except
using U-boot instead of SPL.
> 
> Reviewed-by: Tom Rini <trini@konsulko.com>
> 

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

* [U-Boot] [PATCH 28/31] ARM: dts: k2g: Disable netcp by default
  2017-03-09 13:09   ` Tom Rini
@ 2017-03-16 21:55     ` Franklin S Cooper Jr
  0 siblings, 0 replies; 68+ messages in thread
From: Franklin S Cooper Jr @ 2017-03-16 21:55 UTC (permalink / raw)
  To: u-boot



On 03/09/2017 07:09 AM, Tom Rini wrote:
> On Thu, Mar 02, 2017 at 01:04:32PM -0600, Franklin S Cooper Jr wrote:
> 
>> Disable netcp by default like all other peripherals in the dtsi file.
>> Enable the peripheral explicitly in the board specific dts file.
>>
>> Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>
> 
> Has this been pushed up to Linux yet?  Thanks!

Only an extremely bare minimal dts exist in upstream. So this patch
isn't applicable.

> 

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

* [U-Boot] [PATCH 29/31] ARM: dts: k2g: Add DT support for K2G Industrial Communication Engine evm
  2017-03-09 13:09   ` Tom Rini
@ 2017-03-16 21:56     ` Franklin S Cooper Jr
  2017-03-17 14:08       ` Tom Rini
  0 siblings, 1 reply; 68+ messages in thread
From: Franklin S Cooper Jr @ 2017-03-16 21:56 UTC (permalink / raw)
  To: u-boot



On 03/09/2017 07:09 AM, Tom Rini wrote:
> On Thu, Mar 02, 2017 at 01:04:33PM -0600, Franklin S Cooper Jr wrote:
> 
>> Add basic DT support for K2G ICE evm. Only minimal peripherals are
>> supported to allow console output and MMC boot.
>>
>> Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>
>> ---
>>  arch/arm/dts/Makefile             |  3 ++-
>>  arch/arm/dts/keystone-k2g-ice.dts | 25 +++++++++++++++++++++++++
> 
> Has this been pushed up to Linux yet?  Thanks!

Not yet.

> 

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

* [U-Boot] [PATCH 29/31] ARM: dts: k2g: Add DT support for K2G Industrial Communication Engine evm
  2017-03-16 21:56     ` Franklin S Cooper Jr
@ 2017-03-17 14:08       ` Tom Rini
  0 siblings, 0 replies; 68+ messages in thread
From: Tom Rini @ 2017-03-17 14:08 UTC (permalink / raw)
  To: u-boot

On Thu, Mar 16, 2017 at 04:56:44PM -0500, Franklin S Cooper Jr wrote:
> 
> 
> On 03/09/2017 07:09 AM, Tom Rini wrote:
> > On Thu, Mar 02, 2017 at 01:04:33PM -0600, Franklin S Cooper Jr wrote:
> > 
> >> Add basic DT support for K2G ICE evm. Only minimal peripherals are
> >> supported to allow console output and MMC boot.
> >>
> >> Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>
> >> ---
> >>  arch/arm/dts/Makefile             |  3 ++-
> >>  arch/arm/dts/keystone-k2g-ice.dts | 25 +++++++++++++++++++++++++
> > 
> > Has this been pushed up to Linux yet?  Thanks!
> 
> Not yet.

OK.  The point for here (and patch 28) is that I'd like to see the DTS
queued up in the appropriate tree for the kernel before we pull it in
here (or at least the maintainer saying they'll pull it when gathering
stuff next) so that we don't have them getting out of sync.  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/20170317/fc848a65/attachment.sig>

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

* [U-Boot] [PATCH 12/31] board_f: Add new function to allow runtime DTB selection
  2017-03-10 15:42       ` Tom Rini
@ 2017-03-30 16:22         ` Franklin S Cooper Jr
  0 siblings, 0 replies; 68+ messages in thread
From: Franklin S Cooper Jr @ 2017-03-30 16:22 UTC (permalink / raw)
  To: u-boot



On 03/10/2017 09:42 AM, Tom Rini wrote:
> On Thu, Mar 09, 2017 at 09:12:56PM +0100, Lukasz Majewski wrote:
>> On Thu, 9 Mar 2017 08:08:20 -0500
>> Tom Rini <trini@konsulko.com> wrote:
>>
>>> On Thu, Mar 02, 2017 at 01:04:16PM -0600, Franklin S Cooper Jr wrote:
>>>
>>>> Runtime U-boot dtb selection is generally a two step process. First
>>>> step is to simply use an initial generic dtb. The second step is to
>>>> select the dtb and perhaps execute additional code ones U-boot
>>>> knows what board it is running on. Embedded_dtb_select handles the
>>>> second step by allowing board specific code to run and perform what
>>>> ever necessary configuration that is needed.
>>>
>>> So I'm not 100% sure on how to proceed here exactly.  We have a few
>>> things to consider.  First, I bet the generic dtb is good enough for
>>> loading up and booting to Linux (and loading/passing a different,
>>> complete and board specific DTB).  Second, we have the (reasonable)
>>> set of patches and discussion to make the DTB that we use available
>>> easily so that it could be passed on to Linux (or EFI apps or
>>> whatever). So, this is probably the right thing to do in the long
>>> run, but is also another data point in the "but we need to think and
>>> talk about if some platforms really shouldn't be shipping their full
>>> FT on the HW somewhere".
>>
>> It might also happen that somebody would like to have one "blessed"
>> u-boot binary stored in one place and then only change u-boot DTB stored
>> on another memory region (like eMMC, NOR).
>>
>> The above also seems like a valid use case, especially when one wants to
>> support device for a long time (many DTBs) and avoid uncontrolled grown
>> of final u-boot.img binary size (as this is now the case for TI).
> 
> I'd rather stress that the problem is that when we want to support N
> boards and we do that by including N device tree blobs, the size is
> going to grow with each board.  What's not happening yet is the DTB is
> being stored in the device and accessed that way.  I'd really like to
> see some boards moving in that direction.  And it seems like perhaps
> you're working on some that could?  Thanks!

The problem I see is storing dtbs that U-boot needs as part of booting
at a different location requires alot of guarantees across all the evms
being supported by the single image. If for NAND boot one board stores
U-boot's dtb blobs in one partition vs another then things fall apart.
The larger this minimal dtb is the harder it is to guarantee that it
will be valid in the future when/if new boards are introduced or reved.

The benefit of having a dtb bundled in the U-boot image is that no
matter the boot mode or board differences as long as something loads
U-boot it can then select the proper dtb to use from memory. I think I
remember Andrew also saying how having U-boot's dtbs built in will make
things easier in the HS world.

Now the method that U-boot is loaded and where U-boot is stored will
need to deal with U-boots larger size. But I think its rather enviable
since atleast for TI evms we kept space allowance for U-boot in NOR and
NAND rather small for no real reason.

In general if someone adds support and makes use of using a minimal
U-boot dtb and loading the "correct" one from some other location I
wouldn't have an issue with that. But atleast to me I don't think that
is the direction for TI evms.
> 

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

end of thread, other threads:[~2017-03-30 16:22 UTC | newest]

Thread overview: 68+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-03-02 19:04 [U-Boot] [PATCH 00/31] ARM: k2g: Add support for new K2G ICE EVM Franklin S Cooper Jr
2017-03-02 19:04 ` [U-Boot] [PATCH 01/31] ti: common: board_detect: Allow settings board detection variables manually Franklin S Cooper Jr
2017-03-02 19:10   ` Felipe Balbi
2017-03-02 19:52     ` Franklin S Cooper Jr
2017-03-02 19:04 ` [U-Boot] [PATCH 02/31] spl: fit: Break out some functions into a common file Franklin S Cooper Jr
2017-03-08 21:01   ` Simon Glass
2017-03-08 21:30     ` Franklin S Cooper Jr
2017-03-13 12:33   ` Simon Glass
2017-03-02 19:04 ` [U-Boot] [PATCH 03/31] boot_fit: Create helper functions that can be used to select DTB out of FIT Franklin S Cooper Jr
2017-03-02 19:04 ` [U-Boot] [PATCH 04/31] fdt: Enable selecting correct DTB from append FIT Image Franklin S Cooper Jr
2017-03-09 13:08   ` Tom Rini
2017-03-02 19:04 ` [U-Boot] [PATCH 05/31] ti: common: board_detect: Add function to determine if EEPROM was read Franklin S Cooper Jr
2017-03-09 13:08   ` Tom Rini
2017-03-02 19:04 ` [U-Boot] [PATCH 06/31] dts: Allow OF_LIST to depend on FIT_EMBED Franklin S Cooper Jr
2017-03-02 19:04 ` [U-Boot] [PATCH 07/31] arm: dts: Add new "generic" 66AK2Gx device tree file Franklin S Cooper Jr
2017-03-02 19:04 ` [U-Boot] [PATCH 08/31] ti: common: board_detect: Rename EEPROM scratch start macro Franklin S Cooper Jr
2017-03-02 19:04 ` [U-Boot] [PATCH 09/31] ti_armv7_keystone2: Define scratch space in SRAM Franklin S Cooper Jr
2017-03-09 13:08   ` Tom Rini
2017-03-02 19:04 ` [U-Boot] [PATCH 10/31] ARM: Use Kconfig for board EEPROM's I2C bus and chip address Franklin S Cooper Jr
2017-03-02 19:04 ` [U-Boot] [PATCH 11/31] ARM: k2g: Enable TI board detection code Franklin S Cooper Jr
2017-03-09 13:08   ` Tom Rini
2017-03-02 19:04 ` [U-Boot] [PATCH 12/31] board_f: Add new function to allow runtime DTB selection Franklin S Cooper Jr
2017-03-09 13:08   ` Tom Rini
2017-03-09 20:12     ` Lukasz Majewski
2017-03-10 15:42       ` Tom Rini
2017-03-30 16:22         ` Franklin S Cooper Jr
2017-03-02 19:04 ` [U-Boot] [PATCH 13/31] Makefile: Build additional binaries for dtb FIT blobs appended to U-boot Franklin S Cooper Jr
2017-03-09 13:08   ` Tom Rini
2017-03-02 19:04 ` [U-Boot] [PATCH 14/31] ARM: keystone2: Allow to build with all image formats Franklin S Cooper Jr
2017-03-09 13:08   ` Tom Rini
2017-03-02 19:04 ` [U-Boot] [PATCH 15/31] ARM: k2g: Define embedded_dtb_select for runtime DTB selection in U-boot Franklin S Cooper Jr
2017-03-09 13:08   ` Tom Rini
2017-03-02 19:04 ` [U-Boot] [PATCH 16/31] ARM: keystone2: Define board_fit_config_name_match for Keystone 2 boards Franklin S Cooper Jr
2017-03-09 13:08   ` Tom Rini
2017-03-02 19:04 ` [U-Boot] [PATCH 17/31] ks2_evm: Add EEPROM based board detection Franklin S Cooper Jr
2017-03-09 13:08   ` Tom Rini
2017-03-02 19:04 ` [U-Boot] [PATCH 18/31] defconfig: keystone2: Enable U-boot runtime DTB detection Franklin S Cooper Jr
2017-03-09 13:08   ` Tom Rini
2017-03-16 21:52     ` Franklin S Cooper Jr
2017-03-02 19:04 ` [U-Boot] [PATCH 19/31] ARM: keystone2: Add additional fields used for DDR3 configuration Franklin S Cooper Jr
2017-03-09 13:08   ` Tom Rini
2017-03-02 19:04 ` [U-Boot] [PATCH 20/31] ARM: k2g: Program DDR PHY MR2 register with the default value Franklin S Cooper Jr
2017-03-09 13:08   ` Tom Rini
2017-03-02 19:04 ` [U-Boot] [PATCH 21/31] ARM: k2g: Program DDRPHY_DATX8 registers via mask and value variables Franklin S Cooper Jr
2017-03-09 13:09   ` Tom Rini
2017-03-02 19:04 ` [U-Boot] [PATCH 22/31] ks2_evm: Add EEPROM based board detection helper functions Franklin S Cooper Jr
2017-03-09 13:09   ` Tom Rini
2017-03-02 19:04 ` [U-Boot] [PATCH 23/31] ARM: k2g: Add pinmux support for K2G ICE evm Franklin S Cooper Jr
2017-03-09 13:09   ` Tom Rini
2017-03-02 19:04 ` [U-Boot] [PATCH 24/31] ARM: k2g: Add DDR3 configuration " Franklin S Cooper Jr
2017-03-09 13:09   ` Tom Rini
2017-03-02 19:04 ` [U-Boot] [PATCH 25/31] board: ks2: Use board detection to wrap code not specific to " Franklin S Cooper Jr
2017-03-09 13:09   ` Tom Rini
2017-03-02 19:04 ` [U-Boot] [PATCH 26/31] ARM: k2g: Use board detection to wrap K2G GP specific calls Franklin S Cooper Jr
2017-03-09 13:09   ` Tom Rini
2017-03-02 19:04 ` [U-Boot] [PATCH 27/31] ARM: k2g: Update board_name u-boot env variable at runtime Franklin S Cooper Jr
2017-03-09 13:09   ` Tom Rini
2017-03-02 19:04 ` [U-Boot] [PATCH 28/31] ARM: dts: k2g: Disable netcp by default Franklin S Cooper Jr
2017-03-09 13:09   ` Tom Rini
2017-03-16 21:55     ` Franklin S Cooper Jr
2017-03-02 19:04 ` [U-Boot] [PATCH 29/31] ARM: dts: k2g: Add DT support for K2G Industrial Communication Engine evm Franklin S Cooper Jr
2017-03-09 13:09   ` Tom Rini
2017-03-16 21:56     ` Franklin S Cooper Jr
2017-03-17 14:08       ` Tom Rini
2017-03-02 19:04 ` [U-Boot] [PATCH 30/31] ARM: k2g: Add K2G ICE DTB to the list of possible DTBs Franklin S Cooper Jr
2017-03-09 13:10   ` Tom Rini
2017-03-02 19:04 ` [U-Boot] [PATCH 31/31] defconfig: k2g_evm_defconfig: Add K2G ICE to OF_LIST Franklin S Cooper Jr
2017-03-09 13:10   ` 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.