Commit 53e99dcf authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'soc-fixes-6.0-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc

Pull ARM SoC fixes from Arnd Bergmann:
 "These are the expected fixes for the SoC tree. I have let the patches
  pile up a little too long, so this is bigger than I would have liked.

   - Minor build fixes for Broadcom STB and NXP i.MX8M SoCs as well\ as
     TEE firmware

   - Updates to the MAINTAINERS file for the PolarFire SoC

   - Minor DT fixes for Renesas White Hawk and Arm Versatile and Juno
     platforms

   - A fix for a missing dependnecy in the NXP DPIO driver

   - Broadcom BCA fixes to the newly added devicetree files

   - Multiple fixes for Microchip AT91 based SoCs, dealing with
     self-refresh timings and regulator settings in DT

   - Several DT fixes for NXP i.MX platforms, dealing with incorrect
     GPIO settings, extraneous nodes, and a wrong clock setting"

* tag 'soc-fixes-6.0-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (45 commits)
  soc: fsl: select FSL_GUTS driver for DPIO
  ARM: dts: at91: sama5d2_icp: don't keep vdd_other enabled all the time
  ARM: dts: at91: sama5d27_wlsom1: don't keep ldo2 enabled all the time
  ARM: dts: at91: sama7g5ek: specify proper regulator output ranges
  ARM: dts: at91: sama5d2_icp: specify proper regulator output ranges
  ARM: dts: at91: sama5d27_wlsom1: specify proper regulator output ranges
  ARM: at91: pm: fix DDR recalibration when resuming from backup and self-refresh
  ARM: at91: pm: fix self-refresh for sama7g5
  soc: brcmstb: pm-arm: Fix refcount leak and __iomem leak bugs
  ARM: configs: at91: remove CONFIG_MICROCHIP_PIT64B
  ARM: ixp4xx: fix typos in comments
  arm64: dts: renesas: r8a779g0: Fix HSCIF0 interrupt number
  tee: fix compiler warning in tee_shm_register()
  arm64: dts: freescale: verdin-imx8mp: fix atmel_mxt_ts reset polarity
  arm64: dts: freescale: verdin-imx8mm: fix atmel_mxt_ts reset polarity
  arm64: dts: imx8mp: Fix I2C5 GPIO assignment on i.MX8M Plus DHCOM
  arm64: dts: imx8mm-venice-gw7901: fix port/phy validation
  arm64: dts: verdin-imx8mm: add otg2 pd to usbphy
  soc: imx: gpcv2: Assert reset before ungating clock
  arm64: dts: ls1028a-qds-65bb: don't use in-band autoneg for 2500base-x
  ...
parents 7e18e42e 12f09234
...@@ -17532,9 +17532,19 @@ M: Conor Dooley <conor.dooley@microchip.com> ...@@ -17532,9 +17532,19 @@ M: Conor Dooley <conor.dooley@microchip.com>
M: Daire McNamara <daire.mcnamara@microchip.com> M: Daire McNamara <daire.mcnamara@microchip.com>
L: linux-riscv@lists.infradead.org L: linux-riscv@lists.infradead.org
S: Supported S: Supported
F: Documentation/devicetree/bindings/clock/microchip,mpfs.yaml
F: Documentation/devicetree/bindings/gpio/microchip,mpfs-gpio.yaml
F: Documentation/devicetree/bindings/i2c/microchip,corei2c.yaml
F: Documentation/devicetree/bindings/mailbox/microchip,mpfs-mailbox.yaml
F: Documentation/devicetree/bindings/net/can/microchip,mpfs-can.yaml
F: Documentation/devicetree/bindings/pwm/microchip,corepwm.yaml
F: Documentation/devicetree/bindings/soc/microchip/microchip,mpfs-sys-controller.yaml
F: Documentation/devicetree/bindings/spi/microchip,mpfs-spi.yaml
F: Documentation/devicetree/bindings/usb/microchip,mpfs-musb.yaml
F: arch/riscv/boot/dts/microchip/ F: arch/riscv/boot/dts/microchip/
F: drivers/char/hw_random/mpfs-rng.c F: drivers/char/hw_random/mpfs-rng.c
F: drivers/clk/microchip/clk-mpfs.c F: drivers/clk/microchip/clk-mpfs.c
F: drivers/i2c/busses/i2c-microchip-core.c
F: drivers/mailbox/mailbox-mpfs.c F: drivers/mailbox/mailbox-mpfs.c
F: drivers/pci/controller/pcie-microchip-host.c F: drivers/pci/controller/pcie-microchip-host.c
F: drivers/rtc/rtc-mpfs.c F: drivers/rtc/rtc-mpfs.c
......
...@@ -399,7 +399,7 @@ ssp: spi@1000d000 { ...@@ -399,7 +399,7 @@ ssp: spi@1000d000 {
compatible = "arm,pl022", "arm,primecell"; compatible = "arm,pl022", "arm,primecell";
reg = <0x1000d000 0x1000>; reg = <0x1000d000 0x1000>;
clocks = <&sspclk>, <&pclk>; clocks = <&sspclk>, <&pclk>;
clock-names = "SSPCLK", "apb_pclk"; clock-names = "sspclk", "apb_pclk";
}; };
wdog: watchdog@10010000 { wdog: watchdog@10010000 {
......
...@@ -410,7 +410,7 @@ pb1176_ssp: spi@1010b000 { ...@@ -410,7 +410,7 @@ pb1176_ssp: spi@1010b000 {
interrupt-parent = <&intc_dc1176>; interrupt-parent = <&intc_dc1176>;
interrupts = <0 17 IRQ_TYPE_LEVEL_HIGH>; interrupts = <0 17 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&sspclk>, <&pclk>; clocks = <&sspclk>, <&pclk>;
clock-names = "SSPCLK", "apb_pclk"; clock-names = "sspclk", "apb_pclk";
}; };
pb1176_serial0: serial@1010c000 { pb1176_serial0: serial@1010c000 {
......
...@@ -555,7 +555,7 @@ spi@1000d000 { ...@@ -555,7 +555,7 @@ spi@1000d000 {
interrupt-parent = <&intc_pb11mp>; interrupt-parent = <&intc_pb11mp>;
interrupts = <0 11 IRQ_TYPE_LEVEL_HIGH>; interrupts = <0 11 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&sspclk>, <&pclk>; clocks = <&sspclk>, <&pclk>;
clock-names = "SSPCLK", "apb_pclk"; clock-names = "sspclk", "apb_pclk";
}; };
watchdog@1000f000 { watchdog@1000f000 {
......
...@@ -390,7 +390,7 @@ ssp: spi@1000d000 { ...@@ -390,7 +390,7 @@ ssp: spi@1000d000 {
compatible = "arm,pl022", "arm,primecell"; compatible = "arm,pl022", "arm,primecell";
reg = <0x1000d000 0x1000>; reg = <0x1000d000 0x1000>;
clocks = <&sspclk>, <&pclk>; clocks = <&sspclk>, <&pclk>;
clock-names = "SSPCLK", "apb_pclk"; clock-names = "sspclk", "apb_pclk";
}; };
wdog0: watchdog@1000f000 { wdog0: watchdog@1000f000 {
......
...@@ -76,8 +76,8 @@ mcp16502@5b { ...@@ -76,8 +76,8 @@ mcp16502@5b {
regulators { regulators {
vdd_3v3: VDD_IO { vdd_3v3: VDD_IO {
regulator-name = "VDD_IO"; regulator-name = "VDD_IO";
regulator-min-microvolt = <1200000>; regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3700000>; regulator-max-microvolt = <3300000>;
regulator-initial-mode = <2>; regulator-initial-mode = <2>;
regulator-allowed-modes = <2>, <4>; regulator-allowed-modes = <2>, <4>;
regulator-always-on; regulator-always-on;
...@@ -95,8 +95,8 @@ regulator-state-mem { ...@@ -95,8 +95,8 @@ regulator-state-mem {
vddio_ddr: VDD_DDR { vddio_ddr: VDD_DDR {
regulator-name = "VDD_DDR"; regulator-name = "VDD_DDR";
regulator-min-microvolt = <600000>; regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1850000>; regulator-max-microvolt = <1200000>;
regulator-initial-mode = <2>; regulator-initial-mode = <2>;
regulator-allowed-modes = <2>, <4>; regulator-allowed-modes = <2>, <4>;
regulator-always-on; regulator-always-on;
...@@ -118,8 +118,8 @@ regulator-state-mem { ...@@ -118,8 +118,8 @@ regulator-state-mem {
vdd_core: VDD_CORE { vdd_core: VDD_CORE {
regulator-name = "VDD_CORE"; regulator-name = "VDD_CORE";
regulator-min-microvolt = <600000>; regulator-min-microvolt = <1250000>;
regulator-max-microvolt = <1850000>; regulator-max-microvolt = <1250000>;
regulator-initial-mode = <2>; regulator-initial-mode = <2>;
regulator-allowed-modes = <2>, <4>; regulator-allowed-modes = <2>, <4>;
regulator-always-on; regulator-always-on;
...@@ -160,8 +160,8 @@ regulator-state-mem { ...@@ -160,8 +160,8 @@ regulator-state-mem {
LDO1 { LDO1 {
regulator-name = "LDO1"; regulator-name = "LDO1";
regulator-min-microvolt = <1200000>; regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3700000>; regulator-max-microvolt = <3300000>;
regulator-always-on; regulator-always-on;
regulator-state-standby { regulator-state-standby {
...@@ -175,9 +175,8 @@ regulator-state-mem { ...@@ -175,9 +175,8 @@ regulator-state-mem {
LDO2 { LDO2 {
regulator-name = "LDO2"; regulator-name = "LDO2";
regulator-min-microvolt = <1200000>; regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <3700000>; regulator-max-microvolt = <3300000>;
regulator-always-on;
regulator-state-standby { regulator-state-standby {
regulator-on-in-suspend; regulator-on-in-suspend;
......
...@@ -196,8 +196,8 @@ mcp16502@5b { ...@@ -196,8 +196,8 @@ mcp16502@5b {
regulators { regulators {
vdd_io_reg: VDD_IO { vdd_io_reg: VDD_IO {
regulator-name = "VDD_IO"; regulator-name = "VDD_IO";
regulator-min-microvolt = <1200000>; regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3700000>; regulator-max-microvolt = <3300000>;
regulator-initial-mode = <2>; regulator-initial-mode = <2>;
regulator-allowed-modes = <2>, <4>; regulator-allowed-modes = <2>, <4>;
regulator-always-on; regulator-always-on;
...@@ -215,8 +215,8 @@ regulator-state-mem { ...@@ -215,8 +215,8 @@ regulator-state-mem {
VDD_DDR { VDD_DDR {
regulator-name = "VDD_DDR"; regulator-name = "VDD_DDR";
regulator-min-microvolt = <600000>; regulator-min-microvolt = <1350000>;
regulator-max-microvolt = <1850000>; regulator-max-microvolt = <1350000>;
regulator-initial-mode = <2>; regulator-initial-mode = <2>;
regulator-allowed-modes = <2>, <4>; regulator-allowed-modes = <2>, <4>;
regulator-always-on; regulator-always-on;
...@@ -234,8 +234,8 @@ regulator-state-mem { ...@@ -234,8 +234,8 @@ regulator-state-mem {
VDD_CORE { VDD_CORE {
regulator-name = "VDD_CORE"; regulator-name = "VDD_CORE";
regulator-min-microvolt = <600000>; regulator-min-microvolt = <1250000>;
regulator-max-microvolt = <1850000>; regulator-max-microvolt = <1250000>;
regulator-initial-mode = <2>; regulator-initial-mode = <2>;
regulator-allowed-modes = <2>, <4>; regulator-allowed-modes = <2>, <4>;
regulator-always-on; regulator-always-on;
...@@ -257,7 +257,6 @@ VDD_OTHER { ...@@ -257,7 +257,6 @@ VDD_OTHER {
regulator-max-microvolt = <1850000>; regulator-max-microvolt = <1850000>;
regulator-initial-mode = <2>; regulator-initial-mode = <2>;
regulator-allowed-modes = <2>, <4>; regulator-allowed-modes = <2>, <4>;
regulator-always-on;
regulator-state-standby { regulator-state-standby {
regulator-on-in-suspend; regulator-on-in-suspend;
...@@ -272,8 +271,8 @@ regulator-state-mem { ...@@ -272,8 +271,8 @@ regulator-state-mem {
LDO1 { LDO1 {
regulator-name = "LDO1"; regulator-name = "LDO1";
regulator-min-microvolt = <1200000>; regulator-min-microvolt = <2500000>;
regulator-max-microvolt = <3700000>; regulator-max-microvolt = <2500000>;
regulator-always-on; regulator-always-on;
regulator-state-standby { regulator-state-standby {
...@@ -287,8 +286,8 @@ regulator-state-mem { ...@@ -287,8 +286,8 @@ regulator-state-mem {
LDO2 { LDO2 {
regulator-name = "LDO2"; regulator-name = "LDO2";
regulator-min-microvolt = <1200000>; regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3700000>; regulator-max-microvolt = <3300000>;
regulator-always-on; regulator-always-on;
regulator-state-standby { regulator-state-standby {
......
...@@ -244,8 +244,8 @@ mcp16502@5b { ...@@ -244,8 +244,8 @@ mcp16502@5b {
regulators { regulators {
vdd_3v3: VDD_IO { vdd_3v3: VDD_IO {
regulator-name = "VDD_IO"; regulator-name = "VDD_IO";
regulator-min-microvolt = <1200000>; regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3700000>; regulator-max-microvolt = <3300000>;
regulator-initial-mode = <2>; regulator-initial-mode = <2>;
regulator-allowed-modes = <2>, <4>; regulator-allowed-modes = <2>, <4>;
regulator-always-on; regulator-always-on;
...@@ -264,8 +264,8 @@ regulator-state-mem { ...@@ -264,8 +264,8 @@ regulator-state-mem {
vddioddr: VDD_DDR { vddioddr: VDD_DDR {
regulator-name = "VDD_DDR"; regulator-name = "VDD_DDR";
regulator-min-microvolt = <1300000>; regulator-min-microvolt = <1350000>;
regulator-max-microvolt = <1450000>; regulator-max-microvolt = <1350000>;
regulator-initial-mode = <2>; regulator-initial-mode = <2>;
regulator-allowed-modes = <2>, <4>; regulator-allowed-modes = <2>, <4>;
regulator-always-on; regulator-always-on;
...@@ -285,8 +285,8 @@ regulator-state-mem { ...@@ -285,8 +285,8 @@ regulator-state-mem {
vddcore: VDD_CORE { vddcore: VDD_CORE {
regulator-name = "VDD_CORE"; regulator-name = "VDD_CORE";
regulator-min-microvolt = <1100000>; regulator-min-microvolt = <1150000>;
regulator-max-microvolt = <1850000>; regulator-max-microvolt = <1150000>;
regulator-initial-mode = <2>; regulator-initial-mode = <2>;
regulator-allowed-modes = <2>, <4>; regulator-allowed-modes = <2>, <4>;
regulator-always-on; regulator-always-on;
...@@ -306,7 +306,7 @@ regulator-state-mem { ...@@ -306,7 +306,7 @@ regulator-state-mem {
vddcpu: VDD_OTHER { vddcpu: VDD_OTHER {
regulator-name = "VDD_OTHER"; regulator-name = "VDD_OTHER";
regulator-min-microvolt = <1050000>; regulator-min-microvolt = <1050000>;
regulator-max-microvolt = <1850000>; regulator-max-microvolt = <1250000>;
regulator-initial-mode = <2>; regulator-initial-mode = <2>;
regulator-allowed-modes = <2>, <4>; regulator-allowed-modes = <2>, <4>;
regulator-ramp-delay = <3125>; regulator-ramp-delay = <3125>;
...@@ -326,8 +326,8 @@ regulator-state-mem { ...@@ -326,8 +326,8 @@ regulator-state-mem {
vldo1: LDO1 { vldo1: LDO1 {
regulator-name = "LDO1"; regulator-name = "LDO1";
regulator-min-microvolt = <1200000>; regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <3700000>; regulator-max-microvolt = <1800000>;
regulator-always-on; regulator-always-on;
regulator-state-standby { regulator-state-standby {
......
...@@ -32,6 +32,7 @@ CA7_1: cpu@1 { ...@@ -32,6 +32,7 @@ CA7_1: cpu@1 {
next-level-cache = <&L2_0>; next-level-cache = <&L2_0>;
enable-method = "psci"; enable-method = "psci";
}; };
CA7_2: cpu@2 { CA7_2: cpu@2 {
device_type = "cpu"; device_type = "cpu";
compatible = "arm,cortex-a7"; compatible = "arm,cortex-a7";
...@@ -39,6 +40,7 @@ CA7_2: cpu@2 { ...@@ -39,6 +40,7 @@ CA7_2: cpu@2 {
next-level-cache = <&L2_0>; next-level-cache = <&L2_0>;
enable-method = "psci"; enable-method = "psci";
}; };
L2_0: l2-cache0 { L2_0: l2-cache0 {
compatible = "cache"; compatible = "cache";
}; };
...@@ -46,10 +48,10 @@ L2_0: l2-cache0 { ...@@ -46,10 +48,10 @@ L2_0: l2-cache0 {
timer { timer {
compatible = "arm,armv7-timer"; compatible = "arm,armv7-timer";
interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(3) | IRQ_TYPE_LEVEL_LOW)>,
<GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(3) | IRQ_TYPE_LEVEL_LOW)>,
<GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(3) | IRQ_TYPE_LEVEL_LOW)>,
<GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>; <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(3) | IRQ_TYPE_LEVEL_LOW)>;
arm,cpu-registers-not-fw-configured; arm,cpu-registers-not-fw-configured;
}; };
...@@ -80,23 +82,23 @@ uart_clk: uart-clk { ...@@ -80,23 +82,23 @@ uart_clk: uart-clk {
psci { psci {
compatible = "arm,psci-0.2"; compatible = "arm,psci-0.2";
method = "smc"; method = "smc";
cpu_off = <1>;
cpu_on = <2>;
}; };
axi@81000000 { axi@81000000 {
compatible = "simple-bus"; compatible = "simple-bus";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
ranges = <0 0x81000000 0x4000>; ranges = <0 0x81000000 0x8000>;
gic: interrupt-controller@1000 { gic: interrupt-controller@1000 {
compatible = "arm,cortex-a7-gic"; compatible = "arm,cortex-a7-gic";
#interrupt-cells = <3>; #interrupt-cells = <3>;
#address-cells = <0>;
interrupt-controller; interrupt-controller;
interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(3) | IRQ_TYPE_LEVEL_HIGH)>;
reg = <0x1000 0x1000>, reg = <0x1000 0x1000>,
<0x2000 0x2000>; <0x2000 0x2000>,
<0x4000 0x2000>,
<0x6000 0x2000>;
}; };
}; };
......
...@@ -40,10 +40,10 @@ L2_0: l2-cache0 { ...@@ -40,10 +40,10 @@ L2_0: l2-cache0 {
timer { timer {
compatible = "arm,armv7-timer"; compatible = "arm,armv7-timer";
interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
<GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
<GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
<GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>; <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>;
arm,cpu-registers-not-fw-configured; arm,cpu-registers-not-fw-configured;
}; };
...@@ -65,23 +65,23 @@ periph_clk: periph-clk { ...@@ -65,23 +65,23 @@ periph_clk: periph-clk {
psci { psci {
compatible = "arm,psci-0.2"; compatible = "arm,psci-0.2";
method = "smc"; method = "smc";
cpu_off = <1>;
cpu_on = <2>;
}; };
axi@81000000 { axi@81000000 {
compatible = "simple-bus"; compatible = "simple-bus";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
ranges = <0 0x81000000 0x4000>; ranges = <0 0x81000000 0x8000>;
gic: interrupt-controller@1000 { gic: interrupt-controller@1000 {
compatible = "arm,cortex-a7-gic"; compatible = "arm,cortex-a7-gic";
#interrupt-cells = <3>; #interrupt-cells = <3>;
#address-cells = <0>;
interrupt-controller; interrupt-controller;
interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_HIGH)>;
reg = <0x1000 0x1000>, reg = <0x1000 0x1000>,
<0x2000 0x2000>; <0x2000 0x2000>,
<0x4000 0x2000>,
<0x6000 0x2000>;
}; };
}; };
......
...@@ -32,6 +32,7 @@ CA7_1: cpu@1 { ...@@ -32,6 +32,7 @@ CA7_1: cpu@1 {
next-level-cache = <&L2_0>; next-level-cache = <&L2_0>;
enable-method = "psci"; enable-method = "psci";
}; };
L2_0: l2-cache0 { L2_0: l2-cache0 {
compatible = "cache"; compatible = "cache";
}; };
...@@ -39,10 +40,10 @@ L2_0: l2-cache0 { ...@@ -39,10 +40,10 @@ L2_0: l2-cache0 {
timer { timer {
compatible = "arm,armv7-timer"; compatible = "arm,armv7-timer";
interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
<GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
<GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
<GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>; <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>;
arm,cpu-registers-not-fw-configured; arm,cpu-registers-not-fw-configured;
}; };
......
...@@ -51,16 +51,6 @@ reg_3p3v_s0: regulator-3p3v-s0 { ...@@ -51,16 +51,6 @@ reg_3p3v_s0: regulator-3p3v-s0 {
vin-supply = <&reg_3p3v_s5>; vin-supply = <&reg_3p3v_s5>;
}; };
reg_3p3v_s0: regulator-3p3v-s0 {
compatible = "regulator-fixed";
regulator-name = "V_3V3_S0";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-always-on;
regulator-boot-on;
vin-supply = <&reg_3p3v_s5>;
};
reg_3p3v_s5: regulator-3p3v-s5 { reg_3p3v_s5: regulator-3p3v-s5 {
compatible = "regulator-fixed"; compatible = "regulator-fixed";
regulator-name = "V_3V3_S5"; regulator-name = "V_3V3_S5";
...@@ -259,7 +249,7 @@ &ecspi4 { ...@@ -259,7 +249,7 @@ &ecspi4 {
/* default boot source: workaround #1 for errata ERR006282 */ /* default boot source: workaround #1 for errata ERR006282 */
smarc_flash: flash@0 { smarc_flash: flash@0 {
compatible = "winbond,w25q16dw", "jedec,spi-nor"; compatible = "jedec,spi-nor";
reg = <0>; reg = <0>;
spi-max-frequency = <20000000>; spi-max-frequency = <20000000>;
}; };
......
...@@ -28,7 +28,7 @@ backlight_lcd: backlight { ...@@ -28,7 +28,7 @@ backlight_lcd: backlight {
enable-gpios = <&gpio4 28 GPIO_ACTIVE_HIGH>; enable-gpios = <&gpio4 28 GPIO_ACTIVE_HIGH>;
}; };
backlight_led: backlight_led { backlight_led: backlight-led {
compatible = "pwm-backlight"; compatible = "pwm-backlight";
pwms = <&pwm3 0 5000000 0>; pwms = <&pwm3 0 5000000 0>;
brightness-levels = <0 16 64 255>; brightness-levels = <0 16 64 255>;
......
...@@ -178,12 +178,12 @@ uart@200000 { ...@@ -178,12 +178,12 @@ uart@200000 {
clock-names = "uartclk", "apb_pclk"; clock-names = "uartclk", "apb_pclk";
}; };
ssp@300000 { spi@300000 {
compatible = "arm,pl022", "arm,primecell"; compatible = "arm,pl022", "arm,primecell";
reg = <0x00300000 0x1000>; reg = <0x00300000 0x1000>;
interrupts-extended = <&impd1_vic 3>; interrupts-extended = <&impd1_vic 3>;
clocks = <&impd1_sspclk>, <&sysclk>; clocks = <&impd1_sspclk>, <&sysclk>;
clock-names = "spiclk", "apb_pclk"; clock-names = "sspclk", "apb_pclk";
}; };
impd1_gpio0: gpio@400000 { impd1_gpio0: gpio@400000 {
......
...@@ -391,7 +391,7 @@ spi@101f4000 { ...@@ -391,7 +391,7 @@ spi@101f4000 {
reg = <0x101f4000 0x1000>; reg = <0x101f4000 0x1000>;
interrupts = <11>; interrupts = <11>;
clocks = <&xtal24mhz>, <&pclk>; clocks = <&xtal24mhz>, <&pclk>;
clock-names = "SSPCLK", "apb_pclk"; clock-names = "sspclk", "apb_pclk";
}; };
fpga { fpga {
......
...@@ -196,7 +196,6 @@ CONFIG_RTC_DRV_AT91SAM9=y ...@@ -196,7 +196,6 @@ CONFIG_RTC_DRV_AT91SAM9=y
CONFIG_DMADEVICES=y CONFIG_DMADEVICES=y
CONFIG_AT_HDMAC=y CONFIG_AT_HDMAC=y
CONFIG_AT_XDMAC=y CONFIG_AT_XDMAC=y
CONFIG_MICROCHIP_PIT64B=y
# CONFIG_IOMMU_SUPPORT is not set # CONFIG_IOMMU_SUPPORT is not set
CONFIG_IIO=y CONFIG_IIO=y
CONFIG_AT91_ADC=y CONFIG_AT91_ADC=y
......
...@@ -188,7 +188,6 @@ CONFIG_RTC_DRV_AT91SAM9=y ...@@ -188,7 +188,6 @@ CONFIG_RTC_DRV_AT91SAM9=y
CONFIG_DMADEVICES=y CONFIG_DMADEVICES=y
CONFIG_AT_XDMAC=y CONFIG_AT_XDMAC=y
CONFIG_STAGING=y CONFIG_STAGING=y
CONFIG_MICROCHIP_PIT64B=y
# CONFIG_IOMMU_SUPPORT is not set # CONFIG_IOMMU_SUPPORT is not set
CONFIG_IIO=y CONFIG_IIO=y
CONFIG_IIO_SW_TRIGGER=y CONFIG_IIO_SW_TRIGGER=y
......
...@@ -541,9 +541,41 @@ extern u32 at91_pm_suspend_in_sram_sz; ...@@ -541,9 +541,41 @@ extern u32 at91_pm_suspend_in_sram_sz;
static int at91_suspend_finish(unsigned long val) static int at91_suspend_finish(unsigned long val)
{ {
unsigned char modified_gray_code[] = {
0x00, 0x01, 0x02, 0x03, 0x06, 0x07, 0x04, 0x05, 0x0c, 0x0d,
0x0e, 0x0f, 0x0a, 0x0b, 0x08, 0x09, 0x18, 0x19, 0x1a, 0x1b,
0x1e, 0x1f, 0x1c, 0x1d, 0x14, 0x15, 0x16, 0x17, 0x12, 0x13,
0x10, 0x11,
};
unsigned int tmp, index;
int i; int i;
if (soc_pm.data.mode == AT91_PM_BACKUP && soc_pm.data.ramc_phy) { if (soc_pm.data.mode == AT91_PM_BACKUP && soc_pm.data.ramc_phy) {
/*
* Bootloader will perform DDR recalibration and will try to
* restore the ZQ0SR0 with the value saved here. But the
* calibration is buggy and restoring some values from ZQ0SR0
* is forbidden and risky thus we need to provide processed
* values for these (modified gray code values).
*/
tmp = readl(soc_pm.data.ramc_phy + DDR3PHY_ZQ0SR0);
/* Store pull-down output impedance select. */
index = (tmp >> DDR3PHY_ZQ0SR0_PDO_OFF) & 0x1f;
soc_pm.bu->ddr_phy_calibration[0] = modified_gray_code[index];
/* Store pull-up output impedance select. */
index = (tmp >> DDR3PHY_ZQ0SR0_PUO_OFF) & 0x1f;
soc_pm.bu->ddr_phy_calibration[0] |= modified_gray_code[index];
/* Store pull-down on-die termination impedance select. */
index = (tmp >> DDR3PHY_ZQ0SR0_PDODT_OFF) & 0x1f;
soc_pm.bu->ddr_phy_calibration[0] |= modified_gray_code[index];
/* Store pull-up on-die termination impedance select. */
index = (tmp >> DDR3PHY_ZQ0SRO_PUODT_OFF) & 0x1f;
soc_pm.bu->ddr_phy_calibration[0] |= modified_gray_code[index];
/* /*
* The 1st 8 words of memory might get corrupted in the process * The 1st 8 words of memory might get corrupted in the process
* of DDR PHY recalibration; it is saved here in securam and it * of DDR PHY recalibration; it is saved here in securam and it
...@@ -1066,10 +1098,6 @@ static int __init at91_pm_backup_init(void) ...@@ -1066,10 +1098,6 @@ static int __init at91_pm_backup_init(void)
of_scan_flat_dt(at91_pm_backup_scan_memcs, &located); of_scan_flat_dt(at91_pm_backup_scan_memcs, &located);
if (!located) if (!located)
goto securam_fail; goto securam_fail;
/* DDR3PHY_ZQ0SR0 */
soc_pm.bu->ddr_phy_calibration[0] = readl(soc_pm.data.ramc_phy +
0x188);
} }
return 0; return 0;
......
...@@ -172,9 +172,15 @@ sr_ena_2: ...@@ -172,9 +172,15 @@ sr_ena_2:
/* Put DDR PHY's DLL in bypass mode for non-backup modes. */ /* Put DDR PHY's DLL in bypass mode for non-backup modes. */
cmp r7, #AT91_PM_BACKUP cmp r7, #AT91_PM_BACKUP
beq sr_ena_3 beq sr_ena_3
ldr tmp1, [r3, #DDR3PHY_PIR]
orr tmp1, tmp1, #DDR3PHY_PIR_DLLBYP /* Disable DX DLLs. */
str tmp1, [r3, #DDR3PHY_PIR] ldr tmp1, [r3, #DDR3PHY_DX0DLLCR]
orr tmp1, tmp1, #DDR3PHY_DXDLLCR_DLLDIS
str tmp1, [r3, #DDR3PHY_DX0DLLCR]
ldr tmp1, [r3, #DDR3PHY_DX1DLLCR]
orr tmp1, tmp1, #DDR3PHY_DXDLLCR_DLLDIS
str tmp1, [r3, #DDR3PHY_DX1DLLCR]
sr_ena_3: sr_ena_3:
/* Power down DDR PHY data receivers. */ /* Power down DDR PHY data receivers. */
...@@ -221,10 +227,14 @@ sr_ena_3: ...@@ -221,10 +227,14 @@ sr_ena_3:
bic tmp1, tmp1, #DDR3PHY_DSGCR_ODTPDD_ODT0 bic tmp1, tmp1, #DDR3PHY_DSGCR_ODTPDD_ODT0
str tmp1, [r3, #DDR3PHY_DSGCR] str tmp1, [r3, #DDR3PHY_DSGCR]
/* Take DDR PHY's DLL out of bypass mode. */ /* Enable DX DLLs. */
ldr tmp1, [r3, #DDR3PHY_PIR] ldr tmp1, [r3, #DDR3PHY_DX0DLLCR]
bic tmp1, tmp1, #DDR3PHY_PIR_DLLBYP bic tmp1, tmp1, #DDR3PHY_DXDLLCR_DLLDIS
str tmp1, [r3, #DDR3PHY_PIR] str tmp1, [r3, #DDR3PHY_DX0DLLCR]
ldr tmp1, [r3, #DDR3PHY_DX1DLLCR]
bic tmp1, tmp1, #DDR3PHY_DXDLLCR_DLLDIS
str tmp1, [r3, #DDR3PHY_DX1DLLCR]
/* Enable quasi-dynamic programming. */ /* Enable quasi-dynamic programming. */
mov tmp1, #0 mov tmp1, #0
......
...@@ -46,7 +46,7 @@ static void __init ixp4xx_of_map_io(void) ...@@ -46,7 +46,7 @@ static void __init ixp4xx_of_map_io(void)
} }
/* /*
* We handle 4 differen SoC families. These compatible strings are enough * We handle 4 different SoC families. These compatible strings are enough
* to provide the core so that different boards can add their more detailed * to provide the core so that different boards can add their more detailed
* specifics. * specifics.
*/ */
......
...@@ -26,7 +26,8 @@ mailbox: mhu@2b1f0000 { ...@@ -26,7 +26,8 @@ mailbox: mhu@2b1f0000 {
compatible = "arm,mhu", "arm,primecell"; compatible = "arm,mhu", "arm,primecell";
reg = <0x0 0x2b1f0000 0x0 0x1000>; reg = <0x0 0x2b1f0000 0x0 0x1000>;
interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>, interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>; <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
#mbox-cells = <1>; #mbox-cells = <1>;
clocks = <&soc_refclk100mhz>; clocks = <&soc_refclk100mhz>;
clock-names = "apb_pclk"; clock-names = "apb_pclk";
......
...@@ -67,7 +67,6 @@ in-ports { ...@@ -67,7 +67,6 @@ in-ports {
port@0 { port@0 {
reg = <0>; reg = <0>;
csys2_funnel_in_port0: endpoint { csys2_funnel_in_port0: endpoint {
slave-mode;
remote-endpoint = <&etf0_out_port>; remote-endpoint = <&etf0_out_port>;
}; };
}; };
...@@ -75,7 +74,6 @@ csys2_funnel_in_port0: endpoint { ...@@ -75,7 +74,6 @@ csys2_funnel_in_port0: endpoint {
port@1 { port@1 {
reg = <1>; reg = <1>;
csys2_funnel_in_port1: endpoint { csys2_funnel_in_port1: endpoint {
slave-mode;
remote-endpoint = <&etf1_out_port>; remote-endpoint = <&etf1_out_port>;
}; };
}; };
......
...@@ -25,7 +25,6 @@ slot1_sgmii: ethernet-phy@2 { ...@@ -25,7 +25,6 @@ slot1_sgmii: ethernet-phy@2 {
&enetc_port0 { &enetc_port0 {
phy-handle = <&slot1_sgmii>; phy-handle = <&slot1_sgmii>;
phy-mode = "2500base-x"; phy-mode = "2500base-x";
managed = "in-band-status";
status = "okay"; status = "okay";
}; };
......
...@@ -626,24 +626,28 @@ ports { ...@@ -626,24 +626,28 @@ ports {
lan1: port@0 { lan1: port@0 {
reg = <0>; reg = <0>;
label = "lan1"; label = "lan1";
phy-mode = "internal";
local-mac-address = [00 00 00 00 00 00]; local-mac-address = [00 00 00 00 00 00];
}; };
lan2: port@1 { lan2: port@1 {
reg = <1>; reg = <1>;
label = "lan2"; label = "lan2";
phy-mode = "internal";
local-mac-address = [00 00 00 00 00 00]; local-mac-address = [00 00 00 00 00 00];
}; };
lan3: port@2 { lan3: port@2 {
reg = <2>; reg = <2>;
label = "lan3"; label = "lan3";
phy-mode = "internal";
local-mac-address = [00 00 00 00 00 00]; local-mac-address = [00 00 00 00 00 00];
}; };
lan4: port@3 { lan4: port@3 {
reg = <3>; reg = <3>;
label = "lan4"; label = "lan4";
phy-mode = "internal";
local-mac-address = [00 00 00 00 00 00]; local-mac-address = [00 00 00 00 00 00];
}; };
......
...@@ -32,10 +32,10 @@ backlight: backlight { ...@@ -32,10 +32,10 @@ backlight: backlight {
}; };
/* Fixed clock dedicated to SPI CAN controller */ /* Fixed clock dedicated to SPI CAN controller */
clk20m: oscillator { clk40m: oscillator {
compatible = "fixed-clock"; compatible = "fixed-clock";
#clock-cells = <0>; #clock-cells = <0>;
clock-frequency = <20000000>; clock-frequency = <40000000>;
}; };
gpio-keys { gpio-keys {
...@@ -202,8 +202,8 @@ &ecspi3 { ...@@ -202,8 +202,8 @@ &ecspi3 {
can1: can@0 { can1: can@0 {
compatible = "microchip,mcp251xfd"; compatible = "microchip,mcp251xfd";
clocks = <&clk20m>; clocks = <&clk40m>;
interrupts-extended = <&gpio1 6 IRQ_TYPE_EDGE_FALLING>; interrupts-extended = <&gpio1 6 IRQ_TYPE_LEVEL_LOW>;
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&pinctrl_can1_int>; pinctrl-0 = <&pinctrl_can1_int>;
reg = <0>; reg = <0>;
...@@ -603,7 +603,7 @@ atmel_mxt_ts: touch@4a { ...@@ -603,7 +603,7 @@ atmel_mxt_ts: touch@4a {
pinctrl-0 = <&pinctrl_gpio_9_dsi>, <&pinctrl_i2s_2_bclk_touch_reset>; pinctrl-0 = <&pinctrl_gpio_9_dsi>, <&pinctrl_i2s_2_bclk_touch_reset>;
reg = <0x4a>; reg = <0x4a>;
/* Verdin I2S_2_BCLK (TOUCH_RESET#, SODIMM 42) */ /* Verdin I2S_2_BCLK (TOUCH_RESET#, SODIMM 42) */
reset-gpios = <&gpio3 23 GPIO_ACTIVE_HIGH>; reset-gpios = <&gpio3 23 GPIO_ACTIVE_LOW>;
status = "disabled"; status = "disabled";
}; };
...@@ -745,6 +745,7 @@ &usbphynop1 { ...@@ -745,6 +745,7 @@ &usbphynop1 {
}; };
&usbphynop2 { &usbphynop2 {
power-domains = <&pgc_otg2>;
vcc-supply = <&reg_vdd_3v3>; vcc-supply = <&reg_vdd_3v3>;
}; };
......
...@@ -70,7 +70,7 @@ &A53_3 { ...@@ -70,7 +70,7 @@ &A53_3 {
&ecspi1 { &ecspi1 {
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&pinctrl_ecspi1>; pinctrl-0 = <&pinctrl_ecspi1>;
cs-gpios = <&gpio5 9 GPIO_ACTIVE_LOW>; cs-gpios = <&gpio5 17 GPIO_ACTIVE_LOW>;
status = "disabled"; status = "disabled";
}; };
...@@ -403,8 +403,8 @@ &i2c5 { /* HDMI EDID bus */ ...@@ -403,8 +403,8 @@ &i2c5 { /* HDMI EDID bus */
pinctrl-names = "default", "gpio"; pinctrl-names = "default", "gpio";
pinctrl-0 = <&pinctrl_i2c5>; pinctrl-0 = <&pinctrl_i2c5>;
pinctrl-1 = <&pinctrl_i2c5_gpio>; pinctrl-1 = <&pinctrl_i2c5_gpio>;
scl-gpios = <&gpio5 26 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; scl-gpios = <&gpio3 26 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
sda-gpios = <&gpio5 27 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; sda-gpios = <&gpio3 27 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
status = "okay"; status = "okay";
}; };
...@@ -648,10 +648,10 @@ MX8MP_IOMUXC_SAI5_MCLK__GPIO3_IO25 0x40000080 ...@@ -648,10 +648,10 @@ MX8MP_IOMUXC_SAI5_MCLK__GPIO3_IO25 0x40000080
pinctrl_ecspi1: dhcom-ecspi1-grp { pinctrl_ecspi1: dhcom-ecspi1-grp {
fsl,pins = < fsl,pins = <
MX8MP_IOMUXC_ECSPI1_SCLK__ECSPI1_SCLK 0x44 MX8MP_IOMUXC_I2C1_SCL__ECSPI1_SCLK 0x44
MX8MP_IOMUXC_ECSPI1_MOSI__ECSPI1_MOSI 0x44 MX8MP_IOMUXC_I2C1_SDA__ECSPI1_MOSI 0x44
MX8MP_IOMUXC_ECSPI1_MISO__ECSPI1_MISO 0x44 MX8MP_IOMUXC_I2C2_SCL__ECSPI1_MISO 0x44
MX8MP_IOMUXC_ECSPI1_SS0__GPIO5_IO09 0x40 MX8MP_IOMUXC_I2C2_SDA__GPIO5_IO17 0x40
>; >;
}; };
......
...@@ -770,10 +770,10 @@ MX8MP_IOMUXC_NAND_DATA03__GPIO3_IO09 0x110 ...@@ -770,10 +770,10 @@ MX8MP_IOMUXC_NAND_DATA03__GPIO3_IO09 0x110
pinctrl_sai2: sai2grp { pinctrl_sai2: sai2grp {
fsl,pins = < fsl,pins = <
MX8MP_IOMUXC_SAI2_TXFS__AUDIOMIX_SAI2_TX_SYNC MX8MP_IOMUXC_SAI2_TXFS__AUDIOMIX_SAI2_TX_SYNC 0xd6
MX8MP_IOMUXC_SAI2_TXD0__AUDIOMIX_SAI2_TX_DATA00 MX8MP_IOMUXC_SAI2_TXD0__AUDIOMIX_SAI2_TX_DATA00 0xd6
MX8MP_IOMUXC_SAI2_TXC__AUDIOMIX_SAI2_TX_BCLK MX8MP_IOMUXC_SAI2_TXC__AUDIOMIX_SAI2_TX_BCLK 0xd6
MX8MP_IOMUXC_SAI2_MCLK__AUDIOMIX_SAI2_MCLK MX8MP_IOMUXC_SAI2_MCLK__AUDIOMIX_SAI2_MCLK 0xd6
>; >;
}; };
......
...@@ -628,7 +628,7 @@ atmel_mxt_ts_mezzanine: touch-mezzanine@4a { ...@@ -628,7 +628,7 @@ atmel_mxt_ts_mezzanine: touch-mezzanine@4a {
interrupts = <5 IRQ_TYPE_EDGE_FALLING>; interrupts = <5 IRQ_TYPE_EDGE_FALLING>;
reg = <0x4a>; reg = <0x4a>;
/* Verdin GPIO_2 (SODIMM 208) */ /* Verdin GPIO_2 (SODIMM 208) */
reset-gpios = <&gpio1 1 GPIO_ACTIVE_HIGH>; reset-gpios = <&gpio1 1 GPIO_ACTIVE_LOW>;
status = "disabled"; status = "disabled";
}; };
}; };
...@@ -705,7 +705,7 @@ atmel_mxt_ts: touch@4a { ...@@ -705,7 +705,7 @@ atmel_mxt_ts: touch@4a {
pinctrl-0 = <&pinctrl_gpio_9_dsi>, <&pinctrl_i2s_2_bclk_touch_reset>; pinctrl-0 = <&pinctrl_gpio_9_dsi>, <&pinctrl_i2s_2_bclk_touch_reset>;
reg = <0x4a>; reg = <0x4a>;
/* Verdin I2S_2_BCLK (TOUCH_RESET#, SODIMM 42) */ /* Verdin I2S_2_BCLK (TOUCH_RESET#, SODIMM 42) */
reset-gpios = <&gpio5 0 GPIO_ACTIVE_HIGH>; reset-gpios = <&gpio5 0 GPIO_ACTIVE_LOW>;
status = "disabled"; status = "disabled";
}; };
......
...@@ -204,7 +204,6 @@ pcf85063: rtc@51 { ...@@ -204,7 +204,6 @@ pcf85063: rtc@51 {
reg = <0x51>; reg = <0x51>;
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&pinctrl_rtc>; pinctrl-0 = <&pinctrl_rtc>;
interrupt-names = "irq";
interrupt-parent = <&gpio1>; interrupt-parent = <&gpio1>;
interrupts = <1 IRQ_TYPE_EDGE_FALLING>; interrupts = <1 IRQ_TYPE_EDGE_FALLING>;
quartz-load-femtofarads = <7000>; quartz-load-femtofarads = <7000>;
......
...@@ -85,7 +85,7 @@ hscif0: serial@e6540000 { ...@@ -85,7 +85,7 @@ hscif0: serial@e6540000 {
"renesas,rcar-gen4-hscif", "renesas,rcar-gen4-hscif",
"renesas,hscif"; "renesas,hscif";
reg = <0 0xe6540000 0 96>; reg = <0 0xe6540000 0 96>;
interrupts = <GIC_SPI 245 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 246 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cpg CPG_MOD 514>, clocks = <&cpg CPG_MOD 514>,
<&cpg CPG_CORE R8A779G0_CLK_S0D3_PER>, <&cpg CPG_CORE R8A779G0_CLK_S0D3_PER>,
<&scif_clk>; <&scif_clk>;
......
...@@ -684,13 +684,14 @@ static int brcmstb_pm_probe(struct platform_device *pdev) ...@@ -684,13 +684,14 @@ static int brcmstb_pm_probe(struct platform_device *pdev)
const struct of_device_id *of_id = NULL; const struct of_device_id *of_id = NULL;
struct device_node *dn; struct device_node *dn;
void __iomem *base; void __iomem *base;
int ret, i; int ret, i, s;
/* AON ctrl registers */ /* AON ctrl registers */
base = brcmstb_ioremap_match(aon_ctrl_dt_ids, 0, NULL); base = brcmstb_ioremap_match(aon_ctrl_dt_ids, 0, NULL);
if (IS_ERR(base)) { if (IS_ERR(base)) {
pr_err("error mapping AON_CTRL\n"); pr_err("error mapping AON_CTRL\n");
return PTR_ERR(base); ret = PTR_ERR(base);
goto aon_err;
} }
ctrl.aon_ctrl_base = base; ctrl.aon_ctrl_base = base;
...@@ -700,8 +701,10 @@ static int brcmstb_pm_probe(struct platform_device *pdev) ...@@ -700,8 +701,10 @@ static int brcmstb_pm_probe(struct platform_device *pdev)
/* Assume standard offset */ /* Assume standard offset */
ctrl.aon_sram = ctrl.aon_ctrl_base + ctrl.aon_sram = ctrl.aon_ctrl_base +
AON_CTRL_SYSTEM_DATA_RAM_OFS; AON_CTRL_SYSTEM_DATA_RAM_OFS;
s = 0;
} else { } else {
ctrl.aon_sram = base; ctrl.aon_sram = base;
s = 1;
} }
writel_relaxed(0, ctrl.aon_sram + AON_REG_PANIC); writel_relaxed(0, ctrl.aon_sram + AON_REG_PANIC);
...@@ -711,7 +714,8 @@ static int brcmstb_pm_probe(struct platform_device *pdev) ...@@ -711,7 +714,8 @@ static int brcmstb_pm_probe(struct platform_device *pdev)
(const void **)&ddr_phy_data); (const void **)&ddr_phy_data);
if (IS_ERR(base)) { if (IS_ERR(base)) {
pr_err("error mapping DDR PHY\n"); pr_err("error mapping DDR PHY\n");
return PTR_ERR(base); ret = PTR_ERR(base);
goto ddr_phy_err;
} }
ctrl.support_warm_boot = ddr_phy_data->supports_warm_boot; ctrl.support_warm_boot = ddr_phy_data->supports_warm_boot;
ctrl.pll_status_offset = ddr_phy_data->pll_status_offset; ctrl.pll_status_offset = ddr_phy_data->pll_status_offset;
...@@ -731,17 +735,20 @@ static int brcmstb_pm_probe(struct platform_device *pdev) ...@@ -731,17 +735,20 @@ static int brcmstb_pm_probe(struct platform_device *pdev)
for_each_matching_node(dn, ddr_shimphy_dt_ids) { for_each_matching_node(dn, ddr_shimphy_dt_ids) {
i = ctrl.num_memc; i = ctrl.num_memc;
if (i >= MAX_NUM_MEMC) { if (i >= MAX_NUM_MEMC) {
of_node_put(dn);
pr_warn("too many MEMCs (max %d)\n", MAX_NUM_MEMC); pr_warn("too many MEMCs (max %d)\n", MAX_NUM_MEMC);
break; break;
} }
base = of_io_request_and_map(dn, 0, dn->full_name); base = of_io_request_and_map(dn, 0, dn->full_name);
if (IS_ERR(base)) { if (IS_ERR(base)) {
of_node_put(dn);
if (!ctrl.support_warm_boot) if (!ctrl.support_warm_boot)
break; break;
pr_err("error mapping DDR SHIMPHY %d\n", i); pr_err("error mapping DDR SHIMPHY %d\n", i);
return PTR_ERR(base); ret = PTR_ERR(base);
goto ddr_shimphy_err;
} }
ctrl.memcs[i].ddr_shimphy_base = base; ctrl.memcs[i].ddr_shimphy_base = base;
ctrl.num_memc++; ctrl.num_memc++;
...@@ -752,14 +759,18 @@ static int brcmstb_pm_probe(struct platform_device *pdev) ...@@ -752,14 +759,18 @@ static int brcmstb_pm_probe(struct platform_device *pdev)
for_each_matching_node(dn, brcmstb_memc_of_match) { for_each_matching_node(dn, brcmstb_memc_of_match) {
base = of_iomap(dn, 0); base = of_iomap(dn, 0);
if (!base) { if (!base) {
of_node_put(dn);
pr_err("error mapping DDR Sequencer %d\n", i); pr_err("error mapping DDR Sequencer %d\n", i);
return -ENOMEM; ret = -ENOMEM;
goto brcmstb_memc_err;
} }
of_id = of_match_node(brcmstb_memc_of_match, dn); of_id = of_match_node(brcmstb_memc_of_match, dn);
if (!of_id) { if (!of_id) {
iounmap(base); iounmap(base);
return -EINVAL; of_node_put(dn);
ret = -EINVAL;
goto brcmstb_memc_err;
} }
ddr_seq_data = of_id->data; ddr_seq_data = of_id->data;
...@@ -779,21 +790,24 @@ static int brcmstb_pm_probe(struct platform_device *pdev) ...@@ -779,21 +790,24 @@ static int brcmstb_pm_probe(struct platform_device *pdev)
dn = of_find_matching_node(NULL, sram_dt_ids); dn = of_find_matching_node(NULL, sram_dt_ids);
if (!dn) { if (!dn) {
pr_err("SRAM not found\n"); pr_err("SRAM not found\n");
return -EINVAL; ret = -EINVAL;
goto brcmstb_memc_err;
} }
ret = brcmstb_init_sram(dn); ret = brcmstb_init_sram(dn);
of_node_put(dn); of_node_put(dn);
if (ret) { if (ret) {
pr_err("error setting up SRAM for PM\n"); pr_err("error setting up SRAM for PM\n");
return ret; goto brcmstb_memc_err;
} }
ctrl.pdev = pdev; ctrl.pdev = pdev;
ctrl.s3_params = kmalloc(sizeof(*ctrl.s3_params), GFP_KERNEL); ctrl.s3_params = kmalloc(sizeof(*ctrl.s3_params), GFP_KERNEL);
if (!ctrl.s3_params) if (!ctrl.s3_params) {
return -ENOMEM; ret = -ENOMEM;
goto s3_params_err;
}
ctrl.s3_params_pa = dma_map_single(&pdev->dev, ctrl.s3_params, ctrl.s3_params_pa = dma_map_single(&pdev->dev, ctrl.s3_params,
sizeof(*ctrl.s3_params), sizeof(*ctrl.s3_params),
DMA_TO_DEVICE); DMA_TO_DEVICE);
...@@ -813,7 +827,21 @@ static int brcmstb_pm_probe(struct platform_device *pdev) ...@@ -813,7 +827,21 @@ static int brcmstb_pm_probe(struct platform_device *pdev)
out: out:
kfree(ctrl.s3_params); kfree(ctrl.s3_params);
s3_params_err:
iounmap(ctrl.boot_sram);
brcmstb_memc_err:
for (i--; i >= 0; i--)
iounmap(ctrl.memcs[i].ddr_ctrl);
ddr_shimphy_err:
for (i = 0; i < ctrl.num_memc; i++)
iounmap(ctrl.memcs[i].ddr_shimphy_base);
iounmap(ctrl.memcs[0].ddr_phy_base);
ddr_phy_err:
iounmap(ctrl.aon_ctrl_base);
if (s)
iounmap(ctrl.aon_sram);
aon_err:
pr_warn("PM: initialization failed with code %d\n", ret); pr_warn("PM: initialization failed with code %d\n", ret);
return ret; return ret;
......
...@@ -24,6 +24,7 @@ config FSL_MC_DPIO ...@@ -24,6 +24,7 @@ config FSL_MC_DPIO
tristate "QorIQ DPAA2 DPIO driver" tristate "QorIQ DPAA2 DPIO driver"
depends on FSL_MC_BUS depends on FSL_MC_BUS
select SOC_BUS select SOC_BUS
select FSL_GUTS
select DIMLIB select DIMLIB
help help
Driver for the DPAA2 DPIO object. A DPIO provides queue and Driver for the DPAA2 DPIO object. A DPIO provides queue and
......
...@@ -335,6 +335,8 @@ static int imx_pgc_power_up(struct generic_pm_domain *genpd) ...@@ -335,6 +335,8 @@ static int imx_pgc_power_up(struct generic_pm_domain *genpd)
} }
} }
reset_control_assert(domain->reset);
/* Enable reset clocks for all devices in the domain */ /* Enable reset clocks for all devices in the domain */
ret = clk_bulk_prepare_enable(domain->num_clks, domain->clks); ret = clk_bulk_prepare_enable(domain->num_clks, domain->clks);
if (ret) { if (ret) {
...@@ -342,7 +344,8 @@ static int imx_pgc_power_up(struct generic_pm_domain *genpd) ...@@ -342,7 +344,8 @@ static int imx_pgc_power_up(struct generic_pm_domain *genpd)
goto out_regulator_disable; goto out_regulator_disable;
} }
reset_control_assert(domain->reset); /* delays for reset to propagate */
udelay(5);
if (domain->bits.pxx) { if (domain->bits.pxx) {
/* request the domain to power up */ /* request the domain to power up */
......
...@@ -243,7 +243,6 @@ static int imx8m_blk_ctrl_probe(struct platform_device *pdev) ...@@ -243,7 +243,6 @@ static int imx8m_blk_ctrl_probe(struct platform_device *pdev)
ret = PTR_ERR(domain->power_dev); ret = PTR_ERR(domain->power_dev);
goto cleanup_pds; goto cleanup_pds;
} }
dev_set_name(domain->power_dev, "%s", data->name);
domain->genpd.name = data->name; domain->genpd.name = data->name;
domain->genpd.power_on = imx8m_blk_ctrl_power_on; domain->genpd.power_on = imx8m_blk_ctrl_power_on;
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include <linux/sched.h> #include <linux/sched.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/tee_drv.h> #include <linux/tee_drv.h>
#include <linux/uaccess.h>
#include <linux/uio.h> #include <linux/uio.h>
#include "tee_private.h" #include "tee_private.h"
......
...@@ -38,6 +38,14 @@ ...@@ -38,6 +38,14 @@
#define DDR3PHY_DSGCR_ODTPDD_ODT0 (1 << 20) /* ODT[0] Power Down Driver */ #define DDR3PHY_DSGCR_ODTPDD_ODT0 (1 << 20) /* ODT[0] Power Down Driver */
#define DDR3PHY_ZQ0SR0 (0x188) /* ZQ status register 0 */ #define DDR3PHY_ZQ0SR0 (0x188) /* ZQ status register 0 */
#define DDR3PHY_ZQ0SR0_PDO_OFF (0) /* Pull-down output impedance select offset */
#define DDR3PHY_ZQ0SR0_PUO_OFF (5) /* Pull-up output impedance select offset */
#define DDR3PHY_ZQ0SR0_PDODT_OFF (10) /* Pull-down on-die termination impedance select offset */
#define DDR3PHY_ZQ0SRO_PUODT_OFF (15) /* Pull-up on-die termination impedance select offset */
#define DDR3PHY_DX0DLLCR (0x1CC) /* DDR3PHY DATX8 DLL Control Register */
#define DDR3PHY_DX1DLLCR (0x20C) /* DDR3PHY DATX8 DLL Control Register */
#define DDR3PHY_DXDLLCR_DLLDIS (1 << 31) /* DLL Disable */
/* UDDRC */ /* UDDRC */
#define UDDRC_STAT (0x04) /* UDDRC Operating Mode Status Register */ #define UDDRC_STAT (0x04) /* UDDRC Operating Mode Status Register */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment