Tested-by: Pau Pajuelo <ppaj...@gmail.com>
2017-08-17 3:09 GMT+02:00 Ladislav Michl <la...@linux-mips.org>: > From: Pau Pajuelo <ppaj...@gmail.com> > > Update igep00x0 code with the following features: > - Add board and revision detection for the boards: > - IGEP0020-RF > - IGEP0020-RC > - IGEP0030-RG > - IGEP0030-RE > - Merge IGEP0020 and IGEP0030 mux tables > - Add suport to use GPIO_126, GPIO_127 and GPIO_129 > - board_name and board_rev environment variables display board and > revision informations > - Move dtb name selection from code to boot script > > Signed-off-by: Pau Pajuelo <ppaj...@gmail.com> > Signed-off-by: Ladislav Michl <la...@linux-mips.org> > --- > Changes: > -v2: Move dtb name selection from code to boot script > Use board_rev to hold board revision > > board/isee/igep00x0/MAINTAINERS | 3 +- > board/isee/igep00x0/common.c | 12 --- > board/isee/igep00x0/igep00x0.c | 90 > ++++++++++++++++++++-- > board/isee/igep00x0/igep00x0.h | 13 ++-- > configs/igep0030_defconfig | 47 ----------- > configs/{igep0020_defconfig => igep00x0_defconfig} | 8 -- > include/configs/omap3_igep00x0.h | 45 ++++++++--- > 7 files changed, 124 insertions(+), 94 deletions(-) > > diff --git a/board/isee/igep00x0/MAINTAINERS b/board/isee/igep00x0/MAINTAINERS > index 720ef2aa69..d75d400eed 100644 > --- a/board/isee/igep00x0/MAINTAINERS > +++ b/board/isee/igep00x0/MAINTAINERS > @@ -3,6 +3,5 @@ M: Enric Balletbo i Serra <eballe...@gmail.com> > S: Maintained > F: board/isee/igep00x0/ > F: include/configs/omap3_igep00x0.h > -F: configs/igep0020_defconfig > -F: configs/igep0030_defconfig > +F: configs/igep00x0_defconfig > F: configs/igep0032_defconfig > diff --git a/board/isee/igep00x0/common.c b/board/isee/igep00x0/common.c > index b8f1c14f6a..e59516f612 100644 > --- a/board/isee/igep00x0/common.c > +++ b/board/isee/igep00x0/common.c > @@ -22,14 +22,6 @@ DECLARE_GLOBAL_DATA_PTR; > void set_muxconf_regs(void) > { > MUX_DEFAULT(); > - > -#if (CONFIG_MACH_TYPE == MACH_TYPE_IGEP0020) > - MUX_IGEP0020(); > -#endif > - > -#if (CONFIG_MACH_TYPE == MACH_TYPE_IGEP0030) > - MUX_IGEP0030(); > -#endif > } > > /* > @@ -60,10 +52,6 @@ int board_init(void) > /* boot param addr */ > gd->bd->bi_boot_params = (OMAP34XX_SDRC_CS0 + 0x100); > > -#if defined(CONFIG_LED_STATUS) && defined(CONFIG_LED_STATUS_BOOT_ENABLE) > - status_led_set(CONFIG_LED_STATUS_BOOT, CONFIG_LED_STATUS_ON); > -#endif > - > return 0; > } > > diff --git a/board/isee/igep00x0/igep00x0.c b/board/isee/igep00x0/igep00x0.c > index 74f9bab093..5c7f256711 100644 > --- a/board/isee/igep00x0/igep00x0.c > +++ b/board/isee/igep00x0/igep00x0.c > @@ -17,7 +17,6 @@ > #include <asm/arch/mmc_host_def.h> > #include <asm/arch/mux.h> > #include <asm/arch/sys_proto.h> > -#include <asm/mach-types.h> > #include <linux/mtd/mtd.h> > #include <linux/mtd/nand.h> > #include <linux/mtd/onenand.h> > @@ -38,6 +37,43 @@ U_BOOT_DEVICE(igep_uart) = { > &igep_serial > }; > > +/* > + * Routine: get_board_revision > + * Description: GPIO_28 and GPIO_129 are used to read board and revision from > + * IGEP00x0 boards. First of all, it is necessary to reset USB transceiver > from > + * IGEP0030 in order to read GPIO_IGEP00X0_BOARD_DETECTION correctly, because > + * this functionality is shared by USB HOST. > + * Once USB reset is applied, U-boot configures these pins as input pullup to > + * detect board and revision: > + * IGEP0020-RF = 0b00 > + * IGEP0020-RC = 0b01 > + * IGEP0030-RG = 0b10 > + * IGEP0030-RE = 0b11 > + */ > +static int get_board_revision(void) > +{ > + int revision; > + > + gpio_request(IGEP0030_USB_TRANSCEIVER_RESET, > + "igep0030_usb_transceiver_reset"); > + gpio_direction_output(IGEP0030_USB_TRANSCEIVER_RESET, 0); > + > + gpio_request(GPIO_IGEP00X0_BOARD_DETECTION, > "igep00x0_board_detection"); > + gpio_direction_input(GPIO_IGEP00X0_BOARD_DETECTION); > + revision = 2 * gpio_get_value(GPIO_IGEP00X0_BOARD_DETECTION); > + gpio_free(GPIO_IGEP00X0_BOARD_DETECTION); > + > + gpio_request(GPIO_IGEP00X0_REVISION_DETECTION, > + "igep00x0_revision_detection"); > + gpio_direction_input(GPIO_IGEP00X0_REVISION_DETECTION); > + revision = revision + > gpio_get_value(GPIO_IGEP00X0_REVISION_DETECTION); > + gpio_free(GPIO_IGEP00X0_REVISION_DETECTION); > + > + gpio_free(IGEP0030_USB_TRANSCEIVER_RESET); > + > + return revision; > +} > + > int onenand_board_init(struct mtd_info *mtd) > { > if (gpmc_cs0_flash == MTD_DEV_TYPE_ONENAND) { > @@ -138,31 +174,69 @@ int ft_board_setup(void *blob, bd_t *bd) > } > #endif > > -void set_fdt(void) > +void set_led(void) > { > - switch (gd->bd->bi_arch_number) { > - case MACH_TYPE_IGEP0020: > - env_set("fdtfile", "omap3-igep0020.dtb"); > + switch (get_board_revision()) { > + case 0: > + case 1: > + gpio_request(IGEP0020_GPIO_LED, "igep0020_gpio_led"); > + gpio_direction_output(IGEP0020_GPIO_LED, 1); > break; > - case MACH_TYPE_IGEP0030: > - env_set("fdtfile", "omap3-igep0030.dtb"); > + case 2: > + case 3: > + gpio_request(IGEP0030_GPIO_LED, "igep0030_gpio_led"); > + gpio_direction_output(IGEP0030_GPIO_LED, 0); > + break; > + default: > + /* Should not happen... */ > break; > } > } > > +void set_boardname(void) > +{ > + char rev[5] = { 'F','C','G','E', }; > + int i = get_board_revision(); > + > + rev[i+1] = 0; > + env_set("board_rev", rev + i); > + env_set("board_name", i < 2 ? "igep0020" : "igep0030"); > +} > + > /* > * Routine: misc_init_r > * Description: Configure board specific parts > */ > int misc_init_r(void) > { > + t2_t *t2_base = (t2_t *)T2_BASE; > + u32 pbias_lite; > + > twl4030_power_init(); > > + /* set VSIM to 1.8V */ > + twl4030_pmrecv_vsel_cfg(TWL4030_PM_RECEIVER_VSIM_DEDICATED, > + TWL4030_PM_RECEIVER_VSIM_VSEL_18, > + TWL4030_PM_RECEIVER_VSIM_DEV_GRP, > + TWL4030_PM_RECEIVER_DEV_GRP_P1); > + > + /* set up dual-voltage GPIOs to 1.8V */ > + pbias_lite = readl(&t2_base->pbias_lite); > + pbias_lite &= ~PBIASLITEVMODE1; > + pbias_lite |= PBIASLITEPWRDNZ1; > + writel(pbias_lite, &t2_base->pbias_lite); > + if (get_cpu_family() == CPU_OMAP36XX) > + writel(readl(OMAP34XX_CTRL_WKUP_CTRL) | > + > OMAP34XX_CTRL_WKUP_CTRL_GPIO_IO_PWRDNZ, > + OMAP34XX_CTRL_WKUP_CTRL); > + > setup_net_chip(); > > omap_die_id_display(); > > - set_fdt(); > + set_led(); > + > + set_boardname(); > > return 0; > } > diff --git a/board/isee/igep00x0/igep00x0.h b/board/isee/igep00x0/igep00x0.h > index 5698efab5d..1cbe7c94d9 100644 > --- a/board/isee/igep00x0/igep00x0.h > +++ b/board/isee/igep00x0/igep00x0.h > @@ -103,6 +103,8 @@ > MUX_VAL(CP(MMC1_DAT1), (IEN | PTU | EN | M0)) /* MMC1_DAT1 */\ > MUX_VAL(CP(MMC1_DAT2), (IEN | PTU | EN | M0)) /* MMC1_DAT2 */\ > MUX_VAL(CP(MMC1_DAT3), (IEN | PTU | EN | M0)) /* MMC1_DAT3 */\ > + MUX_VAL(CP(UART1_TX), (IDIS | PTD | DIS | M0)) /* UART1_TX */\ > + MUX_VAL(CP(UART1_RX), (IEN | PTD | DIS | M0)) /* UART1_RX */\ > MUX_VAL(CP(UART3_TX_IRTX), (IDIS | PTD | DIS | M0)) /* UART3_TX */\ > MUX_VAL(CP(UART3_RX_IRRX), (IEN | PTD | DIS | M0)) /* UART3_RX */\ > MUX_VAL(CP(I2C1_SCL), (IEN | PTU | EN | M0)) /* I2C1_SCL */\ > @@ -117,13 +119,10 @@ > MUX_VAL(CP(SYS_BOOT4), (IEN | PTD | DIS | M4)) /* GPIO_6 */\ > MUX_VAL(CP(SYS_BOOT5), (IEN | PTD | DIS | M4)) /* GPIO_7 */\ > MUX_VAL(CP(SYS_BOOT6), (IEN | PTD | DIS | M4)) /* GPIO_8 */\ > + MUX_VAL(CP(ETK_D14_ES2), (IEN | PTU | EN | M4)) /* GPIO_28 */\ > + MUX_VAL(CP(GPMC_NCS3), (IDIS | PTD | DIS | M4)) /* GPIO_54 */\ > + MUX_VAL(CP(GPMC_WAIT2), (IEN | PTU | DIS | M4)) /* GPIO_64 */\ > + MUX_VAL(CP(GPIO129), (IEN | PTU | EN | M4)) /* GPIO_129 */\ > MUX_VAL(CP(SDRC_CKE0), (IDIS | PTU | EN | M0)) /* SDRC_CKE0 */\ > MUX_VAL(CP(SDRC_CKE1), (IDIS | PTU | EN | M0)) /* SDRC_CKE1 */ > #endif > - > -#define MUX_IGEP0020() \ > - MUX_VAL(CP(GPMC_WAIT2), (IEN | PTU | DIS | M4)) /* > GPIO_64-ETH_NRST */\ > - > -#define MUX_IGEP0030() \ > - MUX_VAL(CP(UART1_TX), (IDIS | PTD | DIS | M0)) /* UART1_TX */\ > - MUX_VAL(CP(UART1_RX), (IEN | PTD | DIS | M0)) /* UART1_RX */ > diff --git a/configs/igep0030_defconfig b/configs/igep0030_defconfig > deleted file mode 100644 > index abf83c2522..0000000000 > --- a/configs/igep0030_defconfig > +++ /dev/null > @@ -1,47 +0,0 @@ > -CONFIG_ARM=y > -CONFIG_ARCH_OMAP2PLUS=y > -CONFIG_TARGET_OMAP3_IGEP00X0=y > -CONFIG_DISTRO_DEFAULTS=y > -CONFIG_OF_BOARD_SETUP=y > -CONFIG_SYS_EXTRA_OPTIONS="MACH_TYPE=MACH_TYPE_IGEP0030" > -CONFIG_ENV_IS_NOWHERE=y > -CONFIG_BOOTDELAY=3 > -CONFIG_SYS_CONSOLE_IS_IN_ENV=y > -CONFIG_SYS_CONSOLE_INFO_QUIET=y > -CONFIG_VERSION_VARIABLE=y > -# CONFIG_DISPLAY_BOARDINFO is not set > -CONFIG_SPL=y > -# CONFIG_SPL_EXT_SUPPORT is not set > -CONFIG_SPL_MTD_SUPPORT=y > -CONFIG_SPL_ONENAND_SUPPORT=y > -CONFIG_SPL_OS_BOOT=y > -# CONFIG_CMD_IMLS is not set > -CONFIG_CMD_SPL=y > -CONFIG_CMD_ASKENV=y > -# CONFIG_CMD_FLASH is not set > -CONFIG_CMD_GPIO=y > -CONFIG_CMD_I2C=y > -CONFIG_CMD_MMC=y > -CONFIG_CMD_NAND=y > -CONFIG_CMD_ONENAND=y > -CONFIG_CMD_SPI=y > -# CONFIG_CMD_SETEXPR is not set > -CONFIG_CMD_CACHE=y > -CONFIG_CMD_EXT4_WRITE=y > -CONFIG_CMD_UBI=y > -# CONFIG_CMD_UBIFS is not set > -CONFIG_NET_RANDOM_ETHADDR=y > -CONFIG_LED_STATUS=y > -CONFIG_LED_STATUS_GPIO=y > -CONFIG_LED_STATUS0=y > -CONFIG_LED_STATUS_BIT=16 > -CONFIG_LED_STATUS_STATE=2 > -CONFIG_LED_STATUS_BOOT_ENABLE=y > -CONFIG_LED_STATUS_BOOT=0 > -CONFIG_MMC_OMAP_HS=y > -CONFIG_NAND=y > -CONFIG_SYS_NS16550=y > -CONFIG_OMAP3_SPI=y > -CONFIG_FAT_WRITE=y > -CONFIG_OF_LIBFDT=y > -CONFIG_FDT_FIXUP_PARTITIONS=y > diff --git a/configs/igep0020_defconfig b/configs/igep00x0_defconfig > similarity index 80% > rename from configs/igep0020_defconfig > rename to configs/igep00x0_defconfig > index 600434a4bb..1cdc73d766 100644 > --- a/configs/igep0020_defconfig > +++ b/configs/igep00x0_defconfig > @@ -3,7 +3,6 @@ CONFIG_ARCH_OMAP2PLUS=y > CONFIG_TARGET_OMAP3_IGEP00X0=y > CONFIG_DISTRO_DEFAULTS=y > CONFIG_OF_BOARD_SETUP=y > -CONFIG_SYS_EXTRA_OPTIONS="MACH_TYPE=MACH_TYPE_IGEP0020" > CONFIG_ENV_IS_NOWHERE=y > CONFIG_BOOTDELAY=3 > CONFIG_SYS_CONSOLE_IS_IN_ENV=y > @@ -31,13 +30,6 @@ CONFIG_CMD_EXT4_WRITE=y > CONFIG_CMD_UBI=y > # CONFIG_CMD_UBIFS is not set > CONFIG_NET_RANDOM_ETHADDR=y > -CONFIG_LED_STATUS=y > -CONFIG_LED_STATUS_GPIO=y > -CONFIG_LED_STATUS0=y > -CONFIG_LED_STATUS_BIT=27 > -CONFIG_LED_STATUS_STATE=2 > -CONFIG_LED_STATUS_BOOT_ENABLE=y > -CONFIG_LED_STATUS_BOOT=0 > CONFIG_MMC_OMAP_HS=y > CONFIG_NAND=y > CONFIG_MTD_UBI_FASTMAP=y > diff --git a/include/configs/omap3_igep00x0.h > b/include/configs/omap3_igep00x0.h > index a029b54804..dc137dbd41 100644 > --- a/include/configs/omap3_igep00x0.h > +++ b/include/configs/omap3_igep00x0.h > @@ -13,7 +13,6 @@ > #define CONFIG_NR_DRAM_BANKS 2 > > #include <configs/ti_omap3_common.h> > -#include <asm/mach-types.h> > > /* > * We are only ever GP parts and will utilize all of the "downloaded image" > @@ -26,15 +25,21 @@ > > #define CONFIG_REVISION_TAG 1 > > -/* Status LED available for IGEP0020 and IGEP0030 but not IGEP0032 */ > -#if (CONFIG_MACH_TYPE == MACH_TYPE_IGEP0020) || \ > - (CONFIG_MACH_TYPE == MACH_TYPE_IGEP0030) > -#if (CONFIG_MACH_TYPE == MACH_TYPE_IGEP0020) > -#define RED_LED_GPIO 27 > -#elif (CONFIG_MACH_TYPE == MACH_TYPE_IGEP0030) > -#define RED_LED_GPIO 16 > -#endif > -#endif > +/* GPIO banks */ > +#define CONFIG_OMAP3_GPIO_2 /* GPIO32..63 is in GPIO bank 2 */ > +#define CONFIG_OMAP3_GPIO_4 /* GPIO96..127 is in GPIO bank 4 */ > + > +/* TPS65950 */ > +#define PBIASLITEVMODE1 (1 << 8) > + > +/* LED */ > +#define IGEP0020_GPIO_LED 27 > +#define IGEP0030_GPIO_LED 16 > + > +/* Board and revision detection GPIOs */ > +#define IGEP0030_USB_TRANSCEIVER_RESET 54 > +#define GPIO_IGEP00X0_BOARD_DETECTION 28 > +#define GPIO_IGEP00X0_REVISION_DETECTION 129 > > /* USB */ > #define CONFIG_USB_MUSB_UDC 1 > @@ -67,9 +72,29 @@ > #define BOOT_TARGET_DEVICES(func) \ > func(MMC, mmc, 0) > > +#define CONFIG_BOOTCOMMAND \ > + "run findfdt; " \ > + "run distro_bootcmd" > + > #include <config_distro_bootcmd.h> > > +#define ENV_FINDFDT \ > + "findfdt="\ > + "if test ${board_name} = igep0020; then " \ > + "if test ${board_rev} = F; then " \ > + "setenv fdtfile omap3-igep0020-rev-f.dtb; " \ > + "else " \ > + "setenv fdtfile omap3-igep0020.dtb; fi; fi; " > \ > + "if test ${board_name} = igep0030; then " \ > + "if test ${board_rev} = G; then " \ > + "setenv fdtfile omap3-igep0030-rev-g.dtb; " \ > + "else " \ > + "setenv fdtfile omap3-igep0030.dtb; fi; fi; " > \ > + "if test ${fdtfile} = ''; then " \ > + "echo WARNING: Could not determine device tree to > use; fi; \0" > + > #define CONFIG_EXTRA_ENV_SETTINGS \ > + ENV_FINDFDT \ > ENV_DEVICE_SETTINGS \ > MEM_LAYOUT_SETTINGS \ > BOOTENV > -- > 2.11.0 > _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot