Problem about the new sdhci driver

Henry Hu henry.hu.sh at gmail.com
Tue Feb 3 05:17:18 PST 2009


I've tried patch with no good result. Everything works like before.

On Mon, Feb 2, 2009 at 2:31 AM, Alexander Motin <mav at freebsd.org> wrote:
> Henry Hu wrote:
>>
>> After doing more experiments, I found the cause:
>> hw.pci.do_power_resume=3
>> If I set it to 0 and load the driver, it works well with and without the
>> card.
>> If I set it to 3 and load the driver, then
>> 1. If the card is present, then it would detect the card and the disk
>> shows up. If I remove the card and insert it again, it cannot detect
>> it again. And if I unload the driver now and reload it with the card,
>> it cannot detect the card and it cannot detect card insertion /
>> removal.
>> 2. If the card is not present, then it cannot detect the card, and if
>> I remove the card and insert it again, nothing happens.
>> The 0x01fa0000 state is normal: I found that the detection of
>> write-protection is independent from card detection. If I pull the
>> card out completely, the present register is 0x01f20000. If I pull the
>> card out half-way, the present register is 0x01fa000, the
>> write-protection bit is 1 and the card-present bit is 0...
>>
>> So the problem is about power states, not the driver, and no patch is
>> needed. Since I rarely use the card reader when the laptop is using
>> battery, I decided to remove it from sysctl .conf ....
>> Thanks for the help. Good driver!
>
> And still it would be good to try the patch. Some revisions of this
> controller known behave wrong if being reseted without card inserted. This
> patch enables special quirk to avoid that situation. I think power
> management can be not a reason of problem, but just a trigger.
>
>> On Sun, Feb 1, 2009 at 6:08 PM, Alexander Motin <mav at freebsd.org> wrote:
>>>
>>> Henry Hu wrote:
>>>>
>>>> I'm using FreeBSD 7-STABLE, with sdhci driver
>>>> sdhci.20081029.tgz
>>>> mmc.20081029.tgz
>>>>
>>>> I've found that if I load sdhci driver with card inserted, everything
>>>> works fine.
>>>> But if I load sdhci driver first, and then insert card, the card is
>>>> not detected.Additionally, there is no interrupt.
>>>> After I've load sdhci driver without card, the controller seems to be
>>>> in a problematic state. The register dump outputed when the driver
>>>> loaded showed that Present is 0x01f20000 which is correct since the
>>>> card is not inserted then. But cards is not detected.
>>>> Even if I unload the driver and reload with card inserted, the card
>>>> still cannot be detected, and there's no interrupt. But the Present
>>>> register changed to 0x01fa0000 which is strange.
>>>>
>>>> So I guess there's something wrong with the driver when the card is not
>>>> present.
>>>>
>>>> sdhci0: <RICOH R5C822 SD> mem 0xf0401000-0xf04010ff irq 18 at device 9.1
>>>> on pci5
>>>> sdhci0-slot0: 33MHz 4bits 3.3V DMA
>>>> sdhci0-slot0: ============== REGISTER DUMP ==============
>>>> sdhci0-slot0: Sys addr: 0x00000000 | Version:  0x00000200
>>>> sdhci0-slot0: Blk size: 0x00000000 | Blk cnt:  0x00000000
>>>> sdhci0-slot0: Argument: 0x00000000 | Trn mode: 0x00000000
>>>> sdhci0-slot0: Present:  0x01f20000 | Host ctl: 0x00000000
>>>> sdhci0-slot0: Power:    0x00000000 | Blk gap:  0x00000000
>>>> sdhci0-slot0: Wake-up:  0x00000000 | Clock:    0x00000000
>>>> sdhci0-slot0: Timeout:  0x0000000c | Int stat: 0x00000000
>>>> sdhci0-slot0: Int enab: 0x01ff00fb | Sig enab: 0x01ff00fb
>>>> sdhci0-slot0: AC12 err: 0x00000000 | Slot int: 0x00000000
>>>> sdhci0-slot0: Caps:     0x01c021a1 | Max curr: 0x00000040
>>>> sdhci0-slot0: ===========================================
>>>
>>> Try this patch please:
>>> --- sdhci.c.prev        2009-01-29 00:53:41.000000000 +0200
>>> +++ sdhci.c     2009-02-01 11:58:42.000000000 +0200
>>> @@ -82,7 +82,8 @@ static const struct sdhci_device {
>>>       u_int           quirks;
>>>  } sdhci_devices[] = {
>>>       { 0x08221180,   0xffff, "RICOH R5C822 SD",
>>> -           SDHCI_QUIRK_FORCE_DMA },
>>> +           SDHCI_QUIRK_FORCE_DMA |
>>> +           SDHCI_QUIRK_NO_CARD_NO_RESET },
>>>       { 0x8034104c,   0xffff, "TI XX21/XX11 SD",
>>>           SDHCI_QUIRK_FORCE_DMA },
>>>       { 0x05501524,   0xffff, "ENE CB712 SD",
>>>
>>>
>>> Could everybody having this controller send me pciconf and Version
>>> register
>>> from their controller and report me is this bug present on their system?
>>> I
>>> would like to collect some statistics.
>>>
>>> --
>>> Alexander Motin
>>> _______________________________________________
>>> freebsd-mobile at freebsd.org mailing list
>>> http://lists.freebsd.org/mailman/listinfo/freebsd-mobile
>>> To unsubscribe, send any mail to "freebsd-mobile-unsubscribe at freebsd.org"
>>>
>
>
> --
> Alexander Motin
> _______________________________________________
> freebsd-mobile at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-mobile
> To unsubscribe, send any mail to "freebsd-mobile-unsubscribe at freebsd.org"
>


More information about the freebsd-mobile mailing list