arm: omap4: panda: Add reading of the board revision
PATCH v2 1/1 arm: omap4: panda: Add reading of the board revision
Detect if we are running on a panda revision A1-A6, or an ES panda board. This can be done by reading the level of GPIOs and checking the processor revisions. This should result in:
Panda 4430:
GPIO171, GPIO101, GPIO182: 0 1 1 => A1-A5
GPIO171, GPIO101, GPIO182: 1 0 1 => A6
Panda ES:
GPIO2, GPIO3, GPIO171, GPIO48, GPIO182: 0 0 0 1 1 => B1/B2
GPIO2, GPIO3, GPIO171, GPIO48, GPIO182: 0 0 1 1 1 => B3Set the board name appropriately for the board revision that is detected.
Update the findfdt macro to load the a4 device tree binary.
Signed-off-by Dan Murphy <[email protected]>
---
v2 - Fix checkpatch warnings - http://patchwork.ozlabs.org/patch/250854/
board/ti/panda/panda.c | 75 +++++++++++++++++++++++++++++++++++++--- include/configs/omap4_common.h | 2 + 2 files changed, 72 insertions(+), 5 deletions(-)
board/ti/panda/panda.c +70 -5
@@ -37,6 +37,11 @@#endif #define PANDA_ULPI_PHY_TYPE_GPIO 182 +#define PANDA_BOARD_ID_1_GPIO 101 +#define PANDA_ES_BOARD_ID_1_GPIO 48 +#define PANDA_BOARD_ID_2_GPIO 171 +#define PANDA_ES_BOARD_ID_3_GPIO 3 +#define PANDA_ES_BOARD_ID_4_GPIO 2DECLARE_GLOBAL_DATA_PTR ;
@@ -66,6 +71,70 @@ int board_eth_init(bd_t *bis)return 0 ; } +/* +* Routine: get_board_revision +* Description: Detect if we are running on a panda revision A1-A6, +* or an ES panda board. This can be done by reading +* the level of GPIOs and checking the processor revisions. +* This should result in: +* Panda 4430: +* GPIO171, GPIO101, GPIO182: 0 1 1 => A1-A5 +* GPIO171, GPIO101, GPIO182: 1 0 1 => A6 +* Panda ES: +* GPIO2, GPIO3, GPIO171, GPIO48, GPIO182: 0 0 0 1 1 => B1/B2 +* GPIO2, GPIO3, GPIO171, GPIO48, GPIO182: 0 0 1 1 1 => B3 +*/ +int get_board_revision (void ) +{ +int board_id0, board_id1, board_id2; +int board_id3, board_id4; +int board_id; + +int processor_rev =omap_revision (); + +/* Setup the mux for the common board ID pins */ +writew ((IEN |M3 ),CONTROL_PADCONF_CORE +UNIPRO_TX0 );/* gpio 171 */ +writew ((IEN |M3 ),CONTROL_PADCONF_CORE +FREF_CLK2_OUT );/* gpio 182 */ + + board_id0 =gpio_get_value (PANDA_ULPI_PHY_TYPE_GPIO ); + board_id2 =gpio_get_value (PANDA_BOARD_ID_2_GPIO ); + +if ((processor_rev >=OMAP4460_ES1_0 && + processor_rev <=OMAP4460_ES1_1 )) { +/* Setup the mux for the ES specific board ID pins */ +/* gpio 101 */ +writew ((IEN |M3 ),CONTROL_PADCONF_CORE +GPMC_A24 ); +/* gpio 2 */ +writew ((IEN |M3 ),CONTROL_PADCONF_CORE +UNIPRO_RY0 ); +/* gpio 3 */ +writew ((IEN |M3 ),CONTROL_PADCONF_CORE +UNIPRO_RX1 ); + + board_id1 =gpio_get_value (PANDA_ES_BOARD_ID_1_GPIO ); + board_id3 =gpio_get_value (PANDA_ES_BOARD_ID_3_GPIO ); + board_id4 =gpio_get_value (PANDA_ES_BOARD_ID_4_GPIO ); + +#ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG +setenv ("board_name" ,strcat (CONFIG_SYS_BOARD ,"-es" )); +#endif + board_id = ((board_id4 <<4 ) | (board_id3 <<3 ) | + (board_id2 <<2 ) | (board_id1 <<1 ) | (board_id0)); + }else { +/* Setup the mux for the Ax specific board ID pins */ +/* gpio 101 */ +writew ((IEN |M3 ),CONTROL_PADCONF_CORE +FREF_CLK2_OUT ); + + board_id1 =gpio_get_value (PANDA_BOARD_ID_1_GPIO ); + board_id = ((board_id2 <<2 ) | (board_id1 <<1 ) | (board_id0)); + +#ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG +if ((board_id >=0x3 ) && (processor_rev ==OMAP4430_ES2_3 )) +setenv ("board_name" ,strcat (CONFIG_SYS_BOARD ,"-a4" )); +#endif + } + +return board_id; +} +/** * @brief misc_init_r - Configure Panda board specific configurations * such as power configurations, ethernet initialization as phase2 of
@@ -82,11 +151,7 @@ int misc_init_r(void)if (omap_revision () ==OMAP4430_ES1_0 )return 0 ; -#ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG -if (omap_revision () >=OMAP4460_ES1_0 || -omap_revision () <=OMAP4460_ES1_1 ) -setenv ("board_name" ,strcat (CONFIG_SYS_BOARD ,"-es" )); -#endif +get_board_revision ();gpio_direction_input (PANDA_ULPI_PHY_TYPE_GPIO ); phy_type =gpio_get_value (PANDA_ULPI_PHY_TYPE_GPIO );
include/configs/omap4_common.h +2 -0
@@ -181,6 +181,8 @@"setenv fdtfile omap4-sdp.dtb; fi; " \"if test $board_name = panda; then " \"setenv fdtfile omap4-panda.dtb; fi;" \ +"if test $board_name = panda-a4; then " \ +"setenv fdtfile omap4-panda-a4.dtb; fi;" \"if test $board_name = panda-es; then " \"setenv fdtfile omap4-panda-es.dtb; fi; \0" \"loadfdt=load mmc ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile}\0" \
Signature · 1 line
1.7.5.4