# [hardware] Toshiba sd card reader (funcionando)

## artic

Hola,como todos los usuarios de toshiba sabeis ,nuestro portatil trae una unidad para leer tarjetas que no funciona bajo linux,dicen que toshiba no da especificaciones sobre ella y que ademas esta acoplada a la pcmcia......... alguien ha conseguido hacerla funcionar????????

salu2

----------

## t3n4k

Hola,

si es igual que la que lleva mi ASUS, una RICOH RL5c476 CardBus Controller, no la haremos funcionar  :Sad: 

El tema está en que RICOH no pretende dar las especificaciones del aparato así que a fastidiarse   :Crying or Very sad: 

Saludos,

----------

## darkelphos

Nas, en mi samsung x20, tambien tengo una y ni google sabe como hacerla funcionar XD.

Un saludo  :Wink: 

----------

## Camulus

Mi fujitsu siemens amilo m7400 pasa lo mismo.. no hay manera (o no he encontrado la forma, claro).

----------

## artic

Hola ,investigando con el google,he encontrado que hay gente que ya ha conseguido hacer funcionar la lectora .

Hay unos parches para el kernel que parece funcionar en algunos portatiles,aunque creo que con los toshiba esta algo crudo pero habra que probar.

Leo ademas de que van a incluir una peticion para incluirlo en el kernel ,para su proxima version la 2.6.16.

Os dejo el enlace :

http://list.drzeus.cx/pipermail/sdhci-devel/2006-January/subject.html#319

tambien esta pagina es interesante

http://mmc.drzeus.cx/wiki/Linux/Drivers/sdhci

Ya contareis que sale de ahi.

Salu2

----------

## darkelphos

Si alguien lo prueba, podrias hacer un mino how to de como parchear el kernel con esto, que estoy un poco verde.

Asiasss

----------

## artic

Hola,es facil vas al directorio /usr/src/linux y una vez alli escribes esto:

```
patch -p1 < /nombre/del /parche con la ruta completa
```

esto lo haces con los 3 parches,bien una vez realizado tu kernel ya esta parcheado.

despues vas a la configuracion del kernel

```
make menuconfig
```

 por ej

y en el apartado de DEVICES DRIVERS buscas MMC/SD CARD SUPPORT ,logicamente debes de habilitar el que necesites ,que se supone que debe de ser  SECURE DIGITAL HOST CONTROLLER si les la ayuda pues aparecen Ricoh,toshiba,etc...... tambien seleciona las opciones de arriba ,eso si todo como modulos, y debug directamente.

Guardas cambios y compilas,instalas los modulos y arrancas con nuevo kernel,te saldra algo asi en el dmesg:

