Re: PCI Cardreader

From: Max Laier <max_at_love2party.net>
Date: Fri, 9 Nov 2007 02:42:46 +0100
On Friday 09 November 2007, Benjamin Close wrote:
> Rene Ladan wrote:
> > 2007/11/8, Rene Ladan <r.c.ladan_at_gmail.com>:
> >> Alexandre "Sunny" Kovalenko schreef:
> >>> On Wed, 2007-11-07 at 22:13 +0100, Rene Ladan wrote:
> >>>> Bachilo Dmitry schreef:
> >>>>> Hello all.
> >>>>> I always used USB cardreaders and had no problem with it, but now
> >>>>> in my notebook I have a cardreader, that appears to be onboard
> >>>>> PCI device. And so FreeBSD sees it as this:
> >>>>> pci6: <memory, flash> at device 4.1 (no driver attached)
> >>>>> pci6: <base peripheral> at device 4.2 (no driver attached)
> >>>>> pci6: <memory, flash> at device 4.3 (no driver attached)
> >>>>> pci6: <memory, flash> at device 4.4 (no driver attached)
> >>>>>
> >>>>>
> >>>>> That's even more odd because three are recognized as flash and
> >>>>> one is not. pciconf -lv shows this:
> >>>>>
> >>>>> none13_at_pci6:4:1:        class=0x050100 card=0x009f1025
> >>>>> chip=0x05301524 rev=0x01 hdr=0x00
> >>>>>     vendor     = 'ENE Technology Inc'
> >>>>>     device     = 'PCI Memory Stick Card Reader Controller'
> >>>>>     class      = memory
> >>>>>     subclass   = flash
> >>>>>
> >>>>> Well, in 7.0-CURRENT it showed all four devices and now in BETA-2
> >>>>> only this one.
> >>>>
> >>>> On my 8.0-CURRENT box (20071105) it shows all four devices:
> >>>>
> >>>> cbb0_at_pci0:4:1:0:     class=0x060700 card=0x14371043
> >>>> chip=0x04761180 rev=0xb3 hdr=0x02 vendor     = 'Ricoh Company,
> >>>> Ltd.'
> >>>>     device     = 'unknown Ricoh R/RL/5C476(II)'
> >>>>     class      = bridge
> >>>>     subclass   = PCI-CardBus
> >>>> fwohci0_at_pci0:4:1:1:  class=0x0c0010 card=0x14371043
> >>>> chip=0x05521180 rev=0x08 hdr=0x00 vendor     = 'Ricoh Company,
> >>>> Ltd.'
> >>>>     device     = 'RL5c552 IEEE-1394 Controller'
> >>>>     class      = serial bus
> >>>>     subclass   = FireWire
> >>>> none0_at_pci0:4:1:2:    class=0x080500 card=0x14371043
> >>>> chip=0x08221180 rev=0x17 hdr=0x00 vendor     = 'Ricoh Company,
> >>>> Ltd.'
> >>>>     device     = 'R5C832, R5C843 SDA Standard Compliant SD Host
> >>>> Controller' class      = base peripheral
> >>>> none1_at_pci0:4:1:3:    class=0x088000 card=0x14371043
> >>>> chip=0x05921180 rev=0x08 hdr=0x00 vendor     = 'Ricoh Company,
> >>>> Ltd.'
> >>>>     device     = '13871043 Ricoh Memory Stick Host Controller'
> >>>>     class      = base peripheral
> >>>>
> >>>>> Is there any way I can make them work?
> >>>>
> >>>> You can add these lines to your kernel configuration:
> >>>>
> >>>> device          mmc
> >>>> device          mmcsd
> >>>>
> >>>> But don't expect any magic.  mmc(4) and mmcsd(4) tell that nothing
> >>>> currently works, which seems to be true on my Asus A6JE (using a
> >>>> Kingston micro-SD card with adapter).
> >>>>
> >>>> imp_at_ is the last person who touched the driver which lives in
> >>>> /usr/src/sys/dev/mmc/
> >>>
> >>> Thing below is on my list to try out when I get enough breathing
> >>> room (or when I would have a dire need to read SD cards on my
> >>> ThinkPad X60 ;). Did you, by any chance, try it? Any experiences to
> >>> share?
> >>>
> >>> http://www.freebsd.org/cgi/getmsg.cgi?fetch=17399+21119
> >>> +/usr/local/www/db/text/2007/freebsd-mobile/20070916.freebsd-mobile
> >>
> >> Not yet, I didn't see the message until now since I'm not (yet) on
> >> the mobile list. A quick try showed that it does not compile on my
> >> box.  I'll investigate why. The author did not leave an email
> >> address in the files.
> >
> > The short story is bus_setup_intr() gained some parameters, I'll
> > figure out which.  According to a blog at bsdimp.blogspot.com, Ricoh
> > based readers should work with this driver :)
>
> The attached patch gets it compiling but I think there might be some
> locking issues still as I got an immediate panic at module load. Not
> sure who put up the tar.gz but I know Max has done some work porting it
> from OpenBSD in p4:
>
> http://perforce.freebsd.org/changeList.cgi?CMD=changes&FSPC=//depot/use
>r/mlaier/sdmmc/sys/...

Nah, that's crap.  Never got anywhere.  Just me toying around.

>
> diff -ur sdmmc-20070627/dev/sdmmc/sdshc.c
> sdmmc-20070627-devel/dev/sdmmc/sdshc.c
> --- sdmmc-20070627/dev/sdmmc/sdshc.c    2007-06-25 19:55:52.000000000
> +0930 +++ sdmmc-20070627-devel/dev/sdmmc/sdshc.c      2007-11-09
> 11:45:00.779789122 +1030
> _at__at_ -42,6 +42,8 _at__at_
>  #include <sys/systm.h>
>  #include <sys/conf.h>
>  #include <sys/malloc.h>
> +#include <sys/bus.h>
> +#include <machine/bus.h>
>
>  #include <dev/pci/pcireg.h>
>  #include <dev/pci/pcivar.h>
> _at__at_ -342,7 +344,7 _at__at_
>       * Hook our interrupt after all initialization is complete.
>       */
>      LOG(0x10, (dev, "Setup Intr\n"));
> -    error = bus_setup_intr(dev, sc->irq, INTR_TYPE_NET|INTR_MPSAFE ,
> +    error = bus_setup_intr(dev, sc->irq, INTR_TYPE_NET|INTR_MPSAFE ,
> NULL, sdshc_intr, sc, &sc->ih);
>      if (error != 0) {
>         MSG((dev, "could not set up interrupt\n"));
> diff -ur sdmmc-20070627/dev/sdmmc/sdshcbus.c
> sdmmc-20070627-devel/dev/sdmmc/sdshcbus.c
> --- sdmmc-20070627/dev/sdmmc/sdshcbus.c 2007-06-20 03:12:28.000000000
> +0930 +++ sdmmc-20070627-devel/dev/sdmmc/sdshcbus.c   2007-11-09
> 11:49:18.706315189 +1030
> _at__at_ -41,6 +41,8 _at__at_
>  #include <sys/conf.h>
>  #include <sys/malloc.h>
>  #include <sys/ctype.h>
> +#include <sys/bus.h>
> +#include <machine/bus.h>
>
>  #include "sdbus_if.h"



-- 
/"\  Best regards,                      | mlaier_at_freebsd.org
\ /  Max Laier                          | ICQ #67774661
 X   http://pf4freebsd.love2party.net/  | mlaier_at_EFnet
/ \  ASCII Ribbon Campaign              | Against HTML Mail and News

Received on Fri Nov 09 2007 - 00:43:15 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:21 UTC