Yes, refer to ahci_sb600_softreset() function solved my problem. Thanks --- 11/1/11 (ä)ïTejun Heo <tj@xxxxxxxxxx> åéï > åäè: Tejun Heo <tj@xxxxxxxxxx> > äæ: Re: AHCI support Port Multiplier problem. > æäè: "Luo Dislo" <dislo_b_j@xxxxxxxxxxxx> > åæ: jgarzik@xxxxxxxxx, linux-ide@xxxxxxxxxxxxxxx > ææ: 2011å1æ11æ,ä,äå10:37 > 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 > -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html