Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 08 Nov 2007 11:22:55 +0100
From:      =?ISO-8859-1?Q?S=F8ren_Schmidt?= <sos@deepcore.dk>
To:        Alexander Sabourenkov <screwdriver@lxnt.info>
Cc:        Nathan Butcher <n-butcher@fusiongol.com>, freebsd-current@freebsd.org
Subject:   Re: Remaining SATA (and other) issues
Message-ID:  <4732E37F.9020707@deepcore.dk>
In-Reply-To: <4732E18A.6040802@lxnt.info>
References:  <47326FB8.50602@fusiongol.com> <4732CEE3.3070003@lxnt.info> <4732DA32.3090601@deepcore.dk> <4732E18A.6040802@lxnt.info>

next in thread | previous in thread | raw e-mail | index | archive | help
Alexander Sabourenkov wrote:
> S=C3=B8ren Schmidt wrote:
>> You cant remove this, ATA uses the 0x54 reg to store interrupts, its=20
>> a gen purpose reg on the promises, this initialization is neededed.
>
> Hmm. Cursory greps do not show writes there neither in vendor, nor in=20
> linux drivers.
> I only found it in ata_piix.c from linux, as PIIX_IOCFG /* IDE I/O=20
> configuration register */.
>
> Thus I'm not sure it is really needed, but I leave that up to your=20
> expertise.
As I said ATA (as in my driver) uses this promise general purpose=20
register to store interrupts into, it is very much needed.
The reason is that on some promise chips the interrupts are reset on=20
read, so I can only read the status *once* but I need it several times.
>> This part is wrong for older promise chips, as the port# is different.=

>> I also have a hard time seeing that this couldd change anything since =

>> the registers are reset etc "my way" on each interrupt.
>
> If that means ata_promise_mio_intr(), then no, it does not touch 0x60=20
> for PRSATA2, it touches 0x54 instead.
Oh yes it does look for the "stat_reg" in ata_promise_mio_status() which =

does the interrupt status getting etc...

>> Besides you *do not* want to pass the other bits through, they shoudl =

>> be masked off and always written as 0's.
>
> Why then vendor does pass them through?
>
Good question, their docs says nothing about it actually, I suppose this =

is more a programming style question than anything else, anyhow it will=20
only change evt behavior until the first interrupt, then I'll write the=20
entire reg anyways :)

-S=F8ren




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