[U-Boot] [PATCH 0/4] arm: rmobile: silk: minor fixes and SDHI support

This patch series adds minor Silk board fixes and SDHI support
To apply this commit, the following must be applied in advance: https://patchwork.ozlabs.org/patch/439059/ - dm: sh: serial: Add support driver model https://patchwork.ozlabs.org/patch/438202/ - arm: rmobile: silk: Migrate serial driver to drivers model https://patchwork.ozlabs.org/patch/439093/ - arm: rmobile: alt: Add support SDHI
Signed-off-by: Vladimir Barinov vladimir.barinov+renesas@cogentembedded.com Signed-off-by: Valentine Barshak valentine.barshak+renesas@cogentembedded.com --- board/renesas/silk/silk.c | 47 ++++++++++++++++++++++++++++++++++++++++++++--- configs/silk_defconfig | 1 + include/configs/silk.h | 3 +++ 3 files changed, 48 insertions(+), 3 deletions(-)

Use gpio_direction_output instead of gpio_set_value since the latter does not set output GPIO direction.
Signed-off-by: Valentine Barshak valentine.barshak+renesas@cogentembedded.com Signed-off-by: Vladimir Barinov vladimir.barinov+renesas@cogentembedded.com --- board/renesas/silk/silk.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/board/renesas/silk/silk.c b/board/renesas/silk/silk.c index 8fb729a..e124010 100644 --- a/board/renesas/silk/silk.c +++ b/board/renesas/silk/silk.c @@ -136,7 +136,7 @@ int board_mmc_init(bd_t *bis) #ifdef CONFIG_SH_MMCIF /* MMC0 */ gpio_request(GPIO_GP_4_31, NULL); - gpio_set_value(GPIO_GP_4_31, 1); + gpio_direction_output(GPIO_GP_4_31, 1);
ret = mmcif_mmc_init(); #endif

Disable pull-ups on ethrenet lines
Signed-off-by: Vladimir Barinov vladimir.barinov+renesas@cogentembedded.com --- board/renesas/silk/silk.c | 8 ++++++++ 1 file changed, 8 insertions(+)
diff --git a/board/renesas/silk/silk.c b/board/renesas/silk/silk.c index e124010..c97a2a0 100644 --- a/board/renesas/silk/silk.c +++ b/board/renesas/silk/silk.c @@ -69,6 +69,11 @@ int board_early_init_f(void) return 0; }
+/* LSI pin pull-up control */ +#define PUPR3 0xe606010C +#define PUPR3_ETH 0x006FF800 +#define PUPR1 0xe6060104 +#define PUPR1_DREQ0_N (1 << 20) int board_init(void) { /* adress of boot parameters */ @@ -93,7 +98,10 @@ int board_init(void) gpio_request(GPIO_FN_IRQ8, NULL);
/* PHY reset */ + mstp_clrbits_le32(PUPR3, PUPR3, PUPR3_ETH); gpio_request(GPIO_GP_1_24, NULL); + mstp_clrbits_le32(PUPR1, PUPR1, PUPR1_DREQ0_N); + gpio_direction_output(GPIO_GP_1_24, 0); mdelay(20); gpio_set_value(GPIO_GP_1_24, 1);

Fix typo in device declaration
Signed-off-by: Vladimir Barinov vladimir.barinov+renesas@cogentembedded.com --- board/renesas/silk/silk.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/board/renesas/silk/silk.c b/board/renesas/silk/silk.c index c97a2a0..1838c4b 100644 --- a/board/renesas/silk/silk.c +++ b/board/renesas/silk/silk.c @@ -179,7 +179,7 @@ static const struct sh_serial_platdata serial_platdata = { .clk_mode = EXT_CLK, };
-U_BOOT_DEVICE(alt_serials) = { +U_BOOT_DEVICE(silk_serials) = { .name = "serial_sh", .platdata = &serial_platdata, };

This adds GPIO configuration and initialization function of SDHI on Silk board
Signed-off-by: Vladimir Barinov vladimir.barinov+renesas@cogentembedded.com --- board/renesas/silk/silk.c | 35 ++++++++++++++++++++++++++++++++++- configs/silk_defconfig | 1 + include/configs/silk.h | 3 +++ 3 files changed, 38 insertions(+), 1 deletion(-)
diff --git a/board/renesas/silk/silk.c b/board/renesas/silk/silk.c index 1838c4b..021baab 100644 --- a/board/renesas/silk/silk.c +++ b/board/renesas/silk/silk.c @@ -20,6 +20,7 @@ #include <asm/arch/rmobile.h> #include <asm/arch/rcar-mstp.h> #include <asm/arch/mmc.h> +#include <asm/arch/sh_sdhi.h> #include <netdev.h> #include <miiphy.h> #include <i2c.h> @@ -47,6 +48,10 @@ void s_init(void) #define ETHER_MSTP813 (1 << 13) #define IIC1_MSTP323 (1 << 23) #define MMC0_MSTP315 (1 << 15) +#define SDHI1_MSTP312 (1 << 12) + +#define SD1CKCR 0xE6150078 +#define SD1_97500KHZ 0x7
int board_early_init_f(void) { @@ -66,6 +71,16 @@ int board_early_init_f(void) /* MMC */ mstp_clrbits_le32(MSTPSR3, SMSTPCR3, MMC0_MSTP315); #endif + +#ifdef CONFIG_SH_SDHI + /* SDHI1 */ + mstp_clrbits_le32(MSTPSR3, SMSTPCR3, SDHI1_MSTP312); + + /* + * Set SD1 to the 97.5MHz + */ + writel(SD1_97500KHZ, SD1CKCR); +#endif return 0; }
@@ -139,7 +154,7 @@ int board_eth_init(bd_t *bis)
int board_mmc_init(bd_t *bis) { - int ret = 0; + int ret = -ENODEV;
#ifdef CONFIG_SH_MMCIF /* MMC0 */ @@ -148,6 +163,24 @@ int board_mmc_init(bd_t *bis)
ret = mmcif_mmc_init(); #endif + +#ifdef CONFIG_SH_SDHI + gpio_request(GPIO_FN_SD1_DATA0, NULL); + gpio_request(GPIO_FN_SD1_DATA1, NULL); + gpio_request(GPIO_FN_SD1_DATA2, NULL); + gpio_request(GPIO_FN_SD1_DATA3, NULL); + gpio_request(GPIO_FN_SD1_CLK, NULL); + gpio_request(GPIO_FN_SD1_CMD, NULL); + gpio_request(GPIO_FN_SD1_CD, NULL); + + /* SDHI 1 */ + gpio_request(GPIO_GP_4_26, NULL); + gpio_request(GPIO_GP_4_29, NULL); + gpio_direction_output(GPIO_GP_4_26, 1); + gpio_direction_output(GPIO_GP_4_29, 1); + + ret = sh_sdhi_init(CONFIG_SYS_SH_SDHI1_BASE, 1, 0); +#endif return ret; }
diff --git a/configs/silk_defconfig b/configs/silk_defconfig index 3130e93..23d4f58 100644 --- a/configs/silk_defconfig +++ b/configs/silk_defconfig @@ -3,3 +3,4 @@ CONFIG_RMOBILE=y CONFIG_TARGET_SILK=y CONFIG_DM=y CONFIG_DM_SERIAL=y +CONFIG_SH_SDHI=y diff --git a/include/configs/silk.h b/include/configs/silk.h index 00a3158..161e0a5 100644 --- a/include/configs/silk.h +++ b/include/configs/silk.h @@ -101,6 +101,9 @@ #define CONFIG_SH_MMCIF_ADDR 0xee200000 #define CONFIG_SH_MMCIF_CLK 48000000
+/* SDHI */ +#define CONFIG_SH_SDHI_FREQ 97500000 + /* Module stop status bits */ /* INTC-RT */ #define CONFIG_SMSTP0_ENA 0x00400000
participants (1)
-
Vladimir Barinov