[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#622997: libata-sff/pata_cmd64x problem with hardwired configurations



Hello.

On 18-04-2011 3:58, James Bottomley wrote:

I've got a parisc system where the DVD drive is hardwired to a silicon
image controller:

00:02.0 IDE interface: Silicon Image, Inc. SiI 0649 Ultra ATA/100 PCI to
ATA Host Controller (rev 02) (prog-if 8f [Master SecP SecO PriP PriO])
         Subsystem: Silicon Image, Inc. SiI 0649 Ultra ATA/100 PCI to ATA
Host Controller
         Flags: bus master, medium devsel, latency 64, IRQ 69
         I/O ports at 0d18 [size=8]
         I/O ports at 0d24 [size=4]
         I/O ports at 0d10 [size=8]
         I/O ports at 0d20 [size=4]
         I/O ports at 0d00 [size=16]
         Capabilities: [60] Power Management version 2
         Kernel driver in use: pata_cmd64x

The specific problem is that any access to the registers where the
secondary port should be causes an instant fault on the box (I think
because the second port just isn't wired up internally, so the memory
doesn't respond), so the default libata-sff driver that pata_cmd64x is
attached to causes this by insisting on probing both ports.

Perhaps the secondary port is disabled (though it's strange that your lspci dump shows I/O resources for both ports allocated).

I can get all of this working by fixing up all the hard coded knowledge
in libata-sff only to use a single port.

However, I can't fix the libata-sff driver until I know how to tell
there's only one port wired.  Does anyone with cmd649 knowledge have any
idea how I might tell this?

The secondary port is enabled in the PCI config. space: register 0x51 bit 3 controls this. Unfortunately, pata_cmd64x driver still doesn't check the channel enable bits; the cmd64x driver does though, so it might be worth trying...

James

WBR, Sergei



Reply to: