mirror of
https://github.com/torvalds/linux.git
synced 2026-07-31 03:27:03 +02:00
Merge 0066f1b0e2 ("afs: Return -EAGAIN, not -EREMOTEIO, when a file already locked") into android-mainline
Steps on the way to 6.0-rc5 Signed-off-by: Greg Kroah-Hartman <gregkh@google.com> Change-Id: I074b1318bd26e10e9069130b86a8a8d7cc974aa7
This commit is contained in:
commit
745c2af3bd
10
MAINTAINERS
10
MAINTAINERS
|
|
@ -17539,9 +17539,19 @@ M: Conor Dooley <conor.dooley@microchip.com>
|
|||
M: Daire McNamara <daire.mcnamara@microchip.com>
|
||||
L: linux-riscv@lists.infradead.org
|
||||
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: drivers/char/hw_random/mpfs-rng.c
|
||||
F: drivers/clk/microchip/clk-mpfs.c
|
||||
F: drivers/i2c/busses/i2c-microchip-core.c
|
||||
F: drivers/mailbox/mailbox-mpfs.c
|
||||
F: drivers/pci/controller/pcie-microchip-host.c
|
||||
F: drivers/rtc/rtc-mpfs.c
|
||||
|
|
|
|||
|
|
@ -399,7 +399,7 @@ ssp: spi@1000d000 {
|
|||
compatible = "arm,pl022", "arm,primecell";
|
||||
reg = <0x1000d000 0x1000>;
|
||||
clocks = <&sspclk>, <&pclk>;
|
||||
clock-names = "SSPCLK", "apb_pclk";
|
||||
clock-names = "sspclk", "apb_pclk";
|
||||
};
|
||||
|
||||
wdog: watchdog@10010000 {
|
||||
|
|
|
|||
|
|
@ -410,7 +410,7 @@ pb1176_ssp: spi@1010b000 {
|
|||
interrupt-parent = <&intc_dc1176>;
|
||||
interrupts = <0 17 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&sspclk>, <&pclk>;
|
||||
clock-names = "SSPCLK", "apb_pclk";
|
||||
clock-names = "sspclk", "apb_pclk";
|
||||
};
|
||||
|
||||
pb1176_serial0: serial@1010c000 {
|
||||
|
|
|
|||
|
|
@ -555,7 +555,7 @@ spi@1000d000 {
|
|||
interrupt-parent = <&intc_pb11mp>;
|
||||
interrupts = <0 11 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&sspclk>, <&pclk>;
|
||||
clock-names = "SSPCLK", "apb_pclk";
|
||||
clock-names = "sspclk", "apb_pclk";
|
||||
};
|
||||
|
||||
watchdog@1000f000 {
|
||||
|
|
|
|||
|
|
@ -390,7 +390,7 @@ ssp: spi@1000d000 {
|
|||
compatible = "arm,pl022", "arm,primecell";
|
||||
reg = <0x1000d000 0x1000>;
|
||||
clocks = <&sspclk>, <&pclk>;
|
||||
clock-names = "SSPCLK", "apb_pclk";
|
||||
clock-names = "sspclk", "apb_pclk";
|
||||
};
|
||||
|
||||
wdog0: watchdog@1000f000 {
|
||||
|
|
|
|||
|
|
@ -76,8 +76,8 @@ mcp16502@5b {
|
|||
regulators {
|
||||
vdd_3v3: VDD_IO {
|
||||
regulator-name = "VDD_IO";
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-max-microvolt = <3700000>;
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-initial-mode = <2>;
|
||||
regulator-allowed-modes = <2>, <4>;
|
||||
regulator-always-on;
|
||||
|
|
@ -95,8 +95,8 @@ regulator-state-mem {
|
|||
|
||||
vddio_ddr: VDD_DDR {
|
||||
regulator-name = "VDD_DDR";
|
||||
regulator-min-microvolt = <600000>;
|
||||
regulator-max-microvolt = <1850000>;
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-max-microvolt = <1200000>;
|
||||
regulator-initial-mode = <2>;
|
||||
regulator-allowed-modes = <2>, <4>;
|
||||
regulator-always-on;
|
||||
|
|
@ -118,8 +118,8 @@ regulator-state-mem {
|
|||
|
||||
vdd_core: VDD_CORE {
|
||||
regulator-name = "VDD_CORE";
|
||||
regulator-min-microvolt = <600000>;
|
||||
regulator-max-microvolt = <1850000>;
|
||||
regulator-min-microvolt = <1250000>;
|
||||
regulator-max-microvolt = <1250000>;
|
||||
regulator-initial-mode = <2>;
|
||||
regulator-allowed-modes = <2>, <4>;
|
||||
regulator-always-on;
|
||||
|
|
@ -160,8 +160,8 @@ regulator-state-mem {
|
|||
|
||||
LDO1 {
|
||||
regulator-name = "LDO1";
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-max-microvolt = <3700000>;
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-always-on;
|
||||
|
||||
regulator-state-standby {
|
||||
|
|
@ -175,9 +175,8 @@ regulator-state-mem {
|
|||
|
||||
LDO2 {
|
||||
regulator-name = "LDO2";
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-max-microvolt = <3700000>;
|
||||
regulator-always-on;
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
|
||||
regulator-state-standby {
|
||||
regulator-on-in-suspend;
|
||||
|
|
|
|||
|
|
@ -196,8 +196,8 @@ mcp16502@5b {
|
|||
regulators {
|
||||
vdd_io_reg: VDD_IO {
|
||||
regulator-name = "VDD_IO";
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-max-microvolt = <3700000>;
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-initial-mode = <2>;
|
||||
regulator-allowed-modes = <2>, <4>;
|
||||
regulator-always-on;
|
||||
|
|
@ -215,8 +215,8 @@ regulator-state-mem {
|
|||
|
||||
VDD_DDR {
|
||||
regulator-name = "VDD_DDR";
|
||||
regulator-min-microvolt = <600000>;
|
||||
regulator-max-microvolt = <1850000>;
|
||||
regulator-min-microvolt = <1350000>;
|
||||
regulator-max-microvolt = <1350000>;
|
||||
regulator-initial-mode = <2>;
|
||||
regulator-allowed-modes = <2>, <4>;
|
||||
regulator-always-on;
|
||||
|
|
@ -234,8 +234,8 @@ regulator-state-mem {
|
|||
|
||||
VDD_CORE {
|
||||
regulator-name = "VDD_CORE";
|
||||
regulator-min-microvolt = <600000>;
|
||||
regulator-max-microvolt = <1850000>;
|
||||
regulator-min-microvolt = <1250000>;
|
||||
regulator-max-microvolt = <1250000>;
|
||||
regulator-initial-mode = <2>;
|
||||
regulator-allowed-modes = <2>, <4>;
|
||||
regulator-always-on;
|
||||
|
|
@ -257,7 +257,6 @@ VDD_OTHER {
|
|||
regulator-max-microvolt = <1850000>;
|
||||
regulator-initial-mode = <2>;
|
||||
regulator-allowed-modes = <2>, <4>;
|
||||
regulator-always-on;
|
||||
|
||||
regulator-state-standby {
|
||||
regulator-on-in-suspend;
|
||||
|
|
@ -272,8 +271,8 @@ regulator-state-mem {
|
|||
|
||||
LDO1 {
|
||||
regulator-name = "LDO1";
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-max-microvolt = <3700000>;
|
||||
regulator-min-microvolt = <2500000>;
|
||||
regulator-max-microvolt = <2500000>;
|
||||
regulator-always-on;
|
||||
|
||||
regulator-state-standby {
|
||||
|
|
@ -287,8 +286,8 @@ regulator-state-mem {
|
|||
|
||||
LDO2 {
|
||||
regulator-name = "LDO2";
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-max-microvolt = <3700000>;
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-always-on;
|
||||
|
||||
regulator-state-standby {
|
||||
|
|
|
|||
|
|
@ -244,8 +244,8 @@ mcp16502@5b {
|
|||
regulators {
|
||||
vdd_3v3: VDD_IO {
|
||||
regulator-name = "VDD_IO";
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-max-microvolt = <3700000>;
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-initial-mode = <2>;
|
||||
regulator-allowed-modes = <2>, <4>;
|
||||
regulator-always-on;
|
||||
|
|
@ -264,8 +264,8 @@ regulator-state-mem {
|
|||
|
||||
vddioddr: VDD_DDR {
|
||||
regulator-name = "VDD_DDR";
|
||||
regulator-min-microvolt = <1300000>;
|
||||
regulator-max-microvolt = <1450000>;
|
||||
regulator-min-microvolt = <1350000>;
|
||||
regulator-max-microvolt = <1350000>;
|
||||
regulator-initial-mode = <2>;
|
||||
regulator-allowed-modes = <2>, <4>;
|
||||
regulator-always-on;
|
||||
|
|
@ -285,8 +285,8 @@ regulator-state-mem {
|
|||
|
||||
vddcore: VDD_CORE {
|
||||
regulator-name = "VDD_CORE";
|
||||
regulator-min-microvolt = <1100000>;
|
||||
regulator-max-microvolt = <1850000>;
|
||||
regulator-min-microvolt = <1150000>;
|
||||
regulator-max-microvolt = <1150000>;
|
||||
regulator-initial-mode = <2>;
|
||||
regulator-allowed-modes = <2>, <4>;
|
||||
regulator-always-on;
|
||||
|
|
@ -306,7 +306,7 @@ regulator-state-mem {
|
|||
vddcpu: VDD_OTHER {
|
||||
regulator-name = "VDD_OTHER";
|
||||
regulator-min-microvolt = <1050000>;
|
||||
regulator-max-microvolt = <1850000>;
|
||||
regulator-max-microvolt = <1250000>;
|
||||
regulator-initial-mode = <2>;
|
||||
regulator-allowed-modes = <2>, <4>;
|
||||
regulator-ramp-delay = <3125>;
|
||||
|
|
@ -326,8 +326,8 @@ regulator-state-mem {
|
|||
|
||||
vldo1: LDO1 {
|
||||
regulator-name = "LDO1";
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-max-microvolt = <3700000>;
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
|
||||
regulator-state-standby {
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@ CA7_1: cpu@1 {
|
|||
next-level-cache = <&L2_0>;
|
||||
enable-method = "psci";
|
||||
};
|
||||
|
||||
CA7_2: cpu@2 {
|
||||
device_type = "cpu";
|
||||
compatible = "arm,cortex-a7";
|
||||
|
|
@ -39,6 +40,7 @@ CA7_2: cpu@2 {
|
|||
next-level-cache = <&L2_0>;
|
||||
enable-method = "psci";
|
||||
};
|
||||
|
||||
L2_0: l2-cache0 {
|
||||
compatible = "cache";
|
||||
};
|
||||
|
|
@ -46,10 +48,10 @@ L2_0: l2-cache0 {
|
|||
|
||||
timer {
|
||||
compatible = "arm,armv7-timer";
|
||||
interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
<GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
<GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
<GIC_PPI 10 (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(3) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
<GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(3) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
<GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(3) | IRQ_TYPE_LEVEL_LOW)>;
|
||||
arm,cpu-registers-not-fw-configured;
|
||||
};
|
||||
|
||||
|
|
@ -80,23 +82,23 @@ uart_clk: uart-clk {
|
|||
psci {
|
||||
compatible = "arm,psci-0.2";
|
||||
method = "smc";
|
||||
cpu_off = <1>;
|
||||
cpu_on = <2>;
|
||||
};
|
||||
|
||||
axi@81000000 {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0 0x81000000 0x4000>;
|
||||
ranges = <0 0x81000000 0x8000>;
|
||||
|
||||
gic: interrupt-controller@1000 {
|
||||
compatible = "arm,cortex-a7-gic";
|
||||
#interrupt-cells = <3>;
|
||||
#address-cells = <0>;
|
||||
interrupt-controller;
|
||||
interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(3) | IRQ_TYPE_LEVEL_HIGH)>;
|
||||
reg = <0x1000 0x1000>,
|
||||
<0x2000 0x2000>;
|
||||
<0x2000 0x2000>,
|
||||
<0x4000 0x2000>,
|
||||
<0x6000 0x2000>;
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -40,10 +40,10 @@ L2_0: l2-cache0 {
|
|||
|
||||
timer {
|
||||
compatible = "arm,armv7-timer";
|
||||
interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
<GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
<GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
<GIC_PPI 10 (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(2) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
<GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
<GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>;
|
||||
arm,cpu-registers-not-fw-configured;
|
||||
};
|
||||
|
||||
|
|
@ -65,23 +65,23 @@ periph_clk: periph-clk {
|
|||
psci {
|
||||
compatible = "arm,psci-0.2";
|
||||
method = "smc";
|
||||
cpu_off = <1>;
|
||||
cpu_on = <2>;
|
||||
};
|
||||
|
||||
axi@81000000 {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0 0x81000000 0x4000>;
|
||||
ranges = <0 0x81000000 0x8000>;
|
||||
|
||||
gic: interrupt-controller@1000 {
|
||||
compatible = "arm,cortex-a7-gic";
|
||||
#interrupt-cells = <3>;
|
||||
#address-cells = <0>;
|
||||
interrupt-controller;
|
||||
interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_HIGH)>;
|
||||
reg = <0x1000 0x1000>,
|
||||
<0x2000 0x2000>;
|
||||
<0x2000 0x2000>,
|
||||
<0x4000 0x2000>,
|
||||
<0x6000 0x2000>;
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@ CA7_1: cpu@1 {
|
|||
next-level-cache = <&L2_0>;
|
||||
enable-method = "psci";
|
||||
};
|
||||
|
||||
L2_0: l2-cache0 {
|
||||
compatible = "cache";
|
||||
};
|
||||
|
|
@ -39,10 +40,10 @@ L2_0: l2-cache0 {
|
|||
|
||||
timer {
|
||||
compatible = "arm,armv7-timer";
|
||||
interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
<GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
<GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
<GIC_PPI 10 (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(2) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
<GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
<GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>;
|
||||
arm,cpu-registers-not-fw-configured;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -51,16 +51,6 @@ reg_3p3v_s0: regulator-3p3v-s0 {
|
|||
vin-supply = <®_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 = <®_3p3v_s5>;
|
||||
};
|
||||
|
||||
reg_3p3v_s5: regulator-3p3v-s5 {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "V_3V3_S5";
|
||||
|
|
@ -259,7 +249,7 @@ &ecspi4 {
|
|||
|
||||
/* default boot source: workaround #1 for errata ERR006282 */
|
||||
smarc_flash: flash@0 {
|
||||
compatible = "winbond,w25q16dw", "jedec,spi-nor";
|
||||
compatible = "jedec,spi-nor";
|
||||
reg = <0>;
|
||||
spi-max-frequency = <20000000>;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ backlight_lcd: backlight {
|
|||
enable-gpios = <&gpio4 28 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
backlight_led: backlight_led {
|
||||
backlight_led: backlight-led {
|
||||
compatible = "pwm-backlight";
|
||||
pwms = <&pwm3 0 5000000 0>;
|
||||
brightness-levels = <0 16 64 255>;
|
||||
|
|
|
|||
|
|
@ -178,12 +178,12 @@ uart@200000 {
|
|||
clock-names = "uartclk", "apb_pclk";
|
||||
};
|
||||
|
||||
ssp@300000 {
|
||||
spi@300000 {
|
||||
compatible = "arm,pl022", "arm,primecell";
|
||||
reg = <0x00300000 0x1000>;
|
||||
interrupts-extended = <&impd1_vic 3>;
|
||||
clocks = <&impd1_sspclk>, <&sysclk>;
|
||||
clock-names = "spiclk", "apb_pclk";
|
||||
clock-names = "sspclk", "apb_pclk";
|
||||
};
|
||||
|
||||
impd1_gpio0: gpio@400000 {
|
||||
|
|
|
|||
|
|
@ -391,7 +391,7 @@ spi@101f4000 {
|
|||
reg = <0x101f4000 0x1000>;
|
||||
interrupts = <11>;
|
||||
clocks = <&xtal24mhz>, <&pclk>;
|
||||
clock-names = "SSPCLK", "apb_pclk";
|
||||
clock-names = "sspclk", "apb_pclk";
|
||||
};
|
||||
|
||||
fpga {
|
||||
|
|
|
|||
|
|
@ -196,7 +196,6 @@ CONFIG_RTC_DRV_AT91SAM9=y
|
|||
CONFIG_DMADEVICES=y
|
||||
CONFIG_AT_HDMAC=y
|
||||
CONFIG_AT_XDMAC=y
|
||||
CONFIG_MICROCHIP_PIT64B=y
|
||||
# CONFIG_IOMMU_SUPPORT is not set
|
||||
CONFIG_IIO=y
|
||||
CONFIG_AT91_ADC=y
|
||||
|
|
|
|||
|
|
@ -188,7 +188,6 @@ CONFIG_RTC_DRV_AT91SAM9=y
|
|||
CONFIG_DMADEVICES=y
|
||||
CONFIG_AT_XDMAC=y
|
||||
CONFIG_STAGING=y
|
||||
CONFIG_MICROCHIP_PIT64B=y
|
||||
# CONFIG_IOMMU_SUPPORT is not set
|
||||
CONFIG_IIO=y
|
||||
CONFIG_IIO_SW_TRIGGER=y
|
||||
|
|
|
|||
|
|
@ -541,9 +541,41 @@ extern u32 at91_pm_suspend_in_sram_sz;
|
|||
|
||||
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;
|
||||
|
||||
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
|
||||
* of DDR PHY recalibration; it is saved here in securam and it
|
||||
|
|
@ -1066,10 +1098,6 @@ static int __init at91_pm_backup_init(void)
|
|||
of_scan_flat_dt(at91_pm_backup_scan_memcs, &located);
|
||||
if (!located)
|
||||
goto securam_fail;
|
||||
|
||||
/* DDR3PHY_ZQ0SR0 */
|
||||
soc_pm.bu->ddr_phy_calibration[0] = readl(soc_pm.data.ramc_phy +
|
||||
0x188);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
|
|||
|
|
@ -172,9 +172,15 @@ sr_ena_2:
|
|||
/* Put DDR PHY's DLL in bypass mode for non-backup modes. */
|
||||
cmp r7, #AT91_PM_BACKUP
|
||||
beq sr_ena_3
|
||||
ldr tmp1, [r3, #DDR3PHY_PIR]
|
||||
orr tmp1, tmp1, #DDR3PHY_PIR_DLLBYP
|
||||
str tmp1, [r3, #DDR3PHY_PIR]
|
||||
|
||||
/* Disable DX DLLs. */
|
||||
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:
|
||||
/* Power down DDR PHY data receivers. */
|
||||
|
|
@ -221,10 +227,14 @@ sr_ena_3:
|
|||
bic tmp1, tmp1, #DDR3PHY_DSGCR_ODTPDD_ODT0
|
||||
str tmp1, [r3, #DDR3PHY_DSGCR]
|
||||
|
||||
/* Take DDR PHY's DLL out of bypass mode. */
|
||||
ldr tmp1, [r3, #DDR3PHY_PIR]
|
||||
bic tmp1, tmp1, #DDR3PHY_PIR_DLLBYP
|
||||
str tmp1, [r3, #DDR3PHY_PIR]
|
||||
/* Enable DX DLLs. */
|
||||
ldr tmp1, [r3, #DDR3PHY_DX0DLLCR]
|
||||
bic tmp1, tmp1, #DDR3PHY_DXDLLCR_DLLDIS
|
||||
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. */
|
||||
mov tmp1, #0
|
||||
|
|
|
|||
|
|
@ -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
|
||||
* specifics.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -26,7 +26,8 @@ mailbox: mhu@2b1f0000 {
|
|||
compatible = "arm,mhu", "arm,primecell";
|
||||
reg = <0x0 0x2b1f0000 0x0 0x1000>;
|
||||
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>;
|
||||
clocks = <&soc_refclk100mhz>;
|
||||
clock-names = "apb_pclk";
|
||||
|
|
|
|||
|
|
@ -67,7 +67,6 @@ in-ports {
|
|||
port@0 {
|
||||
reg = <0>;
|
||||
csys2_funnel_in_port0: endpoint {
|
||||
slave-mode;
|
||||
remote-endpoint = <&etf0_out_port>;
|
||||
};
|
||||
};
|
||||
|
|
@ -75,7 +74,6 @@ csys2_funnel_in_port0: endpoint {
|
|||
port@1 {
|
||||
reg = <1>;
|
||||
csys2_funnel_in_port1: endpoint {
|
||||
slave-mode;
|
||||
remote-endpoint = <&etf1_out_port>;
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -25,7 +25,6 @@ slot1_sgmii: ethernet-phy@2 {
|
|||
&enetc_port0 {
|
||||
phy-handle = <&slot1_sgmii>;
|
||||
phy-mode = "2500base-x";
|
||||
managed = "in-band-status";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -626,24 +626,28 @@ ports {
|
|||
lan1: port@0 {
|
||||
reg = <0>;
|
||||
label = "lan1";
|
||||
phy-mode = "internal";
|
||||
local-mac-address = [00 00 00 00 00 00];
|
||||
};
|
||||
|
||||
lan2: port@1 {
|
||||
reg = <1>;
|
||||
label = "lan2";
|
||||
phy-mode = "internal";
|
||||
local-mac-address = [00 00 00 00 00 00];
|
||||
};
|
||||
|
||||
lan3: port@2 {
|
||||
reg = <2>;
|
||||
label = "lan3";
|
||||
phy-mode = "internal";
|
||||
local-mac-address = [00 00 00 00 00 00];
|
||||
};
|
||||
|
||||
lan4: port@3 {
|
||||
reg = <3>;
|
||||
label = "lan4";
|
||||
phy-mode = "internal";
|
||||
local-mac-address = [00 00 00 00 00 00];
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -32,10 +32,10 @@ backlight: backlight {
|
|||
};
|
||||
|
||||
/* Fixed clock dedicated to SPI CAN controller */
|
||||
clk20m: oscillator {
|
||||
clk40m: oscillator {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <20000000>;
|
||||
clock-frequency = <40000000>;
|
||||
};
|
||||
|
||||
gpio-keys {
|
||||
|
|
@ -202,8 +202,8 @@ &ecspi3 {
|
|||
|
||||
can1: can@0 {
|
||||
compatible = "microchip,mcp251xfd";
|
||||
clocks = <&clk20m>;
|
||||
interrupts-extended = <&gpio1 6 IRQ_TYPE_EDGE_FALLING>;
|
||||
clocks = <&clk40m>;
|
||||
interrupts-extended = <&gpio1 6 IRQ_TYPE_LEVEL_LOW>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_can1_int>;
|
||||
reg = <0>;
|
||||
|
|
@ -603,7 +603,7 @@ atmel_mxt_ts: touch@4a {
|
|||
pinctrl-0 = <&pinctrl_gpio_9_dsi>, <&pinctrl_i2s_2_bclk_touch_reset>;
|
||||
reg = <0x4a>;
|
||||
/* Verdin I2S_2_BCLK (TOUCH_RESET#, SODIMM 42) */
|
||||
reset-gpios = <&gpio3 23 GPIO_ACTIVE_HIGH>;
|
||||
reset-gpios = <&gpio3 23 GPIO_ACTIVE_LOW>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
|
|
@ -745,6 +745,7 @@ &usbphynop1 {
|
|||
};
|
||||
|
||||
&usbphynop2 {
|
||||
power-domains = <&pgc_otg2>;
|
||||
vcc-supply = <®_vdd_3v3>;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ &A53_3 {
|
|||
&ecspi1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_ecspi1>;
|
||||
cs-gpios = <&gpio5 9 GPIO_ACTIVE_LOW>;
|
||||
cs-gpios = <&gpio5 17 GPIO_ACTIVE_LOW>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
|
|
@ -403,8 +403,8 @@ &i2c5 { /* HDMI EDID bus */
|
|||
pinctrl-names = "default", "gpio";
|
||||
pinctrl-0 = <&pinctrl_i2c5>;
|
||||
pinctrl-1 = <&pinctrl_i2c5_gpio>;
|
||||
scl-gpios = <&gpio5 26 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
|
||||
sda-gpios = <&gpio5 27 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
|
||||
scl-gpios = <&gpio3 26 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
|
||||
sda-gpios = <&gpio3 27 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
|
@ -648,10 +648,10 @@ MX8MP_IOMUXC_SAI5_MCLK__GPIO3_IO25 0x40000080
|
|||
|
||||
pinctrl_ecspi1: dhcom-ecspi1-grp {
|
||||
fsl,pins = <
|
||||
MX8MP_IOMUXC_ECSPI1_SCLK__ECSPI1_SCLK 0x44
|
||||
MX8MP_IOMUXC_ECSPI1_MOSI__ECSPI1_MOSI 0x44
|
||||
MX8MP_IOMUXC_ECSPI1_MISO__ECSPI1_MISO 0x44
|
||||
MX8MP_IOMUXC_ECSPI1_SS0__GPIO5_IO09 0x40
|
||||
MX8MP_IOMUXC_I2C1_SCL__ECSPI1_SCLK 0x44
|
||||
MX8MP_IOMUXC_I2C1_SDA__ECSPI1_MOSI 0x44
|
||||
MX8MP_IOMUXC_I2C2_SCL__ECSPI1_MISO 0x44
|
||||
MX8MP_IOMUXC_I2C2_SDA__GPIO5_IO17 0x40
|
||||
>;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -770,10 +770,10 @@ MX8MP_IOMUXC_NAND_DATA03__GPIO3_IO09 0x110
|
|||
|
||||
pinctrl_sai2: sai2grp {
|
||||
fsl,pins = <
|
||||
MX8MP_IOMUXC_SAI2_TXFS__AUDIOMIX_SAI2_TX_SYNC
|
||||
MX8MP_IOMUXC_SAI2_TXD0__AUDIOMIX_SAI2_TX_DATA00
|
||||
MX8MP_IOMUXC_SAI2_TXC__AUDIOMIX_SAI2_TX_BCLK
|
||||
MX8MP_IOMUXC_SAI2_MCLK__AUDIOMIX_SAI2_MCLK
|
||||
MX8MP_IOMUXC_SAI2_TXFS__AUDIOMIX_SAI2_TX_SYNC 0xd6
|
||||
MX8MP_IOMUXC_SAI2_TXD0__AUDIOMIX_SAI2_TX_DATA00 0xd6
|
||||
MX8MP_IOMUXC_SAI2_TXC__AUDIOMIX_SAI2_TX_BCLK 0xd6
|
||||
MX8MP_IOMUXC_SAI2_MCLK__AUDIOMIX_SAI2_MCLK 0xd6
|
||||
>;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -628,7 +628,7 @@ atmel_mxt_ts_mezzanine: touch-mezzanine@4a {
|
|||
interrupts = <5 IRQ_TYPE_EDGE_FALLING>;
|
||||
reg = <0x4a>;
|
||||
/* Verdin GPIO_2 (SODIMM 208) */
|
||||
reset-gpios = <&gpio1 1 GPIO_ACTIVE_HIGH>;
|
||||
reset-gpios = <&gpio1 1 GPIO_ACTIVE_LOW>;
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
|
@ -705,7 +705,7 @@ atmel_mxt_ts: touch@4a {
|
|||
pinctrl-0 = <&pinctrl_gpio_9_dsi>, <&pinctrl_i2s_2_bclk_touch_reset>;
|
||||
reg = <0x4a>;
|
||||
/* Verdin I2S_2_BCLK (TOUCH_RESET#, SODIMM 42) */
|
||||
reset-gpios = <&gpio5 0 GPIO_ACTIVE_HIGH>;
|
||||
reset-gpios = <&gpio5 0 GPIO_ACTIVE_LOW>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -204,7 +204,6 @@ pcf85063: rtc@51 {
|
|||
reg = <0x51>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_rtc>;
|
||||
interrupt-names = "irq";
|
||||
interrupt-parent = <&gpio1>;
|
||||
interrupts = <1 IRQ_TYPE_EDGE_FALLING>;
|
||||
quartz-load-femtofarads = <7000>;
|
||||
|
|
|
|||
|
|
@ -85,7 +85,7 @@ hscif0: serial@e6540000 {
|
|||
"renesas,rcar-gen4-hscif",
|
||||
"renesas,hscif";
|
||||
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>,
|
||||
<&cpg CPG_CORE R8A779G0_CLK_S0D3_PER>,
|
||||
<&scif_clk>;
|
||||
|
|
|
|||
|
|
@ -209,6 +209,7 @@ static int amba_match(struct device *dev, struct device_driver *drv)
|
|||
struct amba_device *pcdev = to_amba_device(dev);
|
||||
struct amba_driver *pcdrv = to_amba_driver(drv);
|
||||
|
||||
mutex_lock(&pcdev->periphid_lock);
|
||||
if (!pcdev->periphid) {
|
||||
int ret = amba_read_periphid(pcdev);
|
||||
|
||||
|
|
@ -218,11 +219,14 @@ static int amba_match(struct device *dev, struct device_driver *drv)
|
|||
* permanent failure in reading pid and cid, simply map it to
|
||||
* -EPROBE_DEFER.
|
||||
*/
|
||||
if (ret)
|
||||
if (ret) {
|
||||
mutex_unlock(&pcdev->periphid_lock);
|
||||
return -EPROBE_DEFER;
|
||||
}
|
||||
dev_set_uevent_suppress(dev, false);
|
||||
kobject_uevent(&dev->kobj, KOBJ_ADD);
|
||||
}
|
||||
mutex_unlock(&pcdev->periphid_lock);
|
||||
|
||||
/* When driver_override is set, only bind to the matching driver */
|
||||
if (pcdev->driver_override)
|
||||
|
|
@ -532,6 +536,7 @@ static void amba_device_release(struct device *dev)
|
|||
|
||||
if (d->res.parent)
|
||||
release_resource(&d->res);
|
||||
mutex_destroy(&d->periphid_lock);
|
||||
kfree(d);
|
||||
}
|
||||
|
||||
|
|
@ -584,6 +589,7 @@ static void amba_device_initialize(struct amba_device *dev, const char *name)
|
|||
dev->dev.dma_mask = &dev->dev.coherent_dma_mask;
|
||||
dev->dev.dma_parms = &dev->dma_parms;
|
||||
dev->res.name = dev_name(&dev->dev);
|
||||
mutex_init(&dev->periphid_lock);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -684,13 +684,14 @@ static int brcmstb_pm_probe(struct platform_device *pdev)
|
|||
const struct of_device_id *of_id = NULL;
|
||||
struct device_node *dn;
|
||||
void __iomem *base;
|
||||
int ret, i;
|
||||
int ret, i, s;
|
||||
|
||||
/* AON ctrl registers */
|
||||
base = brcmstb_ioremap_match(aon_ctrl_dt_ids, 0, NULL);
|
||||
if (IS_ERR(base)) {
|
||||
pr_err("error mapping AON_CTRL\n");
|
||||
return PTR_ERR(base);
|
||||
ret = PTR_ERR(base);
|
||||
goto aon_err;
|
||||
}
|
||||
ctrl.aon_ctrl_base = base;
|
||||
|
||||
|
|
@ -700,8 +701,10 @@ static int brcmstb_pm_probe(struct platform_device *pdev)
|
|||
/* Assume standard offset */
|
||||
ctrl.aon_sram = ctrl.aon_ctrl_base +
|
||||
AON_CTRL_SYSTEM_DATA_RAM_OFS;
|
||||
s = 0;
|
||||
} else {
|
||||
ctrl.aon_sram = base;
|
||||
s = 1;
|
||||
}
|
||||
|
||||
writel_relaxed(0, ctrl.aon_sram + AON_REG_PANIC);
|
||||
|
|
@ -711,7 +714,8 @@ static int brcmstb_pm_probe(struct platform_device *pdev)
|
|||
(const void **)&ddr_phy_data);
|
||||
if (IS_ERR(base)) {
|
||||
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.pll_status_offset = ddr_phy_data->pll_status_offset;
|
||||
|
|
@ -731,17 +735,20 @@ static int brcmstb_pm_probe(struct platform_device *pdev)
|
|||
for_each_matching_node(dn, ddr_shimphy_dt_ids) {
|
||||
i = ctrl.num_memc;
|
||||
if (i >= MAX_NUM_MEMC) {
|
||||
of_node_put(dn);
|
||||
pr_warn("too many MEMCs (max %d)\n", MAX_NUM_MEMC);
|
||||
break;
|
||||
}
|
||||
|
||||
base = of_io_request_and_map(dn, 0, dn->full_name);
|
||||
if (IS_ERR(base)) {
|
||||
of_node_put(dn);
|
||||
if (!ctrl.support_warm_boot)
|
||||
break;
|
||||
|
||||
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.num_memc++;
|
||||
|
|
@ -752,14 +759,18 @@ static int brcmstb_pm_probe(struct platform_device *pdev)
|
|||
for_each_matching_node(dn, brcmstb_memc_of_match) {
|
||||
base = of_iomap(dn, 0);
|
||||
if (!base) {
|
||||
of_node_put(dn);
|
||||
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);
|
||||
if (!of_id) {
|
||||
iounmap(base);
|
||||
return -EINVAL;
|
||||
of_node_put(dn);
|
||||
ret = -EINVAL;
|
||||
goto brcmstb_memc_err;
|
||||
}
|
||||
|
||||
ddr_seq_data = of_id->data;
|
||||
|
|
@ -779,21 +790,24 @@ static int brcmstb_pm_probe(struct platform_device *pdev)
|
|||
dn = of_find_matching_node(NULL, sram_dt_ids);
|
||||
if (!dn) {
|
||||
pr_err("SRAM not found\n");
|
||||
return -EINVAL;
|
||||
ret = -EINVAL;
|
||||
goto brcmstb_memc_err;
|
||||
}
|
||||
|
||||
ret = brcmstb_init_sram(dn);
|
||||
of_node_put(dn);
|
||||
if (ret) {
|
||||
pr_err("error setting up SRAM for PM\n");
|
||||
return ret;
|
||||
goto brcmstb_memc_err;
|
||||
}
|
||||
|
||||
ctrl.pdev = pdev;
|
||||
|
||||
ctrl.s3_params = kmalloc(sizeof(*ctrl.s3_params), GFP_KERNEL);
|
||||
if (!ctrl.s3_params)
|
||||
return -ENOMEM;
|
||||
if (!ctrl.s3_params) {
|
||||
ret = -ENOMEM;
|
||||
goto s3_params_err;
|
||||
}
|
||||
ctrl.s3_params_pa = dma_map_single(&pdev->dev, ctrl.s3_params,
|
||||
sizeof(*ctrl.s3_params),
|
||||
DMA_TO_DEVICE);
|
||||
|
|
@ -813,7 +827,21 @@ static int brcmstb_pm_probe(struct platform_device *pdev)
|
|||
|
||||
out:
|
||||
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);
|
||||
|
||||
return ret;
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ config FSL_MC_DPIO
|
|||
tristate "QorIQ DPAA2 DPIO driver"
|
||||
depends on FSL_MC_BUS
|
||||
select SOC_BUS
|
||||
select FSL_GUTS
|
||||
select DIMLIB
|
||||
help
|
||||
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)
|
|||
}
|
||||
}
|
||||
|
||||
reset_control_assert(domain->reset);
|
||||
|
||||
/* Enable reset clocks for all devices in the domain */
|
||||
ret = clk_bulk_prepare_enable(domain->num_clks, domain->clks);
|
||||
if (ret) {
|
||||
|
|
@ -342,7 +344,8 @@ static int imx_pgc_power_up(struct generic_pm_domain *genpd)
|
|||
goto out_regulator_disable;
|
||||
}
|
||||
|
||||
reset_control_assert(domain->reset);
|
||||
/* delays for reset to propagate */
|
||||
udelay(5);
|
||||
|
||||
if (domain->bits.pxx) {
|
||||
/* request the domain to power up */
|
||||
|
|
|
|||
|
|
@ -243,7 +243,6 @@ static int imx8m_blk_ctrl_probe(struct platform_device *pdev)
|
|||
ret = PTR_ERR(domain->power_dev);
|
||||
goto cleanup_pds;
|
||||
}
|
||||
dev_set_name(domain->power_dev, "%s", data->name);
|
||||
|
||||
domain->genpd.name = data->name;
|
||||
domain->genpd.power_on = imx8m_blk_ctrl_power_on;
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@
|
|||
#include <linux/sched.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/tee_drv.h>
|
||||
#include <linux/uaccess.h>
|
||||
#include <linux/uio.h>
|
||||
#include "tee_private.h"
|
||||
|
||||
|
|
|
|||
|
|
@ -69,6 +69,7 @@ int afs_abort_to_error(u32 abort_code)
|
|||
/* Unified AFS error table */
|
||||
case UAEPERM: return -EPERM;
|
||||
case UAENOENT: return -ENOENT;
|
||||
case UAEAGAIN: return -EAGAIN;
|
||||
case UAEACCES: return -EACCES;
|
||||
case UAEBUSY: return -EBUSY;
|
||||
case UAEEXIST: return -EEXIST;
|
||||
|
|
|
|||
|
|
@ -222,8 +222,10 @@ static int erofs_fscache_meta_read_folio(struct file *data, struct folio *folio)
|
|||
|
||||
rreq = erofs_fscache_alloc_request(folio_mapping(folio),
|
||||
folio_pos(folio), folio_size(folio));
|
||||
if (IS_ERR(rreq))
|
||||
if (IS_ERR(rreq)) {
|
||||
ret = PTR_ERR(rreq);
|
||||
goto out;
|
||||
}
|
||||
|
||||
return erofs_fscache_read_folios_async(mdev.m_fscache->cookie,
|
||||
rreq, mdev.m_pa);
|
||||
|
|
@ -301,8 +303,10 @@ static int erofs_fscache_read_folio(struct file *file, struct folio *folio)
|
|||
|
||||
rreq = erofs_fscache_alloc_request(folio_mapping(folio),
|
||||
folio_pos(folio), folio_size(folio));
|
||||
if (IS_ERR(rreq))
|
||||
if (IS_ERR(rreq)) {
|
||||
ret = PTR_ERR(rreq);
|
||||
goto out_unlock;
|
||||
}
|
||||
|
||||
pstart = mdev.m_pa + (pos - map.m_la);
|
||||
return erofs_fscache_read_folios_async(mdev.m_fscache->cookie,
|
||||
|
|
|
|||
|
|
@ -195,7 +195,6 @@ struct erofs_workgroup {
|
|||
atomic_t refcount;
|
||||
};
|
||||
|
||||
#if defined(CONFIG_SMP)
|
||||
static inline bool erofs_workgroup_try_to_freeze(struct erofs_workgroup *grp,
|
||||
int val)
|
||||
{
|
||||
|
|
@ -224,34 +223,6 @@ static inline int erofs_wait_on_workgroup_freezed(struct erofs_workgroup *grp)
|
|||
return atomic_cond_read_relaxed(&grp->refcount,
|
||||
VAL != EROFS_LOCKED_MAGIC);
|
||||
}
|
||||
#else
|
||||
static inline bool erofs_workgroup_try_to_freeze(struct erofs_workgroup *grp,
|
||||
int val)
|
||||
{
|
||||
preempt_disable();
|
||||
/* no need to spin on UP platforms, let's just disable preemption. */
|
||||
if (val != atomic_read(&grp->refcount)) {
|
||||
preempt_enable();
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
static inline void erofs_workgroup_unfreeze(struct erofs_workgroup *grp,
|
||||
int orig_val)
|
||||
{
|
||||
preempt_enable();
|
||||
}
|
||||
|
||||
static inline int erofs_wait_on_workgroup_freezed(struct erofs_workgroup *grp)
|
||||
{
|
||||
int v = atomic_read(&grp->refcount);
|
||||
|
||||
/* workgroup is never freezed on uniprocessor systems */
|
||||
DBG_BUGON(v == EROFS_LOCKED_MAGIC);
|
||||
return v;
|
||||
}
|
||||
#endif /* !CONFIG_SMP */
|
||||
#endif /* !CONFIG_EROFS_FS_ZIP */
|
||||
|
||||
/* we strictly follow PAGE_SIZE and no buffer head yet */
|
||||
|
|
|
|||
|
|
@ -141,7 +141,7 @@ struct z_erofs_maprecorder {
|
|||
u8 type, headtype;
|
||||
u16 clusterofs;
|
||||
u16 delta[2];
|
||||
erofs_blk_t pblk, compressedlcs;
|
||||
erofs_blk_t pblk, compressedblks;
|
||||
erofs_off_t nextpackoff;
|
||||
};
|
||||
|
||||
|
|
@ -192,7 +192,7 @@ static int legacy_load_cluster_from_disk(struct z_erofs_maprecorder *m,
|
|||
DBG_BUGON(1);
|
||||
return -EFSCORRUPTED;
|
||||
}
|
||||
m->compressedlcs = m->delta[0] &
|
||||
m->compressedblks = m->delta[0] &
|
||||
~Z_EROFS_VLE_DI_D0_CBLKCNT;
|
||||
m->delta[0] = 1;
|
||||
}
|
||||
|
|
@ -293,7 +293,7 @@ static int unpack_compacted_index(struct z_erofs_maprecorder *m,
|
|||
DBG_BUGON(1);
|
||||
return -EFSCORRUPTED;
|
||||
}
|
||||
m->compressedlcs = lo & ~Z_EROFS_VLE_DI_D0_CBLKCNT;
|
||||
m->compressedblks = lo & ~Z_EROFS_VLE_DI_D0_CBLKCNT;
|
||||
m->delta[0] = 1;
|
||||
return 0;
|
||||
} else if (i + 1 != (int)vcnt) {
|
||||
|
|
@ -497,7 +497,7 @@ static int z_erofs_get_extent_compressedlen(struct z_erofs_maprecorder *m,
|
|||
return 0;
|
||||
}
|
||||
lcn = m->lcn + 1;
|
||||
if (m->compressedlcs)
|
||||
if (m->compressedblks)
|
||||
goto out;
|
||||
|
||||
err = z_erofs_load_cluster_from_disk(m, lcn, false);
|
||||
|
|
@ -506,7 +506,7 @@ static int z_erofs_get_extent_compressedlen(struct z_erofs_maprecorder *m,
|
|||
|
||||
/*
|
||||
* If the 1st NONHEAD lcluster has already been handled initially w/o
|
||||
* valid compressedlcs, which means at least it mustn't be CBLKCNT, or
|
||||
* valid compressedblks, which means at least it mustn't be CBLKCNT, or
|
||||
* an internal implemenatation error is detected.
|
||||
*
|
||||
* The following code can also handle it properly anyway, but let's
|
||||
|
|
@ -523,12 +523,12 @@ static int z_erofs_get_extent_compressedlen(struct z_erofs_maprecorder *m,
|
|||
* if the 1st NONHEAD lcluster is actually PLAIN or HEAD type
|
||||
* rather than CBLKCNT, it's a 1 lcluster-sized pcluster.
|
||||
*/
|
||||
m->compressedlcs = 1;
|
||||
m->compressedblks = 1 << (lclusterbits - LOG_BLOCK_SIZE);
|
||||
break;
|
||||
case Z_EROFS_VLE_CLUSTER_TYPE_NONHEAD:
|
||||
if (m->delta[0] != 1)
|
||||
goto err_bonus_cblkcnt;
|
||||
if (m->compressedlcs)
|
||||
if (m->compressedblks)
|
||||
break;
|
||||
fallthrough;
|
||||
default:
|
||||
|
|
@ -539,7 +539,7 @@ static int z_erofs_get_extent_compressedlen(struct z_erofs_maprecorder *m,
|
|||
return -EFSCORRUPTED;
|
||||
}
|
||||
out:
|
||||
map->m_plen = (u64)m->compressedlcs << lclusterbits;
|
||||
map->m_plen = (u64)m->compressedblks << LOG_BLOCK_SIZE;
|
||||
return 0;
|
||||
err_bonus_cblkcnt:
|
||||
erofs_err(m->inode->i_sb,
|
||||
|
|
|
|||
|
|
@ -67,6 +67,7 @@ struct amba_device {
|
|||
struct clk *pclk;
|
||||
struct device_dma_parameters dma_parms;
|
||||
unsigned int periphid;
|
||||
struct mutex periphid_lock;
|
||||
unsigned int cid;
|
||||
struct amba_cs_uci_id uci;
|
||||
unsigned int irq[AMBA_NR_IRQS];
|
||||
|
|
|
|||
|
|
@ -38,6 +38,14 @@
|
|||
#define DDR3PHY_DSGCR_ODTPDD_ODT0 (1 << 20) /* ODT[0] Power Down Driver */
|
||||
|
||||
#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 */
|
||||
#define UDDRC_STAT (0x04) /* UDDRC Operating Mode Status Register */
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user