Re: Bug#757733: RTS2557 SD card reader does not work

From: Philipp Hagemeister
Date: Sun Aug 10 2014 - 21:41:26 EST


> A web search shows some similar reports (e.g.
> <https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1329566>,
>
<http://askubuntu.com/questions/473848/ubuntu-14-04-realtek-semiconductor-co-ltd-rts5227-pci-express-card-reader-isn>).
> But in that last one, it turns out that the out-of-tree driver does
> work.

Indeed, that is a workaround - download from
http://www.realtek.com.tw/downloads/downloadsView.aspx?Langid=1&PNid=15&PFid=25&Level=4&Conn=3&DownTypeID=3&GetDown=false
, apply the attached patch, remove all rtsx_* modules, and insert the
new rts2557 module into the kernel.

commit 31eeecabfabe62c9667464f2144cbbd57c370b6f
Author: Philipp Hagemeister <phihag@xxxxxxxxx>
Date: Mon Aug 11 03:03:56 2014 +0200

Rename rts2559 to rts2557 and remove outdated macros

diff --git a/Makefile b/Makefile
index 6536bd4..7815096 100644
--- a/Makefile
+++ b/Makefile
@@ -22,7 +22,7 @@
# Makefile for the PCI-Express Card Reader drivers.
#

-TARGET_MODULE := rts5229
+TARGET_MODULE := rts5227

EXTRA_CFLAGS := -Idrivers/scsi

diff --git a/rtsx.c b/rtsx.c
index 7fd7a92..8ba9e19 100644
--- a/rtsx.c
+++ b/rtsx.c
@@ -263,7 +263,6 @@ static struct scsi_host_template rtsx_host_template = {

.name = CR_DRIVER_NAME,
.proc_name = CR_DRIVER_NAME,
- .proc_info = proc_info,
.info = host_info,


@@ -911,7 +910,7 @@ static void rtsx_init_options(struct rtsx_chip *chip)
chip->support_mmc = 1;
}

-static int __devinit rtsx_probe(struct pci_dev *pci, const struct pci_device_id *pci_id)
+static int rtsx_probe(struct pci_dev *pci, const struct pci_device_id *pci_id)
{
struct Scsi_Host *host;
struct rtsx_dev *dev;
@@ -1066,7 +1065,7 @@ errout:
}


-static void __devexit rtsx_remove(struct pci_dev *pci)
+static void rtsx_remove(struct pci_dev *pci)
{
struct rtsx_dev *dev = (struct rtsx_dev *)pci_get_drvdata(pci);

@@ -1092,7 +1091,7 @@ static struct pci_driver driver = {
.name = CR_DRIVER_NAME,
.id_table = rts5229_ids,
.probe = rtsx_probe,
- .remove = __devexit_p(rtsx_remove),
+ .remove = rtsx_remove,
#ifdef CONFIG_PM
.suspend = rtsx_suspend,
.resume = rtsx_resume,
diff --git a/rtsx.h b/rtsx.h
index 3a1bb2f..98b26c4 100644
--- a/rtsx.h
+++ b/rtsx.h
@@ -52,7 +52,7 @@
#include "trace.h"
#include "general.h"

-#define CR_DRIVER_NAME "rts5229"
+#define CR_DRIVER_NAME "rts5227"


#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 14)

Attachment: signature.asc
Description: OpenPGP digital signature