Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 06 Mar 2008 09:50:08 +0300
From:      "Andrey V. Elsukov" <bu7cher@yandex.ru>
To:        Sean Bruno <sbruno@miralink.com>
Cc:        freebsd-drivers@freebsd.org
Subject:   Re: ICH9 based IDE speed negotiation error
Message-ID:  <47CF9420.1060204@yandex.ru>
In-Reply-To: <47CF82FA.20706@miralink.com>
References:  <47CEF71D.6060600@miralink.com> <47CF786D.2000805@yandex.ru> <47CF7C73.70403@miralink.com> <47CF82FA.20706@miralink.com>

next in thread | previous in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.
--------------070100040804080403010604
Content-Type: text/plain; charset=KOI8-R; format=flowed
Content-Transfer-Encoding: 7bit

Sean Bruno wrote:
> Sean Bruno wrote:
>> Andrey V. Elsukov wrote:
>>> Sean Bruno wrote:
>>>> I have an IBM x3250M with a CF IDE flash device in the IDE 
>>>> controller socket instead of the CDROM.
>>>> It appears that the ICH9 IDE chipset is negotiating to UDMA66 
>>>> instead of UDMA33 on this board, and that is not the speed of my CF 
>>>> IDE device:
>>>> http://www.transcendusa.com/Products/ModDetail.asp?ModNo=26&LangNo=0
>>>
>>> ICH9 doesn't have an IDE function. Can you show `pciconf -l` and
>>> `grep ata /var/run/dmesg.boot` outputs?
>>>
>> Done and done.  Wierd huh?  I was confused as well.

 >ata3: <ATA channel 1> on atapci1
 >atapci1: Reserved 0x8 bytes for rid 0x18 type 4 at 0x1c28
 >atapci1: Reserved 0x4 bytes for rid 0x1c type 4 at 0x1c20
 >ata3: reset tp1 mask=03 ostat0=50 ostat1=00
 >ata3: stat0=0x50 err=0x01 lsb=0x00 msb=0x00
 >ata3: stat1=0x00 err=0x01 lsb=0x00 msb=0x00
 >ata3: reset tp2 stat0=50 stat1=00 devices=0x1<ATA_MASTER>
 >ata3: [MPSAFE]
 >ata: ata0 already exists; skipping it
 >ata: ata1 already exists; skipping it
 >ata3-master: pio=PIO4 wdma=WDMA2 udma=UDMA66 cable=40 wire
 >ad6: 488MB <TRANSCEND 2.0> at ata3-master UDMA66

Try the attached patch.
Maybe Soren can suggest more properer patch?
	
-- 
WBR, Andrey V. Elsukov

--------------070100040804080403010604
Content-Type: text/plain;
 name="ata.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="ata.diff"

Index: src/sys/dev/ata/ata-chipset.c
===================================================================
RCS file: /ncvs/src/sys/dev/ata/ata-chipset.c,v
retrieving revision 1.211
diff -u -b -p -r1.211 ata-chipset.c
--- src/sys/dev/ata/ata-chipset.c	13 Dec 2007 11:47:36 -0000	1.211
+++ src/sys/dev/ata/ata-chipset.c	6 Mar 2008 06:49:24 -0000
@@ -2049,7 +2049,7 @@ ata_intel_sata_setmode(device_t dev, int
 	    atadev->mode = ATA_SA150;
     }
     else {
-	mode = ata_limit_mode(dev, mode, ATA_UDMA5);
+	mode = ata_check_80pin(dev, ATA_UDMA5);
 	if (!ata_controlcmd(dev, ATA_SETFEATURES, ATA_SF_SETXFER, 0, mode))
 	    atadev->mode = mode;
     }

--------------070100040804080403010604--



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