This sums up the dts changes of the recent committed drivers into the kernel.
This will grant PMU, reboot, USB and gpio functionalities to the platform.
These patches are all based on existing and approved driver that is in the
kernel tree today.
Feng Kan (7):
arm64: dts: Add APM X-Gene USB 2.0 DTS node
Documentation: arm64: add SCU dts binding documentation to linux
kernel
arm64: dts: Add X-Gene reboot driver dts node
arm64: dts: Add Designware GPIO dts binding to APM X-Gene platform
arm64: dts: Add APM X-Gene SoC GFC GPIO controller DTS entries
Documentation: arm: pmu: Add Potenza PMU binding
arm64: dts: Add PMU node for APM X-Gene Storm SOC
Documentation/devicetree/bindings/arm/apm/scu.txt | 17 ++++++++
Documentation/devicetree/bindings/arm/pmu.txt | 1 +
arch/arm64/boot/dts/apm-storm.dtsi | 53 +++++++++++++++++++++++
3 files changed, 71 insertions(+)
create mode 100644 Documentation/devicetree/bindings/arm/apm/scu.txt
--
1.9.1
Add Designware GPIO dts binding to APM X-Gene platform
Signed-off-by: Feng Kan <[email protected]>
---
arch/arm64/boot/dts/apm-storm.dtsi | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/arch/arm64/boot/dts/apm-storm.dtsi b/arch/arm64/boot/dts/apm-storm.dtsi
index 9532aa3..d84cf33 100644
--- a/arch/arm64/boot/dts/apm-storm.dtsi
+++ b/arch/arm64/boot/dts/apm-storm.dtsi
@@ -525,6 +525,21 @@
interrupts = <0x0 0x4f 0x4>;
};
+ dwgpio: dwgpio@1c024000 {
+ compatible = "snps,dw-apb-gpio";
+ reg = <0x0 0x1c024000 0x0 0x1000>;
+ reg-io-width = <4>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ porta: gpio-controller@0 {
+ compatible = "snps,dw-apb-gpio-port";
+ gpio-controller;
+ snps,nr-gpios = <32>;
+ reg = <0>;
+ };
+ };
+
phy1: phy@1f21a000 {
compatible = "apm,xgene-phy";
reg = <0x0 0x1f21a000 0x0 0x100>;
--
1.9.1
Add the flash controller muxed gpio dts node for APM X-Gene SoC platform.
Signed-off-by: Feng Kan <[email protected]>
---
arch/arm64/boot/dts/apm-storm.dtsi | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/arch/arm64/boot/dts/apm-storm.dtsi b/arch/arm64/boot/dts/apm-storm.dtsi
index d84cf33..b2e6068 100644
--- a/arch/arm64/boot/dts/apm-storm.dtsi
+++ b/arch/arm64/boot/dts/apm-storm.dtsi
@@ -540,6 +540,13 @@
};
};
+ gfcgpio: gpio0@1701c000 {
+ compatible = "apm,xgene-gpio";
+ reg = <0x0 0x1701c000 0x0 0x40>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
+
phy1: phy@1f21a000 {
compatible = "apm,xgene-phy";
reg = <0x0 0x1f21a000 0x0 0x100>;
--
1.9.1
This patch adds the PMU device tree node for APM X-Gene Storm SOC.
Signed-off-by: Vinayak Kale <[email protected]>
Signed-off-by: Feng Kan <[email protected]>
---
arch/arm64/boot/dts/apm-storm.dtsi | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/arch/arm64/boot/dts/apm-storm.dtsi b/arch/arm64/boot/dts/apm-storm.dtsi
index b2e6068..85d2dd7 100644
--- a/arch/arm64/boot/dts/apm-storm.dtsi
+++ b/arch/arm64/boot/dts/apm-storm.dtsi
@@ -97,6 +97,11 @@
clock-frequency = <50000000>;
};
+ pmu {
+ compatible = "apm,potenza-pmu", "arm,armv8-pmuv3";
+ interrupts = <1 12 0xff04>;
+ };
+
soc {
compatible = "simple-bus";
#address-cells = <2>;
--
1.9.1
This add documentation for the SCU system clock unit device tree binding
to the kernel.
Signed-off-by: Feng Kan <[email protected]>
---
Documentation/devicetree/bindings/arm/apm/scu.txt | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
create mode 100644 Documentation/devicetree/bindings/arm/apm/scu.txt
diff --git a/Documentation/devicetree/bindings/arm/apm/scu.txt b/Documentation/devicetree/bindings/arm/apm/scu.txt
new file mode 100644
index 0000000..b45be06
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/apm/scu.txt
@@ -0,0 +1,17 @@
+APM X-GENE SoC series SCU Registers
+
+This system clock unit contain various register that control block resets,
+clock enable/disables, clock divisors and other deepsleep registers.
+
+Properties:
+ - compatible : should contain two values. First value must be:
+ - "apm,xgene-scu"
+ second value must be always "syscon".
+
+ - reg : offset and length of the register set.
+
+Example :
+ scu: system-clk-controller@17000000 {
+ compatible = "apm,xgene-scu","syscon";
+ reg = <0x0 0x17000000 0x0 0x400>;
+ };
--
1.9.1
This patch documents the compatible string for APM X-Gene Potenza CPU's PMU.
Signed-off-by: Vinayak Kale <[email protected]>
Signed-off-by: Feng Kan <[email protected]>
---
Documentation/devicetree/bindings/arm/pmu.txt | 1 +
1 file changed, 1 insertion(+)
diff --git a/Documentation/devicetree/bindings/arm/pmu.txt b/Documentation/devicetree/bindings/arm/pmu.txt
index 75ef91d..6d268b3 100644
--- a/Documentation/devicetree/bindings/arm/pmu.txt
+++ b/Documentation/devicetree/bindings/arm/pmu.txt
@@ -7,6 +7,7 @@ representation in the device tree should be done as under:-
Required properties:
- compatible : should be one of
+ "apm,potenza-pmu"
"arm,armv8-pmuv3"
"arm,cortex-a17-pmu"
"arm,cortex-a15-pmu"
--
1.9.1
Add X-Gene platform reboot driver dts node.
Signed-off-by: Feng Kan <[email protected]>
---
arch/arm64/boot/dts/apm-storm.dtsi | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/arch/arm64/boot/dts/apm-storm.dtsi b/arch/arm64/boot/dts/apm-storm.dtsi
index a80f2fa..9532aa3 100644
--- a/arch/arm64/boot/dts/apm-storm.dtsi
+++ b/arch/arm64/boot/dts/apm-storm.dtsi
@@ -103,6 +103,11 @@
#size-cells = <2>;
ranges;
+ scu: system-clk-controller@17000000 {
+ compatible = "apm,xgene-scu","syscon";
+ reg = <0x0 0x17000000 0x0 0x400>;
+ };
+
clocks {
#address-cells = <2>;
#size-cells = <2>;
@@ -354,6 +359,13 @@
};
};
+ reboot: reboot@17000014 {
+ compatible = "syscon-reboot";
+ regmap = <&scu>;
+ offset = <0x14>;
+ mask = <0x1>;
+ };
+
pcie0: pcie@1f2b0000 {
status = "disabled";
device_type = "pci";
--
1.9.1
This parch adds the device tree nodes for APM X-Gnene USB host controller.
Since X-Gene SOC supports maximum 2 USB ports, 2 dts node are added.
Signed-off-by: Bao Truong <[email protected]>
Signed-off-by: Feng Kan <[email protected]>
---
arch/arm64/boot/dts/apm-storm.dtsi | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/arch/arm64/boot/dts/apm-storm.dtsi b/arch/arm64/boot/dts/apm-storm.dtsi
index 3eef74b..a80f2fa 100644
--- a/arch/arm64/boot/dts/apm-storm.dtsi
+++ b/arch/arm64/boot/dts/apm-storm.dtsi
@@ -587,6 +587,20 @@
phy-names = "sata-phy";
};
+ usb0: dwusb@19000000 {
+ status = "disabled";
+ compatible = "xhci-platform";
+ reg = <0x0 0x19000000 0x0 0x100000>;
+ interrupts = <0x0 0x89 0x4>;
+ };
+
+ usb1: dwusb@19800000 {
+ status = "disabled";
+ compatible = "xhci-platform";
+ reg = <0x0 0x19800000 0x0 0x100000>;
+ interrupts = <0x0 0x8a 0x4>;
+ };
+
rtc: rtc@10510000 {
compatible = "apm,xgene-rtc";
reg = <0x0 0x10510000 0x0 0x400>;
--
1.9.1
On Mon, 2014-10-27 at 12:28 -0700, Feng Kan wrote:
> This parch adds the device tree nodes for APM X-Gnene USB host controller.
> Since X-Gene SOC supports maximum 2 USB ports, 2 dts node are added.
>
> Signed-off-by: Bao Truong <[email protected]>
> Signed-off-by: Feng Kan <[email protected]>
> ---
> arch/arm64/boot/dts/apm-storm.dtsi | 14 ++++++++++++++
> 1 file changed, 14 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/apm-storm.dtsi b/arch/arm64/boot/dts/apm-storm.dtsi
> index 3eef74b..a80f2fa 100644
> --- a/arch/arm64/boot/dts/apm-storm.dtsi
> +++ b/arch/arm64/boot/dts/apm-storm.dtsi
> @@ -587,6 +587,20 @@
> phy-names = "sata-phy";
> };
>
> + usb0: dwusb@19000000 {
> + status = "disabled";
> + compatible = "xhci-platform";
> + reg = <0x0 0x19000000 0x0 0x100000>;
> + interrupts = <0x0 0x89 0x4>;
> + };
> +
> + usb1: dwusb@19800000 {
> + status = "disabled";
> + compatible = "xhci-platform";
> + reg = <0x0 0x19800000 0x0 0x100000>;
> + interrupts = <0x0 0x8a 0x4>;
> + };
> +
Should these have "dma-coherent" properties?
On Wed, Oct 29, 2014 at 04:23:37PM +0000, Mark Salter wrote:
> On Mon, 2014-10-27 at 12:28 -0700, Feng Kan wrote:
> > This parch adds the device tree nodes for APM X-Gnene USB host controller.
> > Since X-Gene SOC supports maximum 2 USB ports, 2 dts node are added.
> >
> > Signed-off-by: Bao Truong <[email protected]>
> > Signed-off-by: Feng Kan <[email protected]>
> > ---
> > arch/arm64/boot/dts/apm-storm.dtsi | 14 ++++++++++++++
> > 1 file changed, 14 insertions(+)
> >
> > diff --git a/arch/arm64/boot/dts/apm-storm.dtsi b/arch/arm64/boot/dts/apm-storm.dtsi
> > index 3eef74b..a80f2fa 100644
> > --- a/arch/arm64/boot/dts/apm-storm.dtsi
> > +++ b/arch/arm64/boot/dts/apm-storm.dtsi
> > @@ -587,6 +587,20 @@
> > phy-names = "sata-phy";
> > };
> >
> > + usb0: dwusb@19000000 {
> > + status = "disabled";
> > + compatible = "xhci-platform";
> > + reg = <0x0 0x19000000 0x0 0x100000>;
> > + interrupts = <0x0 0x89 0x4>;
> > + };
> > +
> > + usb1: dwusb@19800000 {
> > + status = "disabled";
> > + compatible = "xhci-platform";
> > + reg = <0x0 0x19800000 0x0 0x100000>;
> > + interrupts = <0x0 0x8a 0x4>;
> > + };
> > +
>
> Should these have "dma-coherent" properties?
Just a note here: if the device is coherent but the DT does not specify
it as such, it's not just a matter of performance but potentially data
corruption. The current DMA ops for non-coherent devices perform a
D-cache invalidate on the unmap path with the FROM_DEVICE direction. If
the device is coherent and the DMA transfer (FROM_DEVICE) allocated data
in the system cache (L3), the CPU cache invalidation after the transfer
would corrupt such data.
We had a similar discussion internally around coherency properties for
ACPI. If we don't have guarantees that the DT (or ACPI) tables always
pass the correct information, we should change the kernel DMA ops to
perform the safe clean+invalidate on the unmap path (some CPU
implementations do this by default).
--
Catalin