Thread (16 messages) flat view 16 messages, 4 authors, 2011-02-15

Re: AHCI support Port Multiplier problem.

From: Tejun Heo <tj@kernel.org>
Date: 2011-01-11 14:37:42

Hi,

On Mon, Jan 10, 2011 at 09:46:45AM +0800, Luo Dislo wrote:
This is my company(Faraday) implemented AHCI SATA controller. Our 
controller is not located at PCI bus, but AHB bus(ARM based platform).

However, I modify Linux kernel builtin AHCI driver(ahci.c) to replace
the PCI related code by using platform bus. Just pretty similar way 
with drivers/ata/ahci_platform.c (Kernel 2.6.35).

I think the problem happens because libata does not give up, keep on 
expecting the Port Multiplier Signature when we set CONFIG_SATA_PMP 
to 1. 

I know how to fix this problem, just add AHCI_HFLAG_NO_PMP to
AHCI_HFLAGS when I connect hard drive to the controller. Meanwhile,
when I want to connect the Port Muliplier to my controller, I need
to remove AHCI_HFLAG_NO_PMP from AHCI_HFLAGS.

I don't think this is a good solution because I have to compile two
version of my code. It does not make sense. We set CONFIG_SATA_PMP
to 1 and inside the driver code DOES NOT have AHCI_HFLAG_NO_PMP just
means that controller support Port Multiplier but the device
connecting to the port might be others type.
Please take a look at ahci_sb600_softreset() in ahci.c.  The
controller had the same problem.  Preferably, please fix your
controller but as there are more than one controller with this
problem, we probably should implement it as a quirk in libahci.c.

Thanks.

-- 
tejun
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help