Re: [patch]: sdhci support emmc ddr50 mode [v3]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Dec 21, 2010, at 6:24 PM, zhangfei gao wrote:

> On Wed, Dec 22, 2010 at 6:41 AM, Philip Rakity <prakity@xxxxxxxxxxx> wrote:
>>
>> On Dec 21, 2010, at 1:34 PM, Philip Rakity wrote:
>>
>>>
>>> On Dec 21, 2010, at 4:37 AM, zhangfei gao wrote:
>>>
>>>> v3: sync to mmc-next
>>>>
>>>> Emmc speed could double if using ddr50 mode, help check
>>>>
>>>> From 895c3d15a200d5f5803f992dab46ff114ad26f90 Mon Sep 17 00:00:00 2001
>>>> From: Zhangfei Gao <zhangfei.gao@xxxxxxxxxxx>
>>>> Date: Tue, 21 Dec 2010 19:51:38 -0500
>>>> Subject: [PATCH] mmc: sdhci support emmc ddr50 mode
>>>>
>>>>     1. spec sdhc 3.0 does not claim support 1.2v ddr mode
>>>>     2. Call back function set_power is added, since some controller count
>>>> on external pmic to provide power
>>>>     3. According to spec sdhc 3.0, uhs mode, including emmc ddr50 takes
>>>> effect only when 1.8v Signaling Enable bit, which used for providing
>>>> 1.8v.
>>>>        So emmc ddr50 mode works after 1.8v switching process, though emmc
>>>> ddr50 could work at high voltage such as 3.3v if external pmic provide
>>>> voltage.
>>>>        Limitation: emmc ddr50 mode only workable when both host and emmc
>>>> card support 1.70-1.90v
>>>>     4. According to JESD84, power down and power up is required to
>>>> provide low voltage 1.70-1.90v to mmc.
>>>>
>>>>     Verified: toshiba emmc on mmp2, with io voltage at 1.8v provided by
>>>> external pmic.
>>>>
>>>> Signed-off-by: Zhangfei Gao <zhangfei.gao@xxxxxxxxxxx>
>>>> ---
>>>> drivers/mmc/core/core.c  |   13 +++++++++++++
>>>> drivers/mmc/core/core.h  |    1 +
>>>> drivers/mmc/core/mmc.c   |    6 +++++-
>>>> drivers/mmc/host/sdhci.c |   44 +++++++++++++++++++++++++++++++++++++++++---
>>>> drivers/mmc/host/sdhci.h |   14 +++++++++++++-
>>>> 5 files changed, 73 insertions(+), 5 deletions(-)
>>>>
>>>> diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
>>>> index a8e89f3..fd657f1 100644
>>>> --- a/drivers/mmc/core/core.c
>>>> +++ b/drivers/mmc/core/core.c
>>>> @@ -1012,6 +1012,19 @@ static void mmc_power_off(struct mmc_host *host)
>>>> }
>>>>
>>>> /*
>>>> + * mmc select low voltage 1.70-1.95v
>>>> + */
>>>> +void mmc_select_low_voltage(struct mmc_host *host, u32 ocr)
>>>> +{
>>>> +     if (!(ocr & MMC_VDD_165_195))
>>>> +             return;
>>>> +
>>>> +     mmc_power_off(host);
>>>> +     host->ocr = ocr & host->ocr_avail;
>>>> +     mmc_power_up(host);
>>>> +}
>>>> +
>>>> +/*
>>>> * Cleanup when the last reference to the bus operator is dropped.
>>>> */
>>>> static void __mmc_release_bus(struct mmc_host *host)
>>>> diff --git a/drivers/mmc/core/core.h b/drivers/mmc/core/core.h
>>>> index 026c975..b05c20a 100644
>>>> --- a/drivers/mmc/core/core.h
>>>> +++ b/drivers/mmc/core/core.h
>>>> @@ -41,6 +41,7 @@ void mmc_set_bus_width(struct mmc_host *host,
>>>> unsigned int width);
>>>> void mmc_set_bus_width_ddr(struct mmc_host *host, unsigned int width,
>>>>                        unsigned int ddr);
>>>> u32 mmc_select_voltage(struct mmc_host *host, u32 ocr);
>>>> +void mmc_select_low_voltage(struct mmc_host *host, u32 ocr);
>>>> void mmc_set_timing(struct mmc_host *host, unsigned int timing);
>>>>
>>>> static inline void mmc_delay(unsigned int ms)
>>>> diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c
>>>> index 86cac0d..8779339 100644
>>>> --- a/drivers/mmc/core/mmc.c
>>>> +++ b/drivers/mmc/core/mmc.c
>>>> @@ -790,7 +790,11 @@ int mmc_attach_mmc(struct mmc_host *host, u32 ocr)
>>>>             ocr &= ~0x7F;
>>>>     }
>>>>
>>>> -     host->ocr = mmc_select_voltage(host, ocr);
>>>> +     if ((ocr & MMC_VDD_165_195)
>>>> +                     && (host->ocr_avail & MMC_VDD_165_195))
>>>> +             mmc_select_low_voltage(host, ocr);
>>>> +     else
>>>> +             host->ocr = mmc_select_voltage(host, ocr);
>>>>
>>>>     /*
>>>>      * Can we support the voltage of the card?
>>>> diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
>>>> index d5febe5..aafbb42 100644
>>>> --- a/drivers/mmc/host/sdhci.c
>>>> +++ b/drivers/mmc/host/sdhci.c
>>>> @@ -986,6 +986,22 @@ static void sdhci_finish_command(struct sdhci_host *host)
>>>>     host->cmd = NULL;
>>>> }
>>>>
>>>> +static void sdhci_set_ddr(struct sdhci_host *host, unsigned int ddr)
>>>> +{
>>>> +     u16 con;
>>>> +
>>>> +     if (ddr == MMC_SDR_MODE)
>>>> +             return;
>>>> +
>>>> +     con = sdhci_readw(host, SDHCI_HOST_CONTROL2);
>>>> +     if (con & SDHCI_CTRL2_1_8V) {
>>>> +             con &= ~SDHCI_CTRL2_UHS_MASK;
>>>> +             if (ddr & MMC_1_8V_DDR_MODE)
>>>> +                     con |= SDHCI_CTRL2_DDR50;
>>>> +             sdhci_writew(host, con, SDHCI_HOST_CONTROL2);
>>>> +     }
>>>> +}
>>>> +
>>>> static void sdhci_set_clock(struct sdhci_host *host, unsigned int clock)
>>>> {
>>>>     int div;
>>>> @@ -1084,6 +1100,18 @@ static void sdhci_set_power(struct sdhci_host
>>>> *host, unsigned short power)
>>>>             return;
>>>>     }
>>>>
>>>> +     if ((pwr == SDHCI_POWER_180) &&
>>>> +             (host->mmc->caps & MMC_CAP_1_8V_DDR)) {
>>>> +             u16 con;
>>>> +
>>>> +             con = sdhci_readw(host, SDHCI_HOST_CONTROL2);
>>>> +             con |= SDHCI_CTRL2_1_8V;
>>>> +             sdhci_writew(host, con, SDHCI_HOST_CONTROL2);
>>>> +
>>>> +             if (host->ops->set_power)
>>>> +                     host->ops->set_power(host, pwr);
>>>> +     }
>>>> +
>>>>     /*
>>>>      * Spec says that we should clear the power reg before setting
>>>>      * a new value. Some controllers don't seem to like this though.
>>>> @@ -1180,6 +1208,7 @@ static void sdhci_set_ios(struct mmc_host *mmc,
>>>> struct mmc_ios *ios)
>>>>     }
>>>>
>>>>     sdhci_set_clock(host, ios->clock);
>>>> +     sdhci_set_ddr(host, ios->ddr);
>>>>
>>>>     if (ios->power_mode == MMC_POWER_OFF)
>>>>             sdhci_set_power(host, -1);
>>>> @@ -1744,7 +1773,7 @@ EXPORT_SYMBOL_GPL(sdhci_alloc_host);
>>>> int sdhci_add_host(struct sdhci_host *host)
>>>> {
>>>>     struct mmc_host *mmc;
>>>> -     unsigned int caps, ocr_avail;
>>>> +     unsigned int caps, caps_h = 0, ocr_avail;
>>>>     int ret;
>>>>
>>>>     WARN_ON(host == NULL);
>>>> @@ -1767,8 +1796,17 @@ int sdhci_add_host(struct sdhci_host *host)
>>>>                     host->version);
>>>>     }
>>>>
>>>> -     caps = (host->quirks & SDHCI_QUIRK_MISSING_CAPS) ? host->caps :
>>>> -             sdhci_readl(host, SDHCI_CAPABILITIES);
>>>> +     if (host->quirks & SDHCI_QUIRK_MISSING_CAPS)
>>>> +             caps = host->caps;
>>>> +     else {
>>>> +             caps = sdhci_readl(host, SDHCI_CAPABILITIES);
>>>> +             caps_h = sdhci_readl(host, SDHCI_CAPABILITIES_1);
>>>> +     }
>>>> +
>>>> +     if (caps & SDHCI_CAN_VDD_180) {
>>>> +             if (caps_h & SDHCI_CAN_SDR50)
>>>> +                     mmc->caps |= (MMC_CAP_1_8V_DDR);
>>>> +     }
>>>>
>>>>     if (host->quirks & SDHCI_QUIRK_FORCE_DMA)
>>>>             host->flags |= SDHCI_USE_SDMA;
>>>> diff --git a/drivers/mmc/host/sdhci.h b/drivers/mmc/host/sdhci.h
>>>> index 6e0969e..c4bd5dd 100644
>>>> --- a/drivers/mmc/host/sdhci.h
>>>> +++ b/drivers/mmc/host/sdhci.h
>>>> @@ -145,7 +145,14 @@
>>>>
>>>> #define SDHCI_ACMD12_ERR      0x3C
>>>>
>>>> -/* 3E-3F reserved */
>>>> +#define SDHCI_HOST_CONTROL2  0x3E
>>>> +#define  SDHCI_CTRL2_UHS_MASK        0x0007
>>>> +#define   SDHCI_CTRL2_SDR12  0x0000
>>>> +#define   SDHCI_CTRL2_SDR25  0x0001
>>>> +#define   SDHCI_CTRL2_SDR50  0x0002
>>>> +#define   SDHCI_CTRL2_SDR104 0x0003
>>>> +#define   SDHCI_CTRL2_DDR50  0x0004
>>>> +#define  SDHCI_CTRL2_1_8V    0x0008
>>>>
>>>> #define SDHCI_CAPABILITIES    0x40
>>>> #define  SDHCI_TIMEOUT_CLK_MASK       0x0000003F
>>>> @@ -167,6 +174,9 @@
>>>> #define  SDHCI_CAN_64BIT      0x10000000
>>>>
>>>> #define SDHCI_CAPABILITIES_1  0x44
>>>> +#define  SDHCI_CAN_SDR50     0x00000001
>>>> +#define  SDHCI_CAN_SDR104    0x00000002
>>>> +#define  SDHCI_CAN_DDR50     0x00000004
>>>>
>>>> #define SDHCI_MAX_CURRENT     0x48
>>>>
>>>> @@ -222,6 +232,8 @@ struct sdhci_ops {
>>>>     void (*platform_send_init_74_clocks)(struct sdhci_host *host,
>>>>                                          u8 power_mode);
>>>>     unsigned int    (*get_ro)(struct sdhci_host *host);
>>>> +     unsigned int    (*set_power)(struct sdhci_host *host,
>>>> +                             unsigned short power);
>>>> };
>>>>
>>>> #ifdef CONFIG_MMC_SDHCI_IO_ACCESSORS
>>>> --
>>>> 1.7.0.4
>>>> <0001-mmc-sdhci-support-emmc-ddr50-mode.patch>
>>>
>>>
>>>
>>> Does not work for me on mmp2 using linux next.  Partition table not found
>>> trace below
>>> Loading: #################################################################
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>        ########################################################
>>> done
>>> Bytes transferred = 1766924 (1af60c hex)
>>> MMP2>> boot
>>> Ready to boot zImage from 1100000
>>>
>>>
>>> Starting kernel ...
>>>
>>> [    0.000000] Linux version 2.6.37-rc6-next-20101220-00022-g8b35e00-dirty (root@philip-laptop) (gcc version 4.2.0 20070413 (prerelease) (CodeSourcery 2007q1-10. Marvell 2009q3-18 20090821)) #51 PREEMPT Tu0
>>> [    0.000000] CPU: Marvell PJ4 processor [560f5815] revision 5 (ARMv7), cr=00c5387f
>>> [    0.000000] CPU: VIPT nonaliasing data cache, VIPT aliasing instruction cache
>>> [    0.000000] Machine: Brownstone Development Platform
>>> [    0.000000] Ignoring unrecognised tag 0x41000403
>>> [    0.000000] Memory policy: ECC disabled, Data cache writeback
>>> [    0.000000] On node 0 totalpages: 131072
>>> [    0.000000] free_area_init_node: node 0, pgdat c03713d0, node_mem_map c0390000
>>> [    0.000000]   Normal zone: 1024 pages used for memmap
>>> [    0.000000]   Normal zone: 0 pages reserved
>>> [    0.000000]   Normal zone: 130048 pages, LIFO batch:31
>>> [    0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
>>> [    0.000000] pcpu-alloc: [0] 0
>>> [    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 130048
>>> [    0.000000] Kernel command line: debug rootdelay=15 root=/dev/mmcblk0p1 rootfstype=ext3 console=ttyS2,38400 mem=512M uart_dma mbr_offset=0x4800
>>> [    0.000000] PID hash table entries: 2048 (order: 1, 8192 bytes)
>>> [    0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
>>> [    0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
>>> [    0.000000] Memory: 512MB = 512MB total
>>> [    0.000000] Memory: 516108k/516108k available, 8180k reserved, 0K highmem
>>> [    0.000000] Virtual kernel memory layout:
>>> [    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
>>> [    0.000000]     fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
>>> [    0.000000]     DMA     : 0xffc00000 - 0xffe00000   (   2 MB)
>>> [    0.000000]     vmalloc : 0xe0800000 - 0xfe000000   ( 472 MB)
>>> [    0.000000]     lowmem  : 0xc0000000 - 0xe0000000   ( 512 MB)
>>> [    0.000000]     modules : 0xbf000000 - 0xc0000000   (  16 MB)
>>> [    0.000000]       .init : 0xc0008000 - 0xc001f000   (  92 kB)
>>> [    0.000000]       .text : 0xc001f000 - 0xc0354004   (3285 kB)
>>> [    0.000000]       .data : 0xc0356000 - 0xc0372c40   ( 116 kB)
>>> [    0.000000] Preemptable hierarchical RCU implementation.
>>> [    0.000000]  RCU-based detection of stalled CPUs is disabled.
>>> [    0.000000]  Verbose stalled-CPUs detection is disabled.
>>> [    0.000000] NR_IRQS:320 nr_irqs:360 360
>>> [    0.000000] sched_clock: 32 bits at 6MHz, resolution 153ns, wraps every 660764ms
>>> [    0.000000] Console: colour dummy device 80x30
>>> [    0.000023] Calibrating delay loop... 796.26 BogoMIPS (lpj=3981312)
>>> [    0.220162] pid_max: default: 32768 minimum: 301
>>> [    0.220323] Mount-cache hash table entries: 512
>>> [    0.220629] CPU: Testing write buffer coherency: ok
>>> [    0.224390] print_constraints: dummy: regulator:
>>> [    0.224390] NET: Registered protocol family 16
>>> [    0.224518] Tauros2: Disabling L2 prefetch.
>>> [    0.224560] Tauros2: L2 cache support initialised in ARMv6 mode.
>>> [    0.227660] bio: create slab <bio-0> at 0
>>> [    0.228859] Switching to clocksource clocksource
>>> [    0.233823] NET: Registered protocol family 2
>>> [    0.233966] IP route cache hash table entries: 4096 (order: 2, 16384 bytes)
>>> [    0.234294] TCP established hash table entries: 16384 (order: 5, 131072 bytes)
>>> [    0.234544] TCP bind hash table entries: 16384 (order: 4, 65536 bytes)
>>> [    0.234544] TCP: Hash tables configured (established 16384 bind 16384)
>>> [    0.234661] TCP reno registered
>>> [    0.234674] UDP hash table entries: 256 (order: 0, 4096 bytes)
>>> [    0.234688] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
>>> [    0.234868] NET: Registered protocol family 1
>>> [    0.235278] RPC: Registered udp transport module.
>>> [    0.235278] RPC: Registered tcp transport module.
>>> [    0.235295] RPC: Registered tcp NFSv4.1 backchannel transport module.
>>> [    0.237007] JFFS2 version 2.2. (NAND) .. 2001-2006 Red Hat, Inc.
>>> [    0.237253] msgmni has been set to 1008
>>> [    0.237921] io scheduler noop registered
>>> [    0.237937] io scheduler deadline registered
>>> [    0.237937] io scheduler cfq registered (default)
>>> [    0.238510] pxa2xx-uart.0: ttyS0 at MMIO 0xd4030000 (irq = 27) is a FFUART
>>> [    0.238510] pxa2xx-uart.2: ttyS2 at MMIO 0xd4018000 (irq = 24) is a STUART
>>> [    1.352386] console [ttyS2] enabled
>>> [    1.363462] mousedev: PS/2 mouse device common for all mice
>>> [    1.380052] sdhci: Secure Digital Host Controller Interface driver
>>> [    1.398589] sdhci: Copyright(c) Pierre Ossman
>>> [    1.411584] set_clock_and_burst_size:mmc0: adjust = 1
>>> [    1.426715] set_clock_and_burst_size:mmc0: (B) SD_CLOCK_AND_BURST = 00C5, delay = 15, sel = 1
>>> [    1.452068] set_clock_and_burst_size:mmc0: (A) SD_CLOCK_AND_BURST_SIZE_SETUP = 1FC5
>>> [    1.474880] mmc0: no vmmc regulator found
>>> [    1.486806] set_clock_and_burst_size:mmc0: adjust = 1
>>> [    1.501827] set_clock_and_burst_size:mmc0: (B) SD_CLOCK_AND_BURST = 00C5, delay = 15, sel = 1
>>> [    1.527204] set_clock_and_burst_size:mmc0: (A) SD_CLOCK_AND_BURST_SIZE_SETUP = 1FC5
>>> [    1.549982] sdhci: =========== REGISTER DUMP (mmc0)===========
>>> [    1.567313] sdhci: Sys addr: 0x00000000 | Version:  0x00000002
>>> [    1.584666] sdhci: Blk size: 0x00000000 | Blk cnt:  0x00000000
>>> [    1.602003] sdhci: Argument: 0x00000000 | Trn mode: 0x00000000
>>> [    1.619344] sdhci: Present:  0x01fa0000 | Host ctl: 0x00000000
>>> [    1.636685] sdhci: Power:    0x00000000 | Blk gap:  0x00000000
>>> [    1.654029] sdhci: Wake-up:  0x00000000 | Clock:    0x00000000
>>> [    1.671373] sdhci: Timeout:  0x00000000 | Int stat: 0x00000000
>>> [    1.688713] sdhci: Int enab: 0x00ff0003 | Sig enab: 0x00ff0003
>>> [    1.706058] sdhci: AC12 err: 0x00000000 | Slot int: 0x00000000
>>> [    1.723399] sdhci: Caps:     0x25fcc8b2 | Caps_1:   0x00002f77
>>> [    1.740741] sdhci: Cmd:      0x00000000 | Max curr: 0x00000000
>>> [    1.758081] sdhci: ADMA Err: 0x00000000 | ADMA Ptr: 0x00000000
>>> [    1.775432] sdhci: ===========================================
>>> [    1.792896] mmc_power_off:mmc0: ENTER
>>> [    1.803799] mmc0: clock 0Hz busmode 1 powermode 0 cs 0 Vdd 0 width 0 timing 0
>>> [    1.825042] set_clock_and_burst_size:mmc0: adjust = 1
>>> [    1.825042] set_clock_and_burst_size:mmc0: (B) SD_CLOCK_AND_BURST = 00C5, delay = 15, sel = 1
>>> [    1.840029] set_clock_and_burst_size:mmc0: (A) SD_CLOCK_AND_BURST_SIZE_SETUP = 1FC5
>>> [    1.888227] mmc0: SDHCI controller on MMC [sdhci-pxa.2] using ADMA
>>> [    1.906642] mmc0: mmc_rescan: trying to init card at 400000 Hz
>>> [    1.924028] mmc_power_up:mmc0: ENTER
>>> [    1.934670] mmc0: clock 0Hz busmode 1 powermode 1 cs 0 Vdd 21 width 0 timing 0
>>> [    1.956225] set_clock_and_burst_size:mmc1: adjust = 1
>>> [    1.971333] mmc0: clock 400000Hz busmode 1 powermode 2 cs 0 Vdd 21 width 0 timing 0
>>> [    1.994208] generate_initial_74_clocks:mmc0 ENTER: slot->power_mode = 1,ios->power_mode = 2
>>> [    2.019862] set_clock_and_burst_size:mmc1: (B) SD_CLOCK_AND_BURST = 00C5, delay = 31, sel = 1
>>> [    2.045262] mmc0: clock 400000Hz busmode 1 powermode 2 cs 0 Vdd 21 width 0 timing 0
>>> [    2.068038] mmc0: starting CMD52 arg 00000c00 flags 00000195
>>> [    2.084902] set_clock_and_burst_size:mmc1: (A) SD_CLOCK_AND_BURST_SIZE_SETUP = 3FC5
>>> [    2.107679] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00018000
>>> [    2.126336] mmc0: req done (CMD52): -110: 00000000 00000000 00000000 00000000
>>> [    2.147563] mmc0: starting CMD52 arg 80000c08 flags 00000195
>>> [    2.164426] mmc1: no vmmc regulator found
>>> [    2.176382] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00018000
>>> [    2.195017] mmc0: req done (CMD52): -110: 00000000 00000000 00000000 00000000
>>> [    2.216291] mmc0: clock 400000Hz busmode 1 powermode 2 cs 1 Vdd 21 width 0 timing 0
>>> [    2.239066] mmc0: starting CMD0 arg 00000000 flags 000000c0
>>> [    2.256653] set_clock_and_burst_size:mmc1: adjust = 1
>>> [    2.271682] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001
>>> [    2.290309] mmc0: req done (CMD0): 0: 00000000 00000000 00000000 00000000
>>> [    2.310497] mmc0: clock 400000Hz busmode 1 powermode 2 cs 0 Vdd 21 width 0 timing 0
>>> [    2.334306] mmc0: starting CMD8 arg 000001aa flags 000002f5
>>> [    2.351886] set_clock_and_burst_size:mmc1: (B) SD_CLOCK_AND_BURST = 00C5, delay = 31, sel = 1
>>> [    2.377254] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00018000
>>> [    2.395890] mmc0: req done (CMD8): -110: 00000000 00000000 00000000 00000000
>>> [    2.416880] mmc0: starting CMD5 arg 00000000 flags 000002e1
>>> [    2.433487] set_clock_and_burst_size:mmc1: (A) SD_CLOCK_AND_BURST_SIZE_SETUP = 3FC5
>>> [    2.456268] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00018000
>>> [    2.474916] mmc0: req failed (CMD5): -110, retrying...
>>> [    2.490186] sdhci: =========== REGISTER DUMP (mmc1)===========
>>> [    2.507544] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00018000
>>> [    2.526177] mmc0: req failed (CMD5): -110, retrying...
>>> [    2.541469] sdhci: Sys addr: 0x00000000 | Version:  0x00000002
>>> [    2.558803] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00018000
>>> [    2.577433] mmc0: req failed (CMD5): -110, retrying...
>>> [    2.592713] sdhci: Blk size: 0x00000000 | Blk cnt:  0x00000000
>>> [    2.610051] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00018000
>>> [    2.628684] mmc0: req done (CMD5): -110: 00000000 00000000 00000000 00000000
>>> [    2.649651] mmc0: starting CMD55 arg 00000000 flags 000000f5
>>> [    2.666514] sdhci: Argument: 0x00000000 | Trn mode: 0x00000000
>>> [    2.683870] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00018000
>>> [    2.702501] mmc0: req done (CMD55): -110: 00000000 00000000 00000000 00000000
>>> [    2.723725] mmc0: starting CMD55 arg 00000000 flags 000000f5
>>> [    2.740589] sdhci: Present:  0x01fa0000 | Host ctl: 0x00000000
>>> [    2.757949] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00018000
>>> [    2.776577] mmc0: req done (CMD55): -110: 00000000 00000000 00000000 00000000
>>> [    2.797801] mmc0: starting CMD55 arg 00000000 flags 000000f5
>>> [    2.814663] sdhci: Power:    0x00000000 | Blk gap:  0x00000000
>>> [    2.832016] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00018000
>>> [    2.850651] mmc0: req done (CMD55): -110: 00000000 00000000 00000000 00000000
>>> [    2.871875] mmc0: starting CMD55 arg 00000000 flags 000000f5
>>> [    2.888737] sdhci: Wake-up:  0x00000000 | Clock:    0x00000000
>>> [    2.906093] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00018000
>>> [    2.924743] mmc0: req done (CMD55): -110: 00000000 00000000 00000000 00000000
>>> [    2.945950] mmc0: starting CMD1 arg 00000000 flags 000000e1
>>> [    2.962556] sdhci: Timeout:  0x00000000 | Int stat: 0x00000000
>>> [    2.979910] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001
>>> [    2.998544] mmc0: req done (CMD1): 0: 40ff8080 00000000 00000000 00000000
>>> [    3.018732] mmc_attach_mmc:mmc0: ocr = 40ff8080
>>> [    3.032230] mmc_select_low_voltage:mmc0: ENTER
>>> [    3.045435] mmc_power_off:mmc0: ENTER
>>> [    3.056313] mmc0: clock 0Hz busmode 1 powermode 0 cs 0 Vdd 0 width 0 timing 0
>>> [    3.077543] set_clock_and_burst_size:mmc0: adjust = 1
>>> [    3.077543] set_clock_and_burst_size:mmc0: (B) SD_CLOCK_AND_BURST = 00C5, delay = 15, sel = 1
>>> [    3.092534] set_clock_and_burst_size:mmc0: (A) SD_CLOCK_AND_BURST_SIZE_SETUP = 1FC5
>>> [    3.140629] mmc_power_up:mmc0: ENTER
>>> [    3.151255] mmc0: clock 0Hz busmode 1 powermode 1 cs 0 Vdd 7 width 0 timing 0
>>> [    3.172476] sdhci: Int enab: 0x00ff0003 | Sig enab: 0x00ff0003
>>> [    3.189836] mmc0: clock 400000Hz busmode 1 powermode 2 cs 0 Vdd 7 width 0 timing 0
>>> [    3.212432] generate_initial_74_clocks:mmc0 ENTER: slot->power_mode = 1,ios->power_mode = 2
>>> [    3.238059] sdhci: AC12 err: 0x00000000 | Slot int: 0x00000000
>>> [    3.255427] mmc0: clock 400000Hz busmode 1 powermode 2 cs 1 Vdd 7 width 0 timing 0
>>> [    3.278878] mmc0: starting CMD0 arg 00000000 flags 000000c0
>>> [    3.295554] sdhci: Caps:     0x25fcc8b2 | Caps_1:   0x00002f77
>>> [    3.312911] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001
>>> [    3.331547] mmc0: req done (CMD0): 0: 00000000 00000000 00000000 00000000
>>> [    3.351734] mmc0: clock 400000Hz busmode 1 powermode 2 cs 0 Vdd 7 width 0 timing 0
>>> [    3.375260] mmc0: starting CMD1 arg 40300080 flags 000000e1
>>> [    3.392854] sdhci: Cmd:      0x00000000 | Max curr: 0x00000000
>>> [    3.410196] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001
>>> [    3.428830] mmc0: req done (CMD1): 0: 40ff8080 00000000 00000000 00000000
>>> [    3.449035] sdhci: ADMA Err: 0x00000000 | ADMA Ptr: 0x00000000
>>> [    3.466388] sdhci: ===========================================
>>> [    3.483748] mmc0: starting CMD1 arg 40300080 flags 000000e1
>>> [    3.500460] mmc_power_off:mmc1: ENTER
>>> [    3.511342] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001
>>> [    3.530016] mmc0: req done (CMD1): 0: c0ff8080 00000000 00000000 00000000
>>> [    3.550235] mmc0: starting CMD2 arg 00000000 flags 00000067
>>> [    3.566816] mmc1: clock 0Hz busmode 1 powermode 0 cs 0 Vdd 0 width 0 timing 0
>>> [    3.588044] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001
>>> [    3.606698] mmc0: req done (CMD2): 0: 45010053 454d3038 479031ce 57f97d00
>>> [    3.626919] mmc0: starting CMD3 arg 00010000 flags 00000015
>>> [    3.643513] set_clock_and_burst_size:mmc1: adjust = 1
>>> [    3.643513] set_clock_and_burst_size:mmc1: (B) SD_CLOCK_AND_BURST = 00C5, delay = 31, sel = 1
>>> [    3.658512] set_clock_and_burst_size:mmc1: (A) SD_CLOCK_AND_BURST_SIZE_SETUP = 3FC5
>>> [    3.706605] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001
>>> [    3.725253] mmc0: req done (CMD3): 0: 00000500 00000000 00000000 00000000
>>> [    3.745474] mmc0: clock 400000Hz busmode 2 powermode 2 cs 0 Vdd 7 width 0 timing 0
>>> [    3.767990] mmc0: starting CMD9 arg 00010000 flags 00000007
>>> [    3.784621] mmc1: SDHCI controller on MMC [sdhci-pxa.0] using ADMA
>>> [    3.803019] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001
>>> [    3.821642] mmc0: req done (CMD9): 0: d00f0032 0f5903ff ffffffff 92404000
>>> [    3.841857] mmc0: starting CMD7 arg 00010000 flags 00000015
>>> [    3.858458] set_clock_and_burst_size:mmc2: adjust = 1
>>> [    3.873548] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001
>>> [    3.892206] mmc0: req done (CMD7): 0: 00000700 00000000 00000000 00000000
>>> [    3.912445] mmc0: starting CMD8 arg 00000000 flags 000000b5
>>> [    3.929016] mmc0:     blksz 512 blocks 1 flags 00000200 tsac 100 ms nsac 0
>>> [    3.949502] set_clock_and_burst_size:mmc2: (B) SD_CLOCK_AND_BURST = 00C5, delay = 15, sel = 1
>>> [    3.974859] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000003
>>> [    3.993499] mmc0: req done (CMD8): 0: 00000900 00000000 00000000 00000000
>>> [    4.013703] mmc0:     512 bytes transferred: 0
>>> [    4.026910] mmc0: starting CMD6 arg 03b90101 flags 0000049d
>>> [    4.043523] set_clock_and_burst_size:mmc2: (A) SD_CLOCK_AND_BURST_SIZE_SETUP = 1FC5
>>> [    4.066302] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000003
>>> [    4.084943] mmc0: req done (CMD6): 0: 00000800 00000000 00000000 00000000
>>> [    4.105253] mmc0: starting CMD13 arg 00010000 flags 00000195
>>> [    4.122127] mmc2: no vmmc regulator found
>>> [    4.134099] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001
>>> [    4.152759] mmc0: req done (CMD13): 0: 00000900 00000000 00000000 00000000
>>> [    4.173232] mmc0: clock 400000Hz busmode 2 powermode 2 cs 0 Vdd 7 width 0 timing 1
>>> [    4.195775] mmc0: clock 52000000Hz busmode 2 powermode 2 cs 0 Vdd 7 width 0 timing 1
>>> [    4.218842] mmc0: starting CMD6 arg 03b70201 flags 0000049d
>>> [    4.235428] set_clock_and_burst_size:mmc2: adjust = 1
>>> [    4.250456] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000003
>>> [    4.269105] mmc0: req done (CMD6): 0: 00000800 00000000 00000000 00000000
>>> [    4.289300] mmc0: starting CMD13 arg 00010000 flags 00000195
>>> [    4.306152] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001
>>> [    4.324792] mmc0: req done (CMD13): 0: 00000900 00000000 00000000 00000000
>>> [    4.345235] ------------[ cut here ]------------
>>> [    4.345249] WARNING: at kernel/sched.c:4000 schedule+0x25c/0x3ac()
>>> [    4.377317] Modules linked in:
>>> [    4.377317] [<c002abe8>] (unwind_backtrace+0x0/0x124) from [<c003834c>] (warn_slowpath_common+0x4c/0x64)
>>> [    4.386390] [<c003834c>] (warn_slowpath_common+0x4c/0x64) from [<c0038380>] (warn_slowpath_null+0x1c/0x24)
>>> [    4.414575] [<c0038380>] (warn_slowpath_null+0x1c/0x24) from [<c028909c>] (schedule+0x25c/0x3ac)
>>> [    4.469417] [<c028909c>] (schedule+0x25c/0x3ac) from [<c028922c>] (preempt_schedule+0x40/0x70)
>>> [    4.469417] [<c028922c>] (preempt_schedule+0x40/0x70) from [<c0039284>] (vprintk+0x36c/0x3a4)
>>> [    4.520387] [<c0039284>] (vprintk+0x36c/0x3a4) from [<c00392dc>] (printk+0x20/0x30)
>>> [    4.543167] [<c00392dc>] (printk+0x20/0x30) from [<c01efa18>] (platform_reset_exit+0x48/0x124)
>>> [    4.543167] [<c01efa18>] (platform_reset_exit+0x48/0x124) from [<c01ed4a8>] (sdhci_reset+0xf4/0x11c)
>>> [    4.595936] [<c01ed4a8>] (sdhci_reset+0xf4/0x11c) from [<c01ed878>] (sdhci_init+0x1c/0x5c)
>>> [    4.595936] [<c01ed878>] (sdhci_init+0x1c/0x5c) from [<c01ef87c>] (sdhci_add_host+0x5fc/0x70c)
>>> [    4.620516] [<c01ef87c>] (sdhci_add_host+0x5fc/0x70c) from [<c0288a44>] (sdhci_pxa_probe+0x1c0/0x27c)
>>> [    4.673552] [<c0288a44>] (sdhci_pxa_probe+0x1c0/0x27c) from [<c01c10d0>] (platform_drv_probe+0x1c/0x24)
>>> [    4.673552] [<c01c10d0>] (platform_drv_probe+0x1c/0x24) from [<c01bff94>] (driver_probe_device+0x124/0x22c)
>>> [    4.701490] [<c01bff94>] (driver_probe_device+0x124/0x22c) from [<c01c027c>] (__driver_attach+0x60/0x84)
>>> [    4.758661] [<c01c027c>] (__driver_attach+0x60/0x84) from [<c01bf074>] (bus_for_each_dev+0x4c/0x80)
>>> [    4.785566] [<c01bf074>] (bus_for_each_dev+0x4c/0x80) from [<c01bf8d0>] (bus_add_driver+0xc0/0x248)
>>> [    4.812472] [<c01bf8d0>] (bus_add_driver+0xc0/0x248) from [<c01c050c>] (driver_register+0xac/0x13c)
>>> [    4.812472] [<c01c050c>] (driver_register+0xac/0x13c) from [<c001f434>] (do_one_initcall+0xbc/0x18c)
>>> [    4.839390] [<c001f434>] (do_one_initcall+0xbc/0x18c) from [<c00086e0>] (kernel_init+0x98/0x14c)
>>> [    4.866546] [<c00086e0>] (kernel_init+0x98/0x14c) from [<c00263e0>] (kernel_thread_exit+0x0/0x8)
>>> [    4.892679] ---[ end trace 8b39c6115c20996a ]---
>>> [    4.932567] set_clock_and_burst_size:mmc2: (B) SD_CLOCK_AND_BURST = 00C5, delay = 15, sel = 1
>>> [    4.957952] mmc0: clock 52000000Hz busmode 2 powermode 2 cs 0 Vdd 7 width 3 timing 1
>>> [    4.981020] mmc0: starting CMD19 arg 00000000 flags 000000b5
>>> [    4.997867] mmc0:     blksz 8 blocks 1 flags 00000100 tsac 0 ms nsac 0
>>> [    5.017307] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000002
>>> [    5.035948] set_clock_and_burst_size:mmc2: (A) SD_CLOCK_AND_BURST_SIZE_SETUP = 1FC5
>>> [    5.058745] sdhci: =========== REGISTER DUMP (mmc2)===========
>>> [    5.076090] sdhci: Sys addr: 0x00000000 | Version:  0x00000002
>>> [    5.093431] sdhci: Blk size: 0x00000000 | Blk cnt:  0x00000000
>>> [    5.110778] sdhci: Argument: 0x00000000 | Trn mode: 0x00000000
>>> [    5.128113] sdhci: Present:  0x01f20000 | Host ctl: 0x00000000
>>> [    5.145458] sdhci: Power:    0x00000000 | Blk gap:  0x00000000
>>> [    5.162801] sdhci: Wake-up:  0x00000000 | Clock:    0x00000000
>>> [    5.180143] sdhci: Timeout:  0x00000000 | Int stat: 0x00000000
>>> [    5.197490] sdhci: Int enab: 0x00ff0003 | Sig enab: 0x00ff0003
>>> [    5.214828] sdhci: AC12 err: 0x00000000 | Slot int: 0x00000000
>>> [    5.232170] sdhci: Caps:     0x25fcc8b2 | Caps_1:   0x00002f77
>>> [    5.249514] sdhci: Cmd:      0x00000000 | Max curr: 0x00000000
>>> [    5.266853] sdhci: ADMA Err: 0x00000000 | ADMA Ptr: 0x00000000
>>> [    5.284200] sdhci: ===========================================
>>> [    5.301664] mmc_power_off:mmc2: ENTER
>>> [    5.312569] mmc2: clock 0Hz busmode 1 powermode 0 cs 0 Vdd 0 width 0 timing 0
>>> [    5.333806] set_clock_and_burst_size:mmc2: adjust = 1
>>> [    5.333816] set_clock_and_burst_size:mmc2: (B) SD_CLOCK_AND_BURST = 00C5, delay = 15, sel = 1
>>> [    5.348826] set_clock_and_burst_size:mmc2: (A) SD_CLOCK_AND_BURST_SIZE_SETUP = 1FC5
>>> [    5.396942] mmc2: SDHCI controller on MMC [sdhci-pxa.1] using ADMA
>>> [    5.415519] TCP cubic registered
>>> [    5.425136] NET: Registered protocol family 17
>>> [    5.438418] Registering the dns_resolver key type
>>> [    5.452421] VFP support v0.3: implementor 56 architecture 2 part 20 variant 9 rev 5
>>> [    5.475688] drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
>>> [    5.494606] Waiting 15sec before mounting root device...
>>> [   15.028875] mmc0: Timeout waiting for hardware interrupt.
>>> [   15.028886] sdhci: =========== REGISTER DUMP (mmc0)===========
>>> [   15.044932] sdhci: Sys addr: 0x00000000 | Version:  0x00000002
>>> [   15.062248] sdhci: Blk size: 0x00007008 | Blk cnt:  0x00000000
>>> [   15.096880] sdhci: Argument: 0x00000000 | Trn mode: 0x00000003
>>> [   15.096880] sdhci: Present:  0x01fa0000 | Host ctl: 0x00000035
>>> [   15.114198] sdhci: Power:    0x0000000b | Blk gap:  0x00000000
>>> [   15.131514] sdhci: Wake-up:  0x00000000 | Clock:    0x00000207
>>> [   15.148831] sdhci: Timeout:  0x0000000e | Int stat: 0x00000000
>>> [   15.166148] sdhci: Int enab: 0x02ff000b | Sig enab: 0x02ff000b
>>> [   15.200782] sdhci: AC12 err: 0x00000000 | Slot int: 0x00000000
>>> [   15.218099] sdhci: Caps:     0x25fcc8b2 | Caps_1:   0x00002f77
>>> [   15.218099] sdhci: Cmd:      0x0000133a | Max curr: 0x00000000
>>> [   15.235416] sdhci: ADMA Err: 0x00000000 | ADMA Ptr: 0x1f943808
>>> [   15.252733] sdhci: ===========================================
>>> [   15.287391] mmc0: req done (CMD19): 0: 00000000 00000000 00000000 00000000
>>> [   15.307852] mmc0:     0 bytes transferred: -110
>>> [   15.321336] mmc0: starting CMD14 arg 00000000 flags 000000b5
>>> [   15.338178] mmc0:     blksz 8 blocks 1 flags 00000200 tsac 0 ms nsac 0
>>> [   15.357630] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000003
>>> [   15.376281] mmc0: req done (CMD14): 0: 00001300 00000000 00000000 00000000
>>> [   15.396738] mmc0:     8 bytes transferred: 0
>>> [   15.409456] mmc0: starting CMD6 arg 03b70601 flags 0000049d
>>> [   15.426403] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000003
>>> [   15.445051] mmc0: req done (CMD6): 0: 00000800 00000000 00000000 00000000
>>> [   15.465275] mmc0: starting CMD13 arg 00010000 flags 00000195
>>> [   15.482119] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001
>>> [   15.500770] mmc0: req done (CMD13): 0: 00000900 00000000 00000000 00000000
>>> [   15.521225] mmc0: clock 52000000Hz busmode 2 powermode 2 cs 0 Vdd 7 width 3 timing 1
>>> [   15.544295] mmc0: new high speed DDR MMC card at address 0001
>>> [   15.561727] mmcblk0: mmc0:0001 SEM08G 7.39 GiB
>>> [   15.575658] mmc0: starting CMD18 arg 00000000 flags 000000b5
>>> [   15.592556] mmc0:     blksz 512 blocks 8 flags 00000200 tsac 100 ms nsac 0
>>> [   15.613031] mmc0:     CMD12 arg 00000000 flags 0000049d
>>> [   15.628605] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001
>>> [   15.647270] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00208002
>>> [   15.665927] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000003
>>> [   15.684563] mmc0: req done (CMD18): 0: 00000900 00000000 00000000 00000000
>>> [   15.705030] mmc0:     0 bytes transferred: -84
>>> [   15.718234] mmc0:     (CMD12): 0: 00000b00 00000000 00000000 00000000
>>> [   15.737416] mmcblk0: retrying using single block read
>>> [   15.752440] mmc0: starting CMD17 arg 00000000 flags 000000b5
>>> [   15.769301] mmc0:     blksz 512 blocks 1 flags 00000200 tsac 100 ms nsac 0
>>> [   15.789746] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001
>>> [   15.808390] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00208002
>>> [   15.827030] mmc0: req done (CMD17): 0: 00000900 00000000 00000000 00000000
>>> [   15.847496] mmc0:     0 bytes transferred: -84
>>> [   15.860718] mmc0: starting CMD13 arg 00010000 flags 00000195
>>> [   15.877566] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001
>>> [   15.896217] mmc0: req done (CMD13): 0: 00000900 00000000 00000000 00000000
>>> [   15.916671] mmcblk0: error -84 transferring data, sector 0, nr 8, card status 0x900
>>> [   15.939470] end_request: I/O error, dev mmcblk0, sector 0
>>> [   15.955529] mmc0: starting CMD17 arg 00000001 flags 000000b5
>>> [   15.972363] mmc0:     blksz 512 blocks 1 flags 00000200 tsac 100 ms nsac 0
>>> [   15.992831] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001
>>> [   16.011469] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00208002
>>> [   16.030122] mmc0: req done (CMD17): 0: 00000900 00000000 00000000 00000000
>>> [   16.050567] mmc0:     0 bytes transferred: -84
>>> [   16.063872] mmc0: starting CMD13 arg 00010000 flags 00000195
>>> [   16.080731] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001
>>> [   16.099367] mmc0: req done (CMD13): 0: 00000900 00000000 00000000 00000000
>>> [   16.119836] mmcblk0: error -84 transferring data, sector 1, nr 7, card status 0x900
>>> [   16.142611] end_request: I/O error, dev mmcblk0, sector 1
>>> [   16.158666] mmc0: starting CMD17 arg 00000002 flags 000000b5
>>> [   16.175513] mmc0:     blksz 512 blocks 1 flags 00000200 tsac 100 ms nsac 0
>>> [   16.195980] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001
>>> [   16.214626] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000002
>>> [   16.233256] mmc0: req done (CMD17): 0: 00000900 00000000 00000000 00000000
>>> [   16.253719] mmc0:     512 bytes transferred: 0
>>> [   16.266939] mmc0: starting CMD17 arg 00000003 flags 000000b5
>>> [   16.283786] mmc0:     blksz 512 blocks 1 flags 00000200 tsac 100 ms nsac 0
>>> [   16.304265] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001
>>> [   16.322913] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000002
>>> [   16.341547] mmc0: req done (CMD17): 0: 00000900 00000000 00000000 00000000
>>> [   16.362015] mmc0:     512 bytes transferred: 0
>>> [   16.375231] mmc0: starting CMD17 arg 00000004 flags 000000b5
>>> [   16.392083] mmc0:     blksz 512 blocks 1 flags 00000200 tsac 100 ms nsac 0
>>> [   16.412574] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001
>>> [   16.431207] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000002
>>> [   16.449845] mmc0: req done (CMD17): 0: 00000900 00000000 00000000 00000000
>>> [   16.470309] mmc0:     512 bytes transferred: 0
>>> [   16.483526] mmc0: starting CMD17 arg 00000005 flags 000000b5
>>> [   16.500375] mmc0:     blksz 512 blocks 1 flags 00000200 tsac 100 ms nsac 0
>>> [   16.520858] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001
>>> [   16.539504] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000002
>>> [   16.558136] mmc0: req done (CMD17): 0: 00000900 00000000 00000000 00000000
>>> [   16.578611] mmc0:     512 bytes transferred: 0
>>> [   16.591827] mmc0: starting CMD17 arg 00000006 flags 000000b5
>>> [   16.608668] mmc0:     blksz 512 blocks 1 flags 00000200 tsac 100 ms nsac 0
>>> [   16.629138] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001
>>> [   16.647771] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000002
>>> [   16.666410] mmc0: req done (CMD17): 0: 00000900 00000000 00000000 00000000
>>> [   16.686874] mmc0:     512 bytes transferred: 0
>>> [   16.700094] mmc0: starting CMD17 arg 00000007 flags 000000b5
>>> [   16.716938] mmc0:     blksz 512 blocks 1 flags 00000200 tsac 100 ms nsac 0
>>> [   16.737408] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001
>>> [   16.756042] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000002
>>> [   16.774693] mmc0: req done (CMD17): 0: 00000900 00000000 00000000 00000000
>>> [   16.795145] mmc0:     512 bytes transferred: 0
>>> [   16.808363] Buffer I/O error on device mmcblk0, logical block 0
>>> [   16.826124] mmc0: starting CMD18 arg 00000000 flags 000000b5
>>> [   16.842977] mmc0:     blksz 512 blocks 8 flags 00000200 tsac 100 ms nsac 0
>>> [   16.863444] mmc0:     CMD12 arg 00000000 flags 0000049d
>>> [   16.878990] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001
>>> [   16.897629] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00208002
>>> [   16.916278] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000003
>>> [   16.934938] mmc0: req done (CMD18): 0: 00000900 00000000 00000000 00000000
>>> [   16.955390] mmc0:     0 bytes transferred: -84
>>> [   16.968594] mmc0:     (CMD12): 0: 00000b00 00000000 00000000 00000000
>>> [   16.987767] mmcblk0: retrying using single block read
>>> [   17.002797] mmc0: starting CMD17 arg 00000000 flags 000000b5
>>> [   17.019625] mmc0:     blksz 512 blocks 1 flags 00000200 tsac 100 ms nsac 0
>>> [   17.040106] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001
>>> [   17.058750] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00208002
>>> [   17.077391] mmc0: req done (CMD17): 0: 00000900 00000000 00000000 00000000
>>> [   17.097855] mmc0:     0 bytes transferred: -84
>>> [   17.111076] mmc0: starting CMD13 arg 00010000 flags 00000195
>>> [   17.127925] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001
>>> [   17.146577] mmc0: req done (CMD13): 0: 00000900 00000000 00000000 00000000
>>> [   17.167029] mmcblk0: error -84 transferring data, sector 0, nr 8, card status 0x900
>>> [   17.189822] end_request: I/O error, dev mmcblk0, sector 0
>>> [   17.205874] mmc0: starting CMD17 arg 00000001 flags 000000b5
>>> [   17.222730] mmc0:     blksz 512 blocks 1 flags 00000200 tsac 100 ms nsac 0
>>> [   17.243181] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001
>>> [   17.261824] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00208002
>>> [   17.280461] mmc0: req done (CMD17): 0: 00000900 00000000 00000000 00000000
>>> [   17.300927] mmc0:     0 bytes transferred: -84
>>> [   17.314144] mmc0: starting CMD13 arg 00010000 flags 00000195
>>> [   17.331009] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001
>>> [   17.349648] mmc0: req done (CMD13): 0: 00000900 00000000 00000000 00000000
>>> [   17.370113] mmcblk0: error -84 transferring data, sector 1, nr 7, card status 0x900
>>> [   17.392892] end_request: I/O error, dev mmcblk0, sector 1
>>> [   17.408944] mmc0: starting CMD17 arg 00000002 flags 000000b5
>>> [   17.425791] mmc0:     blksz 512 blocks 1 flags 00000200 tsac 100 ms nsac 0
>>> [   17.446265] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001
>>> [   17.464904] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000002
>>> [   17.483535] mmc0: req done (CMD17): 0: 00000900 00000000 00000000 00000000
>>> [   17.504007] mmc0:     512 bytes transferred: 0
>>> [   17.517236] mmc0: starting CMD17 arg 00000003 flags 000000b5
>>> [   17.534069] mmc0:     blksz 512 blocks 1 flags 00000200 tsac 100 ms nsac 0
>>> [   17.554548] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001
>>> [   17.573192] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000002
>>> [   17.591844] mmc0: req done (CMD17): 0: 00000900 00000000 00000000 00000000
>>> [   17.612301] mmc0:     512 bytes transferred: 0
>>> [   17.625513] mmc0: starting CMD17 arg 00000004 flags 000000b5
>>> [   17.642362] mmc0:     blksz 512 blocks 1 flags 00000200 tsac 100 ms nsac 0
>>> [   17.662846] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001
>>> [   17.681486] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000002
>>> [   17.700125] mmc0: req done (CMD17): 0: 00000900 00000000 00000000 00000000
>>> [   17.720597] mmc0:     512 bytes transferred: 0
>>> [   17.733811] mmc0: starting CMD17 arg 00000005 flags 000000b5
>>> [   17.750656] mmc0:     blksz 512 blocks 1 flags 00000200 tsac 100 ms nsac 0
>>> [   17.771139] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001
>>> [   17.789791] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000002
>>> [   17.808436] mmc0: req done (CMD17): 0: 00000900 00000000 00000000 00000000
>>> [   17.828888] mmc0:     512 bytes transferred: 0
>>> [   17.842105] mmc0: starting CMD17 arg 00000006 flags 000000b5
>>> [   17.858954] mmc0:     blksz 512 blocks 1 flags 00000200 tsac 100 ms nsac 0
>>> [   17.879432] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001
>>> [   17.898077] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000002
>>> [   17.916717] mmc0: req done (CMD17): 0: 00000900 00000000 00000000 00000000
>>> [   17.937181] mmc0:     512 bytes transferred: 0
>>> [   17.950419] mmc0: starting CMD17 arg 00000007 flags 000000b5
>>> [   17.967247] mmc0:     blksz 512 blocks 1 flags 00000200 tsac 100 ms nsac 0
>>> [   17.987702] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001
>>> [   18.006346] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000002
>>> [   18.025004] mmc0: req done (CMD17): 0: 00000900 00000000 00000000 00000000
>>> [   18.045452] mmc0:     512 bytes transferred: 0
>>> [   18.058788] Buffer I/O error on device mmcblk0, logical block 0
>>> [   18.076456]  mmcblk0: unable to read partition table
>>> [   18.091572] mmc0: clock 52000000Hz busmode 2 powermode 2 cs 0 Vdd 7 width 3 timing 1
>>>
>>> [   20.519040] VFS: Cannot open root device "mmcblk0p1" or unknown-block(179,1)
>>> [   20.540046] Please append a correct "root=" boot option; here are the available partitions:
>>> [   20.564884] b300         7757824 mmcblk0  driver: mmcblk
>>> [   20.580725] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(179,1)
>>> [   20.605824] [<c002abe8>] (unwind_backtrace+0x0/0x124) from [<c0038518>] (panic+0x6c/0x18c)
>>> [   20.630434] [<c0038518>] (panic+0x6c/0x18c) from [<c0008d94>] (mount_block_root+0x1c4/0x204)
>>> [   20.655573] [<c0008d94>] (mount_block_root+0x1c4/0x204) from [<c0008e74>] (mount_root+0xa0/0xc4)
>>> [   20.681727] [<c0008e74>] (mount_root+0xa0/0xc4) from [<c0008fb4>] (prepare_namespace+0x11c/0x174)
>>> [   20.708124] [<c0008fb4>] (prepare_namespace+0x11c/0x174) from [<c0008750>] (kernel_init+0x108/0x14c)
>>> [   20.735311] [<c0008750>] (kernel_init+0x108/0x14c) from [<c00263e0>] (kernel_thread_exit+0x0/0x8)
>>>
>>>
>>
>>
>>
>>
>> If I use only the code in /drivers/mmc/core/  that handles dual voltage -- and no code in /drivers/mmc/host I can boot.
>>
>> The code for dual voltage should be a separate patch and not coupled to ddr since mmc cards may switch to lower
>> voltages after they come up in high voltage mode and NOT support ddr.
>>
>> trace (working) below
>>
>> [    0.000000] Linux version 2.6.37-rc6-next-20101220-00022-g8b35e00-dirty (philip@philip-laptop) (gcc version 4.2.0 20070413 (prerelease) (CodeSourcery 2007q1-10. Marvell 2009q3-18 20090821)) #61 PREEMPT 0
>> [    0.000000] CPU: Marvell PJ4 processor [560f5815] revision 5 (ARMv7), cr=00c5387f
>> [    0.000000] CPU: VIPT nonaliasing data cache, VIPT aliasing instruction cache
>> [    0.000000] Machine: Brownstone Development Platform
>> [    0.000000] Ignoring unrecognised tag 0x41000403
>> [    0.000000] Memory policy: ECC disabled, Data cache writeback
>> [    0.000000] On node 0 totalpages: 131072
>> [    0.000000] free_area_init_node: node 0, pgdat c03713d0, node_mem_map c0390000
>> [    0.000000]   Normal zone: 1024 pages used for memmap
>> [    0.000000]   Normal zone: 0 pages reserved
>> [    0.000000]   Normal zone: 130048 pages, LIFO batch:31
>> [    0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
>> [    0.000000] pcpu-alloc: [0] 0
>> [    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 130048
>> [    0.000000] Kernel command line: debug rootdelay=15 root=/dev/mmcblk0p1 rootfstype=ext3 console=ttyS2,38400 mem=512M uart_dma mbr_offset=0x4800
>> [    0.000000] PID hash table entries: 2048 (order: 1, 8192 bytes)
>> [    0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
>> [    0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
>> [    0.000000] Memory: 512MB = 512MB total
>> [    0.000000] Memory: 516108k/516108k available, 8180k reserved, 0K highmem
>> [    0.000000] Virtual kernel memory layout:
>> [    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
>> [    0.000000]     fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
>> [    0.000000]     DMA     : 0xffc00000 - 0xffe00000   (   2 MB)
>> [    0.000000]     vmalloc : 0xe0800000 - 0xfe000000   ( 472 MB)
>> [    0.000000]     lowmem  : 0xc0000000 - 0xe0000000   ( 512 MB)
>> [    0.000000]     modules : 0xbf000000 - 0xc0000000   (  16 MB)
>> [    0.000000]       .init : 0xc0008000 - 0xc001f000   (  92 kB)
>> [    0.000000]       .text : 0xc001f000 - 0xc0354004   (3285 kB)
>> [    0.000000]       .data : 0xc0356000 - 0xc0373020   ( 117 kB)
>> [    0.000000] Preemptable hierarchical RCU implementation.
>> [    0.000000]  RCU-based detection of stalled CPUs is disabled.
>> [    0.000000]  Verbose stalled-CPUs detection is disabled.
>> [    0.000000] NR_IRQS:320 nr_irqs:360 360
>> [    0.000000] sched_clock: 32 bits at 6MHz, resolution 153ns, wraps every 660764ms
>> [    0.000000] Console: colour dummy device 80x30
>> [    0.000167] Calibrating delay loop... 796.26 BogoMIPS (lpj=3981312)
>> [    0.220131] pid_max: default: 32768 minimum: 301
>> [    0.220162] Mount-cache hash table entries: 512
>> [    0.220631] CPU: Testing write buffer coherency: ok
>> [    0.224391] print_constraints: dummy: regulator:
>> [    0.224391] NET: Registered protocol family 16
>> [    0.224517] Tauros2: Disabling L2 prefetch.
>> [    0.224570] Tauros2: L2 cache support initialised in ARMv6 mode.
>> [    0.227697] bio: create slab <bio-0> at 0
>> [    0.228912] Switching to clocksource clocksource
>> [    0.233930] NET: Registered protocol family 2
>> [    0.234072] IP route cache hash table entries: 4096 (order: 2, 16384 bytes)
>> [    0.234401] TCP established hash table entries: 16384 (order: 5, 131072 bytes)
>> [    0.234401] TCP bind hash table entries: 16384 (order: 4, 65536 bytes)
>> [    0.234650] TCP: Hash tables configured (established 16384 bind 16384)
>> [    0.234780] TCP reno registered
>> [    0.234780] UDP hash table entries: 256 (order: 0, 4096 bytes)
>> [    0.234795] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
>> [    0.234972] NET: Registered protocol family 1
>> [    0.235374] RPC: Registered udp transport module.
>> [    0.235374] RPC: Registered tcp transport module.
>> [    0.235392] RPC: Registered tcp NFSv4.1 backchannel transport module.
>> [    0.237085] JFFS2 version 2.2. (NAND) .. 2001-2006 Red Hat, Inc.
>> [    0.237085] msgmni has been set to 1008
>> [    0.238008] io scheduler noop registered
>> [    0.238008] io scheduler deadline registered
>> [    0.238090] io scheduler cfq registered (default)
>> [    0.238599] pxa2xx-uart.0: ttyS0 at MMIO 0xd4030000 (irq = 27) is a FFUART
>> [    0.238775] pxa2xx-uart.2: ttyS2 at MMIO 0xd4018000 (irq = 24) is a STUART
>> [    1.352989] console [ttyS2] enabled
>> [    1.363373] mousedev: PS/2 mouse device common for all mice
>> [    1.380672] sdhci: Secure Digital Host Controller Interface driver
>> [    1.399242] sdhci: Copyright(c) Pierre Ossman
>> [    1.412215] mmc0: no vmmc regulator found
>> [    1.424406] sdhci_set_power:mmc0: power = 00000000
>> [    1.438778] mmc0: SDHCI controller on MMC [sdhci-pxa.2] using ADMA
>> [    1.457200] sdhci_set_power:mmc0: power = 00200000
>> [    1.471542] mmc1: no vmmc regulator found
>> [    1.483715] sdhci_set_power:mmc1: power = 00000000
>> [    1.498030] sdhci_set_power:mmc0: power = 00200000
>> [    1.513088] mmc1: SDHCI controller on MMC [sdhci-pxa.0] using ADMA
>> [    1.531472] sdhci_set_power:mmc0: power = 00200000
>> [    1.545753] mmc2: no vmmc regulator found
>> [    1.557943] sdhci_set_power:mmc2: power = 00000000
>> [    1.572204] sdhci_set_power:mmc0: power = 00200000
>> [    1.587505] mmc2: SDHCI controller on MMC [sdhci-pxa.1] using ADMA
>> [    1.605918] sdhci_set_power:mmc0: power = 00200000
>> [    1.622197] TCP cubic registered
>> [    1.632049] NET: Registered protocol family 17
>> [    1.645356] Registering the dns_resolver key type
>> [    1.659409] VFP support v0.3: implementor 56 architecture 2 part 20 variant 9 rev 5
>> [    1.682583] drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
>> [    1.701636] Waiting 15sec before mounting root device...
>> [    1.718121] sdhci_set_power:mmc0: power = 00000000
>> [    1.732404] sdhci_set_power:mmc0: power = 00000080
>> [    1.758997] sdhci_set_power:mmc0: power = 00000080
>> [    1.788946] sdhci_set_power:mmc0: power = 00000080
>> [    1.804346] sdhci_set_power:mmc0: power = 00000080
>> [    1.840050] sdhci_set_power:mmc0: power = 00000080
>> [    1.867346] sdhci_set_power:mmc0: power = 00000080
>> [    1.881618] sdhci_set_power:mmc0: power = 00000080
>> [    1.896694] sdhci_set_power:mmc0: power = 00000080
>> [   11.928938] mmc0: Timeout waiting for hardware interrupt.
>> [   11.928938] sdhci: =========== REGISTER DUMP (mmc0)===========
>> [   11.944969] sdhci: Sys addr: 0x00000000 | Version:  0x00000002
>> [   11.979601] sdhci: Blk size: 0x00007008 | Blk cnt:  0x00000000
>> [   11.979601] sdhci: Argument: 0x00000000 | Trn mode: 0x00000003
>> [   11.996918] sdhci: Present:  0x01fa0000 | Host ctl: 0x00000035
>> [   12.031551] sdhci: Power:    0x0000000b | Blk gap:  0x00000000
>> [   12.031551] sdhci: Wake-up:  0x00000000 | Clock:    0x00000207
>> [   12.048867] sdhci: Timeout:  0x0000000e | Int stat: 0x00000000
>> [   12.066185] sdhci: Int enab: 0x02ff000b | Sig enab: 0x02ff000b
>> [   12.083502] sdhci: AC12 err: 0x00000000 | Slot int: 0x00000000
>> [   12.100818] sdhci: Caps:     0x25fcc8b2 | Caps_1:   0x00002f77
>> [   12.118137] sdhci: Cmd:      0x0000133a | Max curr: 0x00000000
>> [   12.152770] sdhci: ADMA Err: 0x00000000 | ADMA Ptr: 0x1f943808
>> [   12.170085] sdhci: ===========================================
>> [   12.187575] sdhci_set_power:mmc0: power = 00000080
>> [   12.201880] mmc0: new high speed MMC card at address 0001
>> [   12.218242] mmcblk0: mmc0:0001 SEM08G 7.39 GiB
>> [   12.236802]  mmcblk0: p1
>> [   12.244539] sdhci_set_power:mmc0: power = 00000080
>> [   16.722250] EXT3-fs: barriers not enabled
>> [   16.761481] EXT3-fs (mmcblk0p1):
>> [   16.770850] kjournald starting.  Commit interval 5 seconds
>> [   16.787682] warning: mounting unchecked fs, running e2fsck is recommended
>> [   16.809039] EXT3-fs (mmcblk0p1): using internal journal
>> [   16.824079] EXT3-fs (mmcblk0p1): recovery complete
>> [   16.839879] EXT3-fs (mmcblk0p1): mounted filesystem with ordered data mode
>> [   16.859865] VFS: Mounted root (ext3 filesystem) on device 179:1.
>> [   16.878365] Freeing init memory: 92K
>> init started:  BusyBox v1.01 (2009.03.10-14:28+0000) multi-call binary
>> telnetd: daemon: No such file or directory
>> cannot open /dev/null
>> [   17.221024] udevd (56): /proc/56/oom_adj is deprecated, please use /proc/56/oom_score_adj instead.
>> cannot open /dev/null
>> modprobe: could not parse modules.dep
>>
>> error initializing udevd socket
>> cannot open /dev/null
>> error initializing udevd socket
>> cannot open /dev/null
>> error initializing udevd socket
>> modprobe: could not parse modules.dep
>>
>
> The patch is tested on latest mmc-next, with sdhci-pxa interface,
> clk_delay=0x1f.
> The latest git log is.
> mmc: sdhci: Enable bus-width test for JMicron controllers.
>
> How about sending you patches used locally.
>
> Thanks

changed clk_delay from 15 to 31.  in brownstone.c was the solution.

clk_delay = 31

--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux