From: Olliver Schinagl <oliver@xxxxxxxxxxx>
This patch series adds Allwinner sunxi support to platform_ahci.
There are a few quirks here however that will need discussing.
Allwinner added something to setup the DMA engine prior to enabling DMA in
libahci.c. I'm not familiar at all with the AHCI spec and not sure what
the proper way to implement this would have been. Don't other platforms
optionally require the same thing?
Also the way ahci_platform works seems a little hack-ish, it seems like
something along the lines of ahci_platform_register(ahci-data) would be more
appropriate, but not sure yet on those details (I am just a beginner).
Furthermore this driver should, in theory, work on the A10 but on my
cubieboard 1 it does not work yet (just hangs somewhere in libahci or after,
but not the DMA call that was altered). I've also tested it the cubietruck,
cubieboard 2 and olinuxino and it worked fine there.
Thanks,
Oliver
Oliver Schinagl (3):
RFC: AHCI: libahci is missing DMA
ARM: sunxi: Add an ahci-platform compatible AHCI driver for the
Allwinner SUNXi series of SoCs
ARM: sunxi: dts: Add ahci support to a few A10 and A20 boards
.../devicetree/bindings/ata/ahci-sunxi.txt | 24 ++
arch/arm/boot/dts/sun4i-a10-cubieboard.dts | 26 ++
arch/arm/boot/dts/sun4i-a10.dtsi | 9 +
arch/arm/boot/dts/sun7i-a20-cubieboard2.dts | 26 ++
arch/arm/boot/dts/sun7i-a20-cubietruck.dts | 26 ++
arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts | 26 ++
arch/arm/boot/dts/sun7i-a20.dtsi | 9 +
drivers/ata/Kconfig | 9 +
drivers/ata/Makefile | 1 +
drivers/ata/ahci.h | 6 +
drivers/ata/ahci_platform.c | 12 +
drivers/ata/ahci_sunxi.c | 305 +++++++++++++++++++++
drivers/ata/libahci.c | 8 +
13 files changed, 487 insertions(+)
create mode 100644 Documentation/devicetree/bindings/ata/ahci-sunxi.txt
create mode 100644 drivers/ata/ahci_sunxi.c