Monday, December 26, 2005

SiS IDE Controller 5513 [sis5513] with Southbridge SiS 965 patch, try 3

SiS IDE Controller 5513 [sis5513] with Southbridge SiS 965 patch, try 3

Supported (tested) kernels:
2.6.14-1.1653_FC4
2.6.14-1.1656_FC4

Problem:
On original Fedora kernel there is no support to DMA on the SiS IDE controller model 5513 with Southbridge SiS model 965.

Bugzilla:
Number 176560 at http://bugzilla.redhat.com/

Inspired on:
http://lkml.org/lkml/2005/10/5/293

Approach:
Modify the module source to recognise the controller hardware.
In this case the south bridge controller: SiS965.

Remarks:
RPM kernel spec file part will be covered on the kernel specific part.

1. Get and install the kernel source that applies:

2. Patch to the file [pci_ids.h], at [/usr/src/redhat/SOURCES/linux-2.6-pci_ids.patch]:

--- a/include/linux/pci_ids.h 2005-12-26 09:00:09.000000000 +0100
+++ b/include/linux/pci_ids.h 2005-12-26 09:00:27.000000000 +0100
@@ -672,6 +672,7 @@
#define PCI_DEVICE_ID_SI_961 0x0961
#define PCI_DEVICE_ID_SI_962 0x0962
#define PCI_DEVICE_ID_SI_963 0x0963
+#define PCI_DEVICE_ID_SI_965 0x0965
#define PCI_DEVICE_ID_SI_5107 0x5107
#define PCI_DEVICE_ID_SI_5300 0x5300
#define PCI_DEVICE_ID_SI_5511 0x5511


3. Patch to the file [sis5513.c], at [/usr/src/redhat/SOURCES/linux-2.6-sis5513.patch]:

--- a/drivers/ide/pci/sis5513.c 2005-12-26 08:59:29.000000000 +0100
+++ b/drivers/ide/pci/sis5513.c 2005-12-26 09:02:44.000000000 +0100
@@ -20,6 +20,7 @@
* ATA16/33 support from specs
* ATA133 support for SiS961/962 by L.C. Chang
* ATA133 961/962/963 fixes by Vojtech Pavlik
+ * ATA133 inspired on http://lkml.org/lkml/2005/10/5/293
*
* Documentation:
* SiS chipset documentation available under NDA to companies only
@@ -74,7 +75,7 @@
#define ATA_100a 0x04 // SiS730/SiS550 is ATA100 with ATA66 layout
#define ATA_100 0x05
#define ATA_133a 0x06 // SiS961b with 133 support
-#define ATA_133 0x07 // SiS962/963
+#define ATA_133 0x07 // SiS962/963/965

static u8 chipset_family;

@@ -87,6 +88,8 @@ static const struct {
u8 chipset_family;
u8 flags;
} SiSHostChipInfo[] = {
+ { "SiS965", PCI_DEVICE_ID_SI_965, ATA_133 },
+
{ "SiS745", PCI_DEVICE_ID_SI_745, ATA_100 },
{ "SiS735", PCI_DEVICE_ID_SI_735, ATA_100 },
{ "SiS733", PCI_DEVICE_ID_SI_733, ATA_100 },

No comments: