[U-Boot] [PATCH 2/2] EfikaSB: Add preliminary EfikaSB support

Marek Vasut
2011-09-19T10:42:21Z

Signed-off-by: Marek Vasut <marek.vasut@gmail.com>
Cc: Stefano Babic <sbabic@denx.de>
---
board/efikamx/efikamx.c | 57 +++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 53 insertions(+), 4 deletions(-)

diff --git a/board/efikamx/efikamx.c b/board/efikamx/efikamx.c
index 0f84ae0..33fbc86 100644
--- a/board/efikamx/efikamx.c
+++ b/board/efikamx/efikamx.c
@@ -46,6 +46,19 @@ DECLARE_GLOBAL_DATA_PTR;
#error "CONFIG_MXC_SPI not set, this is essential for board's operation!"
#endif

+#if !defined(CONFIG_MACH_EFIKAMX) && !defined(CONFIG_MACH_EFIKASB)
+#error "Missing CONFIG_MACH_EFIKAMX or CONFIG_MACH_EFIKASB in config.h!"
+#endif
+
+/*
+ * Pin definition
+ */
+#ifdef CONFIG_MACH_EFIKAMX
+#define EFIKA_SD1_CD MX51_PIN_GPIO1_0
+#else
+#define EFIKA_SD1_CD MX51_PIN_EIM_CS2
+#endif
+
/*
* Shared variables / local defines
*/
@@ -65,6 +78,7 @@ void efikamx_toggle_led(uint32_t mask);
/*
* Board identification
*/
+#ifdef CONFIG_MACH_EFIKAMX
u32 get_efika_rev(void)
{
u32 rev = 0;
@@ -96,6 +110,12 @@ u32 get_efika_rev(void)

return (~rev & 0x7) + 1;
}
+#else
+inline u32 get_efika_rev(void)
+{
+ return 0;
+}
+#endif

u32 get_board_rev(void)
{
@@ -273,7 +293,7 @@ int board_mmc_getcd(u8 *absent, struct mmc *mmc)
struct fsl_esdhc_cfg *cfg = (struct fsl_esdhc_cfg *)mmc->priv;

if (cfg->esdhc_base == MMC_SDHC1_BASE_ADDR)
- *absent = gpio_get_value(IOMUX_TO_GPIO(MX51_PIN_GPIO1_0));
+ *absent = gpio_get_value(IOMUX_TO_GPIO(EFIKA_SD1_CD));
else
*absent = gpio_get_value(IOMUX_TO_GPIO(MX51_PIN_GPIO1_8));

@@ -284,9 +304,9 @@ int board_mmc_init(bd_t *bis)
int ret;

/* SDHC1 is used on all revisions, setup control pins first */
- mxc_request_iomux(MX51_PIN_GPIO1_0,
+ mxc_request_iomux(EFIKA_SD1_CD,
IOMUX_CONFIG_ALT0 | IOMUX_CONFIG_SION);
- mxc_iomux_set_pad(MX51_PIN_GPIO1_0,
+ mxc_iomux_set_pad(EFIKA_SD1_CD,
PAD_CTL_DRV_HIGH | PAD_CTL_HYS_ENABLE |
PAD_CTL_PUE_KEEPER | PAD_CTL_100K_PU |
PAD_CTL_ODE_OPENDRAIN_NONE |
@@ -298,11 +318,13 @@ int board_mmc_init(bd_t *bis)
PAD_CTL_100K_PU | PAD_CTL_ODE_OPENDRAIN_NONE |
PAD_CTL_SRE_FAST);

- gpio_direction_input(IOMUX_TO_GPIO(MX51_PIN_GPIO1_0));
+ gpio_direction_input(IOMUX_TO_GPIO(EFIKA_SD1_CD));
gpio_direction_input(IOMUX_TO_GPIO(MX51_PIN_GPIO1_1));

+#ifndef CONFIG_MACH_EFIKASB
/* Internal SDHC1 IOMUX + SDHC2 IOMUX on old boards */
if (get_efika_rev() < EFIKAMX_BOARD_REV_12) {
+#endif
/* SDHC1 IOMUX */
mxc_request_iomux(MX51_PIN_SD1_CMD,
IOMUX_CONFIG_ALT0 | IOMUX_CONFIG_SION);
@@ -384,6 +406,7 @@ int board_mmc_init(bd_t *bis)
ret = fsl_esdhc_initialize(bis, &esdhc_cfg[0]);
if (!ret)
ret = fsl_esdhc_initialize(bis, &esdhc_cfg[1]);
+#ifndef CONFIG_MACH_EFIKASB
} else { /* New boards use only SDHC1 */
/* SDHC1 IOMUX */
mxc_request_iomux(MX51_PIN_SD1_CMD,
@@ -414,6 +437,7 @@ int board_mmc_init(bd_t *bis)

ret = fsl_esdhc_initialize(bis, &esdhc_cfg[0]);
}
+#endif
return ret;
}
#endif
@@ -500,6 +524,7 @@ static inline void setup_iomux_usb(void) { }
/*
* LED configuration
*/
+#if defined(CONFIG_MACH_EFIKAMX)
void setup_iomux_led(void)
{
/* Blue LED */
@@ -524,6 +549,26 @@ void efikamx_toggle_led(uint32_t mask)
gpio_set_value(IOMUX_TO_GPIO(MX51_PIN_CSI1_HSYNC),
mask & EFIKAMX_LED_RED);
}
+#else
+void setup_iomux_led(void)
+{
+ /* CAPS-LOCK LED */
+ mxc_request_iomux(MX51_PIN_EIM_CS0, IOMUX_CONFIG_GPIO);
+ gpio_direction_output(IOMUX_TO_GPIO(MX51_PIN_EIM_CS0), 0);
+
+ /* ALARM-LED LED */
+ mxc_request_iomux(MX51_PIN_GPIO1_3, IOMUX_CONFIG_GPIO);
+ gpio_direction_output(IOMUX_TO_GPIO(MX51_PIN_GPIO1_3), 0);
+}
+
+void efikamx_toggle_led(uint32_t mask)
+{
+ gpio_set_value(IOMUX_TO_GPIO(MX51_PIN_EIM_CS0),
+ mask & EFIKAMX_LED_BLUE);
+ gpio_set_value(IOMUX_TO_GPIO(MX51_PIN_GPIO1_3),
+ !(mask & EFIKAMX_LED_GREEN));
+}
+#endif

/*
* Board initialization
@@ -616,7 +661,11 @@ int board_early_init_f(void)

int board_init(void)
{
+#ifdef CONFIG_MACH_EFIKAMX
gd->bd->bi_arch_number = MACH_TYPE_MX51_EFIKAMX;
+#else
+ gd->bd->bi_arch_number = MACH_TYPE_MX51_EFIKASB;
+#endif
gd->bd->bi_boot_params = PHYS_SDRAM_1 + 0x100;

return 0;
--
1.7.5.4