ARM: SPL: Make spl_mmc.c more generic

Move the default omap/related-centric board_mmc_init to
arch/arm/cpu/armv7/omap-common/boot-common.c and move the type defines
to <asm/spl.h>.  Also use mmc->read_bl_len rather than MMCSD_SECTOR_SIZE

Signed-off-by: Tom Rini <trini@ti.com>
This commit is contained in:
Tom Rini 2012-08-14 10:25:15 -07:00
parent 55cdbb8d4e
commit f0881250f9
5 changed files with 38 additions and 26 deletions

View File

@ -17,8 +17,10 @@
*/
#include <common.h>
#include <asm/spl.h>
#include <asm/omap_common.h>
#include <asm/arch/omap.h>
#include <asm/arch/mmc_host_def.h>
/*
* This is used to verify if the configuration header
@ -46,4 +48,18 @@ u32 spl_boot_mode(void)
{
return omap_bootmode;
}
int board_mmc_init(bd_t *bis)
{
switch (spl_boot_device()) {
case BOOT_DEVICE_MMC1:
omap_mmc_init(0, 0, 0);
break;
case BOOT_DEVICE_MMC2:
case BOOT_DEVICE_MMC2_2:
omap_mmc_init(1, 0, 0);
break;
}
return 0;
}
#endif

View File

@ -26,31 +26,12 @@
#include <asm/spl.h>
#include <asm/u-boot.h>
#include <asm/utils.h>
#include <asm/arch/sys_proto.h>
#include <mmc.h>
#include <fat.h>
#include <version.h>
#include <asm/omap_common.h>
#include <asm/arch/mmc_host_def.h>
DECLARE_GLOBAL_DATA_PTR;
#ifdef CONFIG_GENERIC_MMC
int board_mmc_init(bd_t *bis)
{
switch (spl_boot_device()) {
case BOOT_DEVICE_MMC1:
omap_mmc_init(0, 0, 0);
break;
case BOOT_DEVICE_MMC2:
case BOOT_DEVICE_MMC2_2:
omap_mmc_init(1, 0, 0);
break;
}
return 0;
}
#endif
static void mmc_load_image_raw(struct mmc *mmc)
{
u32 image_size_sectors, err;
@ -70,8 +51,8 @@ static void mmc_load_image_raw(struct mmc *mmc)
spl_parse_image_header(header);
/* convert size to sectors - round up */
image_size_sectors = (spl_image.size + MMCSD_SECTOR_SIZE - 1) /
MMCSD_SECTOR_SIZE;
image_size_sectors = (spl_image.size + mmc->read_bl_len - 1) /
mmc->read_bl_len;
/* Read the header too to avoid extra memcpy */
err = mmc->block_dev.block_read(0,

View File

@ -41,6 +41,7 @@
#include <asm/arch/gpio.h>
#include <asm/spl.h>
#include <asm/omap_common.h>
#include <asm/arch/mmc_host_def.h>
#include <i2c.h>
#include <linux/compiler.h>
@ -89,6 +90,20 @@ u32 spl_boot_device(void)
return omap3_boot_device;
}
int board_mmc_init(bd_t *bis)
{
switch (spl_boot_device()) {
case BOOT_DEVICE_MMC1:
omap_mmc_init(0, 0, 0);
break;
case BOOT_DEVICE_MMC2:
case BOOT_DEVICE_MMC2_2:
omap_mmc_init(1, 0, 0);
break;
}
return 0;
}
void spl_board_init(void)
{
#ifdef CONFIG_SPL_I2C_SUPPORT

View File

@ -34,11 +34,6 @@
#define OMAP_INIT_CONTEXT_UBOOT_AFTER_SPL 2
#define OMAP_INIT_CONTEXT_UBOOT_AFTER_CH 3
/* Boot type */
#define MMCSD_MODE_UNDEFINED 0
#define MMCSD_MODE_RAW 1
#define MMCSD_MODE_FAT 2
static inline u32 omap_revision(void)
{
extern u32 *const omap_si_rev;

View File

@ -26,6 +26,11 @@
/* Platform-specific defines */
#include <asm/arch/spl.h>
/* Boot type */
#define MMCSD_MODE_UNDEFINED 0
#define MMCSD_MODE_RAW 1
#define MMCSD_MODE_FAT 2
struct spl_image_info {
const char *name;
u8 os;