On Wed, Dec 04, 2013 at 01:10:53PM +0100, oliver@xxxxxxxxxxx wrote: > From: Oliver Schinagl <oliver@xxxxxxxxxxx> > > The Allwinner sunxi platforms have patched in the following to enable > DMA. This patch enables DMA controllers for the SUNXI Architecture. > > Signed-off-by: Olliver Schinagl <oliver@xxxxxxxxxxx> > --- > drivers/ata/ahci.h | 6 ++++++ > drivers/ata/libahci.c | 8 ++++++++ > 2 files changed, 14 insertions(+) > > diff --git a/drivers/ata/ahci.h b/drivers/ata/ahci.h > index 2289efdf..2bf2423 100644 > --- a/drivers/ata/ahci.h > +++ b/drivers/ata/ahci.h > @@ -138,6 +138,7 @@ enum { > PORT_SCR_NTF = 0x3c, /* SATA phy register: SNotification */ > PORT_FBS = 0x40, /* FIS-based Switching */ > PORT_DEVSLP = 0x44, /* device sleep */ > + PORT_DMA = 0x70, /* direct memory access */ > > /* PORT_IRQ_{STAT,MASK} bits */ > PORT_IRQ_COLD_PRES = (1 << 31), /* cold presence detect */ > @@ -209,6 +210,11 @@ enum { > PORT_DEVSLP_DSP = (1 << 1), /* DevSlp present */ > PORT_DEVSLP_ADSE = (1 << 0), /* Aggressive DevSlp enable */ > > + /* PORT_DMA bits */ > + PORT_DMA_SETUP_OFFSET = 8, /* dma setup offset */ > + PORT_DMA_SETUP_MASK = (0xff << PORT_DMA_SETUP_OFFSET),/* dma mask */ > + PORT_DMA_SETUP_INIT = (0x44 << 0), Ummm... this doesn't belong to ahci proper, right? > + > /* hpriv->flags bits */ > > #define AHCI_HFLAGS(flags) .private_data = (void *)(flags) > diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c > index c482f8c..d697a74 100644 > --- a/drivers/ata/libahci.c > +++ b/drivers/ata/libahci.c > @@ -570,6 +570,14 @@ void ahci_start_engine(struct ata_port *ap) > void __iomem *port_mmio = ahci_port_base(ap); > u32 tmp; > > +#ifdef CONFIG_ARCH_SUNXI > + /* Setup DMA before DMA start */ > + tmp = readl(port_mmio + PORT_DMA); > + tmp &= ~PORT_DMA_SETUP_MASK; > + tmp |= PORT_DMA_SETUP_INIT << PORT_DMA_SETUP_OFFSET; > + writel(tmp, port_mmio + PORT_DMA); > +#endif If this is something platform device specific, wouldn't overriding ->port_start() which wraps around ahci_port_start() make more sense? 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