Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8996b89d authored by Mark Langsdorf's avatar Mark Langsdorf Committed by Jeff Garzik
Browse files

ata: add platform driver for Calxeda AHCI controller



Calxeda highbank SATA phy has intermittent problems bringing up a link
with Gen3 drives. Retrying the phy hard reset can work-around this issue,
but each reset also disables spread spectrum support. The reset function
also needs to reprogram the phy to enable spread spectrum support.

Create a new driver based on ahci_platform to support the Calxeda Highbank
SATA controller.

Signed-off-by: default avatarMark Langsdorf <mark.langsdorf@calxeda.com>
Signed-off-by: default avatarRob Herring <rob.herring@calxeda.com>
Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
parent 100f586b
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
Calxeda Highbank Combination Phys for SATA

Properties:
- compatible : Should be "calxeda,hb-combophy"
- #phy-cells: Should be 1.
- reg : Address and size for Combination Phy registers.
- phydev: device ID for programming the combophy.

Example:

	combophy5: combo-phy@fff5d000 {
		compatible = "calxeda,hb-combophy";
		#phy-cells = <1>;
		reg = <0xfff5d000 0x1000>;
		phydev = <31>;
	};
+8 −0
Original line number Diff line number Diff line
@@ -8,9 +8,17 @@ Required properties:
- interrupts        : <interrupt mapping for SATA IRQ>
- reg               : <registers mapping>

Optional properties:
- calxeda,port-phys: phandle-combophy and lane assignment, which maps each
			SATA port to a combophy and a lane within that
			combophy

Example:
        sata@ffe08000 {
		compatible = "calxeda,hb-ahci";
                reg = <0xffe08000 0x1000>;
                interrupts = <115>;
		calxeda,port-phys = <&combophy5 0 &combophy0 0 &combophy0 1
					&combophy0 2 &combophy0 3>;

        };
+17 −0
Original line number Diff line number Diff line
@@ -121,6 +121,9 @@
			compatible = "calxeda,hb-ahci";
			reg = <0xffe08000 0x10000>;
			interrupts = <0 83 4>;
			calxeda,port-phys = <&combophy5 0 &combophy0 0
					     &combophy0 1 &combophy0 2
					     &combophy0 3>;
		};

		sdhci@ffe0e000 {
@@ -306,5 +309,19 @@
			reg = <0xfff51000 0x1000>;
			interrupts = <0 80 4  0 81 4  0 82 4>;
		};

		combophy0: combo-phy@fff58000 {
			compatible = "calxeda,hb-combophy";
			#phy-cells = <1>;
			reg = <0xfff58000 0x1000>;
			phydev = <5>;
		};

		combophy5: combo-phy@fff5d000 {
			compatible = "calxeda,hb-combophy";
			#phy-cells = <1>;
			reg = <0xfff5d000 0x1000>;
			phydev = <31>;
		};
	};
};
+8 −0
Original line number Diff line number Diff line
@@ -214,6 +214,14 @@ config SATA_DWC_VDEBUG
	help
	  This option enables the taskfile dumping and NCQ debugging.

config SATA_HIGHBANK
	tristate "Calxeda Highbank SATA support"
	help
	  This option enables support for the Calxeda Highbank SoC's
	  onboard SATA.

	  If unsure, say N.

config SATA_MV
	tristate "Marvell SATA support"
	help
+1 −0
Original line number Diff line number Diff line
@@ -9,6 +9,7 @@ obj-$(CONFIG_SATA_FSL) += sata_fsl.o
obj-$(CONFIG_SATA_INIC162X)	+= sata_inic162x.o
obj-$(CONFIG_SATA_SIL24)	+= sata_sil24.o
obj-$(CONFIG_SATA_DWC)		+= sata_dwc_460ex.o
obj-$(CONFIG_SATA_HIGHBANK)	+= sata_highbank.o

# SFF w/ custom DMA
obj-$(CONFIG_PDC_ADMA)		+= pdc_adma.o
Loading