Skip to content
Snippets Groups Projects
Commit 94c08a20 authored by Jerry Huang's avatar Jerry Huang Committed by Wolfgang Denk
Browse files

fsl_esdhc: Use mmc_set_clock to set initial speed


After booting the u-boot, and first using some SD card (such as Sandisk 2G SD
card), because the field 'clock' of struct mmc is zero, this will cause
the read transfer is always active and SDHC DATA line is always active,
therefore, driver can't handle the next command.

Therefore, we use mmc_set_clock to setup both the data structure and HW
to the initial clock speed of 400000Hz.

Signed-off-by: default avatarJerry Huang <Chang-Ming.Huang@freescale.com>
Tested-by: default avatarStefano Babic <sbabic@denx.de>
Signed-off-by: default avatarKumar Gala <galak@kernel.crashing.org>
parent 73c65e0e
No related branches found
No related tags found
No related merge requests found
......@@ -398,7 +398,7 @@ static int esdhc_init(struct mmc *mmc)
esdhc_write32(&regs->sysctl, SYSCTL_HCKEN | SYSCTL_IPGEN);
/* Set the initial clock speed */
set_sysctl(mmc, 400000);
mmc_set_clock(mmc, 400000);
/* Disable the BRR and BWR bits in IRQSTAT */
esdhc_clrbits32(&regs->irqstaten, IRQSTATEN_BRR | IRQSTATEN_BWR);
......
/*
* Copyright 2008, Freescale Semiconductor, Inc
* Copyright 2008,2010 Freescale Semiconductor, Inc
* Andy Fleming
*
* Based (loosely) on the Linux code
......@@ -280,6 +280,7 @@ int mmc_register(struct mmc *mmc);
int mmc_initialize(bd_t *bis);
int mmc_init(struct mmc *mmc);
int mmc_read(struct mmc *mmc, u64 src, uchar *dst, int size);
void mmc_set_clock(struct mmc *mmc, uint clock);
struct mmc *find_mmc_device(int dev_num);
int mmc_set_dev(int dev_num);
void print_mmc_devices(char separator);
......
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