mmc: mediatek: add latch-ck support
some platform(eg.mt2701) does not support "stop clk fix", in this case, need set correct latch-ck to avoid crc error caused by stop clock block-internally. Signed-off-by: Chaotian Jing <chaotian.jing@mediatek.com> Tested-by: Sean Wang <sean.wang@mediatek.com> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
This commit is contained in:
Родитель
3c1a884436
Коммит
d17bb71c2c
|
@ -378,6 +378,7 @@ struct msdc_host {
|
|||
u32 sclk; /* SD/MS bus clock frequency */
|
||||
unsigned char timing;
|
||||
bool vqmmc_enabled;
|
||||
u32 latch_ck;
|
||||
u32 hs400_ds_delay;
|
||||
u32 hs200_cmd_int_delay; /* cmd internal delay for HS200/SDR104 */
|
||||
u32 hs400_cmd_int_delay; /* cmd internal delay for HS400 */
|
||||
|
@ -1661,6 +1662,8 @@ static int msdc_tune_data(struct mmc_host *mmc, u32 opcode)
|
|||
u32 tune_reg = host->dev_comp->pad_tune_reg;
|
||||
int i, ret;
|
||||
|
||||
sdr_set_field(host->base + MSDC_PATCH_BIT, MSDC_INT_DAT_LATCH_CK_SEL,
|
||||
host->latch_ck);
|
||||
sdr_clr_bits(host->base + MSDC_IOCON, MSDC_IOCON_DSPL);
|
||||
sdr_clr_bits(host->base + MSDC_IOCON, MSDC_IOCON_W_DSPL);
|
||||
for (i = 0 ; i < PAD_DELAY_MAX; i++) {
|
||||
|
@ -1773,6 +1776,9 @@ static const struct mmc_host_ops mt_msdc_ops = {
|
|||
static void msdc_of_property_parse(struct platform_device *pdev,
|
||||
struct msdc_host *host)
|
||||
{
|
||||
of_property_read_u32(pdev->dev.of_node, "mediatek,latch-ck",
|
||||
&host->latch_ck);
|
||||
|
||||
of_property_read_u32(pdev->dev.of_node, "hs400-ds-delay",
|
||||
&host->hs400_ds_delay);
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче