Skip to content

Commit

Permalink
ahci: Add Marvell 6121 SATA support
Browse files Browse the repository at this point in the history
Signed-off-by: Jose Alberto Reguero <jareguero@telefonica.net>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
  • Loading branch information
Jose Alberto Reguero authored and Jeff Garzik committed Mar 17, 2008
1 parent 4a38e73 commit c40e7cb
Showing 1 changed file with 15 additions and 4 deletions.
19 changes: 15 additions & 4 deletions drivers/ata/ahci.c
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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 */
Expand Down Expand Up @@ -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);

Expand Down

0 comments on commit c40e7cb

Please sign in to comment.