```
sdhci: Secure Digital Host Controller Interface driver, 0.10

sdhci: Copyright(c) Pierre Ossman

sdhci [sdhci_probe()]: found at 0000:06:04.4

sdhci [sdhci_probe()]: found 3 slot(s)

ACPI: PCI Interrupt 0000:06:04.4[D] -> GSI 19 (level, low) -> IRQ 19

sdhci [sdhci_probe_slot()]: slot 0 at 0xb4009000, irq 19

sdhci: ============== REGISTER DUMP ==============

sdhci: Sys addr: 0x00000000 | Version:  0x00008400

sdhci: Blk size: 0x00000000 | Blk cnt:  0x00000000

sdhci: Argument: 0x00000000 | Trn mode: 0x00000000

sdhci: Present:  0x00020000 | Host ctl: 0x00000000

sdhci: Power:    0x00000000 | Blk gap:  0x00000000

sdhci: Walk up:  0x00000000 | Clock:    0x00000002

sdhci: Timeout:  0x0000000e | Int stat: 0x00000000

sdhci: Int enab: 0x11ff00cf | Sig enab: 0x11ff00cf

sdhci: AC12 err: 0x00000000 | Slot int: 0x00000000

sdhci: Caps:     0x01821090 | Max curr: 0x00000000

sdhci: ===========================================

sdhci [sdhci_set_ios()]: clock 0Hz busmode 1 powermode 0 cs 0 Vdd 0 width 0

sdhci [sdhci_set_ios()]: clock 0Hz busmode 1 powermode 1 cs 0 Vdd 21 width 0

mmc0: SDHCI at 0xb4009000 irq 19 PIO

sdhci [sdhci_probe_slot()]: slot 1 at 0xb4008c00, irq 19

sdhci: ============== REGISTER DUMP ==============

sdhci: Sys addr: 0x00000000 | Version:  0x00008400

sdhci: Blk size: 0x00000000 | Blk cnt:  0x00000000

sdhci: Argument: 0x00000000 | Trn mode: 0x00000000

sdhci: Present:  0x00020000 | Host ctl: 0x00000000

sdhci: Power:    0x00000000 | Blk gap:  0x00000000

sdhci: Walk up:  0x00000000 | Clock:    0x00000002

sdhci: Timeout:  0x0000000e | Int stat: 0x00000000

sdhci: Int enab: 0x11ff00cf | Sig enab: 0x11ff00cf

sdhci: AC12 err: 0x00000000 | Slot int: 0x00000000

sdhci: Caps:     0x01821090 | Max curr: 0x00000000

sdhci: ===========================================

sdhci [sdhci_set_ios()]: clock 0Hz busmode 1 powermode 0 cs 0 Vdd 0 width 0

sdhci [sdhci_set_ios()]: clock 62500Hz busmode 1 powermode 2 cs 0 Vdd 21 width 0

mmc1: SDHCI at 0xb4008c00 irq 19 PIO

sdhci [sdhci_probe_slot()]: slot 2 at 0xb4008800, irq 19

sdhci: ============== REGISTER DUMP ==============

sdhci: Sys addr: 0x00000000 | Version:  0x00008400

sdhci: Blk size: 0x00000000 | Blk cnt:  0x00000000

sdhci: Argument: 0x00000000 | Trn mode: 0x00000000

sdhci: Present:  0x000a0000 | Host ctl: 0x00000000

sdhci: Power:    0x00000000 | Blk gap:  0x00000000

sdhci: Walk up:  0x00000000 | Clock:    0x00000002

sdhci: Timeout:  0x0000000e | Int stat: 0x00000000

sdhci: Int enab: 0x11ff00cf | Sig enab: 0x11ff00cf

sdhci: AC12 err: 0x00000000 | Slot int: 0x00000000

sdhci: Caps:     0x01821898 | Max curr: 0x00000000

sdhci: ===========================================

sdhci [sdhci_set_ios()]: clock 0Hz busmode 1 powermode 0 cs 0 Vdd 0 width 0

sdhci [sdhci_set_ios()]: clock 62500Hz busmode 1 powermode 2 cs 1 Vdd 21 width 0

MMC: starting cmd 00 arg 00000000 flags 00000000

sdhci [sdhci_tasklet_finish()]: Ending request, cmd (0)

MMC: req done (00): 1: 00000000 00000000 00000000 00000000

sdhci [sdhci_set_ios()]: clock 62500Hz busmode 1 powermode 2 cs 0 Vdd 21 width 0

MMC: starting cmd 37 arg 00000000 flags 00000029

mmc2: SDHCI at 0xb4008800 irq 19 PIO

sdhci [sdhci_tasklet_finish()]: Ending request, cmd (37)

MMC: req done (37): 1: 00000000 00000000 00000000 00000000

MMC: starting cmd 37 arg 00000000 flags 00000029

sdhci [sdhci_tasklet_finish()]: Ending request, cmd (37)

MMC: req done (37): 1: 00000000 00000000 00000000 00000000

MMC: starting cmd 37 arg 00000000 flags 00000029

sdhci [sdhci_tasklet_finish()]: Ending request, cmd (37)

MMC: req done (37): 1: 00000000 00000000 00000000 00000000

MMC: starting cmd 37 arg 00000000 flags 00000029

sdhci [sdhci_tasklet_finish()]: Ending request, cmd (37)

MMC: req done (37): 1: 00000000 00000000 00000000 00000000

MMC: starting cmd 01 arg 00000000 flags 00000001

sdhci [sdhci_tasklet_finish()]: Ending request, cmd (1)

MMC: req done (01): 1: 00000000 00000000 00000000 00000000

sdhci [sdhci_set_ios()]: clock 0Hz busmode 1 powermode 0 cs 0 Vdd 0 width 0

sdhci [sdhci_set_ios()]: clock 0Hz busmode 1 powermode 1 cs 0 Vdd 21 width 0

sdhci [sdhci_set_ios()]: clock 62500Hz busmode 1 powermode 2 cs 0 Vdd 21 width 0

sdhci [sdhci_set_ios()]: clock 62500Hz busmode 1 powermode 2 cs 1 Vdd 21 width 0

MMC: starting cmd 00 arg 00000000 flags 00000000

sdhci [sdhci_tasklet_finish()]: Ending request, cmd (0)

MMC: req done (00): 1: 00000000 00000000 00000000 00000000

sdhci [sdhci_set_ios()]: clock 62500Hz busmode 1 powermode 2 cs 0 Vdd 21 width 0

MMC: starting cmd 37 arg 00000000 flags 00000029

sdhci [sdhci_tasklet_finish()]: Ending request, cmd (37)

MMC: req done (37): 1: 00000000 00000000 00000000 00000000

MMC: starting cmd 37 arg 00000000 flags 00000029

sdhci [sdhci_tasklet_finish()]: Ending request, cmd (37)

MMC: req done (37): 1: 00000000 00000000 00000000 00000000

MMC: starting cmd 37 arg 00000000 flags 00000029

sdhci [sdhci_tasklet_finish()]: Ending request, cmd (37)

MMC: req done (37): 1: 00000000 00000000 00000000 00000000

MMC: starting cmd 37 arg 00000000 flags 00000029

sdhci [sdhci_tasklet_finish()]: Ending request, cmd (37)

MMC: req done (37): 1: 00000000 00000000 00000000 00000000

MMC: starting cmd 01 arg 00000000 flags 00000001

sdhci [sdhci_tasklet_finish()]: Ending request, cmd (1)

MMC: req done (01): 1: 00000000 00000000 00000000 00000000

sdhci [sdhci_set_ios()]: clock 0Hz busmode 1 powermode 0 cs 0 Vdd 0 width 0

sdhci [sdhci_set_ios()]: clock 0Hz busmode 1 powermode 1 cs 0 Vdd 21 width 0

sdhci [sdhci_set_ios()]: clock 93750Hz busmode 1 powermode 2 cs 0 Vdd 21 width 0

sdhci [sdhci_set_ios()]: clock 93750Hz busmode 1 powermode 2 cs 1 Vdd 21 width 0

MMC: starting cmd 00 arg 00000000 flags 00000000

sdhci [sdhci_tasklet_finish()]: Ending request, cmd (0)

MMC: req done (00): 1: 00000000 00000000 00000000 00000000

sdhci [sdhci_set_ios()]: clock 93750Hz busmode 1 powermode 2 cs 0 Vdd 21 width 0

MMC: starting cmd 37 arg 00000000 flags 00000029

sdhci [sdhci_tasklet_finish()]: Ending request, cmd (37)

MMC: req done (37): 1: 00000000 00000000 00000000 00000000

MMC: starting cmd 37 arg 00000000 flags 00000029

sdhci [sdhci_tasklet_finish()]: Ending request, cmd (37)

MMC: req done (37): 1: 00000000 00000000 00000000 00000000

MMC: starting cmd 37 arg 00000000 flags 00000029

sdhci [sdhci_tasklet_finish()]: Ending request, cmd (37)

MMC: req done (37): 1: 00000000 00000000 00000000 00000000

MMC: starting cmd 37 arg 00000000 flags 00000029

sdhci [sdhci_tasklet_finish()]: Ending request, cmd (37)

MMC: req done (37): 1: 00000000 00000000 00000000 00000000

MMC: starting cmd 01 arg 00000000 flags 00000001

sdhci [sdhci_tasklet_finish()]: Ending request, cmd (1)

MMC: req done (01): 1: 00000000 00000000 00000000 00000000

sdhci [sdhci_set_ios()]: clock 0Hz busmode 1 powermode 0 cs 0 Vdd 0 width 0
```

