Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 22 Nov 2007 01:02:39 +0100 (CET)
From:      Martin Matuska <mm@FreeBSD.org>
To:        FreeBSD-gnats-submit@FreeBSD.org
Subject:   kern/118193: [PATCH] ata(4) add support for IXP600 and IXP700 SATA AHCI
Message-ID:  <20071122000239.2BBD639876@mail.vx.sk>
Resent-Message-ID: <200711220910.lAM9A1Do049586@freefall.freebsd.org>

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

>Number:         118193
>Category:       kern
>Synopsis:       [PATCH] ata(4) add support for IXP600 and IXP700 SATA AHCI
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Thu Nov 22 09:10:01 UTC 2007
>Closed-Date:
>Last-Modified:
>Originator:     Martin Matuska
>Release:        FreeBSD 7.0-BETA3 amd64
>Organization:
>Environment:
FreeBSD 7.0-BETA3 Wed Nov 21 23:44:30 CET 2007 
>Description:
This patch adds AHCI support for IXP600 and IXP700 onboard SATA controllers.
Due to the latest changes in ata(4) this patch is now very small.

Tested on a IXP600 system. Please review.
>How-To-Repeat:
>Fix:
Index: src/sys/dev/ata/ata-chipset.c
===================================================================
RCS file: /home/ncvs/src/sys/dev/ata/ata-chipset.c,v
retrieving revision 1.207
diff -a -u -r1.207 ata-chipset.c
--- src/sys/dev/ata/ata-chipset.c	20 Nov 2007 04:52:19 -0000	1.207
+++ src/sys/dev/ata/ata-chipset.c	22 Nov 2007 00:01:14 -0000
@@ -1345,7 +1345,9 @@
      { ATA_ATI_IXP400_S1, 0x00, SIIMEMIO, 0, ATA_SA150, "IXP400" },
      { ATA_ATI_IXP400_S2, 0x00, SIIMEMIO, 0, ATA_SA150, "IXP400" },
      { ATA_ATI_IXP600,    0x00, 0,        0, ATA_UDMA6, "IXP600" },
+     { ATA_ATI_IXP600_S1, 0x00, 0,     AHCI, ATA_SA300, "IXP600" },
      { ATA_ATI_IXP700,    0x00, 0,        0, ATA_UDMA6, "IXP700" },
+     { ATA_ATI_IXP700_S1, 0x00, 0,     AHCI, ATA_SA300, "IXP700" },
      { 0, 0, 0, 0, 0, 0}};
 
     if (!(ctlr->chip = ata_match_chip(dev, ids)))
@@ -1366,6 +1368,9 @@
 {
     struct ata_pci_controller *ctlr = device_get_softc(dev);
 
+    if ((ctlr->chip->cfg2 == AHCI) && ata_ahci_chipinit(dev) != ENXIO)
+	return 0;
+
     if (ata_setup_interrupt(dev))
 	return ENXIO;
 
Index: src/sys/dev/ata/ata-pci.h
===================================================================
RCS file: /home/ncvs/src/sys/dev/ata/ata-pci.h,v
retrieving revision 1.82
diff -a -u -r1.82 ata-pci.h
--- src/sys/dev/ata/ata-pci.h	18 Nov 2007 14:44:52 -0000	1.82
+++ src/sys/dev/ata/ata-pci.h	22 Nov 2007 00:01:14 -0000
@@ -104,7 +104,9 @@
 #define ATA_ATI_IXP400_S1       0x43791002
 #define ATA_ATI_IXP400_S2       0x437a1002
 #define ATA_ATI_IXP600          0x438c1002
+#define ATA_ATI_IXP600_S1       0x43801002
 #define ATA_ATI_IXP700          0x439c1002
+#define ATA_ATI_IXP700_S1       0x43901002
 
 #define ATA_CENATEK_ID          0x16ca
 #define ATA_CENATEK_ROCKET      0x000116ca
>Release-Note:
>Audit-Trail:
>Unformatted:



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