All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [u-boot PATCH v3 0/8] am57xx-idk LCD and am571x-idk 6 port ethernet pinmux
@ 2017-02-06  9:36 Roger Quadros
  2017-02-06  9:36 ` [U-Boot] [u-boot PATCH v3 1/8] ARM: OMAP5+: GPIO: Add GPIO_TO_PIN() macro Roger Quadros
                   ` (7 more replies)
  0 siblings, 8 replies; 24+ messages in thread
From: Roger Quadros @ 2017-02-06  9:36 UTC (permalink / raw)
  To: u-boot

Hi,

This series contains

- Support am571x-idk LCD vs 6 port ethernet pinmux configuration.
- AM57xx-idk LCD detection support.
- K2G: pick up PRUSS ethernet MAC addresses from board EEPROM.

Build tests:
https://travis-ci.org/rogerq/u-boot/builds/198773695

Changelog:
v3:
- moved EEPROM options to board/ti/common/Kconfig.
- Don't explicitly set EEPROM CONFIG addresses in defconfig
if board is using the default addresses.

v2:
- avoid using __maybe_unused.
- moved EEPROM address configuration to Kconfig.
- LCD detection patch no longer update device tree.

cheers,
-roger

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

Nishanth Menon (1):
  board: ti: am57xx-idk: Auto detect LCD Panel

Roger Quadros (6):
  ARM: OMAP5+: GPIO: Add GPIO_TO_PIN() macro
  ti: common: board_detect: commodify ethaddr environment setting code
  board: ti: am571x-idk: Support 6 port Ethernet or 4 port Ethernet with
    LCD
  board: ti: am571x-idk: Update pinmux for ICSS2 Ethernet
  ARM: Use Kconfig for board EEPROM's I2C bus and chip address
  ARM: k2g: setup PRU ethernet MAC addresses

 arch/arm/include/asm/arch-omap5/gpio.h |   4 +
 arch/arm/include/asm/omap_common.h     |   8 +-
 board/ti/am57xx/board.c                | 102 ++++++++++++++++++++
 board/ti/am57xx/mux_data.h             | 166 ++++++++++++++++++++-------------
 board/ti/common/Kconfig                |  14 +++
 board/ti/common/board_detect.c         |  57 +++++++++++
 board/ti/common/board_detect.h         |  14 ++-
 board/ti/ks2_evm/Kconfig               |   2 +
 board/ti/ks2_evm/board_k2g.c           |  19 ++++
 include/configs/am57xx_evm.h           |   4 -
 include/configs/dra7xx_evm.h           |   4 -
 11 files changed, 316 insertions(+), 78 deletions(-)

-- 
2.7.4

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

* [U-Boot] [u-boot PATCH v3 1/8] ARM: OMAP5+: GPIO: Add GPIO_TO_PIN() macro
  2017-02-06  9:36 [U-Boot] [u-boot PATCH v3 0/8] am57xx-idk LCD and am571x-idk 6 port ethernet pinmux Roger Quadros
@ 2017-02-06  9:36 ` Roger Quadros
  2017-02-06  9:36 ` [U-Boot] [u-boot PATCH v3 2/8] ti: common: board_detect: commodify ethaddr environment setting code Roger Quadros
                   ` (6 subsequent siblings)
  7 siblings, 0 replies; 24+ messages in thread
From: Roger Quadros @ 2017-02-06  9:36 UTC (permalink / raw)
  To: u-boot

GPIO_TO_PIN(bank, bank_gpio) returns the GPIO index
from the GPIO bank number and bank's GPIO offset number.

Signed-off-by: Roger Quadros <rogerq@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Lokesh Vutla <lokeshvutla@ti.com>
---
 arch/arm/include/asm/arch-omap5/gpio.h | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/arch/arm/include/asm/arch-omap5/gpio.h b/arch/arm/include/asm/arch-omap5/gpio.h
index 9dd03c9..48e8ca5 100644
--- a/arch/arm/include/asm/arch-omap5/gpio.h
+++ b/arch/arm/include/asm/arch-omap5/gpio.h
@@ -34,4 +34,8 @@
 #define OMAP54XX_GPIO7_BASE		0x48051000
 #define OMAP54XX_GPIO8_BASE		0x48053000
 
+
+/* Get the GPIO index from the given bank number and bank gpio */
+#define GPIO_TO_PIN(bank, bank_gpio)	(32 * (bank - 1) + (bank_gpio))
+
 #endif /* _GPIO_OMAP5_H */
-- 
2.7.4

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

* [U-Boot] [u-boot PATCH v3 2/8] ti: common: board_detect: commodify ethaddr environment setting code
  2017-02-06  9:36 [U-Boot] [u-boot PATCH v3 0/8] am57xx-idk LCD and am571x-idk 6 port ethernet pinmux Roger Quadros
  2017-02-06  9:36 ` [U-Boot] [u-boot PATCH v3 1/8] ARM: OMAP5+: GPIO: Add GPIO_TO_PIN() macro Roger Quadros
@ 2017-02-06  9:36 ` Roger Quadros
  2017-02-06  9:36 ` [U-Boot] [u-boot PATCH v3 3/8] board: ti: am571x-idk: Support 6 port Ethernet or 4 port Ethernet with LCD Roger Quadros
                   ` (5 subsequent siblings)
  7 siblings, 0 replies; 24+ messages in thread
From: Roger Quadros @ 2017-02-06  9:36 UTC (permalink / raw)
  To: u-boot

Keystone and OMAP platforms will need this to set ethernet
MAC addresses from board EEPROM.

Signed-off-by: Roger Quadros <rogerq@ti.com>
Reviewed-by: Lokesh Vutla <lokeshvutla@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
---
 board/ti/common/board_detect.c | 57 ++++++++++++++++++++++++++++++++++++++++++
 board/ti/common/board_detect.h | 12 +++++++++
 2 files changed, 69 insertions(+)

diff --git a/board/ti/common/board_detect.c b/board/ti/common/board_detect.c
index a5dba94..23388d0 100644
--- a/board/ti/common/board_detect.c
+++ b/board/ti/common/board_detect.c
@@ -314,3 +314,60 @@ void __maybe_unused set_board_info_env(char *name)
 	else
 		setenv("board_serial", unknown);
 }
+
+static u64 mac_to_u64(u8 mac[6])
+{
+	int i;
+	u64 addr = 0;
+
+	for (i = 0; i < 6; i++) {
+		addr <<= 8;
+		addr |= mac[i];
+	}
+
+	return addr;
+}
+
+static void u64_to_mac(u64 addr, u8 mac[6])
+{
+	mac[5] = addr;
+	mac[4] = addr >> 8;
+	mac[3] = addr >> 16;
+	mac[2] = addr >> 24;
+	mac[1] = addr >> 32;
+	mac[0] = addr >> 40;
+}
+
+void board_ti_set_ethaddr(int index)
+{
+	uint8_t mac_addr[6];
+	int i;
+	u64 mac1, mac2;
+	u8 mac_addr1[6], mac_addr2[6];
+	int num_macs;
+	/*
+	 * Export any Ethernet MAC addresses from EEPROM.
+	 * The 2 MAC addresses in EEPROM define the address range.
+	 */
+	board_ti_get_eth_mac_addr(0, mac_addr1);
+	board_ti_get_eth_mac_addr(1, mac_addr2);
+
+	if (is_valid_ethaddr(mac_addr1) && is_valid_ethaddr(mac_addr2)) {
+		mac1 = mac_to_u64(mac_addr1);
+		mac2 = mac_to_u64(mac_addr2);
+
+		/* must contain an address range */
+		num_macs = mac2 - mac1 + 1;
+		/* <= 50 to protect against user programming error */
+		if (num_macs > 0 && num_macs <= 50) {
+			for (i = 0; i < num_macs; i++) {
+				u64_to_mac(mac1 + i, mac_addr);
+				if (is_valid_ethaddr(mac_addr)) {
+					eth_setenv_enetaddr_by_index("eth",
+								     i + index,
+								     mac_addr);
+				}
+			}
+		}
+	}
+}
diff --git a/board/ti/common/board_detect.h b/board/ti/common/board_detect.h
index 343fcb4..4bcb64f 100644
--- a/board/ti/common/board_detect.h
+++ b/board/ti/common/board_detect.h
@@ -193,4 +193,16 @@ u64 board_ti_get_emif2_size(void);
  */
 void set_board_info_env(char *name);
 
+/**
+ * board_ti_set_ethaddr- Sets the ethaddr environment from EEPROM
+ * @index: The first eth<index>addr environment variable to set
+ *
+ * EEPROM should be already read before calling this function.
+ * The EEPROM contains 2 MAC addresses which define the MAC address
+ * range (i.e. first and last MAC address).
+ * This function sets the ethaddr environment variable for all
+ * the available MAC addresses starting from eth<index>addr.
+ */
+void board_ti_set_ethaddr(int index);
+
 #endif	/* __BOARD_DETECT_H */
-- 
2.7.4

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

* [U-Boot] [u-boot PATCH v3 3/8] board: ti: am571x-idk: Support 6 port Ethernet or 4 port Ethernet with LCD
  2017-02-06  9:36 [U-Boot] [u-boot PATCH v3 0/8] am57xx-idk LCD and am571x-idk 6 port ethernet pinmux Roger Quadros
  2017-02-06  9:36 ` [U-Boot] [u-boot PATCH v3 1/8] ARM: OMAP5+: GPIO: Add GPIO_TO_PIN() macro Roger Quadros
  2017-02-06  9:36 ` [U-Boot] [u-boot PATCH v3 2/8] ti: common: board_detect: commodify ethaddr environment setting code Roger Quadros
@ 2017-02-06  9:36 ` Roger Quadros
  2017-02-06  9:36 ` [U-Boot] [u-boot PATCH v3 4/8] board: ti: am571x-idk: Update pinmux for ICSS2 Ethernet Roger Quadros
                   ` (4 subsequent siblings)
  7 siblings, 0 replies; 24+ messages in thread
From: Roger Quadros @ 2017-02-06  9:36 UTC (permalink / raw)
  To: u-boot

The board can support either ICSS1 Ethernet ports or LCD
based on J51 jumper. Factory default is ICSS1 Ethernet ports
(i.e. Jumper not populated).

Use the GPIO to detect the jumper setting and configure the
pinmux accordingly. Also select the right DT blob based on
the chosen configuration.

J51 absent -> ICSS1 Ethernet, no LCD on VOUT -> am571x-idk.dtb
J51 present -> LCD on VOUT, no ICSS1 Ethernet -> am571x-idk-lcd-osd.dtb

At present we only support the assume it is the Legacy LCD.
LCD detection mechanism needs to be added later to differentiate
between legacy vs new LCD.

For ICSS1 Ethernet pins use the following convention to set the pinmux
as PMT data is not yet finalized.

- If pin is output, set as PIN_OUTPUT
- If pin is input and external pull resistor present set as PIN_INPUT
- If pin is input and external pull resistor absent, set pull to same
as that of the external PHY's internall pull.
- Do not use SLEW_CONTROLon any pin.

Cc: Nishanth Menon <nm@ti.com>
Signed-off-by: Roger Quadros <rogerq@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Lokesh Vutla <lokeshvutla@ti.com>
---
 board/ti/am57xx/board.c    |  40 +++++++++++++++++
 board/ti/am57xx/mux_data.h | 104 ++++++++++++++++++++++++++++++---------------
 2 files changed, 109 insertions(+), 35 deletions(-)

diff --git a/board/ti/am57xx/board.c b/board/ti/am57xx/board.c
index 5f2d4df..81ad86c 100644
--- a/board/ti/am57xx/board.c
+++ b/board/ti/am57xx/board.c
@@ -50,6 +50,7 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
+#define GPIO_ETH_LCD		GPIO_TO_PIN(2, 22)
 /* GPIO 7_11 */
 #define GPIO_DDR_VTT_EN 203
 
@@ -449,6 +450,21 @@ void hw_data_init(void)
 	*ctrl = &dra7xx_ctrl;
 }
 
+bool am571x_idk_needs_lcd(void)
+{
+	bool needs_lcd;
+
+	gpio_request(GPIO_ETH_LCD, "nLCD_Detect");
+	if (gpio_get_value(GPIO_ETH_LCD))
+		needs_lcd = false;
+	else
+		needs_lcd = true;
+
+	gpio_free(GPIO_ETH_LCD);
+
+	return needs_lcd;
+}
+
 int board_init(void)
 {
 	gpmc_init();
@@ -459,6 +475,8 @@ int board_init(void)
 
 int board_late_init(void)
 {
+	char *idk_lcd;
+
 	setup_board_eeprom_env();
 	u8 val;
 
@@ -487,6 +505,17 @@ int board_late_init(void)
 	palmas_i2c_write_u8(TPS65903X_CHIP_P1, TPS65903X_PRIMARY_SECONDARY_PAD2,
 			    val);
 
+	/* TBD: Add LCD panel detection once information is available */
+	if (am571x_idk_needs_lcd())
+		idk_lcd = "osd101t2045"; /* Default to legacy LCD */
+	else
+		idk_lcd = "no";
+	setenv("idk_lcd", idk_lcd);
+
+#if !defined(CONFIG_SPL_BUILD)
+	board_ti_set_ethaddr(2);
+#endif
+
 	return 0;
 }
 
@@ -549,6 +578,17 @@ void recalibrate_iodelay(void)
 		do_set_mux32((*ctrl)->control_padconf_core_base, pconf, pconf_sz);
 	}
 
+	if (board_is_am571x_idk()) {
+		if (am571x_idk_needs_lcd()) {
+			pconf = core_padconf_array_vout_am571x_idk;
+			pconf_sz = ARRAY_SIZE(core_padconf_array_vout_am571x_idk);
+		} else {
+			pconf = core_padconf_array_icss1eth_am571x_idk;
+			pconf_sz = ARRAY_SIZE(core_padconf_array_icss1eth_am571x_idk);
+		}
+		do_set_mux32((*ctrl)->control_padconf_core_base, pconf, pconf_sz);
+	}
+
 	/* Setup IOdelay configuration */
 	ret = do_set_iodelay((*ctrl)->iodelay_config_base, iod, iod_sz);
 err:
diff --git a/board/ti/am57xx/mux_data.h b/board/ti/am57xx/mux_data.h
index 2f5243e..ff0e517 100644
--- a/board/ti/am57xx/mux_data.h
+++ b/board/ti/am57xx/mux_data.h
@@ -549,13 +549,6 @@ const struct pad_conf_entry core_padconf_array_essential_am571x_idk[] = {
 	{VIN2A_D0, (M11 | PIN_INPUT_PULLDOWN)},	/* vin2a_d0.pr1_uart0_rxd */
 	{VIN2A_D1, (M11 | PIN_INPUT_PULLDOWN)},	/* vin2a_d1.pr1_uart0_txd */
 	{VIN2A_D2, (M10 | PIN_INPUT_PULLDOWN)},	/* vin2a_d2.eCAP1_in_PWM1_out */
-	{VIN2A_D3, (M11 | PIN_INPUT_PULLDOWN)},	/* vin2a_d3.pr1_mi1_col */
-	{VIN2A_D4, (M11 | PIN_INPUT_PULLDOWN)},	/* vin2a_d4.pr1_mii1_txd1 */
-	{VIN2A_D5, (M11 | PIN_INPUT_PULLDOWN)},	/* vin2a_d5.pr1_mii1_txd0 */
-	{VIN2A_D6, (M11 | PIN_INPUT_PULLDOWN)},	/* vin2a_d6.pr1_mii_mt1_clk */
-	{VIN2A_D7, (M11 | PIN_INPUT_PULLDOWN)},	/* vin2a_d7.pr1_mii1_txen */
-	{VIN2A_D8, (M11 | PIN_INPUT_PULLDOWN)},	/* vin2a_d8.pr1_mii1_txd3 */
-	{VIN2A_D9, (M11 | PIN_INPUT_PULLDOWN)},	/* vin2a_d9.pr1_mii1_txd2 */
 	{VIN2A_D10, (M11 | PIN_INPUT_PULLDOWN)},	/* vin2a_d10.pr1_mdio_mdclk */
 	{VIN2A_D11, (M11 | PIN_INPUT_PULLUP)},	/* vin2a_d11.pr1_mdio_data */
 	{VIN2A_D12, (M3 | PIN_INPUT_PULLDOWN | MANUAL_MODE)},	/* vin2a_d12.rgmii1_txc */
@@ -570,35 +563,7 @@ const struct pad_conf_entry core_padconf_array_essential_am571x_idk[] = {
 	{VIN2A_D21, (M3 | PIN_INPUT_PULLUP | MANUAL_MODE)},	/* vin2a_d21.rgmii1_rxd2 */
 	{VIN2A_D22, (M3 | PIN_INPUT_PULLUP | MANUAL_MODE)},	/* vin2a_d22.rgmii1_rxd1 */
 	{VIN2A_D23, (M3 | PIN_INPUT_PULLUP | MANUAL_MODE)},	/* vin2a_d23.rgmii1_rxd0 */
-	{VOUT1_CLK, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_clk.vout1_clk */
-	{VOUT1_DE, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_de.vout1_de */
 	{VOUT1_FLD, (M14 | PIN_INPUT_PULLUP)},	/* vout1_fld.gpio4_21 */
-	{VOUT1_HSYNC, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_hsync.vout1_hsync */
-	{VOUT1_VSYNC, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_vsync.vout1_vsync */
-	{VOUT1_D0, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_d0.vout1_d0 */
-	{VOUT1_D1, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_d1.vout1_d1 */
-	{VOUT1_D2, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_d2.vout1_d2 */
-	{VOUT1_D3, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_d3.vout1_d3 */
-	{VOUT1_D4, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_d4.vout1_d4 */
-	{VOUT1_D5, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_d5.vout1_d5 */
-	{VOUT1_D6, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_d6.vout1_d6 */
-	{VOUT1_D7, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_d7.vout1_d7 */
-	{VOUT1_D8, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_d8.vout1_d8 */
-	{VOUT1_D9, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_d9.vout1_d9 */
-	{VOUT1_D10, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_d10.vout1_d10 */
-	{VOUT1_D11, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_d11.vout1_d11 */
-	{VOUT1_D12, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_d12.vout1_d12 */
-	{VOUT1_D13, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_d13.vout1_d13 */
-	{VOUT1_D14, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_d14.vout1_d14 */
-	{VOUT1_D15, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_d15.vout1_d15 */
-	{VOUT1_D16, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_d16.vout1_d16 */
-	{VOUT1_D17, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_d17.vout1_d17 */
-	{VOUT1_D18, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_d18.vout1_d18 */
-	{VOUT1_D19, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_d19.vout1_d19 */
-	{VOUT1_D20, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_d20.vout1_d20 */
-	{VOUT1_D21, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_d21.vout1_d21 */
-	{VOUT1_D22, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_d22.vout1_d22 */
-	{VOUT1_D23, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_d23.vout1_d23 */
 	{MDIO_MCLK, (M0 | PIN_INPUT_PULLUP | SLEWCONTROL)},	/* mdio_mclk.mdio_mclk */
 	{MDIO_D, (M0 | PIN_INPUT_PULLUP | SLEWCONTROL)},	/* mdio_d.mdio_d */
 	{RMII_MHZ_50_CLK, (M13 | PIN_INPUT_PULLDOWN)},	/* RMII_MHZ_50_CLK.pr2_pru1_gpo2 */
@@ -727,6 +692,75 @@ const struct pad_conf_entry core_padconf_array_essential_am571x_idk[] = {
 	{RSTOUTN, (M0 | PIN_OUTPUT_PULLDOWN)},	/* rstoutn.rstoutn */
 };
 
+const struct pad_conf_entry core_padconf_array_icss1eth_am571x_idk[] = {
+	/* PR1 MII0 */
+	{VOUT1_D8, (M12 | PIN_INPUT_PULLDOWN)},	/* vout1_d8.pr1_mii_mt0_clk */
+	{VOUT1_D9, (M13 | PIN_OUTPUT)},		/* vout1_d9.pr1_mii0_txd3 */
+	{VOUT1_D10, (M13 | PIN_OUTPUT)},	/* vout1_d10.pr1_mii0_txd2 */
+	{VOUT1_D11, (M13 | PIN_OUTPUT)},	/* vout1_d11.pr1_mii0_txen */
+	{VOUT1_D12, (M13 | PIN_OUTPUT)},	/* vout1_d12.pr1_mii0_txd1 */
+	{VOUT1_D13, (M13 | PIN_OUTPUT)},	/* vout1_d13.pr1_mii0_txd0 */
+	{VOUT1_D14, (M12 | PIN_INPUT_PULLDOWN)},	/* vout1_d14.pr1_mii_mr0_clk */
+	{VOUT1_D15, (M12 | PIN_INPUT_PULLDOWN)},	/* vout1_d15.pr1_mii0_rxdv */
+	{VOUT1_D16, (M12 | PIN_INPUT)},	/* vout1_d16.pr1_mii0_rxd3 */
+	{VOUT1_D17, (M12 | PIN_INPUT)},	/* vout1_d17.pr1_mii0_rxd2 */
+	{VOUT1_D18, (M12 | PIN_INPUT)},	/* vout1_d18.pr1_mii0_rxd1 */
+	{VOUT1_D19, (M12 | PIN_INPUT)},	/* vout1_d19.pr1_mii0_rxd0 */
+	{VOUT1_D20, (M12 | PIN_INPUT_PULLUP)},	/* vout1_d20.pr1_mii0_rxer */
+	{VOUT1_D21, (M12 | PIN_INPUT)},	/* vout1_d21.pr1_mii0_rxlink */
+	{VOUT1_D22, (M12 | PIN_INPUT)},	/* vout1_d22.pr1_mii0_col */
+	{VOUT1_D23, (M12 | PIN_INPUT_PULLUP)},	/* vout1_d23.pr1_mii0_crs */
+
+	/* PR1 MII1 */
+	{VIN2A_D3, (M12 | PIN_INPUT)},	/* vin2a_d3.pr1_mi1_col */
+	{VIN2A_D4, (M13 | PIN_OUTPUT)},	/* vin2a_d4.pr1_mii1_txd1 */
+	{VIN2A_D5, (M13 | PIN_OUTPUT)},	/* vin2a_d5.pr1_mii1_txd0 */
+	{VIN2A_D6, (M11 | PIN_INPUT_PULLDOWN)},	/* vin2a_d6.pr1_mii_mt1_clk */
+	{VIN2A_D7, (M11 | PIN_OUTPUT)},	/* vin2a_d7.pr1_mii1_txen */
+	{VIN2A_D8, (M11 | PIN_OUTPUT)},	/* vin2a_d8.pr1_mii1_txd3 */
+	{VIN2A_D9, (M11 | PIN_OUTPUT)},	/* vin2a_d9.pr1_mii1_txd2 */
+	{VOUT1_VSYNC, (M12 | PIN_INPUT_PULLUP)},	/* vout1_vsync.pr1_mii1_rxer */
+	{VOUT1_D0, (M12 | PIN_INPUT)},	/* vout1_d0.pr1_mii1_rxlink */
+	{VOUT1_D1, (M12 | PIN_INPUT_PULLUP)},	/* vout1_d1.pr1_mii1_crs */
+	{VOUT1_D2, (M12 | PIN_INPUT_PULLDOWN)},	/* vout1_d2.pr1_mii_mr1_clk */
+	{VOUT1_D3, (M12 | PIN_INPUT_PULLDOWN)},	/* vout1_d3.pr1_mii1_rxdv */
+	{VOUT1_D4, (M12 | PIN_INPUT)},	/* vout1_d4.pr1_mii1_rxd3 */
+	{VOUT1_D5, (M12 | PIN_INPUT)},	/* vout1_d5.pr1_mii1_rxd2 */
+	{VOUT1_D6, (M12 | PIN_INPUT)},	/* vout1_d6.pr1_mii1_rxd1 */
+	{VOUT1_D7, (M12 | PIN_INPUT)},	/* vout1_d7.pr1_mii1_rxd0 */
+};
+
+const struct pad_conf_entry core_padconf_array_vout_am571x_idk[] = {
+	{VOUT1_CLK, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_clk.vout1_clk */
+	{VOUT1_DE, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_de.vout1_de */
+	{VOUT1_HSYNC, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_hsync.vout1_hsync */
+	{VOUT1_VSYNC, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_vsync.vout1_vsync */
+	{VOUT1_D0, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_d0.vout1_d0 */
+	{VOUT1_D1, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_d1.vout1_d1 */
+	{VOUT1_D2, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_d2.vout1_d2 */
+	{VOUT1_D3, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_d3.vout1_d3 */
+	{VOUT1_D4, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_d4.vout1_d4 */
+	{VOUT1_D5, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_d5.vout1_d5 */
+	{VOUT1_D6, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_d6.vout1_d6 */
+	{VOUT1_D7, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_d7.vout1_d7 */
+	{VOUT1_D8, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_d8.vout1_d8 */
+	{VOUT1_D9, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_d9.vout1_d9 */
+	{VOUT1_D10, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_d10.vout1_d10 */
+	{VOUT1_D11, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_d11.vout1_d11 */
+	{VOUT1_D12, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_d12.vout1_d12 */
+	{VOUT1_D13, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_d13.vout1_d13 */
+	{VOUT1_D14, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_d14.vout1_d14 */
+	{VOUT1_D15, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_d15.vout1_d15 */
+	{VOUT1_D16, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_d16.vout1_d16 */
+	{VOUT1_D17, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_d17.vout1_d17 */
+	{VOUT1_D18, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_d18.vout1_d18 */
+	{VOUT1_D19, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_d19.vout1_d19 */
+	{VOUT1_D20, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_d20.vout1_d20 */
+	{VOUT1_D21, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_d21.vout1_d21 */
+	{VOUT1_D22, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_d22.vout1_d22 */
+	{VOUT1_D23, (M0 | PIN_INPUT_PULLDOWN)},	/* vout1_d23.vout1_d23 */
+};
+
 const struct pad_conf_entry early_padconf[] = {
 	{UART2_CTSN, (M2 | PIN_INPUT_SLEW)},	/* uart2_ctsn.uart3_rxd */
 	{UART2_RTSN, (M1 | PIN_INPUT_SLEW)},	/* uart2_rtsn.uart3_txd */
-- 
2.7.4

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

* [U-Boot] [u-boot PATCH v3 4/8] board: ti: am571x-idk: Update pinmux for ICSS2 Ethernet
  2017-02-06  9:36 [U-Boot] [u-boot PATCH v3 0/8] am57xx-idk LCD and am571x-idk 6 port ethernet pinmux Roger Quadros
                   ` (2 preceding siblings ...)
  2017-02-06  9:36 ` [U-Boot] [u-boot PATCH v3 3/8] board: ti: am571x-idk: Support 6 port Ethernet or 4 port Ethernet with LCD Roger Quadros
@ 2017-02-06  9:36 ` Roger Quadros
  2017-02-06  9:36 ` [U-Boot] [u-boot PATCH v3 5/8] board: ti: am57xx-idk: Auto detect LCD Panel Roger Quadros
                   ` (3 subsequent siblings)
  7 siblings, 0 replies; 24+ messages in thread
From: Roger Quadros @ 2017-02-06  9:36 UTC (permalink / raw)
  To: u-boot

Use the same convention that was used for ICSS1 Ethernet
- If pin is output, set as PIN_OUTPUT
- If pin is input and external pull resistor present set as PIN_INPUT
- If pin is input and external pull resistor absent, set pull to same
as that of the external PHY's internall pull.

Signed-off-by: Roger Quadros <rogerq@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Lokesh Vutla <lokeshvutla@ti.com>
---
 board/ti/am57xx/mux_data.h | 62 +++++++++++++++++++++++-----------------------
 1 file changed, 31 insertions(+), 31 deletions(-)

diff --git a/board/ti/am57xx/mux_data.h b/board/ti/am57xx/mux_data.h
index ff0e517..5485212 100644
--- a/board/ti/am57xx/mux_data.h
+++ b/board/ti/am57xx/mux_data.h
@@ -586,46 +586,46 @@ const struct pad_conf_entry core_padconf_array_essential_am571x_idk[] = {
 	{GPIO6_14, (M14 | PIN_INPUT_PULLUP)},	/* gpio6_14.gpio6_14 */
 	{GPIO6_15, (M14 | PIN_INPUT_PULLUP)},	/* gpio6_15.gpio6_15 */
 	{GPIO6_16, (M14 | PIN_INPUT_PULLDOWN)},	/* gpio6_16.gpio6_16 */
-	{XREF_CLK0, (M11 | PIN_INPUT_PULLDOWN)},	/* xref_clk0.pr2_mii1_col */
-	{XREF_CLK1, (M11 | PIN_INPUT_PULLDOWN)},	/* xref_clk1.pr2_mii1_crs */
+	{XREF_CLK0, (M11 | PIN_INPUT)},	/* xref_clk0.pr2_mii1_col */
+	{XREF_CLK1, (M11 | PIN_INPUT_PULLUP)},	/* xref_clk1.pr2_mii1_crs */
 	{XREF_CLK2, (M14 | PIN_INPUT_PULLDOWN)},	/* xref_clk2.gpio6_19 */
 	{XREF_CLK3, (M15 | PIN_INPUT_PULLDOWN)},	/* xref_clk3.Driveroff */
 	{MCASP1_ACLKX, (M11 | PIN_INPUT_PULLDOWN)},	/* mcasp1_aclkx.pr2_mdio_mdclk */
 	{MCASP1_FSX, (M11 | PIN_INPUT_SLEW)},	/* mcasp1_fsx.pr2_mdio_data */
 	{MCASP1_ACLKR, (M14 | PIN_INPUT_PULLUP)},	/* mcasp1_aclkr.gpio5_0 */
 	{MCASP1_FSR, (M14 | PIN_INPUT_PULLUP)},	/* mcasp1_fsr.gpio5_1 */
-	{MCASP1_AXR0, (M11 | PIN_INPUT_PULLUP | SLEWCONTROL)},	/* mcasp1_axr0.pr2_mii0_rxer */
-	{MCASP1_AXR1, (M11 | PIN_INPUT_SLEW)},	/* mcasp1_axr1.pr2_mii_mt0_clk */
+	{MCASP1_AXR0, (M11 | PIN_INPUT_PULLUP)},	/* mcasp1_axr0.pr2_mii0_rxer */
+	{MCASP1_AXR1, (M11 | PIN_INPUT_PULLDOWN)},	/* mcasp1_axr1.pr2_mii_mt0_clk */
 	{MCASP1_AXR2, (M14 | PIN_INPUT_PULLDOWN)},	/* mcasp1_axr2.gpio5_4 */
 	{MCASP1_AXR3, (M14 | PIN_INPUT_PULLUP)},	/* mcasp1_axr3.gpio5_5 */
 	{MCASP1_AXR4, (M14 | PIN_INPUT_PULLDOWN)},	/* mcasp1_axr4.gpio5_6 */
 	{MCASP1_AXR5, (M14 | PIN_INPUT_PULLDOWN)},	/* mcasp1_axr5.gpio5_7 */
 	{MCASP1_AXR6, (M14 | PIN_INPUT_PULLUP)},	/* mcasp1_axr6.gpio5_8 */
 	{MCASP1_AXR7, (M14 | PIN_INPUT_PULLUP)},	/* mcasp1_axr7.gpio5_9 */
-	{MCASP1_AXR8, (M11 | PIN_INPUT_SLEW)},	/* mcasp1_axr8.pr2_mii0_txen */
-	{MCASP1_AXR9, (M11 | PIN_INPUT_SLEW)},	/* mcasp1_axr9.pr2_mii0_txd3 */
-	{MCASP1_AXR10, (M11 | PIN_INPUT_SLEW)},	/* mcasp1_axr10.pr2_mii0_txd2 */
-	{MCASP1_AXR11, (M11 | PIN_INPUT_SLEW)},	/* mcasp1_axr11.pr2_mii0_txd1 */
-	{MCASP1_AXR12, (M11 | PIN_INPUT_SLEW)},	/* mcasp1_axr12.pr2_mii0_txd0 */
-	{MCASP1_AXR13, (M11 | PIN_INPUT_SLEW)},	/* mcasp1_axr13.pr2_mii_mr0_clk */
-	{MCASP1_AXR14, (M11 | PIN_INPUT_PULLDOWN | SLEWCONTROL)},	/* mcasp1_axr14.pr2_mii0_rxdv */
-	{MCASP1_AXR15, (M11 | PIN_INPUT_SLEW)},	/* mcasp1_axr15.pr2_mii0_rxd3 */
-	{MCASP2_ACLKX, (M11 | PIN_INPUT_SLEW)},	/* mcasp2_aclkx.pr2_mii0_rxd2 */
-	{MCASP2_FSX, (M11 | PIN_INPUT_SLEW)},	/* mcasp2_fsx.pr2_mii0_rxd1 */
+	{MCASP1_AXR8, (M11 | PIN_OUTPUT)},	/* mcasp1_axr8.pr2_mii0_txen */
+	{MCASP1_AXR9, (M11 | PIN_OUTPUT)},	/* mcasp1_axr9.pr2_mii0_txd3 */
+	{MCASP1_AXR10, (M11 | PIN_OUTPUT)},	/* mcasp1_axr10.pr2_mii0_txd2 */
+	{MCASP1_AXR11, (M11 | PIN_OUTPUT)},	/* mcasp1_axr11.pr2_mii0_txd1 */
+	{MCASP1_AXR12, (M11 | PIN_OUTPUT)},	/* mcasp1_axr12.pr2_mii0_txd0 */
+	{MCASP1_AXR13, (M11 | PIN_INPUT_PULLDOWN)},	/* mcasp1_axr13.pr2_mii_mr0_clk */
+	{MCASP1_AXR14, (M11 | PIN_INPUT_PULLDOWN)},	/* mcasp1_axr14.pr2_mii0_rxdv */
+	{MCASP1_AXR15, (M11 | PIN_INPUT)},	/* mcasp1_axr15.pr2_mii0_rxd3 */
+	{MCASP2_ACLKX, (M11 | PIN_INPUT)},	/* mcasp2_aclkx.pr2_mii0_rxd2 */
+	{MCASP2_FSX, (M11 | PIN_INPUT)},	/* mcasp2_fsx.pr2_mii0_rxd1 */
 	{MCASP2_ACLKR, (M15 | PIN_INPUT_PULLDOWN)},	/* mcasp2_aclkr.Driveroff */
 	{MCASP2_FSR, (M15 | PIN_INPUT_PULLDOWN)},	/* mcasp2_fsr.Driveroff */
 	{MCASP2_AXR0, (M15 | PIN_INPUT_PULLDOWN)},	/* mcasp2_axr0.Driveroff */
 	{MCASP2_AXR1, (M15 | PIN_INPUT_PULLDOWN)},	/* mcasp2_axr1.Driveroff */
-	{MCASP2_AXR2, (M11 | PIN_INPUT_SLEW)},	/* mcasp2_axr2.pr2_mii0_rxd0 */
-	{MCASP2_AXR3, (M11 | PIN_INPUT_PULLDOWN | SLEWCONTROL)},	/* mcasp2_axr3.pr2_mii0_rxlink */
+	{MCASP2_AXR2, (M11 | PIN_INPUT)},	/* mcasp2_axr2.pr2_mii0_rxd0 */
+	{MCASP2_AXR3, (M11 | PIN_INPUT)},	/* mcasp2_axr3.pr2_mii0_rxlink */
 	{MCASP2_AXR4, (M14 | PIN_INPUT_PULLDOWN)},	/* mcasp2_axr4.gpio1_4 */
 	{MCASP2_AXR5, (M14 | PIN_INPUT_PULLDOWN)},	/* mcasp2_axr5.gpio6_7 */
 	{MCASP2_AXR6, (M14 | PIN_INPUT_PULLDOWN)},	/* mcasp2_axr6.gpio2_29 */
 	{MCASP2_AXR7, (M14 | PIN_INPUT_PULLDOWN)},	/* mcasp2_axr7.gpio1_5 */
-	{MCASP3_ACLKX, (M11 | PIN_INPUT_PULLDOWN)},	/* mcasp3_aclkx.pr2_mii0_crs */
-	{MCASP3_FSX, (M11 | PIN_INPUT_SLEW)},	/* mcasp3_fsx.pr2_mii0_col */
-	{MCASP3_AXR0, (M11 | PIN_INPUT_PULLUP | SLEWCONTROL)},	/* mcasp3_axr0.pr2_mii1_rxer */
-	{MCASP3_AXR1, (M11 | PIN_INPUT_PULLUP | SLEWCONTROL)},	/* mcasp3_axr1.pr2_mii1_rxlink */
+	{MCASP3_ACLKX, (M11 | PIN_INPUT_PULLUP)},	/* mcasp3_aclkx.pr2_mii0_crs */
+	{MCASP3_FSX, (M11 | PIN_INPUT)},	/* mcasp3_fsx.pr2_mii0_col */
+	{MCASP3_AXR0, (M11 | PIN_INPUT_PULLUP)},	/* mcasp3_axr0.pr2_mii1_rxer */
+	{MCASP3_AXR1, (M11 | PIN_INPUT)},	/* mcasp3_axr1.pr2_mii1_rxlink */
 	{MCASP4_ACLKX, (M2 | PIN_INPUT_PULLDOWN)},	/* mcasp4_aclkx.spi3_sclk */
 	{MCASP4_FSX, (M2 | PIN_INPUT_PULLDOWN)},	/* mcasp4_fsx.spi3_d1 */
 	{MCASP4_AXR0, (M15 | PIN_INPUT_PULLDOWN)},	/* mcasp4_axr0.Driveroff */
@@ -642,18 +642,18 @@ const struct pad_conf_entry core_padconf_array_essential_am571x_idk[] = {
 	{MMC1_DAT3, (M0 | PIN_INPUT_PULLUP)},	/* mmc1_dat3.mmc1_dat3 */
 	{MMC1_SDCD, (M14 | PIN_INPUT_PULLUP)},	/* mmc1_sdcd.gpio6_27 */
 	{MMC1_SDWP, (M0 | PIN_OUTPUT)},	/* mmc1_sdwp.mmc1_sdwp */
-	{GPIO6_10, (M11 | PIN_INPUT_PULLUP)},	/* gpio6_10.pr2_mii_mt1_clk */
-	{GPIO6_11, (M11 | PIN_INPUT_PULLUP)},	/* gpio6_11.pr2_mii1_txen */
-	{MMC3_CLK, (M11 | PIN_INPUT_PULLUP)},	/* mmc3_clk.pr2_mii1_txd3 */
-	{MMC3_CMD, (M11 | PIN_INPUT_PULLUP)},	/* mmc3_cmd.pr2_mii1_txd2 */
-	{MMC3_DAT0, (M11 | PIN_INPUT_PULLUP)},	/* mmc3_dat0.pr2_mii1_txd1 */
-	{MMC3_DAT1, (M11 | PIN_INPUT_PULLUP)},	/* mmc3_dat1.pr2_mii1_txd0 */
-	{MMC3_DAT2, (M11 | PIN_INPUT_PULLUP)},	/* mmc3_dat2.pr2_mii_mr1_clk */
+	{GPIO6_10, (M11 | PIN_INPUT_PULLDOWN)},	/* gpio6_10.pr2_mii_mt1_clk */
+	{GPIO6_11, (M11 | PIN_OUTPUT)},	/* gpio6_11.pr2_mii1_txen */
+	{MMC3_CLK, (M11 | PIN_OUTPUT)},	/* mmc3_clk.pr2_mii1_txd3 */
+	{MMC3_CMD, (M11 | PIN_OUTPUT)},	/* mmc3_cmd.pr2_mii1_txd2 */
+	{MMC3_DAT0, (M11 | PIN_OUTPUT)},	/* mmc3_dat0.pr2_mii1_txd1 */
+	{MMC3_DAT1, (M11 | PIN_OUTPUT)},	/* mmc3_dat1.pr2_mii1_txd0 */
+	{MMC3_DAT2, (M11 | PIN_INPUT_PULLDOWN)},	/* mmc3_dat2.pr2_mii_mr1_clk */
 	{MMC3_DAT3, (M11 | PIN_INPUT_PULLDOWN)},	/* mmc3_dat3.pr2_mii1_rxdv */
-	{MMC3_DAT4, (M11 | PIN_INPUT_PULLDOWN)},	/* mmc3_dat4.pr2_mii1_rxd3 */
-	{MMC3_DAT5, (M11 | PIN_INPUT_PULLDOWN)},	/* mmc3_dat5.pr2_mii1_rxd2 */
-	{MMC3_DAT6, (M11 | PIN_INPUT_PULLDOWN)},	/* mmc3_dat6.pr2_mii1_rxd1 */
-	{MMC3_DAT7, (M11 | PIN_INPUT_PULLDOWN)},	/* mmc3_dat7.pr2_mii1_rxd0 */
+	{MMC3_DAT4, (M11 | PIN_INPUT)},	/* mmc3_dat4.pr2_mii1_rxd3 */
+	{MMC3_DAT5, (M11 | PIN_INPUT)},	/* mmc3_dat5.pr2_mii1_rxd2 */
+	{MMC3_DAT6, (M11 | PIN_INPUT)},	/* mmc3_dat6.pr2_mii1_rxd1 */
+	{MMC3_DAT7, (M11 | PIN_INPUT)},	/* mmc3_dat7.pr2_mii1_rxd0 */
 	{SPI1_SCLK, (M14 | PIN_INPUT_PULLDOWN)},	/* spi1_sclk.gpio7_7 */
 	{SPI1_D1, (M14 | PIN_INPUT_PULLDOWN)},	/* spi1_d1.gpio7_8 */
 	{SPI1_D0, (M14 | PIN_INPUT_PULLDOWN)},	/* spi1_d0.gpio7_9 */
-- 
2.7.4

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

* [U-Boot] [u-boot PATCH v3 5/8] board: ti: am57xx-idk: Auto detect LCD Panel
  2017-02-06  9:36 [U-Boot] [u-boot PATCH v3 0/8] am57xx-idk LCD and am571x-idk 6 port ethernet pinmux Roger Quadros
                   ` (3 preceding siblings ...)
  2017-02-06  9:36 ` [U-Boot] [u-boot PATCH v3 4/8] board: ti: am571x-idk: Update pinmux for ICSS2 Ethernet Roger Quadros
@ 2017-02-06  9:36 ` Roger Quadros
  2017-02-06  9:36 ` [U-Boot] [u-boot PATCH v3 6/8] ARM: Use Kconfig for board EEPROM's I2C bus and chip address Roger Quadros
                   ` (2 subsequent siblings)
  7 siblings, 0 replies; 24+ messages in thread
From: Roger Quadros @ 2017-02-06  9:36 UTC (permalink / raw)
  To: u-boot

From: Nishanth Menon <nm@ti.com>

AM571x IDK and AM572x IDK have optional LCD Kits that can be purchased.
These can be one of OSD101T2045 or the newer OSD101T2587. The LCD panel
itself has no registers that can be used to identify the panel, however,
the touchscreen controllers on the panels are different.

Hence to ease user experience, we can use the touch screen controller's
ID information to detect what kind of panel we use and select the
appropriate kernel dtb for the platform configuration.

NOTE: AM572x IDK default configuration is for LCD Connectivity, however
the AM571x IDK has a jumper (J51) that needs to be mounted for the IDK
to operate with LCD (Vs two PRUSS ethernet port option).

Touchscreen ID information is documented in:
http://www.osddisplays.com/TI/OSD101T2587-53TS_A.1.pdf

Acked-by: Lokesh Vutla <lokeshvutla@ti.com>
Signed-off-by: Nishanth Menon <nm@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Signed-off-by: Roger Quadros <rogerq@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
---
 board/ti/am57xx/board.c | 78 ++++++++++++++++++++++++++++++++++++++++++++-----
 1 file changed, 70 insertions(+), 8 deletions(-)

diff --git a/board/ti/am57xx/board.c b/board/ti/am57xx/board.c
index 81ad86c..9ec0448 100644
--- a/board/ti/am57xx/board.c
+++ b/board/ti/am57xx/board.c
@@ -54,6 +54,19 @@ DECLARE_GLOBAL_DATA_PTR;
 /* GPIO 7_11 */
 #define GPIO_DDR_VTT_EN 203
 
+/* Touch screen controller to identify the LCD */
+#define OSD_TS_FT_BUS_ADDRESS	0
+#define OSD_TS_FT_CHIP_ADDRESS	0x38
+#define OSD_TS_FT_REG_ID	0xA3
+/*
+ * Touchscreen IDs for various OSD panels
+ * Ref: http://www.osddisplays.com/TI/OSD101T2587-53TS_A.1.pdf
+ */
+/* Used on newer osd101t2587 Panels */
+#define OSD_TS_FT_ID_5x46	0x54
+/* Used on older osd101t2045 Panels */
+#define OSD_TS_FT_ID_5606	0x08
+
 #define SYSINFO_BOARD_NAME_MAX_LEN	45
 
 #define TPS65903X_PRIMARY_SECONDARY_PAD2	0xFB
@@ -473,10 +486,64 @@ int board_init(void)
 	return 0;
 }
 
-int board_late_init(void)
+void am57x_idk_lcd_detect(void)
 {
-	char *idk_lcd;
+	int r = -ENODEV;
+	char *idk_lcd = "no";
+	uint8_t buf = 0;
+
+	/* Only valid for IDKs */
+	if (board_is_x15() || board_is_am572x_evm())
+		return;
+
+	/* Only AM571x IDK has gpio control detect.. so check that */
+	if (board_is_am571x_idk() && !am571x_idk_needs_lcd())
+		goto out;
+
+	r = i2c_set_bus_num(OSD_TS_FT_BUS_ADDRESS);
+	if (r) {
+		printf("%s: Failed to set bus address to %d: %d\n",
+		       __func__, OSD_TS_FT_BUS_ADDRESS, r);
+		goto out;
+	}
+	r = i2c_probe(OSD_TS_FT_CHIP_ADDRESS);
+	if (r) {
+		/* AM572x IDK has no explicit settings for optional LCD kit */
+		if (board_is_am571x_idk()) {
+			printf("%s: Touch screen detect failed: %d!\n",
+			       __func__, r);
+		}
+		goto out;
+	}
+
+	/* Read FT ID */
+	r = i2c_read(OSD_TS_FT_CHIP_ADDRESS, OSD_TS_FT_REG_ID, 1, &buf, 1);
+	if (r) {
+		printf("%s: Touch screen ID read %d:0x%02x[0x%02x] failed:%d\n",
+		       __func__, OSD_TS_FT_BUS_ADDRESS, OSD_TS_FT_CHIP_ADDRESS,
+		       OSD_TS_FT_REG_ID, r);
+		goto out;
+	}
+
+	switch (buf) {
+	case OSD_TS_FT_ID_5606:
+		idk_lcd = "osd101t2045";
+		break;
+	case OSD_TS_FT_ID_5x46:
+		idk_lcd = "osd101t2587";
+		break;
+	default:
+		printf("%s: Unidentifed Touch screen ID 0x%02x\n",
+		       __func__, buf);
+		/* we will let default be "no lcd" */
+	}
+out:
+	setenv("idk_lcd", idk_lcd);
+	return;
+}
 
+int board_late_init(void)
+{
 	setup_board_eeprom_env();
 	u8 val;
 
@@ -505,12 +572,7 @@ int board_late_init(void)
 	palmas_i2c_write_u8(TPS65903X_CHIP_P1, TPS65903X_PRIMARY_SECONDARY_PAD2,
 			    val);
 
-	/* TBD: Add LCD panel detection once information is available */
-	if (am571x_idk_needs_lcd())
-		idk_lcd = "osd101t2045"; /* Default to legacy LCD */
-	else
-		idk_lcd = "no";
-	setenv("idk_lcd", idk_lcd);
+	am57x_idk_lcd_detect();
 
 #if !defined(CONFIG_SPL_BUILD)
 	board_ti_set_ethaddr(2);
-- 
2.7.4

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

* [U-Boot] [u-boot PATCH v3 6/8] ARM: Use Kconfig for board EEPROM's I2C bus and chip address
  2017-02-06  9:36 [U-Boot] [u-boot PATCH v3 0/8] am57xx-idk LCD and am571x-idk 6 port ethernet pinmux Roger Quadros
                   ` (4 preceding siblings ...)
  2017-02-06  9:36 ` [U-Boot] [u-boot PATCH v3 5/8] board: ti: am57xx-idk: Auto detect LCD Panel Roger Quadros
@ 2017-02-06  9:36 ` Roger Quadros
  2017-02-07  0:45   ` Tom Rini
  2017-02-07  3:13   ` Lokesh Vutla
  2017-02-06  9:36 ` [U-Boot] [u-boot PATCH v3 7/8] ARM: k2g: setup PRU ethernet MAC addresses Roger Quadros
  2017-02-06  9:36 ` [U-Boot] [u-boot PATCH v3 8/8] ti: common: board_detect: Rename EEPROM scratch start macro Roger Quadros
  7 siblings, 2 replies; 24+ messages in thread
From: Roger Quadros @ 2017-02-06  9:36 UTC (permalink / raw)
  To: u-boot

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>
---
 board/ti/common/Kconfig      | 14 ++++++++++++++
 board/ti/ks2_evm/Kconfig     |  2 ++
 include/configs/am57xx_evm.h |  4 ----
 include/configs/dra7xx_evm.h |  4 ----
 4 files changed, 16 insertions(+), 8 deletions(-)

diff --git a/board/ti/common/Kconfig b/board/ti/common/Kconfig
index 4980a04..5003484 100644
--- a/board/ti/common/Kconfig
+++ b/board/ti/common/Kconfig
@@ -1,3 +1,5 @@
+if ARCH_OMAP2
+
 config SPL_ENV_SUPPORT
 	default y
 
@@ -39,3 +41,15 @@ config SPL_POWER_SUPPORT
 
 config SPL_SERIAL_SUPPORT
 	default y
+
+endif
+
+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
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 840502c..d9e1119 100644
--- a/include/configs/am57xx_evm.h
+++ b/include/configs/am57xx_evm.h
@@ -105,10 +105,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 da458a4..46beb8b 100644
--- a/include/configs/dra7xx_evm.h
+++ b/include/configs/dra7xx_evm.h
@@ -264,8 +264,4 @@
 #endif
 #endif  /* NOR support */
 
-/* EEPROM */
-#define CONFIG_EEPROM_CHIP_ADDRESS 0x50
-#define CONFIG_EEPROM_BUS_ADDRESS 0
-
 #endif /* __CONFIG_DRA7XX_EVM_H */
-- 
2.7.4

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

* [U-Boot] [u-boot PATCH v3 7/8] ARM: k2g: setup PRU ethernet MAC addresses
  2017-02-06  9:36 [U-Boot] [u-boot PATCH v3 0/8] am57xx-idk LCD and am571x-idk 6 port ethernet pinmux Roger Quadros
                   ` (5 preceding siblings ...)
  2017-02-06  9:36 ` [U-Boot] [u-boot PATCH v3 6/8] ARM: Use Kconfig for board EEPROM's I2C bus and chip address Roger Quadros
@ 2017-02-06  9:36 ` Roger Quadros
  2017-02-07  0:45   ` Tom Rini
                     ` (2 more replies)
  2017-02-06  9:36 ` [U-Boot] [u-boot PATCH v3 8/8] ti: common: board_detect: Rename EEPROM scratch start macro Roger Quadros
  7 siblings, 3 replies; 24+ messages in thread
From: Roger Quadros @ 2017-02-06  9:36 UTC (permalink / raw)
  To: u-boot

PRU ethernet MAC address range is present in the
board EEPROM. Parse it and setup eth?addr
environment variables.

Signed-off-by: Roger Quadros <rogerq@ti.com>
Reviewed-by: Lokesh Vutla <lokeshvutla@ti.com>
---
 board/ti/ks2_evm/board_k2g.c | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/board/ti/ks2_evm/board_k2g.c b/board/ti/ks2_evm/board_k2g.c
index 40edbaa..a738dd2 100644
--- a/board/ti/ks2_evm/board_k2g.c
+++ b/board/ti/ks2_evm/board_k2g.c
@@ -12,6 +12,7 @@
 #include <asm/arch/psc_defs.h>
 #include <asm/arch/mmc_host_def.h>
 #include "mux-k2g.h"
+#include "../common/board_detect.h"
 
 #define SYS_CLK		24000000
 
@@ -149,6 +150,24 @@ int board_early_init_f(void)
 }
 #endif
 
+#ifdef CONFIG_BOARD_LATE_INIT
+int board_late_init(void)
+{
+#if !defined(CONFIG_SPL_BUILD) && defined(CONFIG_TI_I2C_BOARD_DETECT)
+	int rc;
+
+	rc = ti_i2c_eeprom_am_get(CONFIG_EEPROM_BUS_ADDRESS,
+			CONFIG_EEPROM_CHIP_ADDRESS);
+	if (rc)
+		printf("ti_i2c_eeprom_init failed %d\n", rc);
+
+	board_ti_set_ethaddr(1);
+#endif
+
+	return 0;
+}
+#endif
+
 #ifdef CONFIG_SPL_BUILD
 void spl_init_keystone_plls(void)
 {
-- 
2.7.4

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

* [U-Boot] [u-boot PATCH v3 8/8] ti: common: board_detect: Rename EEPROM scratch start macro
  2017-02-06  9:36 [U-Boot] [u-boot PATCH v3 0/8] am57xx-idk LCD and am571x-idk 6 port ethernet pinmux Roger Quadros
                   ` (6 preceding siblings ...)
  2017-02-06  9:36 ` [U-Boot] [u-boot PATCH v3 7/8] ARM: k2g: setup PRU ethernet MAC addresses Roger Quadros
@ 2017-02-06  9:36 ` Roger Quadros
  7 siblings, 0 replies; 24+ messages in thread
From: Roger Quadros @ 2017-02-06  9:36 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 4bcb64f..88b0a59 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.7.4

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

* [U-Boot] [u-boot PATCH v3 6/8] ARM: Use Kconfig for board EEPROM's I2C bus and chip address
  2017-02-06  9:36 ` [U-Boot] [u-boot PATCH v3 6/8] ARM: Use Kconfig for board EEPROM's I2C bus and chip address Roger Quadros
@ 2017-02-07  0:45   ` Tom Rini
  2017-02-07  3:13   ` Lokesh Vutla
  1 sibling, 0 replies; 24+ messages in thread
From: Tom Rini @ 2017-02-07  0:45 UTC (permalink / raw)
  To: u-boot

On Mon, Feb 06, 2017 at 11:36:13AM +0200, Roger Quadros wrote:

> 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>
> ---
>  board/ti/common/Kconfig      | 14 ++++++++++++++
>  board/ti/ks2_evm/Kconfig     |  2 ++
>  include/configs/am57xx_evm.h |  4 ----
>  include/configs/dra7xx_evm.h |  4 ----
>  4 files changed, 16 insertions(+), 8 deletions(-)
> 
> diff --git a/board/ti/common/Kconfig b/board/ti/common/Kconfig
> index 4980a04..5003484 100644
> --- a/board/ti/common/Kconfig
> +++ b/board/ti/common/Kconfig
> @@ -1,3 +1,5 @@
> +if ARCH_OMAP2
> +
>  config SPL_ENV_SUPPORT
>  	default y
>  
> @@ -39,3 +41,15 @@ config SPL_POWER_SUPPORT
>  
>  config SPL_SERIAL_SUPPORT
>  	default y
> +
> +endif

I don't like this part here.  But we'll leave cleaning this part up
until we have the 'imply' keyword available instead of messing around
more with the above constructs that we ultimately want to remove.

The rest is good so, thanks!

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/20170206/f4b91a3b/attachment.sig>

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

* [U-Boot] [u-boot PATCH v3 7/8] ARM: k2g: setup PRU ethernet MAC addresses
  2017-02-06  9:36 ` [U-Boot] [u-boot PATCH v3 7/8] ARM: k2g: setup PRU ethernet MAC addresses Roger Quadros
@ 2017-02-07  0:45   ` Tom Rini
  2017-02-07  3:22   ` Lokesh Vutla
  2017-02-07  7:52   ` Igor Grinberg
  2 siblings, 0 replies; 24+ messages in thread
From: Tom Rini @ 2017-02-07  0:45 UTC (permalink / raw)
  To: u-boot

On Mon, Feb 06, 2017 at 11:36:14AM +0200, Roger Quadros wrote:

> PRU ethernet MAC address range is present in the
> board EEPROM. Parse it and setup eth?addr
> environment variables.
> 
> Signed-off-by: Roger Quadros <rogerq@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/20170206/0150fbaf/attachment.sig>

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

* [U-Boot] [u-boot PATCH v3 6/8] ARM: Use Kconfig for board EEPROM's I2C bus and chip address
  2017-02-06  9:36 ` [U-Boot] [u-boot PATCH v3 6/8] ARM: Use Kconfig for board EEPROM's I2C bus and chip address Roger Quadros
  2017-02-07  0:45   ` Tom Rini
@ 2017-02-07  3:13   ` Lokesh Vutla
  2017-02-08  8:34     ` Roger Quadros
  1 sibling, 1 reply; 24+ messages in thread
From: Lokesh Vutla @ 2017-02-07  3:13 UTC (permalink / raw)
  To: u-boot



On 2/6/2017 3:06 PM, Roger Quadros wrote:
> 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>
> ---
>  board/ti/common/Kconfig      | 14 ++++++++++++++
>  board/ti/ks2_evm/Kconfig     |  2 ++
>  include/configs/am57xx_evm.h |  4 ----
>  include/configs/dra7xx_evm.h |  4 ----
>  4 files changed, 16 insertions(+), 8 deletions(-)
> 
> diff --git a/board/ti/common/Kconfig b/board/ti/common/Kconfig
> index 4980a04..5003484 100644
> --- a/board/ti/common/Kconfig
> +++ b/board/ti/common/Kconfig
> @@ -1,3 +1,5 @@
> +if ARCH_OMAP2
> +
>  config SPL_ENV_SUPPORT
>  	default y

You might want to keep TI_I2C_BOARD_DETECT out of ARCH_OMAP2 or else it
will not be included for K2 platforms.

Thanks and regards,
Lokesh

>  
> @@ -39,3 +41,15 @@ config SPL_POWER_SUPPORT
>  
>  config SPL_SERIAL_SUPPORT
>  	default y
> +
> +endif
> +
> +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
> 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 840502c..d9e1119 100644
> --- a/include/configs/am57xx_evm.h
> +++ b/include/configs/am57xx_evm.h
> @@ -105,10 +105,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 da458a4..46beb8b 100644
> --- a/include/configs/dra7xx_evm.h
> +++ b/include/configs/dra7xx_evm.h
> @@ -264,8 +264,4 @@
>  #endif
>  #endif  /* NOR support */
>  
> -/* EEPROM */
> -#define CONFIG_EEPROM_CHIP_ADDRESS 0x50
> -#define CONFIG_EEPROM_BUS_ADDRESS 0
> -
>  #endif /* __CONFIG_DRA7XX_EVM_H */
> 

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

* [U-Boot] [u-boot PATCH v3 7/8] ARM: k2g: setup PRU ethernet MAC addresses
  2017-02-06  9:36 ` [U-Boot] [u-boot PATCH v3 7/8] ARM: k2g: setup PRU ethernet MAC addresses Roger Quadros
  2017-02-07  0:45   ` Tom Rini
@ 2017-02-07  3:22   ` Lokesh Vutla
  2017-02-08  8:35     ` Roger Quadros
  2017-02-07  7:52   ` Igor Grinberg
  2 siblings, 1 reply; 24+ messages in thread
From: Lokesh Vutla @ 2017-02-07  3:22 UTC (permalink / raw)
  To: u-boot



On 2/6/2017 3:06 PM, Roger Quadros wrote:
> PRU ethernet MAC address range is present in the
> board EEPROM. Parse it and setup eth?addr
> environment variables.
> 
> Signed-off-by: Roger Quadros <rogerq@ti.com>
> Reviewed-by: Lokesh Vutla <lokeshvutla@ti.com>
> ---
>  board/ti/ks2_evm/board_k2g.c | 19 +++++++++++++++++++
>  1 file changed, 19 insertions(+)
> 
> diff --git a/board/ti/ks2_evm/board_k2g.c b/board/ti/ks2_evm/board_k2g.c
> index 40edbaa..a738dd2 100644
> --- a/board/ti/ks2_evm/board_k2g.c
> +++ b/board/ti/ks2_evm/board_k2g.c
> @@ -12,6 +12,7 @@
>  #include <asm/arch/psc_defs.h>
>  #include <asm/arch/mmc_host_def.h>
>  #include "mux-k2g.h"
> +#include "../common/board_detect.h"
>  
>  #define SYS_CLK		24000000
>  
> @@ -149,6 +150,24 @@ int board_early_init_f(void)
>  }
>  #endif
>  
> +#ifdef CONFIG_BOARD_LATE_INIT
> +int board_late_init(void)
> +{
> +#if !defined(CONFIG_SPL_BUILD) && defined(CONFIG_TI_I2C_BOARD_DETECT)

You might want to select CONFIG_TI_I2C_BOARD_DETECT and
CONFIG_BOARD_LATE_INIT for this to take effect. I do not see these
configs enabled or am I missing something?

Thanks and regards,
Lokesh

> +	int rc;
> +
> +	rc = ti_i2c_eeprom_am_get(CONFIG_EEPROM_BUS_ADDRESS,
> +			CONFIG_EEPROM_CHIP_ADDRESS);
> +	if (rc)
> +		printf("ti_i2c_eeprom_init failed %d\n", rc);
> +
> +	board_ti_set_ethaddr(1);
> +#endif
> +
> +	return 0;
> +}
> +#endif
> +
>  #ifdef CONFIG_SPL_BUILD
>  void spl_init_keystone_plls(void)
>  {
> 

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

* [U-Boot] [u-boot PATCH v3 7/8] ARM: k2g: setup PRU ethernet MAC addresses
  2017-02-06  9:36 ` [U-Boot] [u-boot PATCH v3 7/8] ARM: k2g: setup PRU ethernet MAC addresses Roger Quadros
  2017-02-07  0:45   ` Tom Rini
  2017-02-07  3:22   ` Lokesh Vutla
@ 2017-02-07  7:52   ` Igor Grinberg
  2017-02-07 18:28     ` Tom Rini
  2017-02-08  8:51     ` Roger Quadros
  2 siblings, 2 replies; 24+ messages in thread
From: Igor Grinberg @ 2017-02-07  7:52 UTC (permalink / raw)
  To: u-boot

Hi Roger,

On 02/06/17 11:36, Roger Quadros wrote:
> PRU ethernet MAC address range is present in the
> board EEPROM. Parse it and setup eth?addr
> environment variables.
> 
> Signed-off-by: Roger Quadros <rogerq@ti.com>
> Reviewed-by: Lokesh Vutla <lokeshvutla@ti.com>
> ---
>  board/ti/ks2_evm/board_k2g.c | 19 +++++++++++++++++++
>  1 file changed, 19 insertions(+)
> 
> diff --git a/board/ti/ks2_evm/board_k2g.c b/board/ti/ks2_evm/board_k2g.c
> index 40edbaa..a738dd2 100644
> --- a/board/ti/ks2_evm/board_k2g.c
> +++ b/board/ti/ks2_evm/board_k2g.c
> @@ -12,6 +12,7 @@
>  #include <asm/arch/psc_defs.h>
>  #include <asm/arch/mmc_host_def.h>
>  #include "mux-k2g.h"
> +#include "../common/board_detect.h"
>  
>  #define SYS_CLK		24000000
>  
> @@ -149,6 +150,24 @@ int board_early_init_f(void)
>  }
>  #endif
>  
> +#ifdef CONFIG_BOARD_LATE_INIT
> +int board_late_init(void)
> +{
> +#if !defined(CONFIG_SPL_BUILD) && defined(CONFIG_TI_I2C_BOARD_DETECT)
> +	int rc;
> +
> +	rc = ti_i2c_eeprom_am_get(CONFIG_EEPROM_BUS_ADDRESS,
> +			CONFIG_EEPROM_CHIP_ADDRESS);
> +	if (rc)
> +		printf("ti_i2c_eeprom_init failed %d\n", rc);
> +
> +	board_ti_set_ethaddr(1);

What if the MAC address has already been set in the environment?
AFAIR, the MAC address in the environment has a higher precedence
than others.
May be I missed this, but I don't remember any discussion about changing
this assumption.
So, if the assumption is still correct, you shouldn't change the MAC in the env.

> +#endif
> +
> +	return 0;
> +}
> +#endif
> +
>  #ifdef CONFIG_SPL_BUILD
>  void spl_init_keystone_plls(void)
>  {
> 

-- 
Regards,
Igor.

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

* [U-Boot] [u-boot PATCH v3 7/8] ARM: k2g: setup PRU ethernet MAC addresses
  2017-02-07  7:52   ` Igor Grinberg
@ 2017-02-07 18:28     ` Tom Rini
  2017-02-08 11:52       ` Igor Grinberg
  2017-02-08  8:51     ` Roger Quadros
  1 sibling, 1 reply; 24+ messages in thread
From: Tom Rini @ 2017-02-07 18:28 UTC (permalink / raw)
  To: u-boot

On Tue, Feb 07, 2017 at 09:52:25AM +0200, Igor Grinberg wrote:
> Hi Roger,
> 
> On 02/06/17 11:36, Roger Quadros wrote:
> > PRU ethernet MAC address range is present in the
> > board EEPROM. Parse it and setup eth?addr
> > environment variables.
> > 
> > Signed-off-by: Roger Quadros <rogerq@ti.com>
> > Reviewed-by: Lokesh Vutla <lokeshvutla@ti.com>
> > ---
> >  board/ti/ks2_evm/board_k2g.c | 19 +++++++++++++++++++
> >  1 file changed, 19 insertions(+)
> > 
> > diff --git a/board/ti/ks2_evm/board_k2g.c b/board/ti/ks2_evm/board_k2g.c
> > index 40edbaa..a738dd2 100644
> > --- a/board/ti/ks2_evm/board_k2g.c
> > +++ b/board/ti/ks2_evm/board_k2g.c
> > @@ -12,6 +12,7 @@
> >  #include <asm/arch/psc_defs.h>
> >  #include <asm/arch/mmc_host_def.h>
> >  #include "mux-k2g.h"
> > +#include "../common/board_detect.h"
> >  
> >  #define SYS_CLK		24000000
> >  
> > @@ -149,6 +150,24 @@ int board_early_init_f(void)
> >  }
> >  #endif
> >  
> > +#ifdef CONFIG_BOARD_LATE_INIT
> > +int board_late_init(void)
> > +{
> > +#if !defined(CONFIG_SPL_BUILD) && defined(CONFIG_TI_I2C_BOARD_DETECT)
> > +	int rc;
> > +
> > +	rc = ti_i2c_eeprom_am_get(CONFIG_EEPROM_BUS_ADDRESS,
> > +			CONFIG_EEPROM_CHIP_ADDRESS);
> > +	if (rc)
> > +		printf("ti_i2c_eeprom_init failed %d\n", rc);
> > +
> > +	board_ti_set_ethaddr(1);
> 
> What if the MAC address has already been set in the environment?
> AFAIR, the MAC address in the environment has a higher precedence
> than others.
> May be I missed this, but I don't remember any discussion about changing
> this assumption.
> So, if the assumption is still correct, you shouldn't change the MAC in the env.

This is true.  Can we perhaps come up with a helper function that's
normally called to set the "eth?addr" to MAC if unset already, instead
of having N instances of the same logic?

-- 
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/20170207/6b5f377d/attachment.sig>

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

* [U-Boot] [u-boot PATCH v3 6/8] ARM: Use Kconfig for board EEPROM's I2C bus and chip address
  2017-02-07  3:13   ` Lokesh Vutla
@ 2017-02-08  8:34     ` Roger Quadros
  0 siblings, 0 replies; 24+ messages in thread
From: Roger Quadros @ 2017-02-08  8:34 UTC (permalink / raw)
  To: u-boot

On 07/02/17 05:13, Lokesh Vutla wrote:
> 
> 
> On 2/6/2017 3:06 PM, Roger Quadros wrote:
>> 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>
>> ---
>>  board/ti/common/Kconfig      | 14 ++++++++++++++
>>  board/ti/ks2_evm/Kconfig     |  2 ++
>>  include/configs/am57xx_evm.h |  4 ----
>>  include/configs/dra7xx_evm.h |  4 ----
>>  4 files changed, 16 insertions(+), 8 deletions(-)
>>
>> diff --git a/board/ti/common/Kconfig b/board/ti/common/Kconfig
>> index 4980a04..5003484 100644
>> --- a/board/ti/common/Kconfig
>> +++ b/board/ti/common/Kconfig
>> @@ -1,3 +1,5 @@
>> +if ARCH_OMAP2
>> +
>>  config SPL_ENV_SUPPORT
>>  	default y
> 
> You might want to keep TI_I2C_BOARD_DETECT out of ARCH_OMAP2 or else it
> will not be included for K2 platforms.

Good catch. I'll fix this.
I couldn't verify this as k2g-ice board doesn't boot yet.

cheers,
-roger

> 
> Thanks and regards,
> Lokesh
> 
>>  
>> @@ -39,3 +41,15 @@ config SPL_POWER_SUPPORT
>>  
>>  config SPL_SERIAL_SUPPORT
>>  	default y
>> +
>> +endif
>> +
>> +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
>> 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 840502c..d9e1119 100644
>> --- a/include/configs/am57xx_evm.h
>> +++ b/include/configs/am57xx_evm.h
>> @@ -105,10 +105,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 da458a4..46beb8b 100644
>> --- a/include/configs/dra7xx_evm.h
>> +++ b/include/configs/dra7xx_evm.h
>> @@ -264,8 +264,4 @@
>>  #endif
>>  #endif  /* NOR support */
>>  
>> -/* EEPROM */
>> -#define CONFIG_EEPROM_CHIP_ADDRESS 0x50
>> -#define CONFIG_EEPROM_BUS_ADDRESS 0
>> -
>>  #endif /* __CONFIG_DRA7XX_EVM_H */
>>

-- 
cheers,
-roger

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

* [U-Boot] [u-boot PATCH v3 7/8] ARM: k2g: setup PRU ethernet MAC addresses
  2017-02-07  3:22   ` Lokesh Vutla
@ 2017-02-08  8:35     ` Roger Quadros
  0 siblings, 0 replies; 24+ messages in thread
From: Roger Quadros @ 2017-02-08  8:35 UTC (permalink / raw)
  To: u-boot



On 07/02/17 05:22, Lokesh Vutla wrote:
> 
> 
> On 2/6/2017 3:06 PM, Roger Quadros wrote:
>> PRU ethernet MAC address range is present in the
>> board EEPROM. Parse it and setup eth?addr
>> environment variables.
>>
>> Signed-off-by: Roger Quadros <rogerq@ti.com>
>> Reviewed-by: Lokesh Vutla <lokeshvutla@ti.com>
>> ---
>>  board/ti/ks2_evm/board_k2g.c | 19 +++++++++++++++++++
>>  1 file changed, 19 insertions(+)
>>
>> diff --git a/board/ti/ks2_evm/board_k2g.c b/board/ti/ks2_evm/board_k2g.c
>> index 40edbaa..a738dd2 100644
>> --- a/board/ti/ks2_evm/board_k2g.c
>> +++ b/board/ti/ks2_evm/board_k2g.c
>> @@ -12,6 +12,7 @@
>>  #include <asm/arch/psc_defs.h>
>>  #include <asm/arch/mmc_host_def.h>
>>  #include "mux-k2g.h"
>> +#include "../common/board_detect.h"
>>  
>>  #define SYS_CLK		24000000
>>  
>> @@ -149,6 +150,24 @@ int board_early_init_f(void)
>>  }
>>  #endif
>>  
>> +#ifdef CONFIG_BOARD_LATE_INIT
>> +int board_late_init(void)
>> +{
>> +#if !defined(CONFIG_SPL_BUILD) && defined(CONFIG_TI_I2C_BOARD_DETECT)
> 
> You might want to select CONFIG_TI_I2C_BOARD_DETECT and
> CONFIG_BOARD_LATE_INIT for this to take effect. I do not see these
> configs enabled or am I missing something?

I was expecting k2g-ice board to have a new defconfig. But it seems that
we will continue to use k2g_evm_defconfig for that so I'll enable these
options there.

cheers,
-roger

> 
> Thanks and regards,
> Lokesh
> 
>> +	int rc;
>> +
>> +	rc = ti_i2c_eeprom_am_get(CONFIG_EEPROM_BUS_ADDRESS,
>> +			CONFIG_EEPROM_CHIP_ADDRESS);
>> +	if (rc)
>> +		printf("ti_i2c_eeprom_init failed %d\n", rc);
>> +
>> +	board_ti_set_ethaddr(1);
>> +#endif
>> +
>> +	return 0;
>> +}
>> +#endif
>> +
>>  #ifdef CONFIG_SPL_BUILD
>>  void spl_init_keystone_plls(void)
>>  {
>>

-- 
cheers,
-roger

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

* [U-Boot] [u-boot PATCH v3 7/8] ARM: k2g: setup PRU ethernet MAC addresses
  2017-02-07  7:52   ` Igor Grinberg
  2017-02-07 18:28     ` Tom Rini
@ 2017-02-08  8:51     ` Roger Quadros
  2017-02-08 11:51       ` Igor Grinberg
  1 sibling, 1 reply; 24+ messages in thread
From: Roger Quadros @ 2017-02-08  8:51 UTC (permalink / raw)
  To: u-boot

Hi Igor,

On 07/02/17 09:52, Igor Grinberg wrote:
> Hi Roger,
> 
> On 02/06/17 11:36, Roger Quadros wrote:
>> PRU ethernet MAC address range is present in the
>> board EEPROM. Parse it and setup eth?addr
>> environment variables.
>>
>> Signed-off-by: Roger Quadros <rogerq@ti.com>
>> Reviewed-by: Lokesh Vutla <lokeshvutla@ti.com>
>> ---
>>  board/ti/ks2_evm/board_k2g.c | 19 +++++++++++++++++++
>>  1 file changed, 19 insertions(+)
>>
>> diff --git a/board/ti/ks2_evm/board_k2g.c b/board/ti/ks2_evm/board_k2g.c
>> index 40edbaa..a738dd2 100644
>> --- a/board/ti/ks2_evm/board_k2g.c
>> +++ b/board/ti/ks2_evm/board_k2g.c
>> @@ -12,6 +12,7 @@
>>  #include <asm/arch/psc_defs.h>
>>  #include <asm/arch/mmc_host_def.h>
>>  #include "mux-k2g.h"
>> +#include "../common/board_detect.h"
>>  
>>  #define SYS_CLK		24000000
>>  
>> @@ -149,6 +150,24 @@ int board_early_init_f(void)
>>  }
>>  #endif
>>  
>> +#ifdef CONFIG_BOARD_LATE_INIT
>> +int board_late_init(void)
>> +{
>> +#if !defined(CONFIG_SPL_BUILD) && defined(CONFIG_TI_I2C_BOARD_DETECT)
>> +	int rc;
>> +
>> +	rc = ti_i2c_eeprom_am_get(CONFIG_EEPROM_BUS_ADDRESS,
>> +			CONFIG_EEPROM_CHIP_ADDRESS);
>> +	if (rc)
>> +		printf("ti_i2c_eeprom_init failed %d\n", rc);
>> +
>> +	board_ti_set_ethaddr(1);
> 
> What if the MAC address has already been set in the environment?

by whom?
At least as of now nobody is setting ethadddr1 on the k2g-ice board.

> AFAIR, the MAC address in the environment has a higher precedence
> than others.
> May be I missed this, but I don't remember any discussion about changing
> this assumption.
> So, if the assumption is still correct, you shouldn't change the MAC in the env.

I agree with you. I saw Olliver's "Retrieve MAC address from EEPROM" series.
However, that may not apply to TI boards yet because:
-the SoC's ethernet devices MAC addresses are stored in the SoC registers.
-the PRU ethernet MAC addresses which this patch is setting are stored in
EEPROM but they are not used at u-boot at all.

I'm open to ideas if we can do what we're doing in a better way.
> 
>> +#endif
>> +
>> +	return 0;
>> +}
>> +#endif
>> +
>>  #ifdef CONFIG_SPL_BUILD
>>  void spl_init_keystone_plls(void)
>>  {
>>
> 

-- 
cheers,
-roger

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

* [U-Boot] [u-boot PATCH v3 7/8] ARM: k2g: setup PRU ethernet MAC addresses
  2017-02-08  8:51     ` Roger Quadros
@ 2017-02-08 11:51       ` Igor Grinberg
  2017-02-08 12:04         ` Roger Quadros
  0 siblings, 1 reply; 24+ messages in thread
From: Igor Grinberg @ 2017-02-08 11:51 UTC (permalink / raw)
  To: u-boot

Hi Roger,

On 02/08/17 10:51, Roger Quadros wrote:
> Hi Igor,
> 
> On 07/02/17 09:52, Igor Grinberg wrote:
>> Hi Roger,
>>
>> On 02/06/17 11:36, Roger Quadros wrote:
>>> PRU ethernet MAC address range is present in the
>>> board EEPROM. Parse it and setup eth?addr
>>> environment variables.
>>>
>>> Signed-off-by: Roger Quadros <rogerq@ti.com>
>>> Reviewed-by: Lokesh Vutla <lokeshvutla@ti.com>
>>> ---
>>>  board/ti/ks2_evm/board_k2g.c | 19 +++++++++++++++++++
>>>  1 file changed, 19 insertions(+)
>>>
>>> diff --git a/board/ti/ks2_evm/board_k2g.c b/board/ti/ks2_evm/board_k2g.c
>>> index 40edbaa..a738dd2 100644
>>> --- a/board/ti/ks2_evm/board_k2g.c
>>> +++ b/board/ti/ks2_evm/board_k2g.c
>>> @@ -12,6 +12,7 @@
>>>  #include <asm/arch/psc_defs.h>
>>>  #include <asm/arch/mmc_host_def.h>
>>>  #include "mux-k2g.h"
>>> +#include "../common/board_detect.h"
>>>  
>>>  #define SYS_CLK		24000000
>>>  
>>> @@ -149,6 +150,24 @@ int board_early_init_f(void)
>>>  }
>>>  #endif
>>>  
>>> +#ifdef CONFIG_BOARD_LATE_INIT
>>> +int board_late_init(void)
>>> +{
>>> +#if !defined(CONFIG_SPL_BUILD) && defined(CONFIG_TI_I2C_BOARD_DETECT)
>>> +	int rc;
>>> +
>>> +	rc = ti_i2c_eeprom_am_get(CONFIG_EEPROM_BUS_ADDRESS,
>>> +			CONFIG_EEPROM_CHIP_ADDRESS);
>>> +	if (rc)
>>> +		printf("ti_i2c_eeprom_init failed %d\n", rc);
>>> +
>>> +	board_ti_set_ethaddr(1);
>>
>> What if the MAC address has already been set in the environment?
> 
> by whom?
> At least as of now nobody is setting ethadddr1 on the k2g-ice board.

Well, for example by user... and it is eth1addr.

> 
>> AFAIR, the MAC address in the environment has a higher precedence
>> than others.
>> May be I missed this, but I don't remember any discussion about changing
>> this assumption.
>> So, if the assumption is still correct, you shouldn't change the MAC in the env.
> 
> I agree with you. I saw Olliver's "Retrieve MAC address from EEPROM" series.
> However, that may not apply to TI boards yet because:
> -the SoC's ethernet devices MAC addresses are stored in the SoC registers.
> -the PRU ethernet MAC addresses which this patch is setting are stored in
> EEPROM but they are not used at u-boot at all.
> 
> I'm open to ideas if we can do what we're doing in a better way.

I think Tom's idea of a common function or may be a change to
eth_setenv_enetaddr_*() functions that will handle the precedence
is very sensible for such cases. 

>>
>>> +#endif
>>> +
>>> +	return 0;
>>> +}
>>> +#endif
>>> +
>>>  #ifdef CONFIG_SPL_BUILD
>>>  void spl_init_keystone_plls(void)
>>>  {
>>>
>>
> 

-- 
Regards,
Igor.

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

* [U-Boot] [u-boot PATCH v3 7/8] ARM: k2g: setup PRU ethernet MAC addresses
  2017-02-07 18:28     ` Tom Rini
@ 2017-02-08 11:52       ` Igor Grinberg
  0 siblings, 0 replies; 24+ messages in thread
From: Igor Grinberg @ 2017-02-08 11:52 UTC (permalink / raw)
  To: u-boot

Hi Tom,

On 02/07/17 20:28, Tom Rini wrote:
> On Tue, Feb 07, 2017 at 09:52:25AM +0200, Igor Grinberg wrote:
>> Hi Roger,
>>
>> On 02/06/17 11:36, Roger Quadros wrote:
>>> PRU ethernet MAC address range is present in the
>>> board EEPROM. Parse it and setup eth?addr
>>> environment variables.
>>>
>>> Signed-off-by: Roger Quadros <rogerq@ti.com>
>>> Reviewed-by: Lokesh Vutla <lokeshvutla@ti.com>
>>> ---
>>>  board/ti/ks2_evm/board_k2g.c | 19 +++++++++++++++++++
>>>  1 file changed, 19 insertions(+)
>>>
>>> diff --git a/board/ti/ks2_evm/board_k2g.c b/board/ti/ks2_evm/board_k2g.c
>>> index 40edbaa..a738dd2 100644
>>> --- a/board/ti/ks2_evm/board_k2g.c
>>> +++ b/board/ti/ks2_evm/board_k2g.c
>>> @@ -12,6 +12,7 @@
>>>  #include <asm/arch/psc_defs.h>
>>>  #include <asm/arch/mmc_host_def.h>
>>>  #include "mux-k2g.h"
>>> +#include "../common/board_detect.h"
>>>  
>>>  #define SYS_CLK		24000000
>>>  
>>> @@ -149,6 +150,24 @@ int board_early_init_f(void)
>>>  }
>>>  #endif
>>>  
>>> +#ifdef CONFIG_BOARD_LATE_INIT
>>> +int board_late_init(void)
>>> +{
>>> +#if !defined(CONFIG_SPL_BUILD) && defined(CONFIG_TI_I2C_BOARD_DETECT)
>>> +	int rc;
>>> +
>>> +	rc = ti_i2c_eeprom_am_get(CONFIG_EEPROM_BUS_ADDRESS,
>>> +			CONFIG_EEPROM_CHIP_ADDRESS);
>>> +	if (rc)
>>> +		printf("ti_i2c_eeprom_init failed %d\n", rc);
>>> +
>>> +	board_ti_set_ethaddr(1);
>>
>> What if the MAC address has already been set in the environment?
>> AFAIR, the MAC address in the environment has a higher precedence
>> than others.
>> May be I missed this, but I don't remember any discussion about changing
>> this assumption.
>> So, if the assumption is still correct, you shouldn't change the MAC in the env.
> 
> This is true.  Can we perhaps come up with a helper function that's
> normally called to set the "eth?addr" to MAC if unset already, instead
> of having N instances of the same logic?

That sounds like a good plan.

-- 
Regards,
Igor.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 837 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20170208/6fd3e8d3/attachment.sig>

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

* [U-Boot] [u-boot PATCH v3 7/8] ARM: k2g: setup PRU ethernet MAC addresses
  2017-02-08 11:51       ` Igor Grinberg
@ 2017-02-08 12:04         ` Roger Quadros
  2017-02-08 12:18           ` Tom Rini
  0 siblings, 1 reply; 24+ messages in thread
From: Roger Quadros @ 2017-02-08 12:04 UTC (permalink / raw)
  To: u-boot

Hi,

On 08/02/17 13:51, Igor Grinberg wrote:
> Hi Roger,
> 
> On 02/08/17 10:51, Roger Quadros wrote:
>> Hi Igor,
>>
>> On 07/02/17 09:52, Igor Grinberg wrote:
>>> Hi Roger,
>>>
>>> On 02/06/17 11:36, Roger Quadros wrote:
>>>> PRU ethernet MAC address range is present in the
>>>> board EEPROM. Parse it and setup eth?addr
>>>> environment variables.
>>>>
>>>> Signed-off-by: Roger Quadros <rogerq@ti.com>
>>>> Reviewed-by: Lokesh Vutla <lokeshvutla@ti.com>
>>>> ---
>>>>  board/ti/ks2_evm/board_k2g.c | 19 +++++++++++++++++++
>>>>  1 file changed, 19 insertions(+)
>>>>
>>>> diff --git a/board/ti/ks2_evm/board_k2g.c b/board/ti/ks2_evm/board_k2g.c
>>>> index 40edbaa..a738dd2 100644
>>>> --- a/board/ti/ks2_evm/board_k2g.c
>>>> +++ b/board/ti/ks2_evm/board_k2g.c
>>>> @@ -12,6 +12,7 @@
>>>>  #include <asm/arch/psc_defs.h>
>>>>  #include <asm/arch/mmc_host_def.h>
>>>>  #include "mux-k2g.h"
>>>> +#include "../common/board_detect.h"
>>>>  
>>>>  #define SYS_CLK		24000000
>>>>  
>>>> @@ -149,6 +150,24 @@ int board_early_init_f(void)
>>>>  }
>>>>  #endif
>>>>  
>>>> +#ifdef CONFIG_BOARD_LATE_INIT
>>>> +int board_late_init(void)
>>>> +{
>>>> +#if !defined(CONFIG_SPL_BUILD) && defined(CONFIG_TI_I2C_BOARD_DETECT)
>>>> +	int rc;
>>>> +
>>>> +	rc = ti_i2c_eeprom_am_get(CONFIG_EEPROM_BUS_ADDRESS,
>>>> +			CONFIG_EEPROM_CHIP_ADDRESS);
>>>> +	if (rc)
>>>> +		printf("ti_i2c_eeprom_init failed %d\n", rc);
>>>> +
>>>> +	board_ti_set_ethaddr(1);
>>>
>>> What if the MAC address has already been set in the environment?
>>
>> by whom?
>> At least as of now nobody is setting ethadddr1 on the k2g-ice board.
> 
> Well, for example by user... and it is eth1addr.

OK, I understand now.
> 
>>
>>> AFAIR, the MAC address in the environment has a higher precedence
>>> than others.
>>> May be I missed this, but I don't remember any discussion about changing
>>> this assumption.
>>> So, if the assumption is still correct, you shouldn't change the MAC in the env.
>>
>> I agree with you. I saw Olliver's "Retrieve MAC address from EEPROM" series.
>> However, that may not apply to TI boards yet because:
>> -the SoC's ethernet devices MAC addresses are stored in the SoC registers.
>> -the PRU ethernet MAC addresses which this patch is setting are stored in
>> EEPROM but they are not used at u-boot at all.
>>
>> I'm open to ideas if we can do what we're doing in a better way.
> 
> I think Tom's idea of a common function or may be a change to
> eth_setenv_enetaddr_*() functions that will handle the precedence
> is very sensible for such cases. 

Yes, this looks fine to me. Maybe there should be 2 functions? One which overrides
and one which doesn't?

> 
>>>
>>>> +#endif
>>>> +
>>>> +	return 0;
>>>> +}
>>>> +#endif
>>>> +
>>>>  #ifdef CONFIG_SPL_BUILD
>>>>  void spl_init_keystone_plls(void)
>>>>  {
>>>>
>>>
>>
> 

-- 
cheers,
-roger

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

* [U-Boot] [u-boot PATCH v3 7/8] ARM: k2g: setup PRU ethernet MAC addresses
  2017-02-08 12:04         ` Roger Quadros
@ 2017-02-08 12:18           ` Tom Rini
  2017-02-08 12:46             ` Roger Quadros
  0 siblings, 1 reply; 24+ messages in thread
From: Tom Rini @ 2017-02-08 12:18 UTC (permalink / raw)
  To: u-boot

On Wed, Feb 08, 2017 at 02:04:15PM +0200, Roger Quadros wrote:
> Hi,
> 
> On 08/02/17 13:51, Igor Grinberg wrote:
> > Hi Roger,
> > 
> > On 02/08/17 10:51, Roger Quadros wrote:
> >> Hi Igor,
> >>
> >> On 07/02/17 09:52, Igor Grinberg wrote:
> >>> Hi Roger,
> >>>
> >>> On 02/06/17 11:36, Roger Quadros wrote:
> >>>> PRU ethernet MAC address range is present in the
> >>>> board EEPROM. Parse it and setup eth?addr
> >>>> environment variables.
> >>>>
> >>>> Signed-off-by: Roger Quadros <rogerq@ti.com>
> >>>> Reviewed-by: Lokesh Vutla <lokeshvutla@ti.com>
> >>>> ---
> >>>>  board/ti/ks2_evm/board_k2g.c | 19 +++++++++++++++++++
> >>>>  1 file changed, 19 insertions(+)
> >>>>
> >>>> diff --git a/board/ti/ks2_evm/board_k2g.c b/board/ti/ks2_evm/board_k2g.c
> >>>> index 40edbaa..a738dd2 100644
> >>>> --- a/board/ti/ks2_evm/board_k2g.c
> >>>> +++ b/board/ti/ks2_evm/board_k2g.c
> >>>> @@ -12,6 +12,7 @@
> >>>>  #include <asm/arch/psc_defs.h>
> >>>>  #include <asm/arch/mmc_host_def.h>
> >>>>  #include "mux-k2g.h"
> >>>> +#include "../common/board_detect.h"
> >>>>  
> >>>>  #define SYS_CLK		24000000
> >>>>  
> >>>> @@ -149,6 +150,24 @@ int board_early_init_f(void)
> >>>>  }
> >>>>  #endif
> >>>>  
> >>>> +#ifdef CONFIG_BOARD_LATE_INIT
> >>>> +int board_late_init(void)
> >>>> +{
> >>>> +#if !defined(CONFIG_SPL_BUILD) && defined(CONFIG_TI_I2C_BOARD_DETECT)
> >>>> +	int rc;
> >>>> +
> >>>> +	rc = ti_i2c_eeprom_am_get(CONFIG_EEPROM_BUS_ADDRESS,
> >>>> +			CONFIG_EEPROM_CHIP_ADDRESS);
> >>>> +	if (rc)
> >>>> +		printf("ti_i2c_eeprom_init failed %d\n", rc);
> >>>> +
> >>>> +	board_ti_set_ethaddr(1);
> >>>
> >>> What if the MAC address has already been set in the environment?
> >>
> >> by whom?
> >> At least as of now nobody is setting ethadddr1 on the k2g-ice board.
> > 
> > Well, for example by user... and it is eth1addr.
> 
> OK, I understand now.
> > 
> >>
> >>> AFAIR, the MAC address in the environment has a higher precedence
> >>> than others.
> >>> May be I missed this, but I don't remember any discussion about changing
> >>> this assumption.
> >>> So, if the assumption is still correct, you shouldn't change the MAC in the env.
> >>
> >> I agree with you. I saw Olliver's "Retrieve MAC address from EEPROM" series.
> >> However, that may not apply to TI boards yet because:
> >> -the SoC's ethernet devices MAC addresses are stored in the SoC registers.
> >> -the PRU ethernet MAC addresses which this patch is setting are stored in
> >> EEPROM but they are not used at u-boot at all.
> >>
> >> I'm open to ideas if we can do what we're doing in a better way.
> > 
> > I think Tom's idea of a common function or may be a change to
> > eth_setenv_enetaddr_*() functions that will handle the precedence
> > is very sensible for such cases. 
> 
> Yes, this looks fine to me. Maybe there should be 2 functions? One which overrides
> and one which doesn't?

What's the usecase for the overrides one?  If the user wants to go back
to the stored ones, env default -f -a ; saveenv ; reset will do 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/20170208/7b355e8d/attachment.sig>

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

* [U-Boot] [u-boot PATCH v3 7/8] ARM: k2g: setup PRU ethernet MAC addresses
  2017-02-08 12:18           ` Tom Rini
@ 2017-02-08 12:46             ` Roger Quadros
  2017-02-08 12:50               ` Tom Rini
  0 siblings, 1 reply; 24+ messages in thread
From: Roger Quadros @ 2017-02-08 12:46 UTC (permalink / raw)
  To: u-boot

On 08/02/17 14:18, Tom Rini wrote:
> On Wed, Feb 08, 2017 at 02:04:15PM +0200, Roger Quadros wrote:
>> Hi,
>>
>> On 08/02/17 13:51, Igor Grinberg wrote:
>>> Hi Roger,
>>>
>>> On 02/08/17 10:51, Roger Quadros wrote:
>>>> Hi Igor,
>>>>
>>>> On 07/02/17 09:52, Igor Grinberg wrote:
>>>>> Hi Roger,
>>>>>
>>>>> On 02/06/17 11:36, Roger Quadros wrote:
>>>>>> PRU ethernet MAC address range is present in the
>>>>>> board EEPROM. Parse it and setup eth?addr
>>>>>> environment variables.
>>>>>>
>>>>>> Signed-off-by: Roger Quadros <rogerq@ti.com>
>>>>>> Reviewed-by: Lokesh Vutla <lokeshvutla@ti.com>
>>>>>> ---
>>>>>>  board/ti/ks2_evm/board_k2g.c | 19 +++++++++++++++++++
>>>>>>  1 file changed, 19 insertions(+)
>>>>>>
>>>>>> diff --git a/board/ti/ks2_evm/board_k2g.c b/board/ti/ks2_evm/board_k2g.c
>>>>>> index 40edbaa..a738dd2 100644
>>>>>> --- a/board/ti/ks2_evm/board_k2g.c
>>>>>> +++ b/board/ti/ks2_evm/board_k2g.c
>>>>>> @@ -12,6 +12,7 @@
>>>>>>  #include <asm/arch/psc_defs.h>
>>>>>>  #include <asm/arch/mmc_host_def.h>
>>>>>>  #include "mux-k2g.h"
>>>>>> +#include "../common/board_detect.h"
>>>>>>  
>>>>>>  #define SYS_CLK		24000000
>>>>>>  
>>>>>> @@ -149,6 +150,24 @@ int board_early_init_f(void)
>>>>>>  }
>>>>>>  #endif
>>>>>>  
>>>>>> +#ifdef CONFIG_BOARD_LATE_INIT
>>>>>> +int board_late_init(void)
>>>>>> +{
>>>>>> +#if !defined(CONFIG_SPL_BUILD) && defined(CONFIG_TI_I2C_BOARD_DETECT)
>>>>>> +	int rc;
>>>>>> +
>>>>>> +	rc = ti_i2c_eeprom_am_get(CONFIG_EEPROM_BUS_ADDRESS,
>>>>>> +			CONFIG_EEPROM_CHIP_ADDRESS);
>>>>>> +	if (rc)
>>>>>> +		printf("ti_i2c_eeprom_init failed %d\n", rc);
>>>>>> +
>>>>>> +	board_ti_set_ethaddr(1);
>>>>>
>>>>> What if the MAC address has already been set in the environment?
>>>>
>>>> by whom?
>>>> At least as of now nobody is setting ethadddr1 on the k2g-ice board.
>>>
>>> Well, for example by user... and it is eth1addr.
>>
>> OK, I understand now.
>>>
>>>>
>>>>> AFAIR, the MAC address in the environment has a higher precedence
>>>>> than others.
>>>>> May be I missed this, but I don't remember any discussion about changing
>>>>> this assumption.
>>>>> So, if the assumption is still correct, you shouldn't change the MAC in the env.
>>>>
>>>> I agree with you. I saw Olliver's "Retrieve MAC address from EEPROM" series.
>>>> However, that may not apply to TI boards yet because:
>>>> -the SoC's ethernet devices MAC addresses are stored in the SoC registers.
>>>> -the PRU ethernet MAC addresses which this patch is setting are stored in
>>>> EEPROM but they are not used at u-boot at all.
>>>>
>>>> I'm open to ideas if we can do what we're doing in a better way.
>>>
>>> I think Tom's idea of a common function or may be a change to
>>> eth_setenv_enetaddr_*() functions that will handle the precedence
>>> is very sensible for such cases. 
>>
>> Yes, this looks fine to me. Maybe there should be 2 functions? One which overrides
>> and one which doesn't?
> 
> What's the usecase for the overrides one?  If the user wants to go back
> to the stored ones, env default -f -a ; saveenv ; reset will do it.
> 
You are right. I don't see any use case for the override one.
Do you want me to patch eth_setenv_enetaddr_ in this series or it can be done separately?

-- 
cheers,
-roger

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

* [U-Boot] [u-boot PATCH v3 7/8] ARM: k2g: setup PRU ethernet MAC addresses
  2017-02-08 12:46             ` Roger Quadros
@ 2017-02-08 12:50               ` Tom Rini
  0 siblings, 0 replies; 24+ messages in thread
From: Tom Rini @ 2017-02-08 12:50 UTC (permalink / raw)
  To: u-boot

On Wed, Feb 08, 2017 at 02:46:20PM +0200, Roger Quadros wrote:
> On 08/02/17 14:18, Tom Rini wrote:
> > On Wed, Feb 08, 2017 at 02:04:15PM +0200, Roger Quadros wrote:
> >> Hi,
> >>
> >> On 08/02/17 13:51, Igor Grinberg wrote:
> >>> Hi Roger,
> >>>
> >>> On 02/08/17 10:51, Roger Quadros wrote:
> >>>> Hi Igor,
> >>>>
> >>>> On 07/02/17 09:52, Igor Grinberg wrote:
> >>>>> Hi Roger,
> >>>>>
> >>>>> On 02/06/17 11:36, Roger Quadros wrote:
> >>>>>> PRU ethernet MAC address range is present in the
> >>>>>> board EEPROM. Parse it and setup eth?addr
> >>>>>> environment variables.
> >>>>>>
> >>>>>> Signed-off-by: Roger Quadros <rogerq@ti.com>
> >>>>>> Reviewed-by: Lokesh Vutla <lokeshvutla@ti.com>
> >>>>>> ---
> >>>>>>  board/ti/ks2_evm/board_k2g.c | 19 +++++++++++++++++++
> >>>>>>  1 file changed, 19 insertions(+)
> >>>>>>
> >>>>>> diff --git a/board/ti/ks2_evm/board_k2g.c b/board/ti/ks2_evm/board_k2g.c
> >>>>>> index 40edbaa..a738dd2 100644
> >>>>>> --- a/board/ti/ks2_evm/board_k2g.c
> >>>>>> +++ b/board/ti/ks2_evm/board_k2g.c
> >>>>>> @@ -12,6 +12,7 @@
> >>>>>>  #include <asm/arch/psc_defs.h>
> >>>>>>  #include <asm/arch/mmc_host_def.h>
> >>>>>>  #include "mux-k2g.h"
> >>>>>> +#include "../common/board_detect.h"
> >>>>>>  
> >>>>>>  #define SYS_CLK		24000000
> >>>>>>  
> >>>>>> @@ -149,6 +150,24 @@ int board_early_init_f(void)
> >>>>>>  }
> >>>>>>  #endif
> >>>>>>  
> >>>>>> +#ifdef CONFIG_BOARD_LATE_INIT
> >>>>>> +int board_late_init(void)
> >>>>>> +{
> >>>>>> +#if !defined(CONFIG_SPL_BUILD) && defined(CONFIG_TI_I2C_BOARD_DETECT)
> >>>>>> +	int rc;
> >>>>>> +
> >>>>>> +	rc = ti_i2c_eeprom_am_get(CONFIG_EEPROM_BUS_ADDRESS,
> >>>>>> +			CONFIG_EEPROM_CHIP_ADDRESS);
> >>>>>> +	if (rc)
> >>>>>> +		printf("ti_i2c_eeprom_init failed %d\n", rc);
> >>>>>> +
> >>>>>> +	board_ti_set_ethaddr(1);
> >>>>>
> >>>>> What if the MAC address has already been set in the environment?
> >>>>
> >>>> by whom?
> >>>> At least as of now nobody is setting ethadddr1 on the k2g-ice board.
> >>>
> >>> Well, for example by user... and it is eth1addr.
> >>
> >> OK, I understand now.
> >>>
> >>>>
> >>>>> AFAIR, the MAC address in the environment has a higher precedence
> >>>>> than others.
> >>>>> May be I missed this, but I don't remember any discussion about changing
> >>>>> this assumption.
> >>>>> So, if the assumption is still correct, you shouldn't change the MAC in the env.
> >>>>
> >>>> I agree with you. I saw Olliver's "Retrieve MAC address from EEPROM" series.
> >>>> However, that may not apply to TI boards yet because:
> >>>> -the SoC's ethernet devices MAC addresses are stored in the SoC registers.
> >>>> -the PRU ethernet MAC addresses which this patch is setting are stored in
> >>>> EEPROM but they are not used at u-boot at all.
> >>>>
> >>>> I'm open to ideas if we can do what we're doing in a better way.
> >>>
> >>> I think Tom's idea of a common function or may be a change to
> >>> eth_setenv_enetaddr_*() functions that will handle the precedence
> >>> is very sensible for such cases. 
> >>
> >> Yes, this looks fine to me. Maybe there should be 2 functions? One which overrides
> >> and one which doesn't?
> > 
> > What's the usecase for the overrides one?  If the user wants to go back
> > to the stored ones, env default -f -a ; saveenv ; reset will do it.
> > 
> You are right. I don't see any use case for the override one.
> Do you want me to patch eth_setenv_enetaddr_ in this series or it can
> be done separately?

It's too late for this merge window so yes, lets get the
eth_setenv_enetaddr doing the already set in env check added in and
acked by Joe, for the next release when we can pull this in too.

-- 
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/20170208/23c18ca7/attachment.sig>

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

end of thread, other threads:[~2017-02-08 12:50 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-02-06  9:36 [U-Boot] [u-boot PATCH v3 0/8] am57xx-idk LCD and am571x-idk 6 port ethernet pinmux Roger Quadros
2017-02-06  9:36 ` [U-Boot] [u-boot PATCH v3 1/8] ARM: OMAP5+: GPIO: Add GPIO_TO_PIN() macro Roger Quadros
2017-02-06  9:36 ` [U-Boot] [u-boot PATCH v3 2/8] ti: common: board_detect: commodify ethaddr environment setting code Roger Quadros
2017-02-06  9:36 ` [U-Boot] [u-boot PATCH v3 3/8] board: ti: am571x-idk: Support 6 port Ethernet or 4 port Ethernet with LCD Roger Quadros
2017-02-06  9:36 ` [U-Boot] [u-boot PATCH v3 4/8] board: ti: am571x-idk: Update pinmux for ICSS2 Ethernet Roger Quadros
2017-02-06  9:36 ` [U-Boot] [u-boot PATCH v3 5/8] board: ti: am57xx-idk: Auto detect LCD Panel Roger Quadros
2017-02-06  9:36 ` [U-Boot] [u-boot PATCH v3 6/8] ARM: Use Kconfig for board EEPROM's I2C bus and chip address Roger Quadros
2017-02-07  0:45   ` Tom Rini
2017-02-07  3:13   ` Lokesh Vutla
2017-02-08  8:34     ` Roger Quadros
2017-02-06  9:36 ` [U-Boot] [u-boot PATCH v3 7/8] ARM: k2g: setup PRU ethernet MAC addresses Roger Quadros
2017-02-07  0:45   ` Tom Rini
2017-02-07  3:22   ` Lokesh Vutla
2017-02-08  8:35     ` Roger Quadros
2017-02-07  7:52   ` Igor Grinberg
2017-02-07 18:28     ` Tom Rini
2017-02-08 11:52       ` Igor Grinberg
2017-02-08  8:51     ` Roger Quadros
2017-02-08 11:51       ` Igor Grinberg
2017-02-08 12:04         ` Roger Quadros
2017-02-08 12:18           ` Tom Rini
2017-02-08 12:46             ` Roger Quadros
2017-02-08 12:50               ` Tom Rini
2017-02-06  9:36 ` [U-Boot] [u-boot PATCH v3 8/8] ti: common: board_detect: Rename EEPROM scratch start macro Roger Quadros

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.