diff options
Diffstat (limited to 'packages/uboot/u-boot-mkimage-openmoko-native/mmcinit-power-up.patch')
-rw-r--r-- | packages/uboot/u-boot-mkimage-openmoko-native/mmcinit-power-up.patch | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/mmcinit-power-up.patch b/packages/uboot/u-boot-mkimage-openmoko-native/mmcinit-power-up.patch new file mode 100644 index 0000000000..fcf54b9fd1 --- /dev/null +++ b/packages/uboot/u-boot-mkimage-openmoko-native/mmcinit-power-up.patch @@ -0,0 +1,73 @@ +board/neo1973/neo1973.c (board_late_init): moved MMC power-up to separate + function +cpu/arm920t/s3c24x0/mmc.c (mmc_init): call mmc_power_up and return -ENODEV + immediately if there is no card + +- Werner Almesberger <werner@openmoko.org> + +Index: u-boot/board/neo1973/neo1973.c +=================================================================== +--- u-boot.orig/board/neo1973/neo1973.c ++++ u-boot/board/neo1973/neo1973.c +@@ -223,6 +223,19 @@ int board_init (void) + return 0; + } + ++int mmc_power_up(void) ++{ ++#if defined(CONFIG_ARCH_GTA01B_v4) ++ S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO(); ++ ++ /* check if sd card is inserted, and power-up if it is */ ++ if (gpio->GPFDAT & (1 << 5)) ++ return 0; ++ gpio->GPBDAT &= ~(1 << 2); ++#endif /* !CONFIG_ARCH_GTA01B_v4 */ ++ return 1; ++} ++ + int board_late_init(void) + { + unsigned char tmp; +@@ -289,14 +302,8 @@ continue_boot: + /* switch on the backlight */ + neo1973_backlight(1); + +-#if defined(CONFIG_ARCH_GTA01B_v4) +- { +- /* check if sd card is inserted, and power-up if it is */ +- S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO(); +- if (!(gpio->GPFDAT & (1 << 5))) +- gpio->GPBDAT &= ~(1 << 2); +- } +-#endif ++ /* check if sd card is inserted, and power-up if it is */ ++ mmc_power_up(); + + return 0; + } +Index: u-boot/cpu/arm920t/s3c24x0/mmc.c +=================================================================== +--- u-boot.orig/cpu/arm920t/s3c24x0/mmc.c ++++ u-boot/cpu/arm920t/s3c24x0/mmc.c +@@ -381,6 +381,11 @@ static void print_sd_cid(const struct sd + cid->crc >> 1, cid->crc & 1); + } + ++int __attribute__((weak)) mmc_power_up(void) ++{ ++ return 1; ++} ++ + int mmc_init(int verbose) + { + int retries, rc = -ENODEV; +@@ -393,6 +398,8 @@ int mmc_init(int verbose) + debug("mmc_init(PCLK=%u)\n", get_PCLK()); + + clk_power->CLKCON |= (1 << 9); ++ if (!mmc_power_up()) ++ return -ENODEV; + + /* S3C2410 has some bug that prevents reliable operation at higher speed */ + //sdi->SDIPRE = 0x3e; /* SDCLK = PCLK/2 / (SDIPRE+1) = 396kHz */ |