Do you means it is a better idea to modify "enum board_ids" and add a new board id such as board_ahci_sb700_loongson, and then add a new entry in ahci_port_info[]? If so, I think there is a problem: the pci id of our AHCI controller is 1002:4390, if I add board_ahci_sb700_loongson, then I should also add { PCI_VDEVICE(ATI, 0x4390), board_ahci_sb700_loongson }, in ahci_pci_tbl[], but ahci_pci_tbl[] already has a line { PCI_VDEVICE(ATI, 0x4390), board_ahci_sb700 }, Then which entry will match the device? On Sun, Jun 17, 2012 at 8:05 PM, Borislav Petkov <bp@xxxxxxxxx> wrote: > On Fri, Jun 15, 2012 at 08:42:47PM +0800, huacai chen wrote: >> On Fri, Jun 15, 2012 at 6:04 PM, Sergei Shtylyov <sshtylyov@xxxxxxxxxx> wrote: >> > Hello. >> > >> > >> > On 15-06-2012 12:09, Huacai Chen wrote: >> > >> >> Signed-off-by: Huacai Chen<chenhc@xxxxxxxxxx> >> >> Signed-off-by: Hongliang Tao<taohl@xxxxxxxxxx> >> >> Signed-off-by: Hua Yan<yanh@xxxxxxxxxx> >> > >> > >> > You should have CCed the 'linux-ide' mailing list. >> > >> > >> >> diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c >> >> index ebaf67e..3e3cfd8 100644 >> >> --- a/drivers/ata/ahci.c >> >> +++ b/drivers/ata/ahci.c >> >> @@ -183,7 +183,12 @@ static const struct ata_port_info ahci_port_info[] = >> >> { >> >> }, >> >> [board_ahci_sb700] = /* for SB700 and SB800 */ >> >> { >> >> +#ifndef CONFIG_CPU_LOONGSON3 >> >> AHCI_HFLAGS (AHCI_HFLAG_IGN_SERR_INTERNAL), >> >> +#else >> >> + AHCI_HFLAGS (AHCI_HFLAG_IGN_SERR_INTERNAL | >> >> + AHCI_HFLAG_32BIT_ONLY), >> >> +#endif >> > >> > >> > No, this #ifdef'ery won't do. You should add a new board type. >> All Loongson-3 based machines use AMD SB700 chipsets, add a new board >> type is better than #ifdef? > > SB700/800 chipsets don't need to set a 32-bit only DMA flag; why do you > need it when you use the same chipset? > > -- > Regards/Gruss, > Boris.