mirror of https://gitee.com/openkylin/linux.git
ahci: Add Marvell 6121 SATA support
Signed-off-by: Jose Alberto Reguero <jareguero@telefonica.net> Signed-off-by: Jeff Garzik <jeff@garzik.org>
This commit is contained in:
parent
4a38e733a7
commit
c40e7cb89f
|
@ -591,6 +591,7 @@ static const struct pci_device_id ahci_pci_tbl[] = {
|
|||
|
||||
/* Marvell */
|
||||
{ PCI_VDEVICE(MARVELL, 0x6145), board_ahci_mv }, /* 6145 */
|
||||
{ PCI_VDEVICE(MARVELL, 0x6121), board_ahci_mv }, /* 6121 */
|
||||
|
||||
/* Generic, PCI class code for AHCI */
|
||||
{ PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
|
||||
|
@ -665,6 +666,7 @@ static void ahci_save_initial_config(struct pci_dev *pdev,
|
|||
void __iomem *mmio = pcim_iomap_table(pdev)[AHCI_PCI_BAR];
|
||||
u32 cap, port_map;
|
||||
int i;
|
||||
int mv;
|
||||
|
||||
/* make sure AHCI mode is enabled before accessing CAP */
|
||||
ahci_enable_ahci(mmio);
|
||||
|
@ -700,12 +702,16 @@ static void ahci_save_initial_config(struct pci_dev *pdev,
|
|||
* presence register, as bit 4 (counting from 0)
|
||||
*/
|
||||
if (hpriv->flags & AHCI_HFLAG_MV_PATA) {
|
||||
if (pdev->device == 0x6121)
|
||||
mv = 0x3;
|
||||
else
|
||||
mv = 0xf;
|
||||
dev_printk(KERN_ERR, &pdev->dev,
|
||||
"MV_AHCI HACK: port_map %x -> %x\n",
|
||||
hpriv->port_map,
|
||||
hpriv->port_map & 0xf);
|
||||
port_map,
|
||||
port_map & mv);
|
||||
|
||||
port_map &= 0xf;
|
||||
port_map &= mv;
|
||||
}
|
||||
|
||||
/* cross check port_map and cap.n_ports */
|
||||
|
@ -1172,9 +1178,14 @@ static void ahci_init_controller(struct ata_host *host)
|
|||
int i;
|
||||
void __iomem *port_mmio;
|
||||
u32 tmp;
|
||||
int mv;
|
||||
|
||||
if (hpriv->flags & AHCI_HFLAG_MV_PATA) {
|
||||
port_mmio = __ahci_port_base(host, 4);
|
||||
if (pdev->device == 0x6121)
|
||||
mv = 2;
|
||||
else
|
||||
mv = 4;
|
||||
port_mmio = __ahci_port_base(host, mv);
|
||||
|
||||
writel(0, port_mmio + PORT_IRQ_MASK);
|
||||
|
||||
|
|
Loading…
Reference in New Issue