Marvell 88SE6121 is a ahci controller, but I can't make it work with the achi
driver.
This part:
+ else if (pdev->device == 0x6121) {
+ mmio_base = pci_iomap(pdev, 5, 0);
+ if (mmio_base == NULL) {
+ return -ENOMEM;
+ }
+ /* turn on legacy mode */
+ writel(0, mmio_base + 0x04);
+ (void) readl(mmio_base + 0x04); /* flush */
+ }
put the ahci in legacy mode and work with pata_marvell.
Perhaps someone else can make it work whith the ahci driver.
Jose Alberto
--- linux-2.6.20-rc3/drivers/ata/pata_marvell.c 2007-01-01 01:53:20.000000000 +0100
+++ linux-2.6.20-rc3.new/drivers/ata/pata_marvell.c 2007-01-06 12:33:03.000000000 +0100
@@ -49,7 +49,7 @@
devices = readl(barp + 0x0C);
pci_iounmap(pdev, barp);
- if ((pdev->device == 0x6145) && (ap->port_no == 0) &&
+ if (((pdev->device == 0x6145) || (pdev->device == 0x6121)) && (ap->port_no == 0) &&
(!(devices & 0x10))) /* PATA enable ? */
return -ENOENT;
@@ -181,9 +181,19 @@
};
struct ata_port_info *port_info[2] = { &info, &info_sata };
int n_port = 2;
+ void __iomem *mmio_base;
if (pdev->device == 0x6101)
n_port = 1;
+ else if (pdev->device == 0x6121) {
+ mmio_base = pci_iomap(pdev, 5, 0);
+ if (mmio_base == NULL) {
+ return -ENOMEM;
+ }
+ /* turn on legacy mode */
+ writel(0, mmio_base + 0x04);
+ (void) readl(mmio_base + 0x04); /* flush */
+ }
return ata_pci_init_one(pdev, port_info, n_port);
}
@@ -191,6 +201,7 @@
static const struct pci_device_id marvell_pci_tbl[] = {
{ PCI_DEVICE(0x11AB, 0x6101), },
{ PCI_DEVICE(0x11AB, 0x6145), },
+ { PCI_DEVICE(0x11AB, 0x6121), },
{ } /* terminate list */
};
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]