y bueno a probar a ver que pasa

----------

## artic

Mas cosas es aconsejable hacer un:

```
lspci -xxx

0000:06:04.3 Mass storage controller: Texas Instruments PCIxx21 Integrated FlashMedia Controller

00: 4c 10 33 80 06 00 10 02 00 00 80 01 08 39 80 00

10: 00 40 00 b4 00 00 00 00 00 00 00 00 00 00 00 00

20: 00 00 00 00 00 00 00 00 00 00 00 00 79 11 01 ff

30: 00 00 00 00 44 00 00 00 00 00 00 00 0a 02 07 04

40: 00 00 00 00 01 00 02 7e 00 00 00 00 22 00 00 00

50: 79 11 01 ff 05 01 00 00 00 00 00 00 00 00 00 00

60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

0000:06:04.4 Class 0805: Texas Instruments PCI6411, PCI6421, PCI6611, PCI6621, PCI7411, PCI7421, PCI7611, PCI7621 Secure Digital (SD) Controller

00: 4c 10 34 80 06 00 10 02 00 00 05 08 08 39 80 00

10: 00 90 00 b4 00 8c 00 b4 00 88 00 b4 00 00 00 00

20: 00 00 00 00 00 00 00 00 00 00 00 00 79 11 01 ff

30: 00 00 00 00 80 00 00 00 00 00 00 00 0a 04 07 04

40: 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

80: 01 00 02 7e 00 00 00 00 60 00 00 00 79 11 01 ff

90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

```

despues en el caso de gentoo modificar :

```
setpci -s 06:04.3 4c=0x22
```

 porque el bit esta en 20 y se debe de poner en 22

En mi caso el piloto de la lectora ya se enciende,pero no me creo los nodos en /dev

----------

## darkelphos

muchas gracias, cuando tenga un hueco lo pruebo y os cuento.

Un saludoo  :Wink: 

----------

## artic

Hola,yo ya he conseguido hacer funcionar mi lectora SD de mi portatil toshiba bajo linux por si te sirve de ayuda   :Laughing: 

Espero haber ayudado,la verdad aun hay que ar unas pocas de vueltas,pero supongo que cuando todo este atado lo incluiran en el kernel.

Toi haciendo el howto con los pequeños detalles que se me han escapado.

----------

