Date: Tue, 3 Feb 2009 21:17:17 +0800 From: Henry Hu <henry.hu.sh@gmail.com> To: Alexander Motin <mav@freebsd.org> Cc: freebsd-mobile@freebsd.org Subject: Re: Problem about the new sdhci driver Message-ID: <53a1e0710902030517y4fb692f2nf038c8f6799d58c7@mail.gmail.com> In-Reply-To: <4985EA94.1090007@FreeBSD.org> References: <53a1e0710901311949x3b853404oe89cf2ae9a0903f7@mail.gmail.com> <49857482.5080508@FreeBSD.org> <53a1e0710902010432j49111ecey8d9a93acfbe3c64d@mail.gmail.com> <4985EA94.1090007@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
I've tried patch with no good result. Everything works like before. On Mon, Feb 2, 2009 at 2:31 AM, Alexander Motin <mav@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@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@freebsd.org mailing list >>> http://lists.freebsd.org/mailman/listinfo/freebsd-mobile >>> To unsubscribe, send any mail to "freebsd-mobile-unsubscribe@freebsd.org" >>> > > > -- > Alexander Motin > _______________________________________________ > freebsd-mobile@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-mobile > To unsubscribe, send any mail to "freebsd-mobile-unsubscribe@freebsd.org" >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?53a1e0710902030517y4fb692f2nf038c8f6799d58c7>