Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 5 May 2005 12:43:56 GMT
From:      Vlad GALU <vladgalu@gmail.com>
To:        freebsd-gnats-submit@FreeBSD.org
Subject:   kern/80656: Non-supported ICH6 controller on Dell Latitude D610
Message-ID:  <200505051243.j45ChuEg090108@www.freebsd.org>
Resent-Message-ID: <200505051250.j45Co2DJ004451@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         80656
>Category:       kern
>Synopsis:       Non-supported ICH6 controller on Dell Latitude D610
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Thu May 05 12:50:02 GMT 2005
>Closed-Date:
>Last-Modified:
>Originator:     Vlad GALU
>Release:        5.4-STABLE
>Organization:
CC Media Network
>Environment:
FreeBSD durandal.afraid.org 5.4-STABLE FreeBSD 5.4-STABLE #0: Thu May 5 15:04:31 EEST 2005     root@durandal.afraid.org:/usr/src/sys/i386/compile/DURANDAL  i386
>Description:
The ICH6 SATA controller found on Dell Latitude d610 laptops is not supported by the ata driver. After patching with the diff below, the kernel sets the speed of the device to UDMA100. I'm not sure if this is the right thing, but since I'm not familiar with the ata code, I leave this for your appreciation.
>How-To-Repeat:

>Fix:
diff -Nrau /usr/src/sys/dev/ata/ata-chipset.c ./ata/ata-chipset.c
--- /usr/src/sys/dev/ata/ata-chipset.c  Wed Mar 23 07:14:11 2005
+++ ./ata/ata-chipset.c Thu May  5 15:36:31 2005
@@ -838,6 +838,7 @@
      { ATA_I82801FB,   0, 0, 0x00, ATA_UDMA5, "Intel ICH6" },
      { ATA_I82801FB_S1,0, 0, 0x00, ATA_SA150, "Intel ICH6" },
      { ATA_I82801FB_R1,0, 0, 0x00, ATA_SA150, "Intel ICH6" },
+     { ATA_I82801FBM,  0, 0, 0x00, ATA_SA150, "Intel ICH6 Mobile" },
      { 0, 0, 0, 0, 0, 0}};
     char buffer[64];

@@ -924,7 +925,8 @@

     /* ICH6 has 4 SATA ports as master/slave on 2 channels so deal with pairs */
     if (ctlr->chip->chipid == ATA_I82801FB_S1 ||
-       ctlr->chip->chipid == ATA_I82801FB_R1) {
+       ctlr->chip->chipid == ATA_I82801FB_R1 ||
+       ctlr->chip->chipid == ATA_I82801FBM ) {
        mask = (0x0005 << ch->unit);
     }
     else {
diff -Nrau /usr/src/sys/dev/ata/ata-pci.h ./ata/ata-pci.h
--- /usr/src/sys/dev/ata/ata-pci.h      Wed Mar 23 07:14:11 2005
+++ ./ata/ata-pci.h     Thu May  5 15:36:38 2005
@@ -127,6 +127,7 @@
 #define ATA_I82801FB           0x266f8086
 #define ATA_I82801FB_S1                0x26518086
 #define ATA_I82801FB_R1                0x26528086
+#define ATA_I82801FBM          0x26538086

 #define ATA_ITE_ID             0x1283
 #define ATA_IT8212F            0x82121283
>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200505051243.j45ChuEg090108>