2014-08-08 5:12 GMT+02:00 Jaehoon Chung <jh80.chung@xxxxxxxxxxx>: > On 08/08/2014 12:44 AM, Jean-Michel Hautbois wrote: >> 2014-08-07 17:02 GMT+02:00 Hsin-Hsiang Tseng <hsinhsiangtseng@xxxxxxxxx>: >>>> [ 1.366291] mmcblk1: error -84 transferring data, sector 0, nr 8, >>>> cmd response 0x900, card status 0xb00 >>>> [ 1.374409] mmcblk1: retrying using single block read >>>> [ 1.378810] mmcblk1: error -84 transferring data, sector 0, nr 8, >>>> cmd response 0x900, card status 0x0 >>> At first, the kernel driver uses multiple read(cmd 18) to read data >>> from sector 0 to sector 8, but fail. >>> And then, retry by single read(cmd 17), but still fail... >>> >>>> [ 2.050460] mmcblk1boot0: unable to read partition table >>> You are trying to read boot partition data, as I remember when we >>> access boot partition, we need to sync the bus width, frequency and >>> timing(SDR, DDR). > > If you don't access at boot partition, use the MMC_CAP2_BOOTPART_NOACC. How can I do that properly ? >>> >>> Maybe you can turn on the MMC debug config. As a result, you can check >>> what kind of commands the kernel driver send. >>> >> >> I don't have a big enough log buffer, but here is what I get after booting : >> [ 258.901572] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001 >> [ 258.901632] mmc0: req done (CMD13): 0: 00000900 00000000 00000000 00000000 >> [ 259.893768] mmc0: starting CMD13 arg 00020000 flags 00000195 >> [ 259.893867] sdhci-esdhc-imx 2198000.usdhc: desired SD clock: >> 50000000, actual: 49500000 >> [ 259.894909] sdhci-esdhc-imx 2198000.usdhc: change pinctrl state for uhs 2 >> [ 259.894938] sdhci-esdhc-imx 2198000.usdhc: desired SD clock: >> 50000000, actual: 49500000 >> [ 259.901578] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001 >> [ 259.901637] mmc0: req done (CMD13): 0: 00000900 00000000 00000000 00000000 >> [ 260.893767] mmc0: starting CMD13 arg 00020000 flags 00000195 >> [ 260.893865] sdhci-esdhc-imx 2198000.usdhc: desired SD clock: >> 50000000, actual: 49500000 >> [ 260.894906] sdhci-esdhc-imx 2198000.usdhc: change pinctrl state for uhs 2 >> [ 260.894937] sdhci-esdhc-imx 2198000.usdhc: desired SD clock: >> 50000000, actual: 49500000 >> [ 260.901582] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001 >> [ 260.901641] mmc0: req done (CMD13): 0: 00000900 00000000 00000000 00000000 >> [ 261.893765] mmc0: starting CMD13 arg 00020000 flags 00000195 >> [ 261.893864] sdhci-esdhc-imx 2198000.usdhc: desired SD clock: >> 50000000, actual: 49500000 >> [ 261.894905] sdhci-esdhc-imx 2198000.usdhc: change pinctrl state for uhs 2 >> [ 261.894935] sdhci-esdhc-imx 2198000.usdhc: desired SD clock: >> 50000000, actual: 49500000 >> [ 261.901576] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001 >> [ 261.901636] mmc0: req done (CMD13): 0: 00000900 00000000 00000000 00000000 >> [ 262.893769] mmc0: starting CMD13 arg 00020000 flags 00000195 >> [ 262.893867] sdhci-esdhc-imx 2198000.usdhc: desired SD clock: >> 50000000, actual: 49500000 >> [ 262.894908] sdhci-esdhc-imx 2198000.usdhc: change pinctrl state for uhs 2 >> [ 262.894938] sdhci-esdhc-imx 2198000.usdhc: desired SD clock: >> 50000000, actual: 49500000 >> [ 262.901583] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001 >> [ 262.901642] mmc0: req done (CMD13): 0: 00000900 00000000 00000000 00000000 >> [ 263.893763] mmc0: starting CMD13 arg 00020000 flags 00000195 >> [ 263.893861] sdhci-esdhc-imx 2198000.usdhc: desired SD clock: >> 50000000, actual: 49500000 >> [ 263.894903] sdhci-esdhc-imx 2198000.usdhc: change pinctrl state for uhs 2 >> [ 263.894932] sdhci-esdhc-imx 2198000.usdhc: desired SD clock: >> 50000000, actual: 49500000 >> [ 263.901576] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001 >> [ 263.901637] mmc0: req done (CMD13): 0: 00000900 00000000 00000000 00000000 >> [ 264.893758] mmc0: starting CMD13 arg 00020000 flags 00000195 >> [ 264.893856] sdhci-esdhc-imx 2198000.usdhc: desired SD clock: >> 50000000, actual: 49500000 >> [ 264.894898] sdhci-esdhc-imx 2198000.usdhc: change pinctrl state for uhs 2 >> [ 264.894928] sdhci-esdhc-imx 2198000.usdhc: desired SD clock: >> 50000000, actual: 49500000 >> [ 264.901574] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001 >> [ 264.901634] mmc0: req done (CMD13): 0: 00000900 00000000 00000000 00000000 >> [ 265.893769] mmc0: starting CMD13 arg 00020000 flags 00000195 >> [ 265.893867] sdhci-esdhc-imx 2198000.usdhc: desired SD clock: >> 50000000, actual: 49500000 >> [ 265.894908] sdhci-esdhc-imx 2198000.usdhc: change pinctrl state for uhs 2 >> [ 265.894939] sdhci-esdhc-imx 2198000.usdhc: desired SD clock: >> 50000000, actual: 49500000 >> [ 265.901585] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001 >> [ 265.901646] mmc0: req done (CMD13): 0: 00000900 00000000 00000000 00000000 >> [ 266.893766] mmc0: starting CMD13 arg 00020000 flags 00000195 >> [ 266.893864] sdhci-esdhc-imx 2198000.usdhc: desired SD clock: >> 50000000, actual: 49500000 >> [ 266.894905] sdhci-esdhc-imx 2198000.usdhc: change pinctrl state for uhs 2 >> [ 266.894935] sdhci-esdhc-imx 2198000.usdhc: desired SD clock: >> 50000000, actual: 49500000 >> [ 266.901612] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001 >> [ 266.901672] mmc0: req done (CMD13): 0: 00000900 00000000 00000000 00000000 >> [ 267.893768] mmc0: starting CMD13 arg 00020000 flags 00000195 >> [ 267.893865] sdhci-esdhc-imx 2198000.usdhc: desired SD clock: >> 50000000, actual: 49500000 >> [ 267.894907] sdhci-esdhc-imx 2198000.usdhc: change pinctrl state for uhs 2 >> [ 267.894937] sdhci-esdhc-imx 2198000.usdhc: desired SD clock: >> 50000000, actual: 49500000 >> [ 267.901580] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001 >> [ 267.901640] mmc0: req done (CMD13): 0: 00000900 00000000 00000000 00000000 >> [ 268.893769] mmc0: starting CMD13 arg 00020000 flags 00000195 >> [ 268.893867] sdhci-esdhc-imx 2198000.usdhc: desired SD clock: >> 50000000, actual: 49500000 >> [ 268.894909] sdhci-esdhc-imx 2198000.usdhc: change pinctrl state for uhs 2 >> [ 268.894938] sdhci-esdhc-imx 2198000.usdhc: desired SD clock: >> 50000000, actual: 49500000 >> [ 268.901579] sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001 >> [ 268.901638] mmc0: req done (CMD13): 0: 00000900 00000000 00000000 00000000 >> [ 269.893765] mmc0: starting CMD13 arg 00020000 flags 00000195 >> [ 269.893864] sdhci-esdhc-imx 2198000.usdhc: desired SD clock: >> 50000000, actual: 49500000 >> [ 269.894905] sdhci-esdhc-imx 2198000.usdhc: change pinctrl state for uhs 2 >> [ 269.894935] sdhci-esdhc-imx 2198000.usdhc: desired SD clock: >> 50000000, actual: 49500000 >> >> Is this normal to get an interrupt every second, and change pinctrl >> state each time ? > > It seems that your system is working the polling detect scheme. > To detect the card, it's polling the card status at every time. The DT is configured with "non-removable;" It should check card status or I missed something :-( ? Thanks, JM -- 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