Merge 48ca7139ab ("cifs: Fix validation of SMB1 query reparse point response") into android16-6.12-lts

Steps on the way to 6.12.34

Resolves merge conflicts in:
	kernel/sched/core.c
	net/netfilter/xt_mark.c

Change-Id: I6df5e27c2a5bfa8b077b1f2814ad98b2a3dc0877
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
Greg Kroah-Hartman
2025-07-03 10:57:20 +00:00
293 changed files with 2453 additions and 1363 deletions
@@ -50,7 +50,7 @@ required:
- compatible - compatible
allOf: allOf:
- $ref: reserved-memory.yaml - $ref: /schemas/reserved-memory/reserved-memory.yaml
unevaluatedProperties: false unevaluatedProperties: false
@@ -61,7 +61,7 @@ examples:
#size-cells = <2>; #size-cells = <2>;
qman-fqd { qman-fqd {
compatible = "shared-dma-pool"; compatible = "fsl,qman-fqd";
size = <0 0x400000>; size = <0 0x400000>;
alignment = <0 0x400000>; alignment = <0 0x400000>;
no-map; no-map;
@@ -846,6 +846,8 @@ patternProperties:
description: Linux-specific binding description: Linux-specific binding
"^linx,.*": "^linx,.*":
description: Linx Technologies description: Linx Technologies
"^liontron,.*":
description: Shenzhen Liontron Technology Co., Ltd
"^liteon,.*": "^liteon,.*":
description: LITE-ON Technology Corp. description: LITE-ON Technology Corp.
"^litex,.*": "^litex,.*":
@@ -152,7 +152,7 @@
nand@3 { nand@3 {
reg = <0x3 0x0 0x800000>; reg = <0x3 0x0 0x800000>;
rb-gpios = <&pioA 22 GPIO_ACTIVE_HIGH>; rb-gpios = <&pioA 22 GPIO_ACTIVE_HIGH>;
cs-gpios = <&pioA 15 GPIO_ACTIVE_HIGH>; cs-gpios = <&pioD 15 GPIO_ACTIVE_HIGH>;
nand-bus-width = <8>; nand-bus-width = <8>;
nand-ecc-mode = "soft"; nand-ecc-mode = "soft";
nand-on-flash-bbt; nand-on-flash-bbt;
+1 -1
View File
@@ -64,7 +64,7 @@
nand@3 { nand@3 {
reg = <0x3 0x0 0x800000>; reg = <0x3 0x0 0x800000>;
rb-gpios = <&pioA 22 GPIO_ACTIVE_HIGH>; rb-gpios = <&pioA 22 GPIO_ACTIVE_HIGH>;
cs-gpios = <&pioA 15 GPIO_ACTIVE_HIGH>; cs-gpios = <&pioD 15 GPIO_ACTIVE_HIGH>;
nand-bus-width = <8>; nand-bus-width = <8>;
nand-ecc-mode = "soft"; nand-ecc-mode = "soft";
nand-on-flash-bbt; nand-on-flash-bbt;
+2 -2
View File
@@ -58,7 +58,7 @@
}; };
spi0: spi@fffa4000 { spi0: spi@fffa4000 {
cs-gpios = <&pioB 15 GPIO_ACTIVE_HIGH>; cs-gpios = <&pioA 5 GPIO_ACTIVE_LOW>;
status = "okay"; status = "okay";
flash@0 { flash@0 {
compatible = "atmel,at45", "atmel,dataflash"; compatible = "atmel,at45", "atmel,dataflash";
@@ -84,7 +84,7 @@
nand@3 { nand@3 {
reg = <0x3 0x0 0x800000>; reg = <0x3 0x0 0x800000>;
rb-gpios = <&pioA 22 GPIO_ACTIVE_HIGH>; rb-gpios = <&pioA 22 GPIO_ACTIVE_HIGH>;
cs-gpios = <&pioA 15 GPIO_ACTIVE_HIGH>; cs-gpios = <&pioD 15 GPIO_ACTIVE_HIGH>;
nand-bus-width = <8>; nand-bus-width = <8>;
nand-ecc-mode = "soft"; nand-ecc-mode = "soft";
nand-on-flash-bbt; nand-on-flash-bbt;
+40 -42
View File
@@ -213,12 +213,6 @@
}; };
}; };
sfpb_mutex: hwmutex {
compatible = "qcom,sfpb-mutex";
syscon = <&sfpb_wrapper_mutex 0x604 0x4>;
#hwlock-cells = <1>;
};
smem { smem {
compatible = "qcom,smem"; compatible = "qcom,smem";
memory-region = <&smem_region>; memory-region = <&smem_region>;
@@ -284,6 +278,40 @@
}; };
}; };
replicator {
compatible = "arm,coresight-static-replicator";
clocks = <&rpmcc RPM_QDSS_CLK>;
clock-names = "apb_pclk";
in-ports {
port {
replicator_in: endpoint {
remote-endpoint = <&funnel_out>;
};
};
};
out-ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
replicator_out0: endpoint {
remote-endpoint = <&etb_in>;
};
};
port@1 {
reg = <1>;
replicator_out1: endpoint {
remote-endpoint = <&tpiu_in>;
};
};
};
};
soc: soc { soc: soc {
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
@@ -305,9 +333,10 @@
pinctrl-0 = <&ps_hold_default_state>; pinctrl-0 = <&ps_hold_default_state>;
}; };
sfpb_wrapper_mutex: syscon@1200000 { sfpb_mutex: hwmutex@1200600 {
compatible = "syscon"; compatible = "qcom,sfpb-mutex";
reg = <0x01200000 0x8000>; reg = <0x01200600 0x100>;
#hwlock-cells = <1>;
}; };
intc: interrupt-controller@2000000 { intc: interrupt-controller@2000000 {
@@ -326,6 +355,8 @@
<GIC_PPI 3 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_EDGE_RISING)>; <GIC_PPI 3 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_EDGE_RISING)>;
reg = <0x0200a000 0x100>; reg = <0x0200a000 0x100>;
clock-frequency = <27000000>; clock-frequency = <27000000>;
clocks = <&sleep_clk>;
clock-names = "sleep";
cpu-offset = <0x80000>; cpu-offset = <0x80000>;
}; };
@@ -1532,39 +1563,6 @@
}; };
}; };
replicator {
compatible = "arm,coresight-static-replicator";
clocks = <&rpmcc RPM_QDSS_CLK>;
clock-names = "apb_pclk";
out-ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
replicator_out0: endpoint {
remote-endpoint = <&etb_in>;
};
};
port@1 {
reg = <1>;
replicator_out1: endpoint {
remote-endpoint = <&tpiu_in>;
};
};
};
in-ports {
port {
replicator_in: endpoint {
remote-endpoint = <&funnel_out>;
};
};
};
};
funnel@1a04000 { funnel@1a04000 {
compatible = "arm,coresight-dynamic-funnel", "arm,primecell"; compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
reg = <0x1a04000 0x1000>; reg = <0x1a04000 0x1000>;
-1
View File
@@ -2,7 +2,6 @@
menuconfig ARCH_ASPEED menuconfig ARCH_ASPEED
bool "Aspeed BMC architectures" bool "Aspeed BMC architectures"
depends on (CPU_LITTLE_ENDIAN && ARCH_MULTI_V5) || ARCH_MULTI_V6 || ARCH_MULTI_V7 depends on (CPU_LITTLE_ENDIAN && ARCH_MULTI_V5) || ARCH_MULTI_V6 || ARCH_MULTI_V7
select SRAM
select WATCHDOG select WATCHDOG
select ASPEED_WATCHDOG select ASPEED_WATCHDOG
select MFD_SYSCON select MFD_SYSCON
+3 -3
View File
@@ -323,9 +323,9 @@ config ARCH_MMAP_RND_BITS_MAX
default 24 if ARM64_VA_BITS=39 default 24 if ARM64_VA_BITS=39
default 27 if ARM64_VA_BITS=42 default 27 if ARM64_VA_BITS=42
default 30 if ARM64_VA_BITS=47 default 30 if ARM64_VA_BITS=47
default 29 if ARM64_VA_BITS=48 && ARM64_64K_PAGES default 29 if (ARM64_VA_BITS=48 || ARM64_VA_BITS=52) && ARM64_64K_PAGES
default 31 if ARM64_VA_BITS=48 && ARM64_16K_PAGES default 31 if (ARM64_VA_BITS=48 || ARM64_VA_BITS=52) && ARM64_16K_PAGES
default 33 if ARM64_VA_BITS=48 default 33 if (ARM64_VA_BITS=48 || ARM64_VA_BITS=52)
default 14 if ARM64_64K_PAGES default 14 if ARM64_64K_PAGES
default 16 if ARM64_16K_PAGES default 16 if ARM64_16K_PAGES
default 18 default 18
@@ -124,6 +124,7 @@
assigned-clock-parents = <&clk IMX8MM_AUDIO_PLL1_OUT>; assigned-clock-parents = <&clk IMX8MM_AUDIO_PLL1_OUT>;
assigned-clock-rates = <24576000>; assigned-clock-rates = <24576000>;
#sound-dai-cells = <0>; #sound-dai-cells = <0>;
fsl,sai-mclk-direction-output;
status = "okay"; status = "okay";
}; };
@@ -233,6 +233,7 @@
rtc: rtc@51 { rtc: rtc@51 {
compatible = "nxp,pcf85263"; compatible = "nxp,pcf85263";
reg = <0x51>; reg = <0x51>;
quartz-load-femtofarads = <12500>;
}; };
}; };
@@ -124,6 +124,7 @@
assigned-clock-parents = <&clk IMX8MN_AUDIO_PLL1_OUT>; assigned-clock-parents = <&clk IMX8MN_AUDIO_PLL1_OUT>;
assigned-clock-rates = <24576000>; assigned-clock-rates = <24576000>;
#sound-dai-cells = <0>; #sound-dai-cells = <0>;
fsl,sai-mclk-direction-output;
status = "okay"; status = "okay";
}; };
@@ -242,6 +242,7 @@
rtc: rtc@51 { rtc: rtc@51 {
compatible = "nxp,pcf85263"; compatible = "nxp,pcf85263";
reg = <0x51>; reg = <0x51>;
quartz-load-femtofarads = <12500>;
}; };
}; };
@@ -257,6 +257,7 @@
rtc: rtc@51 { rtc: rtc@51 {
compatible = "nxp,pcf85263"; compatible = "nxp,pcf85263";
reg = <0x51>; reg = <0x51>;
quartz-load-femtofarads = <12500>;
}; };
}; };
-10
View File
@@ -60,7 +60,6 @@
}; };
mt6357_vfe28_reg: ldo-vfe28 { mt6357_vfe28_reg: ldo-vfe28 {
compatible = "regulator-fixed";
regulator-name = "vfe28"; regulator-name = "vfe28";
regulator-min-microvolt = <2800000>; regulator-min-microvolt = <2800000>;
regulator-max-microvolt = <2800000>; regulator-max-microvolt = <2800000>;
@@ -75,7 +74,6 @@
}; };
mt6357_vrf18_reg: ldo-vrf18 { mt6357_vrf18_reg: ldo-vrf18 {
compatible = "regulator-fixed";
regulator-name = "vrf18"; regulator-name = "vrf18";
regulator-min-microvolt = <1800000>; regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>; regulator-max-microvolt = <1800000>;
@@ -83,7 +81,6 @@
}; };
mt6357_vrf12_reg: ldo-vrf12 { mt6357_vrf12_reg: ldo-vrf12 {
compatible = "regulator-fixed";
regulator-name = "vrf12"; regulator-name = "vrf12";
regulator-min-microvolt = <1200000>; regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>; regulator-max-microvolt = <1200000>;
@@ -112,7 +109,6 @@
}; };
mt6357_vcn28_reg: ldo-vcn28 { mt6357_vcn28_reg: ldo-vcn28 {
compatible = "regulator-fixed";
regulator-name = "vcn28"; regulator-name = "vcn28";
regulator-min-microvolt = <2800000>; regulator-min-microvolt = <2800000>;
regulator-max-microvolt = <2800000>; regulator-max-microvolt = <2800000>;
@@ -120,7 +116,6 @@
}; };
mt6357_vcn18_reg: ldo-vcn18 { mt6357_vcn18_reg: ldo-vcn18 {
compatible = "regulator-fixed";
regulator-name = "vcn18"; regulator-name = "vcn18";
regulator-min-microvolt = <1800000>; regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>; regulator-max-microvolt = <1800000>;
@@ -142,7 +137,6 @@
}; };
mt6357_vcamio_reg: ldo-vcamio18 { mt6357_vcamio_reg: ldo-vcamio18 {
compatible = "regulator-fixed";
regulator-name = "vcamio"; regulator-name = "vcamio";
regulator-min-microvolt = <1800000>; regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>; regulator-max-microvolt = <1800000>;
@@ -175,7 +169,6 @@
}; };
mt6357_vaux18_reg: ldo-vaux18 { mt6357_vaux18_reg: ldo-vaux18 {
compatible = "regulator-fixed";
regulator-name = "vaux18"; regulator-name = "vaux18";
regulator-min-microvolt = <1800000>; regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>; regulator-max-microvolt = <1800000>;
@@ -183,7 +176,6 @@
}; };
mt6357_vaud28_reg: ldo-vaud28 { mt6357_vaud28_reg: ldo-vaud28 {
compatible = "regulator-fixed";
regulator-name = "vaud28"; regulator-name = "vaud28";
regulator-min-microvolt = <2800000>; regulator-min-microvolt = <2800000>;
regulator-max-microvolt = <2800000>; regulator-max-microvolt = <2800000>;
@@ -191,7 +183,6 @@
}; };
mt6357_vio28_reg: ldo-vio28 { mt6357_vio28_reg: ldo-vio28 {
compatible = "regulator-fixed";
regulator-name = "vio28"; regulator-name = "vio28";
regulator-min-microvolt = <2800000>; regulator-min-microvolt = <2800000>;
regulator-max-microvolt = <2800000>; regulator-max-microvolt = <2800000>;
@@ -199,7 +190,6 @@
}; };
mt6357_vio18_reg: ldo-vio18 { mt6357_vio18_reg: ldo-vio18 {
compatible = "regulator-fixed";
regulator-name = "vio18"; regulator-name = "vio18";
regulator-min-microvolt = <1800000>; regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>; regulator-max-microvolt = <1800000>;
+3 -1
View File
@@ -18,6 +18,8 @@
}; };
regulators { regulators {
compatible = "mediatek,mt6359-regulator";
mt6359_vs1_buck_reg: buck_vs1 { mt6359_vs1_buck_reg: buck_vs1 {
regulator-name = "vs1"; regulator-name = "vs1";
regulator-min-microvolt = <800000>; regulator-min-microvolt = <800000>;
@@ -296,7 +298,7 @@
}; };
}; };
mt6359rtc: mt6359rtc { mt6359rtc: rtc {
compatible = "mediatek,mt6358-rtc"; compatible = "mediatek,mt6358-rtc";
}; };
}; };
@@ -280,14 +280,10 @@
}; };
}; };
}; };
};
ports { &dsi_out {
port { remote-endpoint = <&panel_in>;
dsi_out: endpoint {
remote-endpoint = <&panel_in>;
};
};
};
}; };
&gic { &gic {
+4
View File
@@ -1836,6 +1836,10 @@
phys = <&mipi_tx0>; phys = <&mipi_tx0>;
phy-names = "dphy"; phy-names = "dphy";
status = "disabled"; status = "disabled";
port {
dsi_out: endpoint { };
};
}; };
dpi0: dpi@14015000 { dpi0: dpi@14015000 {
+27 -23
View File
@@ -617,22 +617,6 @@
#size-cells = <0>; #size-cells = <0>;
#power-domain-cells = <1>; #power-domain-cells = <1>;
power-domain@MT8195_POWER_DOMAIN_VDEC1 {
reg = <MT8195_POWER_DOMAIN_VDEC1>;
clocks = <&vdecsys CLK_VDEC_LARB1>;
clock-names = "vdec1-0";
mediatek,infracfg = <&infracfg_ao>;
#power-domain-cells = <0>;
};
power-domain@MT8195_POWER_DOMAIN_VENC_CORE1 {
reg = <MT8195_POWER_DOMAIN_VENC_CORE1>;
clocks = <&vencsys_core1 CLK_VENC_CORE1_LARB>;
clock-names = "venc1-larb";
mediatek,infracfg = <&infracfg_ao>;
#power-domain-cells = <0>;
};
power-domain@MT8195_POWER_DOMAIN_VDOSYS0 { power-domain@MT8195_POWER_DOMAIN_VDOSYS0 {
reg = <MT8195_POWER_DOMAIN_VDOSYS0>; reg = <MT8195_POWER_DOMAIN_VDOSYS0>;
clocks = <&topckgen CLK_TOP_CFG_VDO0>, clocks = <&topckgen CLK_TOP_CFG_VDO0>,
@@ -678,15 +662,25 @@
clocks = <&vdecsys_soc CLK_VDEC_SOC_LARB1>; clocks = <&vdecsys_soc CLK_VDEC_SOC_LARB1>;
clock-names = "vdec0-0"; clock-names = "vdec0-0";
mediatek,infracfg = <&infracfg_ao>; mediatek,infracfg = <&infracfg_ao>;
#address-cells = <1>;
#size-cells = <0>;
#power-domain-cells = <0>; #power-domain-cells = <0>;
};
power-domain@MT8195_POWER_DOMAIN_VDEC2 { power-domain@MT8195_POWER_DOMAIN_VDEC1 {
reg = <MT8195_POWER_DOMAIN_VDEC2>; reg = <MT8195_POWER_DOMAIN_VDEC1>;
clocks = <&vdecsys_core1 CLK_VDEC_CORE1_LARB1>; clocks = <&vdecsys CLK_VDEC_LARB1>;
clock-names = "vdec2-0"; clock-names = "vdec1-0";
mediatek,infracfg = <&infracfg_ao>; mediatek,infracfg = <&infracfg_ao>;
#power-domain-cells = <0>; #power-domain-cells = <0>;
};
power-domain@MT8195_POWER_DOMAIN_VDEC2 {
reg = <MT8195_POWER_DOMAIN_VDEC2>;
clocks = <&vdecsys_core1 CLK_VDEC_CORE1_LARB1>;
clock-names = "vdec2-0";
mediatek,infracfg = <&infracfg_ao>;
#power-domain-cells = <0>;
};
}; };
power-domain@MT8195_POWER_DOMAIN_VENC { power-domain@MT8195_POWER_DOMAIN_VENC {
@@ -694,7 +688,17 @@
clocks = <&vencsys CLK_VENC_LARB>; clocks = <&vencsys CLK_VENC_LARB>;
clock-names = "venc0-larb"; clock-names = "venc0-larb";
mediatek,infracfg = <&infracfg_ao>; mediatek,infracfg = <&infracfg_ao>;
#address-cells = <1>;
#size-cells = <0>;
#power-domain-cells = <0>; #power-domain-cells = <0>;
power-domain@MT8195_POWER_DOMAIN_VENC_CORE1 {
reg = <MT8195_POWER_DOMAIN_VENC_CORE1>;
clocks = <&vencsys_core1 CLK_VENC_CORE1_LARB>;
clock-names = "venc1-larb";
mediatek,infracfg = <&infracfg_ao>;
#power-domain-cells = <0>;
};
}; };
power-domain@MT8195_POWER_DOMAIN_VDOSYS1 { power-domain@MT8195_POWER_DOMAIN_VDOSYS1 {
-12
View File
@@ -621,9 +621,7 @@
reg-shift = <2>; reg-shift = <2>;
interrupts = <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&bpmp TEGRA186_CLK_UARTB>; clocks = <&bpmp TEGRA186_CLK_UARTB>;
clock-names = "serial";
resets = <&bpmp TEGRA186_RESET_UARTB>; resets = <&bpmp TEGRA186_RESET_UARTB>;
reset-names = "serial";
status = "disabled"; status = "disabled";
}; };
@@ -633,9 +631,7 @@
reg-shift = <2>; reg-shift = <2>;
interrupts = <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&bpmp TEGRA186_CLK_UARTD>; clocks = <&bpmp TEGRA186_CLK_UARTD>;
clock-names = "serial";
resets = <&bpmp TEGRA186_RESET_UARTD>; resets = <&bpmp TEGRA186_RESET_UARTD>;
reset-names = "serial";
status = "disabled"; status = "disabled";
}; };
@@ -645,9 +641,7 @@
reg-shift = <2>; reg-shift = <2>;
interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&bpmp TEGRA186_CLK_UARTE>; clocks = <&bpmp TEGRA186_CLK_UARTE>;
clock-names = "serial";
resets = <&bpmp TEGRA186_RESET_UARTE>; resets = <&bpmp TEGRA186_RESET_UARTE>;
reset-names = "serial";
status = "disabled"; status = "disabled";
}; };
@@ -657,9 +651,7 @@
reg-shift = <2>; reg-shift = <2>;
interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&bpmp TEGRA186_CLK_UARTF>; clocks = <&bpmp TEGRA186_CLK_UARTF>;
clock-names = "serial";
resets = <&bpmp TEGRA186_RESET_UARTF>; resets = <&bpmp TEGRA186_RESET_UARTF>;
reset-names = "serial";
status = "disabled"; status = "disabled";
}; };
@@ -1236,9 +1228,7 @@
reg-shift = <2>; reg-shift = <2>;
interrupts = <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&bpmp TEGRA186_CLK_UARTC>; clocks = <&bpmp TEGRA186_CLK_UARTC>;
clock-names = "serial";
resets = <&bpmp TEGRA186_RESET_UARTC>; resets = <&bpmp TEGRA186_RESET_UARTC>;
reset-names = "serial";
status = "disabled"; status = "disabled";
}; };
@@ -1248,9 +1238,7 @@
reg-shift = <2>; reg-shift = <2>;
interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&bpmp TEGRA186_CLK_UARTG>; clocks = <&bpmp TEGRA186_CLK_UARTG>;
clock-names = "serial";
resets = <&bpmp TEGRA186_RESET_UARTG>; resets = <&bpmp TEGRA186_RESET_UARTG>;
reset-names = "serial";
status = "disabled"; status = "disabled";
}; };
-12
View File
@@ -766,9 +766,7 @@
reg-shift = <2>; reg-shift = <2>;
interrupts = <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&bpmp TEGRA194_CLK_UARTD>; clocks = <&bpmp TEGRA194_CLK_UARTD>;
clock-names = "serial";
resets = <&bpmp TEGRA194_RESET_UARTD>; resets = <&bpmp TEGRA194_RESET_UARTD>;
reset-names = "serial";
status = "disabled"; status = "disabled";
}; };
@@ -778,9 +776,7 @@
reg-shift = <2>; reg-shift = <2>;
interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&bpmp TEGRA194_CLK_UARTE>; clocks = <&bpmp TEGRA194_CLK_UARTE>;
clock-names = "serial";
resets = <&bpmp TEGRA194_RESET_UARTE>; resets = <&bpmp TEGRA194_RESET_UARTE>;
reset-names = "serial";
status = "disabled"; status = "disabled";
}; };
@@ -790,9 +786,7 @@
reg-shift = <2>; reg-shift = <2>;
interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&bpmp TEGRA194_CLK_UARTF>; clocks = <&bpmp TEGRA194_CLK_UARTF>;
clock-names = "serial";
resets = <&bpmp TEGRA194_RESET_UARTF>; resets = <&bpmp TEGRA194_RESET_UARTF>;
reset-names = "serial";
status = "disabled"; status = "disabled";
}; };
@@ -817,9 +811,7 @@
reg-shift = <2>; reg-shift = <2>;
interrupts = <GIC_SPI 207 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 207 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&bpmp TEGRA194_CLK_UARTH>; clocks = <&bpmp TEGRA194_CLK_UARTH>;
clock-names = "serial";
resets = <&bpmp TEGRA194_RESET_UARTH>; resets = <&bpmp TEGRA194_RESET_UARTH>;
reset-names = "serial";
status = "disabled"; status = "disabled";
}; };
@@ -1616,9 +1608,7 @@
reg-shift = <2>; reg-shift = <2>;
interrupts = <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&bpmp TEGRA194_CLK_UARTC>; clocks = <&bpmp TEGRA194_CLK_UARTC>;
clock-names = "serial";
resets = <&bpmp TEGRA194_RESET_UARTC>; resets = <&bpmp TEGRA194_RESET_UARTC>;
reset-names = "serial";
status = "disabled"; status = "disabled";
}; };
@@ -1628,9 +1618,7 @@
reg-shift = <2>; reg-shift = <2>;
interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&bpmp TEGRA194_CLK_UARTG>; clocks = <&bpmp TEGRA194_CLK_UARTG>;
clock-names = "serial";
resets = <&bpmp TEGRA194_RESET_UARTG>; resets = <&bpmp TEGRA194_RESET_UARTG>;
reset-names = "serial";
status = "disabled"; status = "disabled";
}; };
@@ -11,6 +11,7 @@
rtc0 = "/i2c@7000d000/pmic@3c"; rtc0 = "/i2c@7000d000/pmic@3c";
rtc1 = "/rtc@7000e000"; rtc1 = "/rtc@7000e000";
serial0 = &uarta; serial0 = &uarta;
serial3 = &uartd;
}; };
chosen { chosen {
@@ -111,6 +111,13 @@
regulator-always-on; regulator-always-on;
regulator-boot-on; regulator-boot-on;
}; };
mp5496_l5: l5 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-always-on;
regulator-boot-on;
};
}; };
}; };
@@ -146,7 +153,7 @@
}; };
&usb_0_qmpphy { &usb_0_qmpphy {
vdda-pll-supply = <&mp5496_l2>; vdda-pll-supply = <&mp5496_l5>;
vdda-phy-supply = <&regulator_fixed_0p925>; vdda-phy-supply = <&regulator_fixed_0p925>;
status = "okay"; status = "okay";
@@ -154,7 +161,7 @@
&usb_0_qusbphy { &usb_0_qusbphy {
vdd-supply = <&regulator_fixed_0p925>; vdd-supply = <&regulator_fixed_0p925>;
vdda-pll-supply = <&mp5496_l2>; vdda-pll-supply = <&mp5496_l5>;
vdda-phy-dpdm-supply = <&regulator_fixed_3p3>; vdda-phy-dpdm-supply = <&regulator_fixed_3p3>;
status = "okay"; status = "okay";
+8 -8
View File
@@ -1073,7 +1073,7 @@
interconnects = <&qup_virt MASTER_QUP_CORE_0 RPM_ALWAYS_TAG interconnects = <&qup_virt MASTER_QUP_CORE_0 RPM_ALWAYS_TAG
&qup_virt SLAVE_QUP_CORE_0 RPM_ALWAYS_TAG>, &qup_virt SLAVE_QUP_CORE_0 RPM_ALWAYS_TAG>,
<&bimc MASTER_APPSS_PROC RPM_ALWAYS_TAG <&bimc MASTER_APPSS_PROC RPM_ALWAYS_TAG
&config_noc MASTER_APPSS_PROC RPM_ALWAYS_TAG>; &config_noc SLAVE_QUP_0 RPM_ALWAYS_TAG>;
interconnect-names = "qup-core", interconnect-names = "qup-core",
"qup-config"; "qup-config";
#address-cells = <1>; #address-cells = <1>;
@@ -1092,7 +1092,7 @@
interconnects = <&qup_virt MASTER_QUP_CORE_0 RPM_ALWAYS_TAG interconnects = <&qup_virt MASTER_QUP_CORE_0 RPM_ALWAYS_TAG
&qup_virt SLAVE_QUP_CORE_0 RPM_ALWAYS_TAG>, &qup_virt SLAVE_QUP_CORE_0 RPM_ALWAYS_TAG>,
<&bimc MASTER_APPSS_PROC RPM_ALWAYS_TAG <&bimc MASTER_APPSS_PROC RPM_ALWAYS_TAG
&config_noc MASTER_APPSS_PROC RPM_ALWAYS_TAG>; &config_noc SLAVE_QUP_0 RPM_ALWAYS_TAG>;
interconnect-names = "qup-core", interconnect-names = "qup-core",
"qup-config"; "qup-config";
status = "disabled"; status = "disabled";
@@ -1137,7 +1137,7 @@
interconnects = <&qup_virt MASTER_QUP_CORE_0 RPM_ALWAYS_TAG interconnects = <&qup_virt MASTER_QUP_CORE_0 RPM_ALWAYS_TAG
&qup_virt SLAVE_QUP_CORE_0 RPM_ALWAYS_TAG>, &qup_virt SLAVE_QUP_CORE_0 RPM_ALWAYS_TAG>,
<&bimc MASTER_APPSS_PROC RPM_ALWAYS_TAG <&bimc MASTER_APPSS_PROC RPM_ALWAYS_TAG
&config_noc MASTER_APPSS_PROC RPM_ALWAYS_TAG>; &config_noc SLAVE_QUP_0 RPM_ALWAYS_TAG>;
interconnect-names = "qup-core", interconnect-names = "qup-core",
"qup-config"; "qup-config";
#address-cells = <1>; #address-cells = <1>;
@@ -1184,7 +1184,7 @@
interconnects = <&qup_virt MASTER_QUP_CORE_0 RPM_ALWAYS_TAG interconnects = <&qup_virt MASTER_QUP_CORE_0 RPM_ALWAYS_TAG
&qup_virt SLAVE_QUP_CORE_0 RPM_ALWAYS_TAG>, &qup_virt SLAVE_QUP_CORE_0 RPM_ALWAYS_TAG>,
<&bimc MASTER_APPSS_PROC RPM_ALWAYS_TAG <&bimc MASTER_APPSS_PROC RPM_ALWAYS_TAG
&config_noc MASTER_APPSS_PROC RPM_ALWAYS_TAG>; &config_noc SLAVE_QUP_0 RPM_ALWAYS_TAG>;
interconnect-names = "qup-core", interconnect-names = "qup-core",
"qup-config"; "qup-config";
#address-cells = <1>; #address-cells = <1>;
@@ -1231,7 +1231,7 @@
interconnects = <&qup_virt MASTER_QUP_CORE_0 RPM_ALWAYS_TAG interconnects = <&qup_virt MASTER_QUP_CORE_0 RPM_ALWAYS_TAG
&qup_virt SLAVE_QUP_CORE_0 RPM_ALWAYS_TAG>, &qup_virt SLAVE_QUP_CORE_0 RPM_ALWAYS_TAG>,
<&bimc MASTER_APPSS_PROC RPM_ALWAYS_TAG <&bimc MASTER_APPSS_PROC RPM_ALWAYS_TAG
&config_noc MASTER_APPSS_PROC RPM_ALWAYS_TAG>; &config_noc SLAVE_QUP_0 RPM_ALWAYS_TAG>;
interconnect-names = "qup-core", interconnect-names = "qup-core",
"qup-config"; "qup-config";
#address-cells = <1>; #address-cells = <1>;
@@ -1278,7 +1278,7 @@
interconnects = <&qup_virt MASTER_QUP_CORE_0 RPM_ALWAYS_TAG interconnects = <&qup_virt MASTER_QUP_CORE_0 RPM_ALWAYS_TAG
&qup_virt SLAVE_QUP_CORE_0 RPM_ALWAYS_TAG>, &qup_virt SLAVE_QUP_CORE_0 RPM_ALWAYS_TAG>,
<&bimc MASTER_APPSS_PROC RPM_ALWAYS_TAG <&bimc MASTER_APPSS_PROC RPM_ALWAYS_TAG
&config_noc MASTER_APPSS_PROC RPM_ALWAYS_TAG>; &config_noc SLAVE_QUP_0 RPM_ALWAYS_TAG>;
interconnect-names = "qup-core", interconnect-names = "qup-core",
"qup-config"; "qup-config";
#address-cells = <1>; #address-cells = <1>;
@@ -1297,7 +1297,7 @@
interconnects = <&qup_virt MASTER_QUP_CORE_0 RPM_ALWAYS_TAG interconnects = <&qup_virt MASTER_QUP_CORE_0 RPM_ALWAYS_TAG
&qup_virt SLAVE_QUP_CORE_0 RPM_ALWAYS_TAG>, &qup_virt SLAVE_QUP_CORE_0 RPM_ALWAYS_TAG>,
<&bimc MASTER_APPSS_PROC RPM_ALWAYS_TAG <&bimc MASTER_APPSS_PROC RPM_ALWAYS_TAG
&config_noc MASTER_APPSS_PROC RPM_ALWAYS_TAG>; &config_noc SLAVE_QUP_0 RPM_ALWAYS_TAG>;
interconnect-names = "qup-core", interconnect-names = "qup-core",
"qup-config"; "qup-config";
status = "disabled"; status = "disabled";
@@ -1342,7 +1342,7 @@
interconnects = <&qup_virt MASTER_QUP_CORE_0 RPM_ALWAYS_TAG interconnects = <&qup_virt MASTER_QUP_CORE_0 RPM_ALWAYS_TAG
&qup_virt SLAVE_QUP_CORE_0 RPM_ALWAYS_TAG>, &qup_virt SLAVE_QUP_CORE_0 RPM_ALWAYS_TAG>,
<&bimc MASTER_APPSS_PROC RPM_ALWAYS_TAG <&bimc MASTER_APPSS_PROC RPM_ALWAYS_TAG
&config_noc MASTER_APPSS_PROC RPM_ALWAYS_TAG>; &config_noc SLAVE_QUP_0 RPM_ALWAYS_TAG>;
interconnect-names = "qup-core", interconnect-names = "qup-core",
"qup-config"; "qup-config";
#address-cells = <1>; #address-cells = <1>;
@@ -1131,9 +1131,6 @@
"VA DMIC0", "MIC BIAS1", "VA DMIC0", "MIC BIAS1",
"VA DMIC1", "MIC BIAS1", "VA DMIC1", "MIC BIAS1",
"VA DMIC2", "MIC BIAS3", "VA DMIC2", "MIC BIAS3",
"VA DMIC0", "VA MIC BIAS1",
"VA DMIC1", "VA MIC BIAS1",
"VA DMIC2", "VA MIC BIAS3",
"TX SWR_ADC1", "ADC2_OUTPUT"; "TX SWR_ADC1", "ADC2_OUTPUT";
wcd-playback-dai-link { wcd-playback-dai-link {
@@ -167,6 +167,7 @@
* BAM DMA interconnects support is in place. * BAM DMA interconnects support is in place.
*/ */
/delete-property/ clocks; /delete-property/ clocks;
/delete-property/ clock-names;
}; };
&blsp1_uart2 { &blsp1_uart2 {
@@ -179,6 +180,7 @@
* BAM DMA interconnects support is in place. * BAM DMA interconnects support is in place.
*/ */
/delete-property/ clocks; /delete-property/ clocks;
/delete-property/ clock-names;
}; };
&blsp2_uart1 { &blsp2_uart1 {
@@ -107,6 +107,7 @@
status = "okay"; status = "okay";
vdd-supply = <&vreg_l1b_0p925>; vdd-supply = <&vreg_l1b_0p925>;
vdda-pll-supply = <&vreg_l10a_1p8>;
vdda-phy-dpdm-supply = <&vreg_l7b_3p125>; vdda-phy-dpdm-supply = <&vreg_l7b_3p125>;
}; };
@@ -404,6 +405,8 @@
&sdhc_2 { &sdhc_2 {
status = "okay"; status = "okay";
cd-gpios = <&tlmm 54 GPIO_ACTIVE_HIGH>;
vmmc-supply = <&vreg_l5b_2p95>; vmmc-supply = <&vreg_l5b_2p95>;
vqmmc-supply = <&vreg_l2b_2p95>; vqmmc-supply = <&vreg_l2b_2p95>;
}; };
@@ -135,8 +135,6 @@
vdda_sp_sensor: vdda_sp_sensor:
vdda_ufs1_core: vdda_ufs1_core:
vdda_ufs2_core: vdda_ufs2_core:
vdda_usb1_ss_core:
vdda_usb2_ss_core:
vreg_l1a_0p875: ldo1 { vreg_l1a_0p875: ldo1 {
regulator-min-microvolt = <880000>; regulator-min-microvolt = <880000>;
regulator-max-microvolt = <880000>; regulator-max-microvolt = <880000>;
@@ -157,6 +155,7 @@
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
}; };
vdda_usb1_ss_core:
vdd_wcss_cx: vdd_wcss_cx:
vdd_wcss_mx: vdd_wcss_mx:
vdda_wcss_pll: vdda_wcss_pll:
@@ -383,8 +382,8 @@
}; };
&sdhc_2 { &sdhc_2 {
pinctrl-names = "default";
pinctrl-0 = <&sdc2_clk_state &sdc2_cmd_state &sdc2_data_state &sd_card_det_n_state>; pinctrl-0 = <&sdc2_clk_state &sdc2_cmd_state &sdc2_data_state &sd_card_det_n_state>;
pinctrl-names = "default";
cd-gpios = <&tlmm 126 GPIO_ACTIVE_LOW>; cd-gpios = <&tlmm 126 GPIO_ACTIVE_LOW>;
vmmc-supply = <&vreg_l21a_2p95>; vmmc-supply = <&vreg_l21a_2p95>;
vqmmc-supply = <&vddpx_2>; vqmmc-supply = <&vddpx_2>;
@@ -418,16 +417,9 @@
status = "okay"; status = "okay";
}; };
&wifi {
vdd-0.8-cx-mx-supply = <&vreg_l5a_0p8>;
vdd-1.8-xo-supply = <&vreg_l7a_1p8>;
vdd-1.3-rfa-supply = <&vreg_l17a_1p3>;
vdd-3.3-ch0-supply = <&vreg_l25a_3p3>;
status = "okay";
};
&tlmm { &tlmm {
gpio-reserved-ranges = <0 4>, <27 4>, <81 4>, <85 4>; gpio-reserved-ranges = <27 4>, /* SPI (eSE - embedded Secure Element) */
<85 4>; /* SPI (fingerprint reader) */
sdc2_clk_state: sdc2-clk-state { sdc2_clk_state: sdc2-clk-state {
pins = "sdc2_clk"; pins = "sdc2_clk";
+1 -1
View File
@@ -606,7 +606,7 @@
}; };
cpu7_opp9: opp-1747200000 { cpu7_opp9: opp-1747200000 {
opp-hz = /bits/ 64 <1708800000>; opp-hz = /bits/ 64 <1747200000>;
opp-peak-kBps = <5412000 42393600>; opp-peak-kBps = <5412000 42393600>;
}; };
+2 -4
View File
@@ -1806,11 +1806,11 @@
interrupts = <GIC_SPI 272 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 272 IRQ_TYPE_LEVEL_HIGH>;
#dma-cells = <1>; #dma-cells = <1>;
qcom,ee = <0>; qcom,ee = <0>;
qcom,num-ees = <4>;
num-channels = <16>;
qcom,controlled-remotely; qcom,controlled-remotely;
iommus = <&apps_smmu 0x594 0x0011>, iommus = <&apps_smmu 0x594 0x0011>,
<&apps_smmu 0x596 0x0011>; <&apps_smmu 0x596 0x0011>;
/* FIXME: Probing BAM DMA causes some abort and system hang */
status = "fail";
}; };
crypto: crypto@1dfa000 { crypto: crypto@1dfa000 {
@@ -1822,8 +1822,6 @@
<&apps_smmu 0x596 0x0011>; <&apps_smmu 0x596 0x0011>;
interconnects = <&aggre2_noc MASTER_CRYPTO 0 &mc_virt SLAVE_EBI1 0>; interconnects = <&aggre2_noc MASTER_CRYPTO 0 &mc_virt SLAVE_EBI1 0>;
interconnect-names = "memory"; interconnect-names = "memory";
/* FIXME: dependency BAM DMA is disabled */
status = "disabled";
}; };
ipa: ipa@1e40000 { ipa: ipa@1e40000 {
+37 -34
View File
@@ -3605,8 +3605,11 @@
resets = <&dispcc DISP_CC_MDSS_CORE_BCR>; resets = <&dispcc DISP_CC_MDSS_CORE_BCR>;
interconnects = <&mmss_noc MASTER_MDP QCOM_ICC_TAG_ALWAYS interconnects = <&mmss_noc MASTER_MDP QCOM_ICC_TAG_ALWAYS
&mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>; &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
interconnect-names = "mdp0-mem"; <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
&config_noc SLAVE_DISPLAY_CFG QCOM_ICC_TAG_ACTIVE_ONLY>;
interconnect-names = "mdp0-mem",
"cpu-cfg";
power-domains = <&dispcc MDSS_GDSC>; power-domains = <&dispcc MDSS_GDSC>;
@@ -6354,20 +6357,20 @@
trips { trips {
gpu0_alert0: trip-point0 { gpu0_alert0: trip-point0 {
temperature = <85000>; temperature = <95000>;
hysteresis = <1000>; hysteresis = <1000>;
type = "passive"; type = "passive";
}; };
trip-point1 { trip-point1 {
temperature = <90000>; temperature = <110000>;
hysteresis = <1000>; hysteresis = <1000>;
type = "hot"; type = "hot";
}; };
trip-point2 { trip-point2 {
temperature = <110000>; temperature = <115000>;
hysteresis = <1000>; hysteresis = <0>;
type = "critical"; type = "critical";
}; };
}; };
@@ -6387,20 +6390,20 @@
trips { trips {
gpu1_alert0: trip-point0 { gpu1_alert0: trip-point0 {
temperature = <85000>; temperature = <95000>;
hysteresis = <1000>; hysteresis = <1000>;
type = "passive"; type = "passive";
}; };
trip-point1 { trip-point1 {
temperature = <90000>; temperature = <110000>;
hysteresis = <1000>; hysteresis = <1000>;
type = "hot"; type = "hot";
}; };
trip-point2 { trip-point2 {
temperature = <110000>; temperature = <115000>;
hysteresis = <1000>; hysteresis = <0>;
type = "critical"; type = "critical";
}; };
}; };
@@ -6420,20 +6423,20 @@
trips { trips {
gpu2_alert0: trip-point0 { gpu2_alert0: trip-point0 {
temperature = <85000>; temperature = <95000>;
hysteresis = <1000>; hysteresis = <1000>;
type = "passive"; type = "passive";
}; };
trip-point1 { trip-point1 {
temperature = <90000>; temperature = <110000>;
hysteresis = <1000>; hysteresis = <1000>;
type = "hot"; type = "hot";
}; };
trip-point2 { trip-point2 {
temperature = <110000>; temperature = <115000>;
hysteresis = <1000>; hysteresis = <0>;
type = "critical"; type = "critical";
}; };
}; };
@@ -6453,20 +6456,20 @@
trips { trips {
gpu3_alert0: trip-point0 { gpu3_alert0: trip-point0 {
temperature = <85000>; temperature = <95000>;
hysteresis = <1000>; hysteresis = <1000>;
type = "passive"; type = "passive";
}; };
trip-point1 { trip-point1 {
temperature = <90000>; temperature = <110000>;
hysteresis = <1000>; hysteresis = <1000>;
type = "hot"; type = "hot";
}; };
trip-point2 { trip-point2 {
temperature = <110000>; temperature = <115000>;
hysteresis = <1000>; hysteresis = <0>;
type = "critical"; type = "critical";
}; };
}; };
@@ -6486,20 +6489,20 @@
trips { trips {
gpu4_alert0: trip-point0 { gpu4_alert0: trip-point0 {
temperature = <85000>; temperature = <95000>;
hysteresis = <1000>; hysteresis = <1000>;
type = "passive"; type = "passive";
}; };
trip-point1 { trip-point1 {
temperature = <90000>; temperature = <110000>;
hysteresis = <1000>; hysteresis = <1000>;
type = "hot"; type = "hot";
}; };
trip-point2 { trip-point2 {
temperature = <110000>; temperature = <115000>;
hysteresis = <1000>; hysteresis = <0>;
type = "critical"; type = "critical";
}; };
}; };
@@ -6519,20 +6522,20 @@
trips { trips {
gpu5_alert0: trip-point0 { gpu5_alert0: trip-point0 {
temperature = <85000>; temperature = <95000>;
hysteresis = <1000>; hysteresis = <1000>;
type = "passive"; type = "passive";
}; };
trip-point1 { trip-point1 {
temperature = <90000>; temperature = <110000>;
hysteresis = <1000>; hysteresis = <1000>;
type = "hot"; type = "hot";
}; };
trip-point2 { trip-point2 {
temperature = <110000>; temperature = <115000>;
hysteresis = <1000>; hysteresis = <0>;
type = "critical"; type = "critical";
}; };
}; };
@@ -6552,20 +6555,20 @@
trips { trips {
gpu6_alert0: trip-point0 { gpu6_alert0: trip-point0 {
temperature = <85000>; temperature = <95000>;
hysteresis = <1000>; hysteresis = <1000>;
type = "passive"; type = "passive";
}; };
trip-point1 { trip-point1 {
temperature = <90000>; temperature = <110000>;
hysteresis = <1000>; hysteresis = <1000>;
type = "hot"; type = "hot";
}; };
trip-point2 { trip-point2 {
temperature = <110000>; temperature = <115000>;
hysteresis = <1000>; hysteresis = <0>;
type = "critical"; type = "critical";
}; };
}; };
@@ -6585,20 +6588,20 @@
trips { trips {
gpu7_alert0: trip-point0 { gpu7_alert0: trip-point0 {
temperature = <85000>; temperature = <95000>;
hysteresis = <1000>; hysteresis = <1000>;
type = "passive"; type = "passive";
}; };
trip-point1 { trip-point1 {
temperature = <90000>; temperature = <110000>;
hysteresis = <1000>; hysteresis = <1000>;
type = "hot"; type = "hot";
}; };
trip-point2 { trip-point2 {
temperature = <110000>; temperature = <115000>;
hysteresis = <1000>; hysteresis = <0>;
type = "critical"; type = "critical";
}; };
}; };
@@ -267,6 +267,7 @@
regulator-min-microvolt = <1200000>; regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>; regulator-max-microvolt = <1200000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
regulator-always-on;
}; };
vreg_l13b: ldo13 { vreg_l13b: ldo13 {
@@ -288,6 +289,7 @@
regulator-min-microvolt = <1800000>; regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>; regulator-max-microvolt = <1800000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
regulator-always-on;
}; };
vreg_l16b: ldo16 { vreg_l16b: ldo16 {
+2
View File
@@ -4284,6 +4284,8 @@
phy-names = "usb2-phy"; phy-names = "usb2-phy";
maximum-speed = "high-speed"; maximum-speed = "high-speed";
dma-coherent;
ports { ports {
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
@@ -108,7 +108,7 @@
}; };
tpu0_pins: tpu0 { tpu0_pins: tpu0 {
groups = "tpu_to0_a"; groups = "tpu_to0_b";
function = "tpu"; function = "tpu";
}; };
}; };
@@ -284,14 +284,6 @@
status = "okay"; status = "okay";
}; };
&usb_host0_ehci {
status = "okay";
};
&usb_host0_ohci {
status = "okay";
};
&vopb { &vopb {
status = "okay"; status = "okay";
}; };
@@ -636,6 +636,7 @@
spi-max-frequency = <104000000>; spi-max-frequency = <104000000>;
spi-rx-bus-width = <4>; spi-rx-bus-width = <4>;
spi-tx-bus-width = <1>; spi-tx-bus-width = <1>;
vcc-supply = <&vcc_1v8>;
}; };
}; };
@@ -486,9 +486,12 @@
&sdhci { &sdhci {
bus-width = <8>; bus-width = <8>;
max-frequency = <200000000>; max-frequency = <200000000>;
mmc-hs200-1_8v;
non-removable; non-removable;
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&emmc_bus8 &emmc_clk &emmc_cmd>; pinctrl-0 = <&emmc_bus8 &emmc_clk &emmc_cmd &emmc_datastrobe>;
vmmc-supply = <&vcc_3v3>;
vqmmc-supply = <&vcc_1v8>;
status = "okay"; status = "okay";
}; };
@@ -428,16 +428,15 @@
#clock-cells = <0>; #clock-cells = <0>;
}; };
pmu_sram: sram@10f000 { reserved-memory {
compatible = "mmio-sram"; #address-cells = <2>;
reg = <0x0 0x0010f000 0x0 0x100>; #size-cells = <2>;
ranges = <0 0x0 0x0010f000 0x100>; ranges;
#address-cells = <1>;
#size-cells = <1>;
scmi_shmem: sram@0 { scmi_shmem: shmem@10f000 {
compatible = "arm,scmi-shmem"; compatible = "arm,scmi-shmem";
reg = <0x0 0x100>; reg = <0x0 0x0010f000 0x0 0x100>;
no-map;
}; };
}; };
@@ -557,6 +557,7 @@
&ospi1 { &ospi1 {
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&mcu_fss0_ospi1_pins_default>; pinctrl-0 = <&mcu_fss0_ospi1_pins_default>;
status = "okay";
flash@0 { flash@0 {
compatible = "jedec,spi-nor"; compatible = "jedec,spi-nor";
+3
View File
@@ -1536,6 +1536,9 @@ CONFIG_PHY_HISTB_COMBPHY=y
CONFIG_PHY_HISI_INNO_USB2=y CONFIG_PHY_HISI_INNO_USB2=y
CONFIG_PHY_MVEBU_CP110_COMPHY=y CONFIG_PHY_MVEBU_CP110_COMPHY=y
CONFIG_PHY_MTK_TPHY=y CONFIG_PHY_MTK_TPHY=y
CONFIG_PHY_MTK_HDMI=m
CONFIG_PHY_MTK_MIPI_DSI=m
CONFIG_PHY_MTK_DP=m
CONFIG_PHY_QCOM_EDP=m CONFIG_PHY_QCOM_EDP=m
CONFIG_PHY_QCOM_PCIE2=m CONFIG_PHY_QCOM_PCIE2=m
CONFIG_PHY_QCOM_QMP=m CONFIG_PHY_QCOM_QMP=m
+1 -1
View File
@@ -793,7 +793,7 @@ static void __init mac_identify(void)
} }
macintosh_config = mac_data_table; macintosh_config = mac_data_table;
for (m = macintosh_config; m->ident != -1; m++) { for (m = &mac_data_table[1]; m->ident != -1; m++) {
if (m->ident == model) { if (m->ident == model) {
macintosh_config = m; macintosh_config = m;
break; break;
+1 -1
View File
@@ -162,7 +162,7 @@ endif
obj64-$(CONFIG_PPC_TRANSACTIONAL_MEM) += tm.o obj64-$(CONFIG_PPC_TRANSACTIONAL_MEM) += tm.o
ifneq ($(CONFIG_XMON)$(CONFIG_KEXEC_CORE)(CONFIG_PPC_BOOK3S),) ifneq ($(CONFIG_XMON)$(CONFIG_KEXEC_CORE)$(CONFIG_PPC_BOOK3S),)
obj-y += ppc_save_regs.o obj-y += ppc_save_regs.o
endif endif
+4 -1
View File
@@ -359,7 +359,10 @@ void default_machine_crash_shutdown(struct pt_regs *regs)
if (TRAP(regs) == INTERRUPT_SYSTEM_RESET) if (TRAP(regs) == INTERRUPT_SYSTEM_RESET)
is_via_system_reset = 1; is_via_system_reset = 1;
crash_smp_send_stop(); if (IS_ENABLED(CONFIG_SMP))
crash_smp_send_stop();
else
crash_kexec_prepare();
crash_save_cpu(regs, crashing_cpu); crash_save_cpu(regs, crashing_cpu);
+1 -1
View File
@@ -197,7 +197,7 @@ static void tce_iommu_userspace_view_free(struct iommu_table *tbl)
static void tce_free_pSeries(struct iommu_table *tbl) static void tce_free_pSeries(struct iommu_table *tbl)
{ {
if (!tbl->it_userspace) if (tbl->it_userspace)
tce_iommu_userspace_view_free(tbl); tce_iommu_userspace_view_free(tbl);
} }
+2 -2
View File
@@ -139,9 +139,9 @@ void kvm_riscv_vcpu_sbi_system_reset(struct kvm_vcpu *vcpu,
struct kvm_vcpu *tmp; struct kvm_vcpu *tmp;
kvm_for_each_vcpu(i, tmp, vcpu->kvm) { kvm_for_each_vcpu(i, tmp, vcpu->kvm) {
spin_lock(&vcpu->arch.mp_state_lock); spin_lock(&tmp->arch.mp_state_lock);
WRITE_ONCE(tmp->arch.mp_state.mp_state, KVM_MP_STATE_STOPPED); WRITE_ONCE(tmp->arch.mp_state.mp_state, KVM_MP_STATE_STOPPED);
spin_unlock(&vcpu->arch.mp_state_lock); spin_unlock(&tmp->arch.mp_state_lock);
} }
kvm_make_all_cpus_request(vcpu->kvm, KVM_REQ_SLEEP); kvm_make_all_cpus_request(vcpu->kvm, KVM_REQ_SLEEP);
+5 -7
View File
@@ -605,17 +605,15 @@ static void bpf_jit_prologue(struct bpf_jit *jit, struct bpf_prog *fp,
} }
/* Setup stack and backchain */ /* Setup stack and backchain */
if (is_first_pass(jit) || (jit->seen & SEEN_STACK)) { if (is_first_pass(jit) || (jit->seen & SEEN_STACK)) {
if (is_first_pass(jit) || (jit->seen & SEEN_FUNC)) /* lgr %w1,%r15 (backchain) */
/* lgr %w1,%r15 (backchain) */ EMIT4(0xb9040000, REG_W1, REG_15);
EMIT4(0xb9040000, REG_W1, REG_15);
/* la %bfp,STK_160_UNUSED(%r15) (BPF frame pointer) */ /* la %bfp,STK_160_UNUSED(%r15) (BPF frame pointer) */
EMIT4_DISP(0x41000000, BPF_REG_FP, REG_15, STK_160_UNUSED); EMIT4_DISP(0x41000000, BPF_REG_FP, REG_15, STK_160_UNUSED);
/* aghi %r15,-STK_OFF */ /* aghi %r15,-STK_OFF */
EMIT4_IMM(0xa70b0000, REG_15, -(STK_OFF + stack_depth)); EMIT4_IMM(0xa70b0000, REG_15, -(STK_OFF + stack_depth));
if (is_first_pass(jit) || (jit->seen & SEEN_FUNC)) /* stg %w1,152(%r15) (backchain) */
/* stg %w1,152(%r15) (backchain) */ EMIT6_DISP_LH(0xe3000000, 0x0024, REG_W1, REG_0,
EMIT6_DISP_LH(0xe3000000, 0x0024, REG_W1, REG_0, REG_15, 152);
REG_15, 152);
} }
} }
+34 -2
View File
@@ -38,7 +38,6 @@ struct amd_uncore_ctx {
int refcnt; int refcnt;
int cpu; int cpu;
struct perf_event **events; struct perf_event **events;
struct hlist_node node;
}; };
struct amd_uncore_pmu { struct amd_uncore_pmu {
@@ -890,6 +889,39 @@ static void amd_uncore_umc_start(struct perf_event *event, int flags)
perf_event_update_userpage(event); perf_event_update_userpage(event);
} }
static void amd_uncore_umc_read(struct perf_event *event)
{
struct hw_perf_event *hwc = &event->hw;
u64 prev, new, shift;
s64 delta;
shift = COUNTER_SHIFT + 1;
prev = local64_read(&hwc->prev_count);
/*
* UMC counters do not have RDPMC assignments. Read counts directly
* from the corresponding PERF_CTR.
*/
rdmsrl(hwc->event_base, new);
/*
* Unlike the other uncore counters, UMC counters saturate and set the
* Overflow bit (bit 48) on overflow. Since they do not roll over,
* proactively reset the corresponding PERF_CTR when bit 47 is set so
* that the counter never gets a chance to saturate.
*/
if (new & BIT_ULL(63 - COUNTER_SHIFT)) {
wrmsrl(hwc->event_base, 0);
local64_set(&hwc->prev_count, 0);
} else {
local64_set(&hwc->prev_count, new);
}
delta = (new << shift) - (prev << shift);
delta >>= shift;
local64_add(delta, &event->count);
}
static static
void amd_uncore_umc_ctx_scan(struct amd_uncore *uncore, unsigned int cpu) void amd_uncore_umc_ctx_scan(struct amd_uncore *uncore, unsigned int cpu)
{ {
@@ -967,7 +999,7 @@ int amd_uncore_umc_ctx_init(struct amd_uncore *uncore, unsigned int cpu)
.del = amd_uncore_del, .del = amd_uncore_del,
.start = amd_uncore_umc_start, .start = amd_uncore_umc_start,
.stop = amd_uncore_stop, .stop = amd_uncore_stop,
.read = amd_uncore_read, .read = amd_uncore_umc_read,
.capabilities = PERF_PMU_CAP_NO_EXCLUDE | PERF_PMU_CAP_NO_INTERRUPT, .capabilities = PERF_PMU_CAP_NO_EXCLUDE | PERF_PMU_CAP_NO_INTERRUPT,
.module = THIS_MODULE, .module = THIS_MODULE,
}; };
+3 -6
View File
@@ -117,13 +117,10 @@ static __always_inline void __sti_mwait(unsigned long eax, unsigned long ecx)
static __always_inline void mwait_idle_with_hints(unsigned long eax, unsigned long ecx) static __always_inline void mwait_idle_with_hints(unsigned long eax, unsigned long ecx)
{ {
if (static_cpu_has_bug(X86_BUG_MONITOR) || !current_set_polling_and_test()) { if (static_cpu_has_bug(X86_BUG_MONITOR) || !current_set_polling_and_test()) {
if (static_cpu_has_bug(X86_BUG_CLFLUSH_MONITOR)) { const void *addr = &current_thread_info()->flags;
mb();
clflush((void *)&current_thread_info()->flags);
mb();
}
__monitor((void *)&current_thread_info()->flags, 0, 0); alternative_input("", "clflush (%[addr])", X86_BUG_CLFLUSH_MONITOR, [addr] "a" (addr));
__monitor(addr, 0, 0);
if (!need_resched()) { if (!need_resched()) {
if (ecx & 1) { if (ecx & 1) {
+9 -8
View File
@@ -1007,17 +1007,18 @@ void get_cpu_cap(struct cpuinfo_x86 *c)
c->x86_capability[CPUID_D_1_EAX] = eax; c->x86_capability[CPUID_D_1_EAX] = eax;
} }
/* AMD-defined flags: level 0x80000001 */ /*
* Check if extended CPUID leaves are implemented: Max extended
* CPUID leaf must be in the 0x80000001-0x8000ffff range.
*/
eax = cpuid_eax(0x80000000); eax = cpuid_eax(0x80000000);
c->extended_cpuid_level = eax; c->extended_cpuid_level = ((eax & 0xffff0000) == 0x80000000) ? eax : 0;
if ((eax & 0xffff0000) == 0x80000000) { if (c->extended_cpuid_level >= 0x80000001) {
if (eax >= 0x80000001) { cpuid(0x80000001, &eax, &ebx, &ecx, &edx);
cpuid(0x80000001, &eax, &ebx, &ecx, &edx);
c->x86_capability[CPUID_8000_0001_ECX] = ecx; c->x86_capability[CPUID_8000_0001_ECX] = ecx;
c->x86_capability[CPUID_8000_0001_EDX] = edx; c->x86_capability[CPUID_8000_0001_EDX] = edx;
}
} }
if (c->extended_cpuid_level >= 0x80000007) { if (c->extended_cpuid_level >= 0x80000007) {
+2
View File
@@ -696,6 +696,8 @@ static int load_late_locked(void)
return load_late_stop_cpus(true); return load_late_stop_cpus(true);
case UCODE_NFOUND: case UCODE_NFOUND:
return -ENOENT; return -ENOENT;
case UCODE_OK:
return 0;
default: default:
return -EBADFD; return -EBADFD;
} }
+1 -1
View File
@@ -591,7 +591,7 @@ static void get_fixed_ranges(mtrr_type *frs)
void mtrr_save_fixed_ranges(void *info) void mtrr_save_fixed_ranges(void *info)
{ {
if (boot_cpu_has(X86_FEATURE_MTRR)) if (mtrr_state.have_fixed)
get_fixed_ranges(mtrr_state.fixed_ranges); get_fixed_ranges(mtrr_state.fixed_ranges);
} }
+1 -1
View File
@@ -414,7 +414,7 @@ static __always_inline bool handle_pending_pir(u64 *pir, struct pt_regs *regs)
bool handled = false; bool handled = false;
for (i = 0; i < 4; i++) for (i = 0; i < 4; i++)
pir_copy[i] = pir[i]; pir_copy[i] = READ_ONCE(pir[i]);
for (i = 0; i < 4; i++) { for (i = 0; i < 4; i++) {
if (!pir_copy[i]) if (!pir_copy[i])
+3 -6
View File
@@ -907,13 +907,10 @@ static __init bool prefer_mwait_c1_over_halt(void)
static __cpuidle void mwait_idle(void) static __cpuidle void mwait_idle(void)
{ {
if (!current_set_polling_and_test()) { if (!current_set_polling_and_test()) {
if (this_cpu_has(X86_BUG_CLFLUSH_MONITOR)) { const void *addr = &current_thread_info()->flags;
mb(); /* quirk */
clflush((void *)&current_thread_info()->flags);
mb(); /* quirk */
}
__monitor((void *)&current_thread_info()->flags, 0, 0); alternative_input("", "clflush (%[addr])", X86_BUG_CLFLUSH_MONITOR, [addr] "a" (addr));
__monitor(addr, 0, 0);
if (!need_resched()) { if (!need_resched()) {
__sti_mwait(0, 0); __sti_mwait(0, 0);
raw_local_irq_disable(); raw_local_irq_disable();
+25 -25
View File
@@ -35,7 +35,7 @@
# - (!F3) : the last prefix is not 0xF3 (including non-last prefix case) # - (!F3) : the last prefix is not 0xF3 (including non-last prefix case)
# - (66&F2): Both 0x66 and 0xF2 prefixes are specified. # - (66&F2): Both 0x66 and 0xF2 prefixes are specified.
# #
# REX2 Prefix # REX2 Prefix Superscripts
# - (!REX2): REX2 is not allowed # - (!REX2): REX2 is not allowed
# - (REX2): REX2 variant e.g. JMPABS # - (REX2): REX2 variant e.g. JMPABS
@@ -286,10 +286,10 @@ df: ESC
# Note: "forced64" is Intel CPU behavior: they ignore 0x66 prefix # Note: "forced64" is Intel CPU behavior: they ignore 0x66 prefix
# in 64-bit mode. AMD CPUs accept 0x66 prefix, it causes RIP truncation # in 64-bit mode. AMD CPUs accept 0x66 prefix, it causes RIP truncation
# to 16 bits. In 32-bit mode, 0x66 is accepted by both Intel and AMD. # to 16 bits. In 32-bit mode, 0x66 is accepted by both Intel and AMD.
e0: LOOPNE/LOOPNZ Jb (f64) (!REX2) e0: LOOPNE/LOOPNZ Jb (f64),(!REX2)
e1: LOOPE/LOOPZ Jb (f64) (!REX2) e1: LOOPE/LOOPZ Jb (f64),(!REX2)
e2: LOOP Jb (f64) (!REX2) e2: LOOP Jb (f64),(!REX2)
e3: JrCXZ Jb (f64) (!REX2) e3: JrCXZ Jb (f64),(!REX2)
e4: IN AL,Ib (!REX2) e4: IN AL,Ib (!REX2)
e5: IN eAX,Ib (!REX2) e5: IN eAX,Ib (!REX2)
e6: OUT Ib,AL (!REX2) e6: OUT Ib,AL (!REX2)
@@ -298,10 +298,10 @@ e7: OUT Ib,eAX (!REX2)
# in "near" jumps and calls is 16-bit. For CALL, # in "near" jumps and calls is 16-bit. For CALL,
# push of return address is 16-bit wide, RSP is decremented by 2 # push of return address is 16-bit wide, RSP is decremented by 2
# but is not truncated to 16 bits, unlike RIP. # but is not truncated to 16 bits, unlike RIP.
e8: CALL Jz (f64) (!REX2) e8: CALL Jz (f64),(!REX2)
e9: JMP-near Jz (f64) (!REX2) e9: JMP-near Jz (f64),(!REX2)
ea: JMP-far Ap (i64) (!REX2) ea: JMP-far Ap (i64),(!REX2)
eb: JMP-short Jb (f64) (!REX2) eb: JMP-short Jb (f64),(!REX2)
ec: IN AL,DX (!REX2) ec: IN AL,DX (!REX2)
ed: IN eAX,DX (!REX2) ed: IN eAX,DX (!REX2)
ee: OUT DX,AL (!REX2) ee: OUT DX,AL (!REX2)
@@ -478,22 +478,22 @@ AVXcode: 1
7f: movq Qq,Pq | vmovdqa Wx,Vx (66) | vmovdqa32/64 Wx,Vx (66),(evo) | vmovdqu Wx,Vx (F3) | vmovdqu32/64 Wx,Vx (F3),(evo) | vmovdqu8/16 Wx,Vx (F2),(ev) 7f: movq Qq,Pq | vmovdqa Wx,Vx (66) | vmovdqa32/64 Wx,Vx (66),(evo) | vmovdqu Wx,Vx (F3) | vmovdqu32/64 Wx,Vx (F3),(evo) | vmovdqu8/16 Wx,Vx (F2),(ev)
# 0x0f 0x80-0x8f # 0x0f 0x80-0x8f
# Note: "forced64" is Intel CPU behavior (see comment about CALL insn). # Note: "forced64" is Intel CPU behavior (see comment about CALL insn).
80: JO Jz (f64) (!REX2) 80: JO Jz (f64),(!REX2)
81: JNO Jz (f64) (!REX2) 81: JNO Jz (f64),(!REX2)
82: JB/JC/JNAE Jz (f64) (!REX2) 82: JB/JC/JNAE Jz (f64),(!REX2)
83: JAE/JNB/JNC Jz (f64) (!REX2) 83: JAE/JNB/JNC Jz (f64),(!REX2)
84: JE/JZ Jz (f64) (!REX2) 84: JE/JZ Jz (f64),(!REX2)
85: JNE/JNZ Jz (f64) (!REX2) 85: JNE/JNZ Jz (f64),(!REX2)
86: JBE/JNA Jz (f64) (!REX2) 86: JBE/JNA Jz (f64),(!REX2)
87: JA/JNBE Jz (f64) (!REX2) 87: JA/JNBE Jz (f64),(!REX2)
88: JS Jz (f64) (!REX2) 88: JS Jz (f64),(!REX2)
89: JNS Jz (f64) (!REX2) 89: JNS Jz (f64),(!REX2)
8a: JP/JPE Jz (f64) (!REX2) 8a: JP/JPE Jz (f64),(!REX2)
8b: JNP/JPO Jz (f64) (!REX2) 8b: JNP/JPO Jz (f64),(!REX2)
8c: JL/JNGE Jz (f64) (!REX2) 8c: JL/JNGE Jz (f64),(!REX2)
8d: JNL/JGE Jz (f64) (!REX2) 8d: JNL/JGE Jz (f64),(!REX2)
8e: JLE/JNG Jz (f64) (!REX2) 8e: JLE/JNG Jz (f64),(!REX2)
8f: JNLE/JG Jz (f64) (!REX2) 8f: JNLE/JG Jz (f64),(!REX2)
# 0x0f 0x90-0x9f # 0x0f 0x90-0x9f
90: SETO Eb | kmovw/q Vk,Wk | kmovb/d Vk,Wk (66) 90: SETO Eb | kmovw/q Vk,Wk | kmovb/d Vk,Wk (66)
91: SETNO Eb | kmovw/q Mv,Vk | kmovb/d Mv,Vk (66) 91: SETNO Eb | kmovw/q Mv,Vk | kmovb/d Mv,Vk (66)
+11 -2
View File
@@ -220,10 +220,19 @@ again:
if (crypto_is_test_larval(larval)) if (crypto_is_test_larval(larval))
crypto_larval_kill(larval); crypto_larval_kill(larval);
alg = ERR_PTR(-ETIMEDOUT); alg = ERR_PTR(-ETIMEDOUT);
} else if (!alg) { } else if (!alg || PTR_ERR(alg) == -EEXIST) {
int err = alg ? -EEXIST : -EAGAIN;
/*
* EEXIST is expected because two probes can be scheduled
* at the same time with one using alg_name and the other
* using driver_name. Do a re-lookup but do not retry in
* case we hit a quirk like gcm_base(ctr(aes),...) which
* will never match.
*/
alg = &larval->alg; alg = &larval->alg;
alg = crypto_alg_lookup(alg->cra_name, type, mask) ?: alg = crypto_alg_lookup(alg->cra_name, type, mask) ?:
ERR_PTR(-EAGAIN); ERR_PTR(err);
} else if (IS_ERR(alg)) } else if (IS_ERR(alg))
; ;
else if (crypto_is_test_larval(larval) && else if (crypto_is_test_larval(larval) &&
+2 -2
View File
@@ -322,7 +322,7 @@ static int lrw_create(struct crypto_template *tmpl, struct rtattr **tb)
err = crypto_grab_skcipher(spawn, skcipher_crypto_instance(inst), err = crypto_grab_skcipher(spawn, skcipher_crypto_instance(inst),
cipher_name, 0, mask); cipher_name, 0, mask);
if (err == -ENOENT) { if (err == -ENOENT && memcmp(cipher_name, "ecb(", 4)) {
err = -ENAMETOOLONG; err = -ENAMETOOLONG;
if (snprintf(ecb_name, CRYPTO_MAX_ALG_NAME, "ecb(%s)", if (snprintf(ecb_name, CRYPTO_MAX_ALG_NAME, "ecb(%s)",
cipher_name) >= CRYPTO_MAX_ALG_NAME) cipher_name) >= CRYPTO_MAX_ALG_NAME)
@@ -356,7 +356,7 @@ static int lrw_create(struct crypto_template *tmpl, struct rtattr **tb)
/* Alas we screwed up the naming so we have to mangle the /* Alas we screwed up the naming so we have to mangle the
* cipher name. * cipher name.
*/ */
if (!strncmp(cipher_name, "ecb(", 4)) { if (!memcmp(cipher_name, "ecb(", 4)) {
int len; int len;
len = strscpy(ecb_name, cipher_name + 4, sizeof(ecb_name)); len = strscpy(ecb_name, cipher_name + 4, sizeof(ecb_name));
+2 -2
View File
@@ -363,7 +363,7 @@ static int xts_create(struct crypto_template *tmpl, struct rtattr **tb)
err = crypto_grab_skcipher(&ctx->spawn, skcipher_crypto_instance(inst), err = crypto_grab_skcipher(&ctx->spawn, skcipher_crypto_instance(inst),
cipher_name, 0, mask); cipher_name, 0, mask);
if (err == -ENOENT) { if (err == -ENOENT && memcmp(cipher_name, "ecb(", 4)) {
err = -ENAMETOOLONG; err = -ENAMETOOLONG;
if (snprintf(name, CRYPTO_MAX_ALG_NAME, "ecb(%s)", if (snprintf(name, CRYPTO_MAX_ALG_NAME, "ecb(%s)",
cipher_name) >= CRYPTO_MAX_ALG_NAME) cipher_name) >= CRYPTO_MAX_ALG_NAME)
@@ -397,7 +397,7 @@ static int xts_create(struct crypto_template *tmpl, struct rtattr **tb)
/* Alas we screwed up the naming so we have to mangle the /* Alas we screwed up the naming so we have to mangle the
* cipher name. * cipher name.
*/ */
if (!strncmp(cipher_name, "ecb(", 4)) { if (!memcmp(cipher_name, "ecb(", 4)) {
int len; int len;
len = strscpy(name, cipher_name + 4, sizeof(name)); len = strscpy(name, cipher_name + 4, sizeof(name));
+6
View File
@@ -201,6 +201,12 @@ acpi_ex_read_serial_bus(union acpi_operand_object *obj_desc,
function = ACPI_READ; function = ACPI_READ;
break; break;
case ACPI_ADR_SPACE_FIXED_HARDWARE:
buffer_length = ACPI_FFH_INPUT_BUFFER_SIZE;
function = ACPI_READ;
break;
default: default:
return_ACPI_STATUS(AE_AML_INVALID_SPACE_ID); return_ACPI_STATUS(AE_AML_INVALID_SPACE_ID);
} }
-1
View File
@@ -42,7 +42,6 @@ static struct acpi_osi_entry
osi_setup_entries[OSI_STRING_ENTRIES_MAX] __initdata = { osi_setup_entries[OSI_STRING_ENTRIES_MAX] __initdata = {
{"Module Device", true}, {"Module Device", true},
{"Processor Device", true}, {"Processor Device", true},
{"3.0 _SCP Extensions", true},
{"Processor Aggregator Device", true}, {"Processor Aggregator Device", true},
}; };
+1 -1
View File
@@ -534,7 +534,7 @@ static const struct dmi_system_id irq1_level_low_skip_override[] = {
*/ */
static const struct dmi_system_id irq1_edge_low_force_override[] = { static const struct dmi_system_id irq1_edge_low_force_override[] = {
{ {
/* MECHREV Jiaolong17KS Series GM7XG0M */ /* MECHREVO Jiaolong17KS Series GM7XG0M */
.matches = { .matches = {
DMI_MATCH(DMI_BOARD_NAME, "GM7XG0M"), DMI_MATCH(DMI_BOARD_NAME, "GM7XG0M"),
}, },
+7 -4
View File
@@ -224,19 +224,22 @@ out:
static void brd_do_discard(struct brd_device *brd, sector_t sector, u32 size) static void brd_do_discard(struct brd_device *brd, sector_t sector, u32 size)
{ {
sector_t aligned_sector = (sector + PAGE_SECTORS) & ~PAGE_SECTORS; sector_t aligned_sector = round_up(sector, PAGE_SECTORS);
sector_t aligned_end = round_down(
sector + (size >> SECTOR_SHIFT), PAGE_SECTORS);
struct page *page; struct page *page;
size -= (aligned_sector - sector) * SECTOR_SIZE; if (aligned_end <= aligned_sector)
return;
xa_lock(&brd->brd_pages); xa_lock(&brd->brd_pages);
while (size >= PAGE_SIZE && aligned_sector < rd_size * 2) { while (aligned_sector < aligned_end && aligned_sector < rd_size * 2) {
page = __xa_erase(&brd->brd_pages, aligned_sector >> PAGE_SECTORS_SHIFT); page = __xa_erase(&brd->brd_pages, aligned_sector >> PAGE_SECTORS_SHIFT);
if (page) { if (page) {
__free_page(page); __free_page(page);
brd->brd_nr_pages--; brd->brd_nr_pages--;
} }
aligned_sector += PAGE_SECTORS; aligned_sector += PAGE_SECTORS;
size -= PAGE_SIZE;
} }
xa_unlock(&brd->brd_pages); xa_unlock(&brd->brd_pages);
} }
+2 -8
View File
@@ -2705,7 +2705,7 @@ static int btintel_uefi_get_dsbr(u32 *dsbr_var)
} __packed data; } __packed data;
efi_status_t status; efi_status_t status;
unsigned long data_size = 0; unsigned long data_size = sizeof(data);
efi_guid_t guid = EFI_GUID(0xe65d8884, 0xd4af, 0x4b20, 0x8d, 0x03, efi_guid_t guid = EFI_GUID(0xe65d8884, 0xd4af, 0x4b20, 0x8d, 0x03,
0x77, 0x2e, 0xcc, 0x3d, 0xa5, 0x31); 0x77, 0x2e, 0xcc, 0x3d, 0xa5, 0x31);
@@ -2715,16 +2715,10 @@ static int btintel_uefi_get_dsbr(u32 *dsbr_var)
if (!efi_rt_services_supported(EFI_RT_SUPPORTED_GET_VARIABLE)) if (!efi_rt_services_supported(EFI_RT_SUPPORTED_GET_VARIABLE))
return -EOPNOTSUPP; return -EOPNOTSUPP;
status = efi.get_variable(BTINTEL_EFI_DSBR, &guid, NULL, &data_size,
NULL);
if (status != EFI_BUFFER_TOO_SMALL || !data_size)
return -EIO;
status = efi.get_variable(BTINTEL_EFI_DSBR, &guid, NULL, &data_size, status = efi.get_variable(BTINTEL_EFI_DSBR, &guid, NULL, &data_size,
&data); &data);
if (status != EFI_SUCCESS) if (status != EFI_SUCCESS || data_size != sizeof(data))
return -ENXIO; return -ENXIO;
*dsbr_var = data.dsbr; *dsbr_var = data.dsbr;
+4 -2
View File
@@ -905,8 +905,10 @@ int fsl_mc_device_add(struct fsl_mc_obj_desc *obj_desc,
error_cleanup_dev: error_cleanup_dev:
kfree(mc_dev->regions); kfree(mc_dev->regions);
kfree(mc_bus); if (mc_bus)
kfree(mc_dev); kfree(mc_bus);
else
kfree(mc_dev);
return error; return error;
} }
+2
View File
@@ -271,6 +271,8 @@ static struct clk_hw *raspberrypi_clk_register(struct raspberrypi_clk *rpi,
init.name = devm_kasprintf(rpi->dev, GFP_KERNEL, init.name = devm_kasprintf(rpi->dev, GFP_KERNEL,
"fw-clk-%s", "fw-clk-%s",
rpi_firmware_clk_names[id]); rpi_firmware_clk_names[id]);
if (!init.name)
return ERR_PTR(-ENOMEM);
init.ops = &raspberrypi_firmware_clk_ops; init.ops = &raspberrypi_firmware_clk_ops;
init.flags = CLK_GET_RATE_NOCACHE; init.flags = CLK_GET_RATE_NOCACHE;
+18
View File
@@ -1694,6 +1694,9 @@ static struct clk_branch camcc_sys_tmr_clk = {
static struct gdsc bps_gdsc = { static struct gdsc bps_gdsc = {
.gdscr = 0x6004, .gdscr = 0x6004,
.en_rest_wait_val = 0x2,
.en_few_wait_val = 0x2,
.clk_dis_wait_val = 0xf,
.pd = { .pd = {
.name = "bps_gdsc", .name = "bps_gdsc",
}, },
@@ -1703,6 +1706,9 @@ static struct gdsc bps_gdsc = {
static struct gdsc ipe_0_gdsc = { static struct gdsc ipe_0_gdsc = {
.gdscr = 0x7004, .gdscr = 0x7004,
.en_rest_wait_val = 0x2,
.en_few_wait_val = 0x2,
.clk_dis_wait_val = 0xf,
.pd = { .pd = {
.name = "ipe_0_gdsc", .name = "ipe_0_gdsc",
}, },
@@ -1712,6 +1718,9 @@ static struct gdsc ipe_0_gdsc = {
static struct gdsc ife_0_gdsc = { static struct gdsc ife_0_gdsc = {
.gdscr = 0x9004, .gdscr = 0x9004,
.en_rest_wait_val = 0x2,
.en_few_wait_val = 0x2,
.clk_dis_wait_val = 0xf,
.pd = { .pd = {
.name = "ife_0_gdsc", .name = "ife_0_gdsc",
}, },
@@ -1720,6 +1729,9 @@ static struct gdsc ife_0_gdsc = {
static struct gdsc ife_1_gdsc = { static struct gdsc ife_1_gdsc = {
.gdscr = 0xa004, .gdscr = 0xa004,
.en_rest_wait_val = 0x2,
.en_few_wait_val = 0x2,
.clk_dis_wait_val = 0xf,
.pd = { .pd = {
.name = "ife_1_gdsc", .name = "ife_1_gdsc",
}, },
@@ -1728,6 +1740,9 @@ static struct gdsc ife_1_gdsc = {
static struct gdsc ife_2_gdsc = { static struct gdsc ife_2_gdsc = {
.gdscr = 0xb004, .gdscr = 0xb004,
.en_rest_wait_val = 0x2,
.en_few_wait_val = 0x2,
.clk_dis_wait_val = 0xf,
.pd = { .pd = {
.name = "ife_2_gdsc", .name = "ife_2_gdsc",
}, },
@@ -1736,6 +1751,9 @@ static struct gdsc ife_2_gdsc = {
static struct gdsc titan_top_gdsc = { static struct gdsc titan_top_gdsc = {
.gdscr = 0x14004, .gdscr = 0x14004,
.en_rest_wait_val = 0x2,
.en_few_wait_val = 0x2,
.clk_dis_wait_val = 0xf,
.pd = { .pd = {
.name = "titan_top_gdsc", .name = "titan_top_gdsc",
}, },
+3
View File
@@ -680,6 +680,9 @@ static struct clk_branch disp_cc_xo_clk = {
static struct gdsc mdss_gdsc = { static struct gdsc mdss_gdsc = {
.gdscr = 0x1004, .gdscr = 0x1004,
.en_rest_wait_val = 0x2,
.en_few_wait_val = 0x2,
.clk_dis_wait_val = 0xf,
.pd = { .pd = {
.name = "mdss_gdsc", .name = "mdss_gdsc",
}, },
+2 -2
View File
@@ -432,7 +432,7 @@ static const struct parent_map gcc_xo_gpll0_gpll1a_gpll6_sleep_map[] = {
{ P_XO, 0 }, { P_XO, 0 },
{ P_GPLL0, 1 }, { P_GPLL0, 1 },
{ P_GPLL1_AUX, 2 }, { P_GPLL1_AUX, 2 },
{ P_GPLL6, 2 }, { P_GPLL6, 3 },
{ P_SLEEP_CLK, 6 }, { P_SLEEP_CLK, 6 },
}; };
@@ -1113,7 +1113,7 @@ static struct clk_rcg2 jpeg0_clk_src = {
}; };
static const struct freq_tbl ftbl_gcc_camss_mclk0_1_clk[] = { static const struct freq_tbl ftbl_gcc_camss_mclk0_1_clk[] = {
F(24000000, P_GPLL0, 1, 1, 45), F(24000000, P_GPLL6, 1, 1, 45),
F(66670000, P_GPLL0, 12, 0, 0), F(66670000, P_GPLL0, 12, 0, 0),
{ } { }
}; };
+6
View File
@@ -2320,6 +2320,9 @@ static struct clk_branch gcc_video_xo_clk = {
static struct gdsc usb30_prim_gdsc = { static struct gdsc usb30_prim_gdsc = {
.gdscr = 0x1a004, .gdscr = 0x1a004,
.en_rest_wait_val = 0x2,
.en_few_wait_val = 0x2,
.clk_dis_wait_val = 0xf,
.pd = { .pd = {
.name = "usb30_prim_gdsc", .name = "usb30_prim_gdsc",
}, },
@@ -2328,6 +2331,9 @@ static struct gdsc usb30_prim_gdsc = {
static struct gdsc ufs_phy_gdsc = { static struct gdsc ufs_phy_gdsc = {
.gdscr = 0x3a004, .gdscr = 0x3a004,
.en_rest_wait_val = 0x2,
.en_few_wait_val = 0x2,
.clk_dis_wait_val = 0xf,
.pd = { .pd = {
.name = "ufs_phy_gdsc", .name = "ufs_phy_gdsc",
}, },
+6
View File
@@ -412,6 +412,9 @@ static struct clk_branch gpu_cc_gx_vsense_clk = {
static struct gdsc gpu_cx_gdsc = { static struct gdsc gpu_cx_gdsc = {
.gdscr = 0x106c, .gdscr = 0x106c,
.gds_hw_ctrl = 0x1540, .gds_hw_ctrl = 0x1540,
.en_rest_wait_val = 0x2,
.en_few_wait_val = 0x2,
.clk_dis_wait_val = 0x8,
.pd = { .pd = {
.name = "gpu_cx_gdsc", .name = "gpu_cx_gdsc",
}, },
@@ -422,6 +425,9 @@ static struct gdsc gpu_cx_gdsc = {
static struct gdsc gpu_gx_gdsc = { static struct gdsc gpu_gx_gdsc = {
.gdscr = 0x100c, .gdscr = 0x100c,
.clamp_io_ctrl = 0x1508, .clamp_io_ctrl = 0x1508,
.en_rest_wait_val = 0x2,
.en_few_wait_val = 0x2,
.clk_dis_wait_val = 0x2,
.pd = { .pd = {
.name = "gpu_gx_gdsc", .name = "gpu_gx_gdsc",
.power_on = gdsc_gx_do_nothing_enable, .power_on = gdsc_gx_do_nothing_enable,
@@ -275,13 +275,16 @@ theend_sgs:
} else { } else {
if (nr_sgs > 0) if (nr_sgs > 0)
dma_unmap_sg(ce->dev, areq->src, ns, DMA_TO_DEVICE); dma_unmap_sg(ce->dev, areq->src, ns, DMA_TO_DEVICE);
dma_unmap_sg(ce->dev, areq->dst, nd, DMA_FROM_DEVICE);
if (nr_sgd > 0)
dma_unmap_sg(ce->dev, areq->dst, nd, DMA_FROM_DEVICE);
} }
theend_iv: theend_iv:
if (areq->iv && ivsize > 0) { if (areq->iv && ivsize > 0) {
if (rctx->addr_iv) if (!dma_mapping_error(ce->dev, rctx->addr_iv))
dma_unmap_single(ce->dev, rctx->addr_iv, rctx->ivlen, DMA_TO_DEVICE); dma_unmap_single(ce->dev, rctx->addr_iv, rctx->ivlen, DMA_TO_DEVICE);
offset = areq->cryptlen - ivsize; offset = areq->cryptlen - ivsize;
if (rctx->op_dir & CE_DECRYPTION) { if (rctx->op_dir & CE_DECRYPTION) {
memcpy(areq->iv, chan->backup_iv, ivsize); memcpy(areq->iv, chan->backup_iv, ivsize);
@@ -832,13 +832,12 @@ static int sun8i_ce_pm_init(struct sun8i_ce_dev *ce)
err = pm_runtime_set_suspended(ce->dev); err = pm_runtime_set_suspended(ce->dev);
if (err) if (err)
return err; return err;
pm_runtime_enable(ce->dev);
return err;
}
static void sun8i_ce_pm_exit(struct sun8i_ce_dev *ce) err = devm_pm_runtime_enable(ce->dev);
{ if (err)
pm_runtime_disable(ce->dev); return err;
return 0;
} }
static int sun8i_ce_get_clks(struct sun8i_ce_dev *ce) static int sun8i_ce_get_clks(struct sun8i_ce_dev *ce)
@@ -1041,7 +1040,7 @@ static int sun8i_ce_probe(struct platform_device *pdev)
"sun8i-ce-ns", ce); "sun8i-ce-ns", ce);
if (err) { if (err) {
dev_err(ce->dev, "Cannot request CryptoEngine Non-secure IRQ (err=%d)\n", err); dev_err(ce->dev, "Cannot request CryptoEngine Non-secure IRQ (err=%d)\n", err);
goto error_irq; goto error_pm;
} }
err = sun8i_ce_register_algs(ce); err = sun8i_ce_register_algs(ce);
@@ -1082,8 +1081,6 @@ static int sun8i_ce_probe(struct platform_device *pdev)
return 0; return 0;
error_alg: error_alg:
sun8i_ce_unregister_algs(ce); sun8i_ce_unregister_algs(ce);
error_irq:
sun8i_ce_pm_exit(ce);
error_pm: error_pm:
sun8i_ce_free_chanlist(ce, MAXFLOW - 1); sun8i_ce_free_chanlist(ce, MAXFLOW - 1);
return err; return err;
@@ -1104,8 +1101,6 @@ static void sun8i_ce_remove(struct platform_device *pdev)
#endif #endif
sun8i_ce_free_chanlist(ce, MAXFLOW - 1); sun8i_ce_free_chanlist(ce, MAXFLOW - 1);
sun8i_ce_pm_exit(ce);
} }
static const struct of_device_id sun8i_ce_crypto_of_match_table[] = { static const struct of_device_id sun8i_ce_crypto_of_match_table[] = {
@@ -343,9 +343,8 @@ int sun8i_ce_hash_run(struct crypto_engine *engine, void *breq)
u32 common; u32 common;
u64 byte_count; u64 byte_count;
__le32 *bf; __le32 *bf;
void *buf = NULL; void *buf, *result;
int j, i, todo; int j, i, todo;
void *result = NULL;
u64 bs; u64 bs;
int digestsize; int digestsize;
dma_addr_t addr_res, addr_pad; dma_addr_t addr_res, addr_pad;
@@ -365,14 +364,14 @@ int sun8i_ce_hash_run(struct crypto_engine *engine, void *breq)
buf = kcalloc(2, bs, GFP_KERNEL | GFP_DMA); buf = kcalloc(2, bs, GFP_KERNEL | GFP_DMA);
if (!buf) { if (!buf) {
err = -ENOMEM; err = -ENOMEM;
goto theend; goto err_out;
} }
bf = (__le32 *)buf; bf = (__le32 *)buf;
result = kzalloc(digestsize, GFP_KERNEL | GFP_DMA); result = kzalloc(digestsize, GFP_KERNEL | GFP_DMA);
if (!result) { if (!result) {
err = -ENOMEM; err = -ENOMEM;
goto theend; goto err_free_buf;
} }
flow = rctx->flow; flow = rctx->flow;
@@ -398,7 +397,7 @@ int sun8i_ce_hash_run(struct crypto_engine *engine, void *breq)
if (nr_sgs <= 0 || nr_sgs > MAX_SG) { if (nr_sgs <= 0 || nr_sgs > MAX_SG) {
dev_err(ce->dev, "Invalid sg number %d\n", nr_sgs); dev_err(ce->dev, "Invalid sg number %d\n", nr_sgs);
err = -EINVAL; err = -EINVAL;
goto theend; goto err_free_result;
} }
len = areq->nbytes; len = areq->nbytes;
@@ -411,7 +410,7 @@ int sun8i_ce_hash_run(struct crypto_engine *engine, void *breq)
if (len > 0) { if (len > 0) {
dev_err(ce->dev, "remaining len %d\n", len); dev_err(ce->dev, "remaining len %d\n", len);
err = -EINVAL; err = -EINVAL;
goto theend; goto err_unmap_src;
} }
addr_res = dma_map_single(ce->dev, result, digestsize, DMA_FROM_DEVICE); addr_res = dma_map_single(ce->dev, result, digestsize, DMA_FROM_DEVICE);
cet->t_dst[0].addr = desc_addr_val_le32(ce, addr_res); cet->t_dst[0].addr = desc_addr_val_le32(ce, addr_res);
@@ -419,7 +418,7 @@ int sun8i_ce_hash_run(struct crypto_engine *engine, void *breq)
if (dma_mapping_error(ce->dev, addr_res)) { if (dma_mapping_error(ce->dev, addr_res)) {
dev_err(ce->dev, "DMA map dest\n"); dev_err(ce->dev, "DMA map dest\n");
err = -EINVAL; err = -EINVAL;
goto theend; goto err_unmap_src;
} }
byte_count = areq->nbytes; byte_count = areq->nbytes;
@@ -441,7 +440,7 @@ int sun8i_ce_hash_run(struct crypto_engine *engine, void *breq)
} }
if (!j) { if (!j) {
err = -EINVAL; err = -EINVAL;
goto theend; goto err_unmap_result;
} }
addr_pad = dma_map_single(ce->dev, buf, j * 4, DMA_TO_DEVICE); addr_pad = dma_map_single(ce->dev, buf, j * 4, DMA_TO_DEVICE);
@@ -450,7 +449,7 @@ int sun8i_ce_hash_run(struct crypto_engine *engine, void *breq)
if (dma_mapping_error(ce->dev, addr_pad)) { if (dma_mapping_error(ce->dev, addr_pad)) {
dev_err(ce->dev, "DMA error on padding SG\n"); dev_err(ce->dev, "DMA error on padding SG\n");
err = -EINVAL; err = -EINVAL;
goto theend; goto err_unmap_result;
} }
if (ce->variant->hash_t_dlen_in_bits) if (ce->variant->hash_t_dlen_in_bits)
@@ -463,16 +462,25 @@ int sun8i_ce_hash_run(struct crypto_engine *engine, void *breq)
err = sun8i_ce_run_task(ce, flow, crypto_ahash_alg_name(tfm)); err = sun8i_ce_run_task(ce, flow, crypto_ahash_alg_name(tfm));
dma_unmap_single(ce->dev, addr_pad, j * 4, DMA_TO_DEVICE); dma_unmap_single(ce->dev, addr_pad, j * 4, DMA_TO_DEVICE);
dma_unmap_sg(ce->dev, areq->src, ns, DMA_TO_DEVICE);
err_unmap_result:
dma_unmap_single(ce->dev, addr_res, digestsize, DMA_FROM_DEVICE); dma_unmap_single(ce->dev, addr_res, digestsize, DMA_FROM_DEVICE);
if (!err)
memcpy(areq->result, result, algt->alg.hash.base.halg.digestsize);
err_unmap_src:
dma_unmap_sg(ce->dev, areq->src, ns, DMA_TO_DEVICE);
memcpy(areq->result, result, algt->alg.hash.base.halg.digestsize); err_free_result:
theend:
kfree(buf);
kfree(result); kfree(result);
err_free_buf:
kfree(buf);
err_out:
local_bh_disable(); local_bh_disable();
crypto_finalize_hash_request(engine, breq, err); crypto_finalize_hash_request(engine, breq, err);
local_bh_enable(); local_bh_enable();
return 0; return 0;
} }
+1 -1
View File
@@ -308,8 +308,8 @@ struct sun8i_ce_hash_tfm_ctx {
* @flow: the flow to use for this request * @flow: the flow to use for this request
*/ */
struct sun8i_ce_hash_reqctx { struct sun8i_ce_hash_reqctx {
struct ahash_request fallback_req;
int flow; int flow;
struct ahash_request fallback_req; // keep at the end
}; };
/* /*
@@ -141,7 +141,7 @@ static int sun8i_ss_setup_ivs(struct skcipher_request *areq)
/* we need to copy all IVs from source in case DMA is bi-directionnal */ /* we need to copy all IVs from source in case DMA is bi-directionnal */
while (sg && len) { while (sg && len) {
if (sg_dma_len(sg) == 0) { if (sg->length == 0) {
sg = sg_next(sg); sg = sg_next(sg);
continue; continue;
} }
+3
View File
@@ -459,6 +459,9 @@ static int mv_cesa_skcipher_queue_req(struct skcipher_request *req,
struct mv_cesa_skcipher_req *creq = skcipher_request_ctx(req); struct mv_cesa_skcipher_req *creq = skcipher_request_ctx(req);
struct mv_cesa_engine *engine; struct mv_cesa_engine *engine;
if (!req->cryptlen)
return 0;
ret = mv_cesa_skcipher_req_init(req, tmpl); ret = mv_cesa_skcipher_req_init(req, tmpl);
if (ret) if (ret)
return ret; return ret;
+1 -1
View File
@@ -663,7 +663,7 @@ static int mv_cesa_ahash_dma_req_init(struct ahash_request *req)
if (ret) if (ret)
goto err_free_tdma; goto err_free_tdma;
if (iter.src.sg) { if (iter.base.len > iter.src.op_offset) {
/* /*
* Add all the new data, inserting an operation block and * Add all the new data, inserting an operation block and
* launch command between each full SRAM block-worth of * launch command between each full SRAM block-worth of
+19 -16
View File
@@ -95,7 +95,7 @@ static u32 offsets_demand2_spr[] = {0x22c70, 0x22d80, 0x22f18, 0x22d58, 0x22c64,
static u32 offsets_demand_spr_hbm0[] = {0x2a54, 0x2a60, 0x2b10, 0x2a58, 0x2a5c, 0x0ee0}; static u32 offsets_demand_spr_hbm0[] = {0x2a54, 0x2a60, 0x2b10, 0x2a58, 0x2a5c, 0x0ee0};
static u32 offsets_demand_spr_hbm1[] = {0x2e54, 0x2e60, 0x2f10, 0x2e58, 0x2e5c, 0x0fb0}; static u32 offsets_demand_spr_hbm1[] = {0x2e54, 0x2e60, 0x2f10, 0x2e58, 0x2e5c, 0x0fb0};
static void __enable_retry_rd_err_log(struct skx_imc *imc, int chan, bool enable, static void __enable_retry_rd_err_log(struct skx_imc *imc, int chan, bool enable, u32 *rrl_ctl,
u32 *offsets_scrub, u32 *offsets_demand, u32 *offsets_scrub, u32 *offsets_demand,
u32 *offsets_demand2) u32 *offsets_demand2)
{ {
@@ -108,10 +108,10 @@ static void __enable_retry_rd_err_log(struct skx_imc *imc, int chan, bool enable
if (enable) { if (enable) {
/* Save default configurations */ /* Save default configurations */
imc->chan[chan].retry_rd_err_log_s = s; rrl_ctl[0] = s;
imc->chan[chan].retry_rd_err_log_d = d; rrl_ctl[1] = d;
if (offsets_demand2) if (offsets_demand2)
imc->chan[chan].retry_rd_err_log_d2 = d2; rrl_ctl[2] = d2;
s &= ~RETRY_RD_ERR_LOG_NOOVER_UC; s &= ~RETRY_RD_ERR_LOG_NOOVER_UC;
s |= RETRY_RD_ERR_LOG_EN; s |= RETRY_RD_ERR_LOG_EN;
@@ -125,25 +125,25 @@ static void __enable_retry_rd_err_log(struct skx_imc *imc, int chan, bool enable
} }
} else { } else {
/* Restore default configurations */ /* Restore default configurations */
if (imc->chan[chan].retry_rd_err_log_s & RETRY_RD_ERR_LOG_UC) if (rrl_ctl[0] & RETRY_RD_ERR_LOG_UC)
s |= RETRY_RD_ERR_LOG_UC; s |= RETRY_RD_ERR_LOG_UC;
if (imc->chan[chan].retry_rd_err_log_s & RETRY_RD_ERR_LOG_NOOVER) if (rrl_ctl[0] & RETRY_RD_ERR_LOG_NOOVER)
s |= RETRY_RD_ERR_LOG_NOOVER; s |= RETRY_RD_ERR_LOG_NOOVER;
if (!(imc->chan[chan].retry_rd_err_log_s & RETRY_RD_ERR_LOG_EN)) if (!(rrl_ctl[0] & RETRY_RD_ERR_LOG_EN))
s &= ~RETRY_RD_ERR_LOG_EN; s &= ~RETRY_RD_ERR_LOG_EN;
if (imc->chan[chan].retry_rd_err_log_d & RETRY_RD_ERR_LOG_UC) if (rrl_ctl[1] & RETRY_RD_ERR_LOG_UC)
d |= RETRY_RD_ERR_LOG_UC; d |= RETRY_RD_ERR_LOG_UC;
if (imc->chan[chan].retry_rd_err_log_d & RETRY_RD_ERR_LOG_NOOVER) if (rrl_ctl[1] & RETRY_RD_ERR_LOG_NOOVER)
d |= RETRY_RD_ERR_LOG_NOOVER; d |= RETRY_RD_ERR_LOG_NOOVER;
if (!(imc->chan[chan].retry_rd_err_log_d & RETRY_RD_ERR_LOG_EN)) if (!(rrl_ctl[1] & RETRY_RD_ERR_LOG_EN))
d &= ~RETRY_RD_ERR_LOG_EN; d &= ~RETRY_RD_ERR_LOG_EN;
if (offsets_demand2) { if (offsets_demand2) {
if (imc->chan[chan].retry_rd_err_log_d2 & RETRY_RD_ERR_LOG_UC) if (rrl_ctl[2] & RETRY_RD_ERR_LOG_UC)
d2 |= RETRY_RD_ERR_LOG_UC; d2 |= RETRY_RD_ERR_LOG_UC;
if (!(imc->chan[chan].retry_rd_err_log_d2 & RETRY_RD_ERR_LOG_NOOVER)) if (!(rrl_ctl[2] & RETRY_RD_ERR_LOG_NOOVER))
d2 &= ~RETRY_RD_ERR_LOG_NOOVER; d2 &= ~RETRY_RD_ERR_LOG_NOOVER;
if (!(imc->chan[chan].retry_rd_err_log_d2 & RETRY_RD_ERR_LOG_EN)) if (!(rrl_ctl[2] & RETRY_RD_ERR_LOG_EN))
d2 &= ~RETRY_RD_ERR_LOG_EN; d2 &= ~RETRY_RD_ERR_LOG_EN;
} }
} }
@@ -157,6 +157,7 @@ static void __enable_retry_rd_err_log(struct skx_imc *imc, int chan, bool enable
static void enable_retry_rd_err_log(bool enable) static void enable_retry_rd_err_log(bool enable)
{ {
int i, j, imc_num, chan_num; int i, j, imc_num, chan_num;
struct skx_channel *chan;
struct skx_imc *imc; struct skx_imc *imc;
struct skx_dev *d; struct skx_dev *d;
@@ -171,8 +172,9 @@ static void enable_retry_rd_err_log(bool enable)
if (!imc->mbase) if (!imc->mbase)
continue; continue;
chan = d->imc[i].chan;
for (j = 0; j < chan_num; j++) for (j = 0; j < chan_num; j++)
__enable_retry_rd_err_log(imc, j, enable, __enable_retry_rd_err_log(imc, j, enable, chan[j].rrl_ctl[0],
res_cfg->offsets_scrub, res_cfg->offsets_scrub,
res_cfg->offsets_demand, res_cfg->offsets_demand,
res_cfg->offsets_demand2); res_cfg->offsets_demand2);
@@ -186,12 +188,13 @@ static void enable_retry_rd_err_log(bool enable)
if (!imc->mbase || !imc->hbm_mc) if (!imc->mbase || !imc->hbm_mc)
continue; continue;
chan = d->imc[i].chan;
for (j = 0; j < chan_num; j++) { for (j = 0; j < chan_num; j++) {
__enable_retry_rd_err_log(imc, j, enable, __enable_retry_rd_err_log(imc, j, enable, chan[j].rrl_ctl[0],
res_cfg->offsets_scrub_hbm0, res_cfg->offsets_scrub_hbm0,
res_cfg->offsets_demand_hbm0, res_cfg->offsets_demand_hbm0,
NULL); NULL);
__enable_retry_rd_err_log(imc, j, enable, __enable_retry_rd_err_log(imc, j, enable, chan[j].rrl_ctl[1],
res_cfg->offsets_scrub_hbm1, res_cfg->offsets_scrub_hbm1,
res_cfg->offsets_demand_hbm1, res_cfg->offsets_demand_hbm1,
NULL); NULL);
+1
View File
@@ -115,6 +115,7 @@ EXPORT_SYMBOL_GPL(skx_adxl_get);
void skx_adxl_put(void) void skx_adxl_put(void)
{ {
adxl_component_count = 0;
kfree(adxl_values); kfree(adxl_values);
kfree(adxl_msg); kfree(adxl_msg);
} }
+8 -3
View File
@@ -79,6 +79,9 @@
*/ */
#define MCACOD_EXT_MEM_ERR 0x280 #define MCACOD_EXT_MEM_ERR 0x280
/* Max RRL register sets per {,sub-,pseudo-}channel. */
#define NUM_RRL_SET 3
/* /*
* Each cpu socket contains some pci devices that provide global * Each cpu socket contains some pci devices that provide global
* information, and also some that are local to each of the two * information, and also some that are local to each of the two
@@ -117,9 +120,11 @@ struct skx_dev {
struct skx_channel { struct skx_channel {
struct pci_dev *cdev; struct pci_dev *cdev;
struct pci_dev *edev; struct pci_dev *edev;
u32 retry_rd_err_log_s; /*
u32 retry_rd_err_log_d; * Two groups of RRL control registers per channel to save default RRL
u32 retry_rd_err_log_d2; * settings of two {sub-,pseudo-}channels in Linux RRL control mode.
*/
u32 rrl_ctl[2][NUM_RRL_SET];
struct skx_dimm { struct skx_dimm {
u8 close_pg; u8 close_pg;
u8 bank_xor_enable; u8 bank_xor_enable;
@@ -603,6 +603,7 @@ efi_status_t efi_load_initrd_cmdline(efi_loaded_image_t *image,
* @image: EFI loaded image protocol * @image: EFI loaded image protocol
* @soft_limit: preferred address for loading the initrd * @soft_limit: preferred address for loading the initrd
* @hard_limit: upper limit address for loading the initrd * @hard_limit: upper limit address for loading the initrd
* @out: pointer to store the address of the initrd table
* *
* Return: status code * Return: status code
*/ */
+3 -1
View File
@@ -771,8 +771,10 @@ int __init psci_dt_init(void)
np = of_find_matching_node_and_match(NULL, psci_of_match, &matched_np); np = of_find_matching_node_and_match(NULL, psci_of_match, &matched_np);
if (!np || !of_device_is_available(np)) if (!np || !of_device_is_available(np)) {
of_node_put(np);
return -ENODEV; return -ENODEV;
}
init_fn = (psci_initcall_t)matched_np->data; init_fn = (psci_initcall_t)matched_np->data;
ret = init_fn(np); ret = init_fn(np);
@@ -144,6 +144,10 @@ int atomctrl_initialize_mc_reg_table(
vram_info = (ATOM_VRAM_INFO_HEADER_V2_1 *) vram_info = (ATOM_VRAM_INFO_HEADER_V2_1 *)
smu_atom_get_data_table(hwmgr->adev, smu_atom_get_data_table(hwmgr->adev,
GetIndexIntoMasterTable(DATA, VRAM_Info), &size, &frev, &crev); GetIndexIntoMasterTable(DATA, VRAM_Info), &size, &frev, &crev);
if (!vram_info) {
pr_err("Could not retrieve the VramInfo table!");
return -EINVAL;
}
if (module_index >= vram_info->ucNumOfVRAMModule) { if (module_index >= vram_info->ucNumOfVRAMModule) {
pr_err("Invalid VramInfo table."); pr_err("Invalid VramInfo table.");
@@ -181,6 +185,10 @@ int atomctrl_initialize_mc_reg_table_v2_2(
vram_info = (ATOM_VRAM_INFO_HEADER_V2_2 *) vram_info = (ATOM_VRAM_INFO_HEADER_V2_2 *)
smu_atom_get_data_table(hwmgr->adev, smu_atom_get_data_table(hwmgr->adev,
GetIndexIntoMasterTable(DATA, VRAM_Info), &size, &frev, &crev); GetIndexIntoMasterTable(DATA, VRAM_Info), &size, &frev, &crev);
if (!vram_info) {
pr_err("Could not retrieve the VramInfo table!");
return -EINVAL;
}
if (module_index >= vram_info->ucNumOfVRAMModule) { if (module_index >= vram_info->ucNumOfVRAMModule) {
pr_err("Invalid VramInfo table."); pr_err("Invalid VramInfo table.");
+5 -1
View File
@@ -879,7 +879,11 @@ retry:
} }
} }
return lt9611uxc_audio_init(dev, lt9611uxc); ret = lt9611uxc_audio_init(dev, lt9611uxc);
if (ret)
goto err_remove_bridge;
return 0;
err_remove_bridge: err_remove_bridge:
free_irq(client->irq, lt9611uxc); free_irq(client->irq, lt9611uxc);
+23 -8
View File
@@ -463,7 +463,7 @@ static int mtk_drm_kms_init(struct drm_device *drm)
ret = drmm_mode_config_init(drm); ret = drmm_mode_config_init(drm);
if (ret) if (ret)
goto put_mutex_dev; return ret;
drm->mode_config.min_width = 64; drm->mode_config.min_width = 64;
drm->mode_config.min_height = 64; drm->mode_config.min_height = 64;
@@ -481,8 +481,11 @@ static int mtk_drm_kms_init(struct drm_device *drm)
for (i = 0; i < private->data->mmsys_dev_num; i++) { for (i = 0; i < private->data->mmsys_dev_num; i++) {
drm->dev_private = private->all_drm_private[i]; drm->dev_private = private->all_drm_private[i];
ret = component_bind_all(private->all_drm_private[i]->dev, drm); ret = component_bind_all(private->all_drm_private[i]->dev, drm);
if (ret) if (ret) {
goto put_mutex_dev; while (--i >= 0)
component_unbind_all(private->all_drm_private[i]->dev, drm);
return ret;
}
} }
/* /*
@@ -575,9 +578,6 @@ static int mtk_drm_kms_init(struct drm_device *drm)
err_component_unbind: err_component_unbind:
for (i = 0; i < private->data->mmsys_dev_num; i++) for (i = 0; i < private->data->mmsys_dev_num; i++)
component_unbind_all(private->all_drm_private[i]->dev, drm); component_unbind_all(private->all_drm_private[i]->dev, drm);
put_mutex_dev:
for (i = 0; i < private->data->mmsys_dev_num; i++)
put_device(private->all_drm_private[i]->mutex_dev);
return ret; return ret;
} }
@@ -648,8 +648,10 @@ static int mtk_drm_bind(struct device *dev)
return 0; return 0;
drm = drm_dev_alloc(&mtk_drm_driver, dev); drm = drm_dev_alloc(&mtk_drm_driver, dev);
if (IS_ERR(drm)) if (IS_ERR(drm)) {
return PTR_ERR(drm); ret = PTR_ERR(drm);
goto err_put_dev;
}
private->drm_master = true; private->drm_master = true;
drm->dev_private = private; drm->dev_private = private;
@@ -675,18 +677,31 @@ err_free:
drm_dev_put(drm); drm_dev_put(drm);
for (i = 0; i < private->data->mmsys_dev_num; i++) for (i = 0; i < private->data->mmsys_dev_num; i++)
private->all_drm_private[i]->drm = NULL; private->all_drm_private[i]->drm = NULL;
err_put_dev:
for (i = 0; i < private->data->mmsys_dev_num; i++) {
/* For device_find_child in mtk_drm_get_all_priv() */
put_device(private->all_drm_private[i]->dev);
}
put_device(private->mutex_dev);
return ret; return ret;
} }
static void mtk_drm_unbind(struct device *dev) static void mtk_drm_unbind(struct device *dev)
{ {
struct mtk_drm_private *private = dev_get_drvdata(dev); struct mtk_drm_private *private = dev_get_drvdata(dev);
int i;
/* for multi mmsys dev, unregister drm dev in mmsys master */ /* for multi mmsys dev, unregister drm dev in mmsys master */
if (private->drm_master) { if (private->drm_master) {
drm_dev_unregister(private->drm); drm_dev_unregister(private->drm);
mtk_drm_kms_deinit(private->drm); mtk_drm_kms_deinit(private->drm);
drm_dev_put(private->drm); drm_dev_put(private->drm);
for (i = 0; i < private->data->mmsys_dev_num; i++) {
/* For device_find_child in mtk_drm_get_all_priv() */
put_device(private->all_drm_private[i]->dev);
}
put_device(private->mutex_dev);
} }
private->mtk_drm_bound = false; private->mtk_drm_bound = false;
private->drm_master = false; private->drm_master = false;
-1
View File
@@ -554,7 +554,6 @@ static void a6xx_calc_ubwc_config(struct adreno_gpu *gpu)
if (adreno_is_7c3(gpu)) { if (adreno_is_7c3(gpu)) {
gpu->ubwc_config.highest_bank_bit = 14; gpu->ubwc_config.highest_bank_bit = 14;
gpu->ubwc_config.amsbc = 1; gpu->ubwc_config.amsbc = 1;
gpu->ubwc_config.rgb565_predicator = 1;
gpu->ubwc_config.uavflagprd_inv = 2; gpu->ubwc_config.uavflagprd_inv = 2;
gpu->ubwc_config.macrotile_mode = 1; gpu->ubwc_config.macrotile_mode = 1;
} }
@@ -76,7 +76,7 @@ static const struct dpu_sspp_cfg sm8150_sspp[] = {
{ {
.name = "sspp_0", .id = SSPP_VIG0, .name = "sspp_0", .id = SSPP_VIG0,
.base = 0x4000, .len = 0x1f0, .base = 0x4000, .len = 0x1f0,
.features = VIG_SDM845_MASK, .features = VIG_SDM845_MASK_SDMA,
.sblk = &dpu_vig_sblk_qseed3_1_4, .sblk = &dpu_vig_sblk_qseed3_1_4,
.xin_id = 0, .xin_id = 0,
.type = SSPP_TYPE_VIG, .type = SSPP_TYPE_VIG,
@@ -84,7 +84,7 @@ static const struct dpu_sspp_cfg sm8150_sspp[] = {
}, { }, {
.name = "sspp_1", .id = SSPP_VIG1, .name = "sspp_1", .id = SSPP_VIG1,
.base = 0x6000, .len = 0x1f0, .base = 0x6000, .len = 0x1f0,
.features = VIG_SDM845_MASK, .features = VIG_SDM845_MASK_SDMA,
.sblk = &dpu_vig_sblk_qseed3_1_4, .sblk = &dpu_vig_sblk_qseed3_1_4,
.xin_id = 4, .xin_id = 4,
.type = SSPP_TYPE_VIG, .type = SSPP_TYPE_VIG,
@@ -92,7 +92,7 @@ static const struct dpu_sspp_cfg sm8150_sspp[] = {
}, { }, {
.name = "sspp_2", .id = SSPP_VIG2, .name = "sspp_2", .id = SSPP_VIG2,
.base = 0x8000, .len = 0x1f0, .base = 0x8000, .len = 0x1f0,
.features = VIG_SDM845_MASK, .features = VIG_SDM845_MASK_SDMA,
.sblk = &dpu_vig_sblk_qseed3_1_4, .sblk = &dpu_vig_sblk_qseed3_1_4,
.xin_id = 8, .xin_id = 8,
.type = SSPP_TYPE_VIG, .type = SSPP_TYPE_VIG,
@@ -100,7 +100,7 @@ static const struct dpu_sspp_cfg sm8150_sspp[] = {
}, { }, {
.name = "sspp_3", .id = SSPP_VIG3, .name = "sspp_3", .id = SSPP_VIG3,
.base = 0xa000, .len = 0x1f0, .base = 0xa000, .len = 0x1f0,
.features = VIG_SDM845_MASK, .features = VIG_SDM845_MASK_SDMA,
.sblk = &dpu_vig_sblk_qseed3_1_4, .sblk = &dpu_vig_sblk_qseed3_1_4,
.xin_id = 12, .xin_id = 12,
.type = SSPP_TYPE_VIG, .type = SSPP_TYPE_VIG,
@@ -108,7 +108,7 @@ static const struct dpu_sspp_cfg sm8150_sspp[] = {
}, { }, {
.name = "sspp_8", .id = SSPP_DMA0, .name = "sspp_8", .id = SSPP_DMA0,
.base = 0x24000, .len = 0x1f0, .base = 0x24000, .len = 0x1f0,
.features = DMA_SDM845_MASK, .features = DMA_SDM845_MASK_SDMA,
.sblk = &dpu_dma_sblk, .sblk = &dpu_dma_sblk,
.xin_id = 1, .xin_id = 1,
.type = SSPP_TYPE_DMA, .type = SSPP_TYPE_DMA,
@@ -116,7 +116,7 @@ static const struct dpu_sspp_cfg sm8150_sspp[] = {
}, { }, {
.name = "sspp_9", .id = SSPP_DMA1, .name = "sspp_9", .id = SSPP_DMA1,
.base = 0x26000, .len = 0x1f0, .base = 0x26000, .len = 0x1f0,
.features = DMA_SDM845_MASK, .features = DMA_SDM845_MASK_SDMA,
.sblk = &dpu_dma_sblk, .sblk = &dpu_dma_sblk,
.xin_id = 5, .xin_id = 5,
.type = SSPP_TYPE_DMA, .type = SSPP_TYPE_DMA,
@@ -124,7 +124,7 @@ static const struct dpu_sspp_cfg sm8150_sspp[] = {
}, { }, {
.name = "sspp_10", .id = SSPP_DMA2, .name = "sspp_10", .id = SSPP_DMA2,
.base = 0x28000, .len = 0x1f0, .base = 0x28000, .len = 0x1f0,
.features = DMA_CURSOR_SDM845_MASK, .features = DMA_CURSOR_SDM845_MASK_SDMA,
.sblk = &dpu_dma_sblk, .sblk = &dpu_dma_sblk,
.xin_id = 9, .xin_id = 9,
.type = SSPP_TYPE_DMA, .type = SSPP_TYPE_DMA,
@@ -132,7 +132,7 @@ static const struct dpu_sspp_cfg sm8150_sspp[] = {
}, { }, {
.name = "sspp_11", .id = SSPP_DMA3, .name = "sspp_11", .id = SSPP_DMA3,
.base = 0x2a000, .len = 0x1f0, .base = 0x2a000, .len = 0x1f0,
.features = DMA_CURSOR_SDM845_MASK, .features = DMA_CURSOR_SDM845_MASK_SDMA,
.sblk = &dpu_dma_sblk, .sblk = &dpu_dma_sblk,
.xin_id = 13, .xin_id = 13,
.type = SSPP_TYPE_DMA, .type = SSPP_TYPE_DMA,
@@ -75,7 +75,7 @@ static const struct dpu_sspp_cfg sc8180x_sspp[] = {
{ {
.name = "sspp_0", .id = SSPP_VIG0, .name = "sspp_0", .id = SSPP_VIG0,
.base = 0x4000, .len = 0x1f0, .base = 0x4000, .len = 0x1f0,
.features = VIG_SDM845_MASK, .features = VIG_SDM845_MASK_SDMA,
.sblk = &dpu_vig_sblk_qseed3_1_4, .sblk = &dpu_vig_sblk_qseed3_1_4,
.xin_id = 0, .xin_id = 0,
.type = SSPP_TYPE_VIG, .type = SSPP_TYPE_VIG,
@@ -83,7 +83,7 @@ static const struct dpu_sspp_cfg sc8180x_sspp[] = {
}, { }, {
.name = "sspp_1", .id = SSPP_VIG1, .name = "sspp_1", .id = SSPP_VIG1,
.base = 0x6000, .len = 0x1f0, .base = 0x6000, .len = 0x1f0,
.features = VIG_SDM845_MASK, .features = VIG_SDM845_MASK_SDMA,
.sblk = &dpu_vig_sblk_qseed3_1_4, .sblk = &dpu_vig_sblk_qseed3_1_4,
.xin_id = 4, .xin_id = 4,
.type = SSPP_TYPE_VIG, .type = SSPP_TYPE_VIG,
@@ -91,7 +91,7 @@ static const struct dpu_sspp_cfg sc8180x_sspp[] = {
}, { }, {
.name = "sspp_2", .id = SSPP_VIG2, .name = "sspp_2", .id = SSPP_VIG2,
.base = 0x8000, .len = 0x1f0, .base = 0x8000, .len = 0x1f0,
.features = VIG_SDM845_MASK, .features = VIG_SDM845_MASK_SDMA,
.sblk = &dpu_vig_sblk_qseed3_1_4, .sblk = &dpu_vig_sblk_qseed3_1_4,
.xin_id = 8, .xin_id = 8,
.type = SSPP_TYPE_VIG, .type = SSPP_TYPE_VIG,
@@ -99,7 +99,7 @@ static const struct dpu_sspp_cfg sc8180x_sspp[] = {
}, { }, {
.name = "sspp_3", .id = SSPP_VIG3, .name = "sspp_3", .id = SSPP_VIG3,
.base = 0xa000, .len = 0x1f0, .base = 0xa000, .len = 0x1f0,
.features = VIG_SDM845_MASK, .features = VIG_SDM845_MASK_SDMA,
.sblk = &dpu_vig_sblk_qseed3_1_4, .sblk = &dpu_vig_sblk_qseed3_1_4,
.xin_id = 12, .xin_id = 12,
.type = SSPP_TYPE_VIG, .type = SSPP_TYPE_VIG,
@@ -107,7 +107,7 @@ static const struct dpu_sspp_cfg sc8180x_sspp[] = {
}, { }, {
.name = "sspp_8", .id = SSPP_DMA0, .name = "sspp_8", .id = SSPP_DMA0,
.base = 0x24000, .len = 0x1f0, .base = 0x24000, .len = 0x1f0,
.features = DMA_SDM845_MASK, .features = DMA_SDM845_MASK_SDMA,
.sblk = &dpu_dma_sblk, .sblk = &dpu_dma_sblk,
.xin_id = 1, .xin_id = 1,
.type = SSPP_TYPE_DMA, .type = SSPP_TYPE_DMA,
@@ -115,7 +115,7 @@ static const struct dpu_sspp_cfg sc8180x_sspp[] = {
}, { }, {
.name = "sspp_9", .id = SSPP_DMA1, .name = "sspp_9", .id = SSPP_DMA1,
.base = 0x26000, .len = 0x1f0, .base = 0x26000, .len = 0x1f0,
.features = DMA_SDM845_MASK, .features = DMA_SDM845_MASK_SDMA,
.sblk = &dpu_dma_sblk, .sblk = &dpu_dma_sblk,
.xin_id = 5, .xin_id = 5,
.type = SSPP_TYPE_DMA, .type = SSPP_TYPE_DMA,
@@ -123,7 +123,7 @@ static const struct dpu_sspp_cfg sc8180x_sspp[] = {
}, { }, {
.name = "sspp_10", .id = SSPP_DMA2, .name = "sspp_10", .id = SSPP_DMA2,
.base = 0x28000, .len = 0x1f0, .base = 0x28000, .len = 0x1f0,
.features = DMA_CURSOR_SDM845_MASK, .features = DMA_CURSOR_SDM845_MASK_SDMA,
.sblk = &dpu_dma_sblk, .sblk = &dpu_dma_sblk,
.xin_id = 9, .xin_id = 9,
.type = SSPP_TYPE_DMA, .type = SSPP_TYPE_DMA,
@@ -131,7 +131,7 @@ static const struct dpu_sspp_cfg sc8180x_sspp[] = {
}, { }, {
.name = "sspp_11", .id = SSPP_DMA3, .name = "sspp_11", .id = SSPP_DMA3,
.base = 0x2a000, .len = 0x1f0, .base = 0x2a000, .len = 0x1f0,
.features = DMA_CURSOR_SDM845_MASK, .features = DMA_CURSOR_SDM845_MASK_SDMA,
.sblk = &dpu_dma_sblk, .sblk = &dpu_dma_sblk,
.xin_id = 13, .xin_id = 13,
.type = SSPP_TYPE_DMA, .type = SSPP_TYPE_DMA,
+2 -32
View File
@@ -22,7 +22,6 @@ struct sofef00_panel {
struct mipi_dsi_device *dsi; struct mipi_dsi_device *dsi;
struct regulator *supply; struct regulator *supply;
struct gpio_desc *reset_gpio; struct gpio_desc *reset_gpio;
const struct drm_display_mode *mode;
}; };
static inline static inline
@@ -159,26 +158,11 @@ static const struct drm_display_mode enchilada_panel_mode = {
.height_mm = 145, .height_mm = 145,
}; };
static const struct drm_display_mode fajita_panel_mode = {
.clock = (1080 + 72 + 16 + 36) * (2340 + 32 + 4 + 18) * 60 / 1000,
.hdisplay = 1080,
.hsync_start = 1080 + 72,
.hsync_end = 1080 + 72 + 16,
.htotal = 1080 + 72 + 16 + 36,
.vdisplay = 2340,
.vsync_start = 2340 + 32,
.vsync_end = 2340 + 32 + 4,
.vtotal = 2340 + 32 + 4 + 18,
.width_mm = 68,
.height_mm = 145,
};
static int sofef00_panel_get_modes(struct drm_panel *panel, struct drm_connector *connector) static int sofef00_panel_get_modes(struct drm_panel *panel, struct drm_connector *connector)
{ {
struct drm_display_mode *mode; struct drm_display_mode *mode;
struct sofef00_panel *ctx = to_sofef00_panel(panel);
mode = drm_mode_duplicate(connector->dev, ctx->mode); mode = drm_mode_duplicate(connector->dev, &enchilada_panel_mode);
if (!mode) if (!mode)
return -ENOMEM; return -ENOMEM;
@@ -239,13 +223,6 @@ static int sofef00_panel_probe(struct mipi_dsi_device *dsi)
if (!ctx) if (!ctx)
return -ENOMEM; return -ENOMEM;
ctx->mode = of_device_get_match_data(dev);
if (!ctx->mode) {
dev_err(dev, "Missing device mode\n");
return -ENODEV;
}
ctx->supply = devm_regulator_get(dev, "vddio"); ctx->supply = devm_regulator_get(dev, "vddio");
if (IS_ERR(ctx->supply)) if (IS_ERR(ctx->supply))
return dev_err_probe(dev, PTR_ERR(ctx->supply), return dev_err_probe(dev, PTR_ERR(ctx->supply),
@@ -295,14 +272,7 @@ static void sofef00_panel_remove(struct mipi_dsi_device *dsi)
} }
static const struct of_device_id sofef00_panel_of_match[] = { static const struct of_device_id sofef00_panel_of_match[] = {
{ // OnePlus 6 / enchilada { .compatible = "samsung,sofef00" },
.compatible = "samsung,sofef00",
.data = &enchilada_panel_mode,
},
{ // OnePlus 6T / fajita
.compatible = "samsung,s6e3fc2x01",
.data = &fajita_panel_mode,
},
{ /* sentinel */ } { /* sentinel */ }
}; };
MODULE_DEVICE_TABLE(of, sofef00_panel_of_match); MODULE_DEVICE_TABLE(of, sofef00_panel_of_match);
+1
View File
@@ -780,6 +780,7 @@ out_enable_as:
if (ptdev->mmu->as.faulty_mask & panthor_mmu_as_fault_mask(ptdev, as)) { if (ptdev->mmu->as.faulty_mask & panthor_mmu_as_fault_mask(ptdev, as)) {
gpu_write(ptdev, MMU_INT_CLEAR, panthor_mmu_as_fault_mask(ptdev, as)); gpu_write(ptdev, MMU_INT_CLEAR, panthor_mmu_as_fault_mask(ptdev, as));
ptdev->mmu->as.faulty_mask &= ~panthor_mmu_as_fault_mask(ptdev, as); ptdev->mmu->as.faulty_mask &= ~panthor_mmu_as_fault_mask(ptdev, as);
ptdev->mmu->irq.mask |= panthor_mmu_as_fault_mask(ptdev, as);
gpu_write(ptdev, MMU_INT_MASK, ~ptdev->mmu->as.faulty_mask); gpu_write(ptdev, MMU_INT_MASK, ~ptdev->mmu->as.faulty_mask);
} }
+2 -2
View File
@@ -133,8 +133,8 @@
#define GPU_COHERENCY_PROT_BIT(name) BIT(GPU_COHERENCY_ ## name) #define GPU_COHERENCY_PROT_BIT(name) BIT(GPU_COHERENCY_ ## name)
#define GPU_COHERENCY_PROTOCOL 0x304 #define GPU_COHERENCY_PROTOCOL 0x304
#define GPU_COHERENCY_ACE 0 #define GPU_COHERENCY_ACE_LITE 0
#define GPU_COHERENCY_ACE_LITE 1 #define GPU_COHERENCY_ACE 1
#define GPU_COHERENCY_NONE 31 #define GPU_COHERENCY_NONE 31
#define MCU_CONTROL 0x700 #define MCU_CONTROL 0x700
@@ -705,7 +705,7 @@ static int rcar_du_vsps_init(struct rcar_du_device *rcdu)
ret = of_parse_phandle_with_fixed_args(np, vsps_prop_name, ret = of_parse_phandle_with_fixed_args(np, vsps_prop_name,
cells, i, &args); cells, i, &args);
if (ret < 0) if (ret < 0)
goto error; goto done;
/* /*
* Add the VSP to the list or update the corresponding existing * Add the VSP to the list or update the corresponding existing
@@ -743,13 +743,11 @@ static int rcar_du_vsps_init(struct rcar_du_device *rcdu)
vsp->dev = rcdu; vsp->dev = rcdu;
ret = rcar_du_vsp_init(vsp, vsps[i].np, vsps[i].crtcs_mask); ret = rcar_du_vsp_init(vsp, vsps[i].np, vsps[i].crtcs_mask);
if (ret < 0) if (ret)
goto error; goto done;
} }
return 0; done:
error:
for (i = 0; i < ARRAY_SIZE(vsps); ++i) for (i = 0; i < ARRAY_SIZE(vsps); ++i)
of_node_put(vsps[i].np); of_node_put(vsps[i].np);
+13 -1
View File
@@ -200,6 +200,11 @@ static const struct drm_encoder_helper_funcs tegra_rgb_encoder_helper_funcs = {
.atomic_check = tegra_rgb_encoder_atomic_check, .atomic_check = tegra_rgb_encoder_atomic_check,
}; };
static void tegra_dc_of_node_put(void *data)
{
of_node_put(data);
}
int tegra_dc_rgb_probe(struct tegra_dc *dc) int tegra_dc_rgb_probe(struct tegra_dc *dc)
{ {
struct device_node *np; struct device_node *np;
@@ -207,7 +212,14 @@ int tegra_dc_rgb_probe(struct tegra_dc *dc)
int err; int err;
np = of_get_child_by_name(dc->dev->of_node, "rgb"); np = of_get_child_by_name(dc->dev->of_node, "rgb");
if (!np || !of_device_is_available(np)) if (!np)
return -ENODEV;
err = devm_add_action_or_reset(dc->dev, tegra_dc_of_node_put, np);
if (err < 0)
return err;
if (!of_device_is_available(np))
return -ENODEV; return -ENODEV;
rgb = devm_kzalloc(dc->dev, sizeof(*rgb), GFP_KERNEL); rgb = devm_kzalloc(dc->dev, sizeof(*rgb), GFP_KERNEL);
+24 -12
View File
@@ -75,24 +75,30 @@ int vc4_mock_atomic_add_output(struct kunit *test,
int ret; int ret;
encoder = vc4_find_encoder_by_type(drm, type); encoder = vc4_find_encoder_by_type(drm, type);
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, encoder); if (!encoder)
return -ENODEV;
crtc = vc4_find_crtc_for_encoder(test, drm, encoder); crtc = vc4_find_crtc_for_encoder(test, drm, encoder);
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, crtc); if (!crtc)
return -ENODEV;
output = encoder_to_vc4_dummy_output(encoder); output = encoder_to_vc4_dummy_output(encoder);
conn = &output->connector; conn = &output->connector;
conn_state = drm_atomic_get_connector_state(state, conn); conn_state = drm_atomic_get_connector_state(state, conn);
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state); if (IS_ERR(conn_state))
return PTR_ERR(conn_state);
ret = drm_atomic_set_crtc_for_connector(conn_state, crtc); ret = drm_atomic_set_crtc_for_connector(conn_state, crtc);
KUNIT_EXPECT_EQ(test, ret, 0); if (ret)
return ret;
crtc_state = drm_atomic_get_crtc_state(state, crtc); crtc_state = drm_atomic_get_crtc_state(state, crtc);
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, crtc_state); if (IS_ERR(crtc_state))
return PTR_ERR(crtc_state);
ret = drm_atomic_set_mode_for_crtc(crtc_state, &default_mode); ret = drm_atomic_set_mode_for_crtc(crtc_state, &default_mode);
KUNIT_EXPECT_EQ(test, ret, 0); if (ret)
return ret;
crtc_state->active = true; crtc_state->active = true;
@@ -113,26 +119,32 @@ int vc4_mock_atomic_del_output(struct kunit *test,
int ret; int ret;
encoder = vc4_find_encoder_by_type(drm, type); encoder = vc4_find_encoder_by_type(drm, type);
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, encoder); if (!encoder)
return -ENODEV;
crtc = vc4_find_crtc_for_encoder(test, drm, encoder); crtc = vc4_find_crtc_for_encoder(test, drm, encoder);
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, crtc); if (!crtc)
return -ENODEV;
crtc_state = drm_atomic_get_crtc_state(state, crtc); crtc_state = drm_atomic_get_crtc_state(state, crtc);
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, crtc_state); if (IS_ERR(crtc_state))
return PTR_ERR(crtc_state);
crtc_state->active = false; crtc_state->active = false;
ret = drm_atomic_set_mode_for_crtc(crtc_state, NULL); ret = drm_atomic_set_mode_for_crtc(crtc_state, NULL);
KUNIT_ASSERT_EQ(test, ret, 0); if (ret)
return ret;
output = encoder_to_vc4_dummy_output(encoder); output = encoder_to_vc4_dummy_output(encoder);
conn = &output->connector; conn = &output->connector;
conn_state = drm_atomic_get_connector_state(state, conn); conn_state = drm_atomic_get_connector_state(state, conn);
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state); if (IS_ERR(conn_state))
return PTR_ERR(conn_state);
ret = drm_atomic_set_crtc_for_connector(conn_state, NULL); ret = drm_atomic_set_crtc_for_connector(conn_state, NULL);
KUNIT_ASSERT_EQ(test, ret, 0); if (ret)
return ret;
return 0; return 0;
} }
+1 -1
View File
@@ -198,7 +198,7 @@ static int vkms_crtc_atomic_check(struct drm_crtc *crtc,
i++; i++;
} }
vkms_state->active_planes = kcalloc(i, sizeof(plane), GFP_KERNEL); vkms_state->active_planes = kcalloc(i, sizeof(*vkms_state->active_planes), GFP_KERNEL);
if (!vkms_state->active_planes) if (!vkms_state->active_planes)
return -ENOMEM; return -ENOMEM;
vkms_state->num_active_planes = i; vkms_state->num_active_planes = i;
+6 -4
View File
@@ -51,11 +51,13 @@ static void vmw_bo_release(struct vmw_bo *vbo)
mutex_lock(&res->dev_priv->cmdbuf_mutex); mutex_lock(&res->dev_priv->cmdbuf_mutex);
(void)vmw_resource_reserve(res, false, true); (void)vmw_resource_reserve(res, false, true);
vmw_resource_mob_detach(res); vmw_resource_mob_detach(res);
if (res->dirty)
res->func->dirty_free(res);
if (res->coherent) if (res->coherent)
vmw_bo_dirty_release(res->guest_memory_bo); vmw_bo_dirty_release(res->guest_memory_bo);
res->guest_memory_bo = NULL; res->guest_memory_bo = NULL;
res->guest_memory_offset = 0; res->guest_memory_offset = 0;
vmw_resource_unreserve(res, false, false, false, NULL, vmw_resource_unreserve(res, true, false, false, NULL,
0); 0);
mutex_unlock(&res->dev_priv->cmdbuf_mutex); mutex_unlock(&res->dev_priv->cmdbuf_mutex);
} }
@@ -73,9 +75,9 @@ static void vmw_bo_free(struct ttm_buffer_object *bo)
{ {
struct vmw_bo *vbo = to_vmw_bo(&bo->base); struct vmw_bo *vbo = to_vmw_bo(&bo->base);
WARN_ON(vbo->dirty);
WARN_ON(!RB_EMPTY_ROOT(&vbo->res_tree)); WARN_ON(!RB_EMPTY_ROOT(&vbo->res_tree));
vmw_bo_release(vbo); vmw_bo_release(vbo);
WARN_ON(vbo->dirty);
kfree(vbo); kfree(vbo);
} }
@@ -849,9 +851,9 @@ void vmw_bo_placement_set_default_accelerated(struct vmw_bo *bo)
vmw_bo_placement_set(bo, domain, domain); vmw_bo_placement_set(bo, domain, domain);
} }
void vmw_bo_add_detached_resource(struct vmw_bo *vbo, struct vmw_resource *res) int vmw_bo_add_detached_resource(struct vmw_bo *vbo, struct vmw_resource *res)
{ {
xa_store(&vbo->detached_resources, (unsigned long)res, res, GFP_KERNEL); return xa_err(xa_store(&vbo->detached_resources, (unsigned long)res, res, GFP_KERNEL));
} }
void vmw_bo_del_detached_resource(struct vmw_bo *vbo, struct vmw_resource *res) void vmw_bo_del_detached_resource(struct vmw_bo *vbo, struct vmw_resource *res)
+1 -1
View File
@@ -142,7 +142,7 @@ void vmw_bo_move_notify(struct ttm_buffer_object *bo,
struct ttm_resource *mem); struct ttm_resource *mem);
void vmw_bo_swap_notify(struct ttm_buffer_object *bo); void vmw_bo_swap_notify(struct ttm_buffer_object *bo);
void vmw_bo_add_detached_resource(struct vmw_bo *vbo, struct vmw_resource *res); int vmw_bo_add_detached_resource(struct vmw_bo *vbo, struct vmw_resource *res);
void vmw_bo_del_detached_resource(struct vmw_bo *vbo, struct vmw_resource *res); void vmw_bo_del_detached_resource(struct vmw_bo *vbo, struct vmw_resource *res);
struct vmw_surface *vmw_bo_surface(struct vmw_bo *vbo); struct vmw_surface *vmw_bo_surface(struct vmw_bo *vbo);
+26
View File
@@ -4086,6 +4086,23 @@ static int vmw_execbuf_tie_context(struct vmw_private *dev_priv,
return 0; return 0;
} }
/*
* DMA fence callback to remove a seqno_waiter
*/
struct seqno_waiter_rm_context {
struct dma_fence_cb base;
struct vmw_private *dev_priv;
};
static void seqno_waiter_rm_cb(struct dma_fence *f, struct dma_fence_cb *cb)
{
struct seqno_waiter_rm_context *ctx =
container_of(cb, struct seqno_waiter_rm_context, base);
vmw_seqno_waiter_remove(ctx->dev_priv);
kfree(ctx);
}
int vmw_execbuf_process(struct drm_file *file_priv, int vmw_execbuf_process(struct drm_file *file_priv,
struct vmw_private *dev_priv, struct vmw_private *dev_priv,
void __user *user_commands, void *kernel_commands, void __user *user_commands, void *kernel_commands,
@@ -4266,6 +4283,15 @@ int vmw_execbuf_process(struct drm_file *file_priv,
} else { } else {
/* Link the fence with the FD created earlier */ /* Link the fence with the FD created earlier */
fd_install(out_fence_fd, sync_file->file); fd_install(out_fence_fd, sync_file->file);
struct seqno_waiter_rm_context *ctx =
kmalloc(sizeof(*ctx), GFP_KERNEL);
ctx->dev_priv = dev_priv;
vmw_seqno_waiter_add(dev_priv);
if (dma_fence_add_callback(&fence->base, &ctx->base,
seqno_waiter_rm_cb) < 0) {
vmw_seqno_waiter_remove(dev_priv);
kfree(ctx);
}
} }
} }
+1 -1
View File
@@ -273,7 +273,7 @@ int vmw_user_resource_lookup_handle(struct vmw_private *dev_priv,
goto out_bad_resource; goto out_bad_resource;
res = converter->base_obj_to_res(base); res = converter->base_obj_to_res(base);
kref_get(&res->kref); vmw_resource_reference(res);
*p_res = res; *p_res = res;
ret = 0; ret = 0;
+26 -8
View File
@@ -658,7 +658,7 @@ static void vmw_user_surface_free(struct vmw_resource *res)
struct vmw_user_surface *user_srf = struct vmw_user_surface *user_srf =
container_of(srf, struct vmw_user_surface, srf); container_of(srf, struct vmw_user_surface, srf);
WARN_ON_ONCE(res->dirty); WARN_ON(res->dirty);
if (user_srf->master) if (user_srf->master)
drm_master_put(&user_srf->master); drm_master_put(&user_srf->master);
kfree(srf->offsets); kfree(srf->offsets);
@@ -689,8 +689,7 @@ static void vmw_user_surface_base_release(struct ttm_base_object **p_base)
* Dumb buffers own the resource and they'll unref the * Dumb buffers own the resource and they'll unref the
* resource themselves * resource themselves
*/ */
if (res && res->guest_memory_bo && res->guest_memory_bo->is_dumb) WARN_ON(res && res->guest_memory_bo && res->guest_memory_bo->is_dumb);
return;
vmw_resource_unreference(&res); vmw_resource_unreference(&res);
} }
@@ -871,7 +870,12 @@ int vmw_surface_define_ioctl(struct drm_device *dev, void *data,
vmw_resource_unreference(&res); vmw_resource_unreference(&res);
goto out_unlock; goto out_unlock;
} }
vmw_bo_add_detached_resource(res->guest_memory_bo, res);
ret = vmw_bo_add_detached_resource(res->guest_memory_bo, res);
if (unlikely(ret != 0)) {
vmw_resource_unreference(&res);
goto out_unlock;
}
} }
tmp = vmw_resource_reference(&srf->res); tmp = vmw_resource_reference(&srf->res);
@@ -1670,6 +1674,14 @@ vmw_gb_surface_define_internal(struct drm_device *dev,
} }
if (res->guest_memory_bo) {
ret = vmw_bo_add_detached_resource(res->guest_memory_bo, res);
if (unlikely(ret != 0)) {
vmw_resource_unreference(&res);
goto out_unlock;
}
}
tmp = vmw_resource_reference(res); tmp = vmw_resource_reference(res);
ret = ttm_prime_object_init(tfile, res->guest_memory_size, &user_srf->prime, ret = ttm_prime_object_init(tfile, res->guest_memory_size, &user_srf->prime,
VMW_RES_SURFACE, VMW_RES_SURFACE,
@@ -1684,7 +1696,6 @@ vmw_gb_surface_define_internal(struct drm_device *dev,
rep->handle = user_srf->prime.base.handle; rep->handle = user_srf->prime.base.handle;
rep->backup_size = res->guest_memory_size; rep->backup_size = res->guest_memory_size;
if (res->guest_memory_bo) { if (res->guest_memory_bo) {
vmw_bo_add_detached_resource(res->guest_memory_bo, res);
rep->buffer_map_handle = rep->buffer_map_handle =
drm_vma_node_offset_addr(&res->guest_memory_bo->tbo.base.vma_node); drm_vma_node_offset_addr(&res->guest_memory_bo->tbo.base.vma_node);
rep->buffer_size = res->guest_memory_bo->tbo.base.size; rep->buffer_size = res->guest_memory_bo->tbo.base.size;
@@ -2358,12 +2369,19 @@ int vmw_dumb_create(struct drm_file *file_priv,
vbo = res->guest_memory_bo; vbo = res->guest_memory_bo;
vbo->is_dumb = true; vbo->is_dumb = true;
vbo->dumb_surface = vmw_res_to_srf(res); vbo->dumb_surface = vmw_res_to_srf(res);
drm_gem_object_put(&vbo->tbo.base);
/*
* Unset the user surface dtor since this in not actually exposed
* to userspace. The suface is owned via the dumb_buffer's GEM handle
*/
struct vmw_user_surface *usurf = container_of(vbo->dumb_surface,
struct vmw_user_surface, srf);
usurf->prime.base.refcount_release = NULL;
err: err:
if (res) if (res)
vmw_resource_unreference(&res); vmw_resource_unreference(&res);
if (ret)
ttm_ref_object_base_unref(tfile, arg.rep.handle); ttm_ref_object_base_unref(tfile, arg.rep.handle);
return ret; return ret;
} }
+1
View File
@@ -910,6 +910,7 @@ static int xe_pci_suspend(struct device *dev)
pci_save_state(pdev); pci_save_state(pdev);
pci_disable_device(pdev); pci_disable_device(pdev);
pci_set_power_state(pdev, PCI_D3cold);
return 0; return 0;
} }
+4
View File
@@ -910,6 +910,10 @@ static int asus_ec_hwmon_read_string(struct device *dev,
{ {
struct ec_sensors_data *state = dev_get_drvdata(dev); struct ec_sensors_data *state = dev_get_drvdata(dev);
int sensor_index = find_ec_sensor_index(state, type, channel); int sensor_index = find_ec_sensor_index(state, type, channel);
if (sensor_index < 0)
return sensor_index;
*str = get_sensor_info(state, sensor_index)->label; *str = get_sensor_info(state, sensor_index)->label;
return 0; return 0;

Some files were not shown because too many files have changed in this diff Show More