Hello,
J'essaie de faire fonctionner mon lecteur de carte sur mon MSI GS60 2PE qui est un Realtek RTS5249.
Le symptôme est qu'aucune carte n'est détecté quand j'en insère une...
lspci
03:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. RTS5249 PCI Express Card Reader (rev 01)
lshw
*-generic
description: Unassigned class
produit: RTS5249 PCI Express Card Reader
fabriquant: Realtek Semiconductor Co., Ltd.
identifiant matériel: 0
information bus: pci@0000:03:00.0
version: 01
bits: 32 bits
horloge: 33MHz
fonctionnalités: pm msi pciexpress bus_master cap_list
configuration: driver=rtsx_pci latency=0
ressources: irq:44 mémoire:f6800000-f6800fff
J'ai testé la méthode décrite ici qui est pour le chipset RTS5229 :
http://linuxterminal.org/issue-with-rts5229-pci-express-card-reader/
avec l'adaptation suivante :
It seems that the source code of this driver can be adapted to other RTS card readers!!!!!
For example, I have a rts5249 on my HP ZBook (with Ubuntu 10.04+kernel 3.0)
I modified the rts5229 source code:
1) In the file "Makefile": "TARGET_MODULE := rts5229" ---> "TARGET_MODULE := rts5249"
2) In the file "rtsx.c": I added my sd card reader (0x5249) in this structure:
static struct pci_device_id rts5229_ids[] = {
{ 0x10EC, 0x5229, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_OTHERS << 16, 0xFF0000 },
{ 0x10EC, 0x5227, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_OTHERS << 16, 0xFF0000 },
{ 0x10EC, 0x5249, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_OTHERS << 16, 0xFF0000 },
{ 0, },
};
And it works!!!
make
sudo make install
sudo modprobe rts5249
... and now my sd card works
François
Malheureusement j'échoue systématiquement au make :
/tmp/Realtek_RTS5229_Linux_Driver_v1.07/rts5229# make
cp -f ./define.release ./define.h
make -C /lib/modules/3.16.0-29-generic/build/ SUBDIRS=/tmp/Realtek_RTS5229_Linux_Driver_v1.07/rts5229 modules
make[1]: Entering directory '/usr/src/linux-headers-3.16.0-29-generic'
CC [M] /tmp/Realtek_RTS5229_Linux_Driver_v1.07/rts5229/rtsx.o
/tmp/Realtek_RTS5229_Linux_Driver_v1.07/rts5229/rtsx.c: In function ‘proc_info’:
/tmp/Realtek_RTS5229_Linux_Driver_v1.07/rts5229/rtsx.c:148:55: error: macro "__DATE__" might prevent reproducible builds [-Werror=date-time]
SPRINTF(" Build: %s, %s\n", __DATE__, __TIME__);
^
/tmp/Realtek_RTS5229_Linux_Driver_v1.07/rts5229/rtsx.c:148:1: error: macro "__TIME__" might prevent reproducible builds [-Werror=date-time]
SPRINTF(" Build: %s, %s\n", __DATE__, __TIME__);
^
/tmp/Realtek_RTS5229_Linux_Driver_v1.07/rts5229/rtsx.c: At top level:
/tmp/Realtek_RTS5229_Linux_Driver_v1.07/rts5229/rtsx.c:266:2: error: unknown field ‘proc_info’ specified in initializer
.proc_info = proc_info,
^
/tmp/Realtek_RTS5229_Linux_Driver_v1.07/rts5229/rtsx.c:266:2: warning: initialization from incompatible pointer type
/tmp/Realtek_RTS5229_Linux_Driver_v1.07/rts5229/rtsx.c:266:2: warning: (near initialization for ‘rtsx_host_template.proc_dir’)
/tmp/Realtek_RTS5229_Linux_Driver_v1.07/rts5229/rtsx.c:914:22: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘rtsx_probe’
static int __devinit rtsx_probe(struct pci_dev *pci, const struct pci_device_id *pci_id)
^
/tmp/Realtek_RTS5229_Linux_Driver_v1.07/rts5229/rtsx.c:921:39: error: macro "__DATE__" might prevent reproducible builds [-Werror=date-time]
printk(KERN_INFO "--- %s, %s ---\n", __DATE__, __TIME__);
^
/tmp/Realtek_RTS5229_Linux_Driver_v1.07/rts5229/rtsx.c:921:49: error: macro "__TIME__" might prevent reproducible builds [-Werror=date-time]
printk(KERN_INFO "--- %s, %s ---\n", __DATE__, __TIME__);
^
/tmp/Realtek_RTS5229_Linux_Driver_v1.07/rts5229/rtsx.c:1069:23: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘rtsx_remove’
static void __devexit rtsx_remove(struct pci_dev *pci)
^
/tmp/Realtek_RTS5229_Linux_Driver_v1.07/rts5229/rtsx.c:1094:11: error: ‘rtsx_probe’ undeclared here (not in a function)
.probe = rtsx_probe,
^
/tmp/Realtek_RTS5229_Linux_Driver_v1.07/rts5229/rtsx.c:1095:2: error: implicit declaration of function ‘__devexit_p’ [-Werror=implicit-function-declaration]
.remove = __devexit_p(rtsx_remove),
^
/tmp/Realtek_RTS5229_Linux_Driver_v1.07/rts5229/rtsx.c:1095:24: error: ‘rtsx_remove’ undeclared here (not in a function)
.remove = __devexit_p(rtsx_remove),
^
/tmp/Realtek_RTS5229_Linux_Driver_v1.07/rts5229/rtsx.c:262:34: warning: ‘rtsx_host_template’ defined but not used [-Wunused-variable]
static struct scsi_host_template rtsx_host_template = {
^
/tmp/Realtek_RTS5229_Linux_Driver_v1.07/rts5229/rtsx.c:476:12: warning: ‘rtsx_control_thread’ defined but not used [-Wunused-function]
static int rtsx_control_thread(void * __dev)
^
/tmp/Realtek_RTS5229_Linux_Driver_v1.07/rts5229/rtsx.c:585:12: warning: ‘rtsx_polling_thread’ defined but not used [-Wunused-function]
static int rtsx_polling_thread(void * __dev)
^
/tmp/Realtek_RTS5229_Linux_Driver_v1.07/rts5229/rtsx.c:739:13: warning: ‘quiesce_and_remove_host’ defined but not used [-Wunused-function]
static void quiesce_and_remove_host(struct rtsx_dev *dev)
^
/tmp/Realtek_RTS5229_Linux_Driver_v1.07/rts5229/rtsx.c:775:13: warning: ‘release_everything’ defined but not used [-Wunused-function]
static void release_everything(struct rtsx_dev *dev)
^
/tmp/Realtek_RTS5229_Linux_Driver_v1.07/rts5229/rtsx.c:785:12: warning: ‘rtsx_scan_thread’ defined but not used [-Wunused-function]
static int rtsx_scan_thread(void * __dev)
^
/tmp/Realtek_RTS5229_Linux_Driver_v1.07/rts5229/rtsx.c:810:13: warning: ‘rtsx_init_options’ defined but not used [-Wunused-function]
static void rtsx_init_options(struct rtsx_chip *chip)
^
cc1: some warnings being treated as errors
scripts/Makefile.build:257: recipe for target '/tmp/Realtek_RTS5229_Linux_Driver_v1.07/rts5229/rtsx.o' failed
make[2]: *** [/tmp/Realtek_RTS5229_Linux_Driver_v1.07/rts5229/rtsx.o] Error 1
Makefile:1345: recipe for target '_module_/tmp/Realtek_RTS5229_Linux_Driver_v1.07/rts5229' failed
make[1]: *** [_module_/tmp/Realtek_RTS5229_Linux_Driver_v1.07/rts5229] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-3.16.0-29-generic'
Makefile:35: recipe for target 'default' failed
make: *** [default] Error 2
Avez vous une suggestion ?
PS : j'ai testé linux-firmware-nonfree sans succès...