Merge branch 'master' of git://git.denx.de/u-boot-samsung
This commit is contained in:
commit
a7e2c6f6bb
@ -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)
|
||||
{
|
||||
struct sdhci_host *host = malloc(sizeof(struct sdhci_host));
|
||||
struct sdhci_host *host = calloc(1, sizeof(struct sdhci_host));
|
||||
if (!host) {
|
||||
printf("sdhci__host malloc fail!\n");
|
||||
printf("sdhci__host allocation fail!\n");
|
||||
return 1;
|
||||
}
|
||||
host->ioaddr = (void *)regbase;
|
||||
@ -101,29 +101,31 @@ struct sdhci_host sdhci_host[SDHCI_MAX_HOSTS];
|
||||
|
||||
static int do_sdhci_init(struct sdhci_host *host)
|
||||
{
|
||||
int dev_id, flag;
|
||||
int err = 0;
|
||||
int dev_id, flag, ret;
|
||||
|
||||
flag = host->bus_width == 8 ? PINMUX_FLAG_8BIT_MODE : PINMUX_FLAG_NONE;
|
||||
dev_id = host->index + PERIPH_ID_SDMMC0;
|
||||
|
||||
if (dm_gpio_is_valid(&host->pwr_gpio)) {
|
||||
dm_gpio_set_value(&host->pwr_gpio, 1);
|
||||
err = exynos_pinmux_config(dev_id, flag);
|
||||
if (err) {
|
||||
ret = exynos_pinmux_config(dev_id, flag);
|
||||
if (ret) {
|
||||
debug("MMC not configured\n");
|
||||
return err;
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
err = exynos_pinmux_config(dev_id, flag);
|
||||
if (err) {
|
||||
ret = exynos_pinmux_config(dev_id, flag);
|
||||
if (ret) {
|
||||
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)
|
||||
static int process_nodes(const void *blob, int node_list[], int count)
|
||||
{
|
||||
struct sdhci_host *host;
|
||||
int i, node;
|
||||
int i, node, ret;
|
||||
int failed = 0;
|
||||
|
||||
debug("%s: count = %d\n", __func__, count);
|
||||
|
||||
@ -182,13 +185,22 @@ static int process_nodes(const void *blob, int node_list[], int count)
|
||||
|
||||
host = &sdhci_host[i];
|
||||
|
||||
if (sdhci_get_config(blob, node, host)) {
|
||||
printf("%s: failed to decode dev %d\n", __func__, i);
|
||||
return -1;
|
||||
ret = sdhci_get_config(blob, node, host);
|
||||
if (ret) {
|
||||
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)
|
||||
@ -200,8 +212,6 @@ int exynos_mmc_init(const void *blob)
|
||||
COMPAT_SAMSUNG_EXYNOS_MMC, node_list,
|
||||
SDHCI_MAX_HOSTS);
|
||||
|
||||
process_nodes(blob, node_list, count);
|
||||
|
||||
return 0;
|
||||
return process_nodes(blob, node_list, count);
|
||||
}
|
||||
#endif
|
||||
|
@ -108,11 +108,13 @@
|
||||
* 2. ROOT: -
|
||||
*/
|
||||
#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" \
|
||||
"loadinitrd=fatload mmc ${mmcbootdev}:${mmcbootpart} ${initrdaddr} " \
|
||||
"loadinitrd=load mmc ${mmcbootdev}:${mmcbootpart} ${initrdaddr} " \
|
||||
"${initrdname}\0" \
|
||||
"loaddtb=fatload mmc ${mmcbootdev}:${mmcbootpart} ${fdtaddr} " \
|
||||
"loaddtb=load mmc ${mmcbootdev}:${mmcbootpart} ${fdtaddr} " \
|
||||
"${fdtfile}\0" \
|
||||
"check_ramdisk=" \
|
||||
"if run loadinitrd; then " \
|
||||
@ -129,6 +131,9 @@
|
||||
"kernel_args=" \
|
||||
"setenv bootargs root=/dev/mmcblk${mmcrootdev}p${mmcrootpart}" \
|
||||
" rootwait ${console} ${opts}\0" \
|
||||
"boot_script=" \
|
||||
"run loadbootscript;" \
|
||||
"source ${scriptaddr}\0" \
|
||||
"boot_fit=" \
|
||||
"setenv kerneladdr 0x42000000;" \
|
||||
"setenv kernelname Image.itb;" \
|
||||
@ -152,7 +157,9 @@
|
||||
"run kernel_args;" \
|
||||
"bootz ${kerneladdr} ${initrd_addr} ${fdt_addr};\0" \
|
||||
"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;" \
|
||||
"elif test -e mmc 0 zImage; then; " \
|
||||
"run boot_zimg;" \
|
||||
@ -171,6 +178,7 @@
|
||||
"consoleoff=set console console=ram; save; reset\0" \
|
||||
"initrdname=uInitrd\0" \
|
||||
"initrdaddr=42000000\0" \
|
||||
"scriptaddr=0x42000000\0" \
|
||||
"fdtaddr=40800000\0"
|
||||
|
||||
/* I2C */
|
||||
|
Loading…
Reference in New Issue
Block a user