Skip to content
Snippets Groups Projects
Commit a7e2c6f6 authored by Tom Rini's avatar Tom Rini
Browse files

Merge branch 'master' of git://git.denx.de/u-boot-samsung

parents 53fd4b8c 2308ea7c
No related branches found
No related tags found
No related merge requests found
...@@ -84,9 +84,9 @@ static int s5p_sdhci_core_init(struct sdhci_host *host) ...@@ -84,9 +84,9 @@ static int s5p_sdhci_core_init(struct sdhci_host *host)
int s5p_sdhci_init(u32 regbase, int index, int bus_width) int s5p_sdhci_init(u32 regbase, int index, int bus_width)
{ {
struct sdhci_host *host = malloc(sizeof(struct sdhci_host)); struct sdhci_host *host = calloc(1, sizeof(struct sdhci_host));
if (!host) { if (!host) {
printf("sdhci__host malloc fail!\n"); printf("sdhci__host allocation fail!\n");
return 1; return 1;
} }
host->ioaddr = (void *)regbase; host->ioaddr = (void *)regbase;
...@@ -101,29 +101,31 @@ struct sdhci_host sdhci_host[SDHCI_MAX_HOSTS]; ...@@ -101,29 +101,31 @@ struct sdhci_host sdhci_host[SDHCI_MAX_HOSTS];
static int do_sdhci_init(struct sdhci_host *host) static int do_sdhci_init(struct sdhci_host *host)
{ {
int dev_id, flag; int dev_id, flag, ret;
int err = 0;
flag = host->bus_width == 8 ? PINMUX_FLAG_8BIT_MODE : PINMUX_FLAG_NONE; flag = host->bus_width == 8 ? PINMUX_FLAG_8BIT_MODE : PINMUX_FLAG_NONE;
dev_id = host->index + PERIPH_ID_SDMMC0; dev_id = host->index + PERIPH_ID_SDMMC0;
if (dm_gpio_is_valid(&host->pwr_gpio)) { if (dm_gpio_is_valid(&host->pwr_gpio)) {
dm_gpio_set_value(&host->pwr_gpio, 1); dm_gpio_set_value(&host->pwr_gpio, 1);
err = exynos_pinmux_config(dev_id, flag); ret = exynos_pinmux_config(dev_id, flag);
if (err) { if (ret) {
debug("MMC not configured\n"); debug("MMC not configured\n");
return err; return ret;
} }
} }
if (dm_gpio_is_valid(&host->cd_gpio)) { if (dm_gpio_is_valid(&host->cd_gpio)) {
if (dm_gpio_get_value(&host->cd_gpio)) ret = dm_gpio_get_value(&host->cd_gpio);
if (ret) {
debug("no SD card detected (%d)\n", ret);
return -ENODEV; return -ENODEV;
}
err = exynos_pinmux_config(dev_id, flag); ret = exynos_pinmux_config(dev_id, flag);
if (err) { if (ret) {
printf("external SD not configured\n"); printf("external SD not configured\n");
return err; return ret;
} }
} }
...@@ -170,7 +172,8 @@ static int sdhci_get_config(const void *blob, int node, struct sdhci_host *host) ...@@ -170,7 +172,8 @@ static int sdhci_get_config(const void *blob, int node, struct sdhci_host *host)
static int process_nodes(const void *blob, int node_list[], int count) static int process_nodes(const void *blob, int node_list[], int count)
{ {
struct sdhci_host *host; struct sdhci_host *host;
int i, node; int i, node, ret;
int failed = 0;
debug("%s: count = %d\n", __func__, count); debug("%s: count = %d\n", __func__, count);
...@@ -182,13 +185,22 @@ static int process_nodes(const void *blob, int node_list[], int count) ...@@ -182,13 +185,22 @@ static int process_nodes(const void *blob, int node_list[], int count)
host = &sdhci_host[i]; host = &sdhci_host[i];
if (sdhci_get_config(blob, node, host)) { ret = sdhci_get_config(blob, node, host);
printf("%s: failed to decode dev %d\n", __func__, i); if (ret) {
return -1; printf("%s: failed to decode dev %d (%d)\n", __func__, i, ret);
failed++;
continue;
}
ret = do_sdhci_init(host);
if (ret) {
printf("%s: failed to initialize dev %d (%d)\n", __func__, i, ret);
failed++;
} }
do_sdhci_init(host);
} }
return 0;
/* we only consider it an error when all nodes fail */
return (failed == count ? -1 : 0);
} }
int exynos_mmc_init(const void *blob) int exynos_mmc_init(const void *blob)
...@@ -200,8 +212,6 @@ int exynos_mmc_init(const void *blob) ...@@ -200,8 +212,6 @@ int exynos_mmc_init(const void *blob)
COMPAT_SAMSUNG_EXYNOS_MMC, node_list, COMPAT_SAMSUNG_EXYNOS_MMC, node_list,
SDHCI_MAX_HOSTS); SDHCI_MAX_HOSTS);
process_nodes(blob, node_list, count); return process_nodes(blob, node_list, count);
return 0;
} }
#endif #endif
...@@ -108,11 +108,13 @@ ...@@ -108,11 +108,13 @@
* 2. ROOT: - * 2. ROOT: -
*/ */
#define CONFIG_EXTRA_ENV_SETTINGS \ #define CONFIG_EXTRA_ENV_SETTINGS \
"loadkernel=fatload mmc ${mmcbootdev}:${mmcbootpart} ${kerneladdr} " \ "loadbootscript=load mmc ${mmcbootdev}:${mmcbootpart} ${scriptaddr} " \
"boot.scr\0" \
"loadkernel=load mmc ${mmcbootdev}:${mmcbootpart} ${kerneladdr} " \
"${kernelname}\0" \ "${kernelname}\0" \
"loadinitrd=fatload mmc ${mmcbootdev}:${mmcbootpart} ${initrdaddr} " \ "loadinitrd=load mmc ${mmcbootdev}:${mmcbootpart} ${initrdaddr} " \
"${initrdname}\0" \ "${initrdname}\0" \
"loaddtb=fatload mmc ${mmcbootdev}:${mmcbootpart} ${fdtaddr} " \ "loaddtb=load mmc ${mmcbootdev}:${mmcbootpart} ${fdtaddr} " \
"${fdtfile}\0" \ "${fdtfile}\0" \
"check_ramdisk=" \ "check_ramdisk=" \
"if run loadinitrd; then " \ "if run loadinitrd; then " \
...@@ -129,6 +131,9 @@ ...@@ -129,6 +131,9 @@
"kernel_args=" \ "kernel_args=" \
"setenv bootargs root=/dev/mmcblk${mmcrootdev}p${mmcrootpart}" \ "setenv bootargs root=/dev/mmcblk${mmcrootdev}p${mmcrootpart}" \
" rootwait ${console} ${opts}\0" \ " rootwait ${console} ${opts}\0" \
"boot_script=" \
"run loadbootscript;" \
"source ${scriptaddr}\0" \
"boot_fit=" \ "boot_fit=" \
"setenv kerneladdr 0x42000000;" \ "setenv kerneladdr 0x42000000;" \
"setenv kernelname Image.itb;" \ "setenv kernelname Image.itb;" \
...@@ -152,7 +157,9 @@ ...@@ -152,7 +157,9 @@
"run kernel_args;" \ "run kernel_args;" \
"bootz ${kerneladdr} ${initrd_addr} ${fdt_addr};\0" \ "bootz ${kerneladdr} ${initrd_addr} ${fdt_addr};\0" \
"autoboot=" \ "autoboot=" \
"if test -e mmc 0 Image.itb; then; " \ "if test -e mmc 0 boot.scr; then; " \
"run boot_script; " \
"elif test -e mmc 0 Image.itb; then; " \
"run boot_fit;" \ "run boot_fit;" \
"elif test -e mmc 0 zImage; then; " \ "elif test -e mmc 0 zImage; then; " \
"run boot_zimg;" \ "run boot_zimg;" \
...@@ -171,6 +178,7 @@ ...@@ -171,6 +178,7 @@
"consoleoff=set console console=ram; save; reset\0" \ "consoleoff=set console console=ram; save; reset\0" \
"initrdname=uInitrd\0" \ "initrdname=uInitrd\0" \
"initrdaddr=42000000\0" \ "initrdaddr=42000000\0" \
"scriptaddr=0x42000000\0" \
"fdtaddr=40800000\0" "fdtaddr=40800000\0"
/* I2C */ /* I2C */
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment