LINUX-STM32MP: v5.15-stm32mp-r2
Signed-off-by: Romuald JEANNE <romuald.jeanne@st.com> Change-Id: I908051bb3c17f9c36e163f1459cdbdafac725d20
This commit is contained in:
committed by
bernard PUEL
parent
83a6bfebc6
commit
efe2f89975
File diff suppressed because it is too large
Load Diff
@ -1,114 +0,0 @@
|
||||
From 4ad9ff21f9950e378e159d614a4f3edb5cd187b6 Mon Sep 17 00:00:00 2001
|
||||
From: Christophe Priouzeau <christophe.priouzeau@foss.st.com>
|
||||
Date: Tue, 31 May 2022 12:00:10 +0200
|
||||
Subject: [PATCH 12/22] ARM-5.15.24-stm32mp1-r1-MMC
|
||||
|
||||
Signed-off-by: Christophe Priouzeau <christophe.priouzeau@foss.st.com>
|
||||
---
|
||||
Documentation/devicetree/bindings/mmc/arm,pl18x.yaml | 6 ++++++
|
||||
drivers/mmc/host/mmci.c | 12 ++++++++++--
|
||||
drivers/mmc/host/mmci.h | 1 +
|
||||
drivers/mmc/host/mmci_stm32_sdmmc.c | 5 +++--
|
||||
4 files changed, 20 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/Documentation/devicetree/bindings/mmc/arm,pl18x.yaml b/Documentation/devicetree/bindings/mmc/arm,pl18x.yaml
|
||||
index 47595cb48..eed54bee7 100644
|
||||
--- a/Documentation/devicetree/bindings/mmc/arm,pl18x.yaml
|
||||
+++ b/Documentation/devicetree/bindings/mmc/arm,pl18x.yaml
|
||||
@@ -53,6 +53,12 @@ properties:
|
||||
items:
|
||||
- const: arm,pl18x
|
||||
- const: arm,primecell
|
||||
+ - description: Entry for STMicroelectronics variant of PL18x.
|
||||
+ This dedicated compatible is used by bootloaders.
|
||||
+ items:
|
||||
+ - const: st,stm32-sdmmc2
|
||||
+ - const: arm,pl18x
|
||||
+ - const: arm,primecell
|
||||
|
||||
clocks:
|
||||
description: One or two clocks, the "apb_pclk" and the "MCLK"
|
||||
diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c
|
||||
index 3765e2f4a..c15b9a2cd 100644
|
||||
--- a/drivers/mmc/host/mmci.c
|
||||
+++ b/drivers/mmc/host/mmci.c
|
||||
@@ -274,13 +274,14 @@ static struct variant_data variant_stm32_sdmmc = {
|
||||
.busy_detect = true,
|
||||
.busy_detect_flag = MCI_STM32_BUSYD0,
|
||||
.busy_detect_mask = MCI_STM32_BUSYD0ENDMASK,
|
||||
+ .disable_keep_power = true,
|
||||
.init = sdmmc_variant_init,
|
||||
};
|
||||
|
||||
static struct variant_data variant_stm32_sdmmcv2 = {
|
||||
.fifosize = 16 * 4,
|
||||
.fifohalfsize = 8 * 4,
|
||||
- .f_max = 208000000,
|
||||
+ .f_max = 267000000,
|
||||
.stm32_clkdiv = true,
|
||||
.cmdreg_cpsm_enable = MCI_CPSM_STM32_ENABLE,
|
||||
.cmdreg_lrsp_crc = MCI_CPSM_STM32_LRSP_CRC,
|
||||
@@ -301,6 +302,7 @@ static struct variant_data variant_stm32_sdmmcv2 = {
|
||||
.busy_detect = true,
|
||||
.busy_detect_flag = MCI_STM32_BUSYD0,
|
||||
.busy_detect_mask = MCI_STM32_BUSYD0ENDMASK,
|
||||
+ .disable_keep_power = true,
|
||||
.init = sdmmc_variant_init,
|
||||
};
|
||||
|
||||
@@ -2168,7 +2170,8 @@ static int mmci_probe(struct amba_device *dev,
|
||||
host->stop_abort.flags = MMC_RSP_R1B | MMC_CMD_AC;
|
||||
|
||||
/* We support these PM capabilities. */
|
||||
- mmc->pm_caps |= MMC_PM_KEEP_POWER;
|
||||
+ if (!variant->disable_keep_power)
|
||||
+ mmc->pm_caps |= MMC_PM_KEEP_POWER;
|
||||
|
||||
/*
|
||||
* We can do SGIO
|
||||
@@ -2431,6 +2434,11 @@ static const struct amba_id mmci_ids[] = {
|
||||
.mask = 0xf0ffffff,
|
||||
.data = &variant_stm32_sdmmcv2,
|
||||
},
|
||||
+ {
|
||||
+ .id = 0x20253180,
|
||||
+ .mask = 0xf0ffffff,
|
||||
+ .data = &variant_stm32_sdmmcv2,
|
||||
+ },
|
||||
/* Qualcomm variants */
|
||||
{
|
||||
.id = 0x00051180,
|
||||
diff --git a/drivers/mmc/host/mmci.h b/drivers/mmc/host/mmci.h
|
||||
index e1a9b96a3..2cad1ef97 100644
|
||||
--- a/drivers/mmc/host/mmci.h
|
||||
+++ b/drivers/mmc/host/mmci.h
|
||||
@@ -361,6 +361,7 @@ struct variant_data {
|
||||
u32 opendrain;
|
||||
u8 dma_lli:1;
|
||||
u32 stm32_idmabsize_mask;
|
||||
+ u8 disable_keep_power:1;
|
||||
void (*init)(struct mmci_host *host);
|
||||
};
|
||||
|
||||
diff --git a/drivers/mmc/host/mmci_stm32_sdmmc.c b/drivers/mmc/host/mmci_stm32_sdmmc.c
|
||||
index a75d3dd34..9c13f2c31 100644
|
||||
--- a/drivers/mmc/host/mmci_stm32_sdmmc.c
|
||||
+++ b/drivers/mmc/host/mmci_stm32_sdmmc.c
|
||||
@@ -241,11 +241,12 @@ static void mmci_sdmmc_set_clkreg(struct mmci_host *host, unsigned int desired)
|
||||
|
||||
/*
|
||||
* SDMMC_FBCK is selected when an external Delay Block is needed
|
||||
- * with SDR104.
|
||||
+ * with SDR104 or HS200.
|
||||
*/
|
||||
if (host->mmc->ios.timing >= MMC_TIMING_UHS_SDR50) {
|
||||
clk |= MCI_STM32_CLK_BUSSPEED;
|
||||
- if (host->mmc->ios.timing == MMC_TIMING_UHS_SDR104) {
|
||||
+ if (host->mmc->ios.timing == MMC_TIMING_UHS_SDR104 ||
|
||||
+ host->mmc->ios.timing == MMC_TIMING_MMC_HS200) {
|
||||
clk &= ~MCI_STM32_CLK_SEL_MSK;
|
||||
clk |= MCI_STM32_CLK_SELFBCK;
|
||||
}
|
||||
--
|
||||
2.25.1
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,9 +1,9 @@
|
||||
From 4868d40c41f2fb7dea18d7b5fe14da02fc82e2f1 Mon Sep 17 00:00:00 2001
|
||||
From: Christophe Priouzeau <christophe.priouzeau@foss.st.com>
|
||||
Date: Tue, 31 May 2022 11:50:09 +0200
|
||||
Subject: [PATCH 01/22] ARM-5.15.24-stm32mp1-r1-MACHINE
|
||||
From 84827f5873b8cd852cc79177e9a42b12760b3723 Mon Sep 17 00:00:00 2001
|
||||
From: Romuald JEANNE <romuald.jeanne@st.com>
|
||||
Date: Thu, 13 Oct 2022 12:22:34 +0200
|
||||
Subject: [PATCH 01/22] v5.15-stm32mp-r2 MACHINE
|
||||
|
||||
Signed-off-by: Christophe Priouzeau <christophe.priouzeau@foss.st.com>
|
||||
Signed-off-by: Romuald JEANNE <romuald.jeanne@st.com>
|
||||
---
|
||||
Documentation/arm/index.rst | 1 +
|
||||
.../arm/stm32/stm32mp13-overview.rst | 37 +++++++++++++++++++
|
||||
@ -14,7 +14,7 @@ Signed-off-by: Christophe Priouzeau <christophe.priouzeau@foss.st.com>
|
||||
create mode 100644 Documentation/arm/stm32/stm32mp13-overview.rst
|
||||
|
||||
diff --git a/Documentation/arm/index.rst b/Documentation/arm/index.rst
|
||||
index d4f34ae9e..2bda5461a 100644
|
||||
index d4f34ae9e6f4..2bda5461a80b 100644
|
||||
--- a/Documentation/arm/index.rst
|
||||
+++ b/Documentation/arm/index.rst
|
||||
@@ -55,6 +55,7 @@ SoC-specific documents
|
||||
@ -27,7 +27,7 @@ index d4f34ae9e..2bda5461a 100644
|
||||
sunxi
|
||||
diff --git a/Documentation/arm/stm32/stm32mp13-overview.rst b/Documentation/arm/stm32/stm32mp13-overview.rst
|
||||
new file mode 100644
|
||||
index 000000000..3bb9492da
|
||||
index 000000000000..3bb9492dad49
|
||||
--- /dev/null
|
||||
+++ b/Documentation/arm/stm32/stm32mp13-overview.rst
|
||||
@@ -0,0 +1,37 @@
|
||||
@ -69,7 +69,7 @@ index 000000000..3bb9492da
|
||||
+
|
||||
+- Alexandre Torgue <alexandre.torgue@foss.st.com>
|
||||
diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
|
||||
index 644875d73..37b833761 100644
|
||||
index 644875d73ba1..37b8337617d7 100644
|
||||
--- a/arch/arm/Kconfig.debug
|
||||
+++ b/arch/arm/Kconfig.debug
|
||||
@@ -1244,7 +1244,7 @@ choice
|
||||
@ -82,7 +82,7 @@ index 644875d73..37b833761 100644
|
||||
help
|
||||
Say Y here if you want kernel low-level debugging support
|
||||
diff --git a/arch/arm/mach-stm32/Kconfig b/arch/arm/mach-stm32/Kconfig
|
||||
index 57699bd8f..ab6978451 100644
|
||||
index 57699bd8f107..ab69784518c9 100644
|
||||
--- a/arch/arm/mach-stm32/Kconfig
|
||||
+++ b/arch/arm/mach-stm32/Kconfig
|
||||
@@ -46,8 +46,17 @@ if ARCH_MULTI_V7
|
||||
@ -104,7 +104,7 @@ index 57699bd8f..ab6978451 100644
|
||||
|
||||
endif
|
||||
diff --git a/arch/arm/mach-stm32/board-dt.c b/arch/arm/mach-stm32/board-dt.c
|
||||
index a766310d8..9ff06f2fc 100644
|
||||
index a766310d8dca..9ff06f2fcbf4 100644
|
||||
--- a/arch/arm/mach-stm32/board-dt.c
|
||||
+++ b/arch/arm/mach-stm32/board-dt.c
|
||||
@@ -18,6 +18,11 @@ static const char *const stm32_compat[] __initconst = {
|
||||
@ -120,5 +120,5 @@ index a766310d8..9ff06f2fc 100644
|
||||
NULL
|
||||
};
|
||||
--
|
||||
2.25.1
|
||||
2.17.1
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,19 +1,88 @@
|
||||
From 1aacc70479e14dd5ca0e60a969478957a390dbda Mon Sep 17 00:00:00 2001
|
||||
From: Christophe Priouzeau <christophe.priouzeau@foss.st.com>
|
||||
Date: Tue, 31 May 2022 11:51:10 +0200
|
||||
Subject: [PATCH 03/22] ARM-5.15.24-stm32mp1-r1-CPUFREQ
|
||||
From 7b129c9db71e9dcb515a4585861898b6a3644f1b Mon Sep 17 00:00:00 2001
|
||||
From: Romuald JEANNE <romuald.jeanne@st.com>
|
||||
Date: Thu, 3 Nov 2022 15:23:32 +0100
|
||||
Subject: [PATCH 03/22] v5.15-stm32mp-r2 CPUFREQ
|
||||
|
||||
Signed-off-by: Christophe Priouzeau <christophe.priouzeau@foss.st.com>
|
||||
Signed-off-by: Romuald JEANNE <romuald.jeanne@st.com>
|
||||
---
|
||||
drivers/cpufreq/Kconfig.arm | 7 ++
|
||||
drivers/cpufreq/Makefile | 1 +
|
||||
drivers/cpufreq/cpufreq-dt-platdev.c | 1 +
|
||||
drivers/cpufreq/stm32-cpufreq.c | 103 +++++++++++++++++++++++++++
|
||||
4 files changed, 112 insertions(+)
|
||||
.../bindings/cpufreq/stm32-cpufreq.txt | 61 +++++++++++
|
||||
drivers/cpufreq/Kconfig.arm | 7 ++
|
||||
drivers/cpufreq/Makefile | 1 +
|
||||
drivers/cpufreq/cpufreq-dt-platdev.c | 1 +
|
||||
drivers/cpufreq/stm32-cpufreq.c | 103 ++++++++++++++++++
|
||||
5 files changed, 173 insertions(+)
|
||||
create mode 100644 Documentation/devicetree/bindings/cpufreq/stm32-cpufreq.txt
|
||||
create mode 100644 drivers/cpufreq/stm32-cpufreq.c
|
||||
|
||||
diff --git a/Documentation/devicetree/bindings/cpufreq/stm32-cpufreq.txt b/Documentation/devicetree/bindings/cpufreq/stm32-cpufreq.txt
|
||||
new file mode 100644
|
||||
index 000000000000..1292eb2612a0
|
||||
--- /dev/null
|
||||
+++ b/Documentation/devicetree/bindings/cpufreq/stm32-cpufreq.txt
|
||||
@@ -0,0 +1,61 @@
|
||||
+STM32 CPUFreq and OPP bindings
|
||||
+==============================
|
||||
+
|
||||
+STM32 CPUFreq driver needs to read chip information from the SoC to list
|
||||
+available OPPs. Then it depends on cpufreq-dt bindings.
|
||||
+
|
||||
+Required properties:
|
||||
+--------------------
|
||||
+- clocks: Phandle to the cpu clock "cpu".
|
||||
+- clocks-name: Should contain "cpu".
|
||||
+- nvmem-cells: Phandle to nvmem cell that contains "part_number".
|
||||
+- nvmem-cell-names: Must be "part_number".
|
||||
+- operating-points-v2: Phandle to operating points table. See ../power/opp.txt
|
||||
+ for more details.
|
||||
+
|
||||
+Optional properties:
|
||||
+--------------------
|
||||
+See cpufreq-dt.txt for optional properties.
|
||||
+
|
||||
+Examples:
|
||||
+---------
|
||||
+ cpus {
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+
|
||||
+ cpu0: cpu@0 {
|
||||
+ compatible = "arm,cortex-a7";
|
||||
+ device_type = "cpu";
|
||||
+ reg = <0>;
|
||||
+ clocks = <&rcc CK_MPU>;
|
||||
+ clock-names = "cpu";
|
||||
+ operating-points-v2 = <&cpu0_opp_table>;
|
||||
+ nvmem-cells = <&part_number_otp>;
|
||||
+ nvmem-cell-names = "part_number";
|
||||
+ };
|
||||
+
|
||||
+ cpu1: cpu@1 {
|
||||
+ compatible = "arm,cortex-a7";
|
||||
+ device_type = "cpu";
|
||||
+ reg = <1>;
|
||||
+ clocks = <&rcc CK_MPU>;
|
||||
+ clock-names = "cpu";
|
||||
+ operating-points-v2 = <&cpu0_opp_table>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ cpu0_opp_table: cpu0-opp-table {
|
||||
+ compatible = "operating-points-v2";
|
||||
+ opp-shared;
|
||||
+
|
||||
+ opp-650000000 {
|
||||
+ opp-hz = /bits/ 64 <650000000>;
|
||||
+ opp-microvolt = <1200000>;
|
||||
+ opp-supported-hw = <0x1>;
|
||||
+ };
|
||||
+ opp-800000000 {
|
||||
+ opp-hz = /bits/ 64 <800000000>;
|
||||
+ opp-microvolt = <1350000>;
|
||||
+ opp-supported-hw = <0x2>;
|
||||
+ };
|
||||
+ };
|
||||
diff --git a/drivers/cpufreq/Kconfig.arm b/drivers/cpufreq/Kconfig.arm
|
||||
index 954749afb..eac08e907 100644
|
||||
index 954749afb5fe..eac08e90768c 100644
|
||||
--- a/drivers/cpufreq/Kconfig.arm
|
||||
+++ b/drivers/cpufreq/Kconfig.arm
|
||||
@@ -311,6 +311,13 @@ config ARM_STI_CPUFREQ
|
||||
@ -31,7 +100,7 @@ index 954749afb..eac08e907 100644
|
||||
tristate "Tegra20/30 CPUFreq support"
|
||||
depends on ARCH_TEGRA && CPUFREQ_DT
|
||||
diff --git a/drivers/cpufreq/Makefile b/drivers/cpufreq/Makefile
|
||||
index 48ee58590..d34de1b92 100644
|
||||
index 48ee5859030c..d34de1b927bf 100644
|
||||
--- a/drivers/cpufreq/Makefile
|
||||
+++ b/drivers/cpufreq/Makefile
|
||||
@@ -78,6 +78,7 @@ obj-$(CONFIG_ARM_SCMI_CPUFREQ) += scmi-cpufreq.o
|
||||
@ -43,7 +112,7 @@ index 48ee58590..d34de1b92 100644
|
||||
obj-$(CONFIG_ARM_TEGRA20_CPUFREQ) += tegra20-cpufreq.o
|
||||
obj-$(CONFIG_ARM_TEGRA124_CPUFREQ) += tegra124-cpufreq.o
|
||||
diff --git a/drivers/cpufreq/cpufreq-dt-platdev.c b/drivers/cpufreq/cpufreq-dt-platdev.c
|
||||
index ca1d103ec..f205e6e97 100644
|
||||
index ca1d103ec449..f205e6e9703e 100644
|
||||
--- a/drivers/cpufreq/cpufreq-dt-platdev.c
|
||||
+++ b/drivers/cpufreq/cpufreq-dt-platdev.c
|
||||
@@ -150,6 +150,7 @@ static const struct of_device_id blocklist[] __initconst = {
|
||||
@ -56,7 +125,7 @@ index ca1d103ec..f205e6e97 100644
|
||||
{ .compatible = "ti,am43", },
|
||||
diff --git a/drivers/cpufreq/stm32-cpufreq.c b/drivers/cpufreq/stm32-cpufreq.c
|
||||
new file mode 100644
|
||||
index 000000000..d7b1b16ea
|
||||
index 000000000000..d7b1b16ea1d1
|
||||
--- /dev/null
|
||||
+++ b/drivers/cpufreq/stm32-cpufreq.c
|
||||
@@ -0,0 +1,103 @@
|
||||
@ -164,5 +233,5 @@ index 000000000..d7b1b16ea
|
||||
+MODULE_AUTHOR("Alexandre Torgue <alexandre.torgue@st.com>");
|
||||
+MODULE_LICENSE("GPL v2");
|
||||
--
|
||||
2.25.1
|
||||
2.17.1
|
||||
|
||||
@ -1,88 +1,19 @@
|
||||
From 4627c869d60932edc00dd979d9b1bd374518c5c8 Mon Sep 17 00:00:00 2001
|
||||
From: Christophe Priouzeau <christophe.priouzeau@foss.st.com>
|
||||
Date: Tue, 31 May 2022 12:08:46 +0200
|
||||
Subject: [PATCH 20/22] ARM-5.15.24-stm32mp1-r1-CPUIDLE-POWER
|
||||
From dc62943bb269dbe5f3294beda26e299bb00f0e97 Mon Sep 17 00:00:00 2001
|
||||
From: Romuald JEANNE <romuald.jeanne@st.com>
|
||||
Date: Thu, 3 Nov 2022 16:49:53 +0100
|
||||
Subject: [PATCH 04/22] v5.15-stm32mp-r2 CPUIDLE-POWER
|
||||
|
||||
Signed-off-by: Christophe Priouzeau <christophe.priouzeau@foss.st.com>
|
||||
Signed-off-by: Romuald JEANNE <romuald.jeanne@st.com>
|
||||
---
|
||||
.../bindings/cpufreq/stm32-cpufreq.txt | 61 ++++
|
||||
drivers/cpuidle/Kconfig.arm | 8 +
|
||||
drivers/cpuidle/Makefile | 1 +
|
||||
drivers/cpuidle/cpuidle-stm32.c | 276 ++++++++++++++++++
|
||||
kernel/power/suspend.c | 1 -
|
||||
5 files changed, 346 insertions(+), 1 deletion(-)
|
||||
create mode 100644 Documentation/devicetree/bindings/cpufreq/stm32-cpufreq.txt
|
||||
drivers/cpuidle/Kconfig.arm | 8 +
|
||||
drivers/cpuidle/Makefile | 1 +
|
||||
drivers/cpuidle/cpuidle-stm32.c | 276 ++++++++++++++++++++++++++++++++
|
||||
kernel/power/suspend.c | 1 -
|
||||
4 files changed, 285 insertions(+), 1 deletion(-)
|
||||
create mode 100644 drivers/cpuidle/cpuidle-stm32.c
|
||||
|
||||
diff --git a/Documentation/devicetree/bindings/cpufreq/stm32-cpufreq.txt b/Documentation/devicetree/bindings/cpufreq/stm32-cpufreq.txt
|
||||
new file mode 100644
|
||||
index 000000000..1292eb261
|
||||
--- /dev/null
|
||||
+++ b/Documentation/devicetree/bindings/cpufreq/stm32-cpufreq.txt
|
||||
@@ -0,0 +1,61 @@
|
||||
+STM32 CPUFreq and OPP bindings
|
||||
+==============================
|
||||
+
|
||||
+STM32 CPUFreq driver needs to read chip information from the SoC to list
|
||||
+available OPPs. Then it depends on cpufreq-dt bindings.
|
||||
+
|
||||
+Required properties:
|
||||
+--------------------
|
||||
+- clocks: Phandle to the cpu clock "cpu".
|
||||
+- clocks-name: Should contain "cpu".
|
||||
+- nvmem-cells: Phandle to nvmem cell that contains "part_number".
|
||||
+- nvmem-cell-names: Must be "part_number".
|
||||
+- operating-points-v2: Phandle to operating points table. See ../power/opp.txt
|
||||
+ for more details.
|
||||
+
|
||||
+Optional properties:
|
||||
+--------------------
|
||||
+See cpufreq-dt.txt for optional properties.
|
||||
+
|
||||
+Examples:
|
||||
+---------
|
||||
+ cpus {
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+
|
||||
+ cpu0: cpu@0 {
|
||||
+ compatible = "arm,cortex-a7";
|
||||
+ device_type = "cpu";
|
||||
+ reg = <0>;
|
||||
+ clocks = <&rcc CK_MPU>;
|
||||
+ clock-names = "cpu";
|
||||
+ operating-points-v2 = <&cpu0_opp_table>;
|
||||
+ nvmem-cells = <&part_number_otp>;
|
||||
+ nvmem-cell-names = "part_number";
|
||||
+ };
|
||||
+
|
||||
+ cpu1: cpu@1 {
|
||||
+ compatible = "arm,cortex-a7";
|
||||
+ device_type = "cpu";
|
||||
+ reg = <1>;
|
||||
+ clocks = <&rcc CK_MPU>;
|
||||
+ clock-names = "cpu";
|
||||
+ operating-points-v2 = <&cpu0_opp_table>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ cpu0_opp_table: cpu0-opp-table {
|
||||
+ compatible = "operating-points-v2";
|
||||
+ opp-shared;
|
||||
+
|
||||
+ opp-650000000 {
|
||||
+ opp-hz = /bits/ 64 <650000000>;
|
||||
+ opp-microvolt = <1200000>;
|
||||
+ opp-supported-hw = <0x1>;
|
||||
+ };
|
||||
+ opp-800000000 {
|
||||
+ opp-hz = /bits/ 64 <800000000>;
|
||||
+ opp-microvolt = <1350000>;
|
||||
+ opp-supported-hw = <0x2>;
|
||||
+ };
|
||||
+ };
|
||||
diff --git a/drivers/cpuidle/Kconfig.arm b/drivers/cpuidle/Kconfig.arm
|
||||
index 334f83e56..4de5db493 100644
|
||||
index 334f83e56120..4de5db493d42 100644
|
||||
--- a/drivers/cpuidle/Kconfig.arm
|
||||
+++ b/drivers/cpuidle/Kconfig.arm
|
||||
@@ -91,6 +91,14 @@ config ARM_EXYNOS_CPUIDLE
|
||||
@ -101,7 +32,7 @@ index 334f83e56..4de5db493 100644
|
||||
bool "CPU Idle Driver for mvebu v7 family processors"
|
||||
depends on (ARCH_MVEBU || COMPILE_TEST) && !ARM64
|
||||
diff --git a/drivers/cpuidle/Makefile b/drivers/cpuidle/Makefile
|
||||
index 26bbc5e74..cc1eccc73 100644
|
||||
index 26bbc5e74123..cc1eccc73d65 100644
|
||||
--- a/drivers/cpuidle/Makefile
|
||||
+++ b/drivers/cpuidle/Makefile
|
||||
@@ -25,6 +25,7 @@ obj-$(CONFIG_ARM_PSCI_CPUIDLE) += cpuidle-psci.o
|
||||
@ -114,7 +45,7 @@ index 26bbc5e74..cc1eccc73 100644
|
||||
# MIPS drivers
|
||||
diff --git a/drivers/cpuidle/cpuidle-stm32.c b/drivers/cpuidle/cpuidle-stm32.c
|
||||
new file mode 100644
|
||||
index 000000000..2fef170d6
|
||||
index 000000000000..2fef170d6877
|
||||
--- /dev/null
|
||||
+++ b/drivers/cpuidle/cpuidle-stm32.c
|
||||
@@ -0,0 +1,276 @@
|
||||
@ -395,7 +326,7 @@ index 000000000..2fef170d6
|
||||
+MODULE_DESCRIPTION("STM32 cpu idle driver");
|
||||
+MODULE_LICENSE("GPL v2");
|
||||
diff --git a/kernel/power/suspend.c b/kernel/power/suspend.c
|
||||
index 13d905dd3..371f2765d 100644
|
||||
index 13d905dd3267..371f2765da18 100644
|
||||
--- a/kernel/power/suspend.c
|
||||
+++ b/kernel/power/suspend.c
|
||||
@@ -34,7 +34,6 @@
|
||||
@ -407,5 +338,5 @@ index 13d905dd3..371f2765d 100644
|
||||
[PM_SUSPEND_MEM] = "mem",
|
||||
};
|
||||
--
|
||||
2.25.1
|
||||
2.17.1
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,19 +1,19 @@
|
||||
From 20c1092971871e4018f8ca5de96282711289cb6f Mon Sep 17 00:00:00 2001
|
||||
From: Christophe Priouzeau <christophe.priouzeau@foss.st.com>
|
||||
Date: Tue, 31 May 2022 11:52:37 +0200
|
||||
Subject: [PATCH 05/22] ARM-5.15.24-stm32mp1-r1-DMA
|
||||
From 62911b17f33f57875c1b18ed211d5fa0f731ad42 Mon Sep 17 00:00:00 2001
|
||||
From: Romuald JEANNE <romuald.jeanne@st.com>
|
||||
Date: Thu, 3 Nov 2022 15:26:34 +0100
|
||||
Subject: [PATCH 06/22] v5.15-stm32mp-r2 DMA
|
||||
|
||||
Signed-off-by: Christophe Priouzeau <christophe.priouzeau@foss.st.com>
|
||||
Signed-off-by: Romuald JEANNE <romuald.jeanne@st.com>
|
||||
---
|
||||
.../devicetree/bindings/dma/st,stm32-dma.yaml | 47 +
|
||||
.../bindings/dma/st,stm32-mdma.yaml | 12 +-
|
||||
drivers/dma/stm32-dma.c | 1169 +++++++++++++++--
|
||||
drivers/dma/stm32-dmamux.c | 2 +-
|
||||
drivers/dma/stm32-mdma.c | 170 ++-
|
||||
5 files changed, 1246 insertions(+), 154 deletions(-)
|
||||
drivers/dma/stm32-mdma.c | 147 ++-
|
||||
5 files changed, 1240 insertions(+), 137 deletions(-)
|
||||
|
||||
diff --git a/Documentation/devicetree/bindings/dma/st,stm32-dma.yaml b/Documentation/devicetree/bindings/dma/st,stm32-dma.yaml
|
||||
index 4bf676fd2..99351fe0f 100644
|
||||
index 4bf676fd25dc..99351fe0fa17 100644
|
||||
--- a/Documentation/devicetree/bindings/dma/st,stm32-dma.yaml
|
||||
+++ b/Documentation/devicetree/bindings/dma/st,stm32-dma.yaml
|
||||
@@ -47,6 +47,14 @@ description: |
|
||||
@ -85,7 +85,7 @@ index 4bf676fd2..99351fe0f 100644
|
||||
|
||||
...
|
||||
diff --git a/Documentation/devicetree/bindings/dma/st,stm32-mdma.yaml b/Documentation/devicetree/bindings/dma/st,stm32-mdma.yaml
|
||||
index c30be840b..c4bb58014 100644
|
||||
index c30be840be1c..c4bb58014374 100644
|
||||
--- a/Documentation/devicetree/bindings/dma/st,stm32-mdma.yaml
|
||||
+++ b/Documentation/devicetree/bindings/dma/st,stm32-mdma.yaml
|
||||
@@ -10,8 +10,8 @@ description: |
|
||||
@ -129,7 +129,7 @@ index c30be840b..c4bb58014 100644
|
||||
dma-requests = <32>;
|
||||
st,ahb-addr-masks = <0x20000000>, <0x00000000>;
|
||||
diff --git a/drivers/dma/stm32-dma.c b/drivers/dma/stm32-dma.c
|
||||
index 7dfc743ac..7c6078c6c 100644
|
||||
index 7dfc743ac433..7c6078c6c3bf 100644
|
||||
--- a/drivers/dma/stm32-dma.c
|
||||
+++ b/drivers/dma/stm32-dma.c
|
||||
@@ -14,12 +14,14 @@
|
||||
@ -1728,7 +1728,7 @@ index 7dfc743ac..7c6078c6c 100644
|
||||
-subsys_initcall(stm32_dma_init);
|
||||
+device_initcall(stm32_dma_init);
|
||||
diff --git a/drivers/dma/stm32-dmamux.c b/drivers/dma/stm32-dmamux.c
|
||||
index a42164389..f9f77bb09 100644
|
||||
index d5d55732adba..eee0c5aa5fb5 100644
|
||||
--- a/drivers/dma/stm32-dmamux.c
|
||||
+++ b/drivers/dma/stm32-dmamux.c
|
||||
@@ -267,7 +267,7 @@ static int stm32_dmamux_probe(struct platform_device *pdev)
|
||||
@ -1741,18 +1741,10 @@ index a42164389..f9f77bb09 100644
|
||||
udelay(2);
|
||||
reset_control_deassert(rst);
|
||||
diff --git a/drivers/dma/stm32-mdma.c b/drivers/dma/stm32-mdma.c
|
||||
index f17a9ffcd..133534663 100644
|
||||
index 21a7bdc88970..1335346635de 100644
|
||||
--- a/drivers/dma/stm32-mdma.c
|
||||
+++ b/drivers/dma/stm32-mdma.c
|
||||
@@ -40,7 +40,6 @@
|
||||
STM32_MDMA_SHIFT(mask))
|
||||
|
||||
#define STM32_MDMA_GISR0 0x0000 /* MDMA Int Status Reg 1 */
|
||||
-#define STM32_MDMA_GISR1 0x0004 /* MDMA Int Status Reg 2 */
|
||||
|
||||
/* MDMA Channel x interrupt/status register */
|
||||
#define STM32_MDMA_CISR(x) (0x40 + 0x40 * (x)) /* x = 0..62 */
|
||||
@@ -79,6 +78,7 @@
|
||||
@@ -78,6 +78,7 @@
|
||||
#define STM32_MDMA_CCR_WEX BIT(14)
|
||||
#define STM32_MDMA_CCR_HEX BIT(13)
|
||||
#define STM32_MDMA_CCR_BEX BIT(12)
|
||||
@ -1760,13 +1752,7 @@ index f17a9ffcd..133534663 100644
|
||||
#define STM32_MDMA_CCR_PL_MASK GENMASK(7, 6)
|
||||
#define STM32_MDMA_CCR_PL(n) STM32_MDMA_SET(n, \
|
||||
STM32_MDMA_CCR_PL_MASK)
|
||||
@@ -196,11 +196,13 @@
|
||||
|
||||
#define STM32_MDMA_MAX_BUF_LEN 128
|
||||
#define STM32_MDMA_MAX_BLOCK_LEN 65536
|
||||
-#define STM32_MDMA_MAX_CHANNELS 63
|
||||
+#define STM32_MDMA_MAX_CHANNELS 32
|
||||
#define STM32_MDMA_MAX_REQUESTS 256
|
||||
@@ -200,6 +201,8 @@
|
||||
#define STM32_MDMA_MAX_BURST 128
|
||||
#define STM32_MDMA_VERY_HIGH_PRIORITY 0x3
|
||||
|
||||
@ -1775,7 +1761,7 @@ index f17a9ffcd..133534663 100644
|
||||
enum stm32_mdma_trigger_mode {
|
||||
STM32_MDMA_BUFFER,
|
||||
STM32_MDMA_BLOCK,
|
||||
@@ -227,6 +229,7 @@ struct stm32_mdma_chan_config {
|
||||
@@ -226,6 +229,7 @@ struct stm32_mdma_chan_config {
|
||||
u32 transfer_config;
|
||||
u32 mask_addr;
|
||||
u32 mask_data;
|
||||
@ -1783,7 +1769,7 @@ index f17a9ffcd..133534663 100644
|
||||
};
|
||||
|
||||
struct stm32_mdma_hwdesc {
|
||||
@@ -252,6 +255,7 @@ struct stm32_mdma_desc {
|
||||
@@ -251,6 +255,7 @@ struct stm32_mdma_desc {
|
||||
u32 ccr;
|
||||
bool cyclic;
|
||||
u32 count;
|
||||
@ -1791,7 +1777,7 @@ index f17a9ffcd..133534663 100644
|
||||
struct stm32_mdma_desc_node node[];
|
||||
};
|
||||
|
||||
@@ -276,6 +280,7 @@ struct stm32_mdma_device {
|
||||
@@ -275,6 +280,7 @@ struct stm32_mdma_device {
|
||||
u32 nr_channels;
|
||||
u32 nr_requests;
|
||||
u32 nr_ahb_addr_masks;
|
||||
@ -1799,7 +1785,7 @@ index f17a9ffcd..133534663 100644
|
||||
struct stm32_mdma_chan chan[STM32_MDMA_MAX_CHANNELS];
|
||||
u32 ahb_addr_masks[];
|
||||
};
|
||||
@@ -566,13 +571,24 @@ static int stm32_mdma_set_xfer_param(struct stm32_mdma_chan *chan,
|
||||
@@ -565,13 +571,24 @@ static int stm32_mdma_set_xfer_param(struct stm32_mdma_chan *chan,
|
||||
dst_addr = chan->dma_config.dst_addr;
|
||||
|
||||
/* Set device data size */
|
||||
@ -1824,7 +1810,7 @@ index f17a9ffcd..133534663 100644
|
||||
dst_best_burst = stm32_mdma_get_best_burst(buf_len, tlen,
|
||||
dst_maxburst,
|
||||
dst_addr_width);
|
||||
@@ -615,13 +631,24 @@ static int stm32_mdma_set_xfer_param(struct stm32_mdma_chan *chan,
|
||||
@@ -614,13 +631,24 @@ static int stm32_mdma_set_xfer_param(struct stm32_mdma_chan *chan,
|
||||
src_addr = chan->dma_config.src_addr;
|
||||
|
||||
/* Set device data size */
|
||||
@ -1849,7 +1835,7 @@ index f17a9ffcd..133534663 100644
|
||||
src_best_burst = stm32_mdma_get_best_burst(buf_len, tlen,
|
||||
src_maxburst,
|
||||
src_addr_width);
|
||||
@@ -729,6 +756,7 @@ static int stm32_mdma_setup_xfer(struct stm32_mdma_chan *chan,
|
||||
@@ -728,6 +756,7 @@ static int stm32_mdma_setup_xfer(struct stm32_mdma_chan *chan,
|
||||
{
|
||||
struct stm32_mdma_device *dmadev = stm32_mdma_get_dev(chan);
|
||||
struct dma_slave_config *dma_config = &chan->dma_config;
|
||||
@ -1857,7 +1843,7 @@ index f17a9ffcd..133534663 100644
|
||||
struct scatterlist *sg;
|
||||
dma_addr_t src_addr, dst_addr;
|
||||
u32 ccr, ctcr, ctbr;
|
||||
@@ -751,6 +779,8 @@ static int stm32_mdma_setup_xfer(struct stm32_mdma_chan *chan,
|
||||
@@ -750,6 +779,8 @@ static int stm32_mdma_setup_xfer(struct stm32_mdma_chan *chan,
|
||||
} else {
|
||||
src_addr = dma_config->src_addr;
|
||||
dst_addr = sg_dma_address(sg);
|
||||
@ -1866,7 +1852,7 @@ index f17a9ffcd..133534663 100644
|
||||
ret = stm32_mdma_set_xfer_param(chan, direction, &ccr,
|
||||
&ctcr, &ctbr, dst_addr,
|
||||
sg_dma_len(sg));
|
||||
@@ -769,8 +799,6 @@ static int stm32_mdma_setup_xfer(struct stm32_mdma_chan *chan,
|
||||
@@ -768,8 +799,6 @@ static int stm32_mdma_setup_xfer(struct stm32_mdma_chan *chan,
|
||||
/* Enable interrupts */
|
||||
ccr &= ~STM32_MDMA_CCR_IRQ_MASK;
|
||||
ccr |= STM32_MDMA_CCR_TEIE | STM32_MDMA_CCR_CTCIE;
|
||||
@ -1875,7 +1861,7 @@ index f17a9ffcd..133534663 100644
|
||||
desc->ccr = ccr;
|
||||
|
||||
return 0;
|
||||
@@ -782,7 +810,9 @@ stm32_mdma_prep_slave_sg(struct dma_chan *c, struct scatterlist *sgl,
|
||||
@@ -781,7 +810,9 @@ stm32_mdma_prep_slave_sg(struct dma_chan *c, struct scatterlist *sgl,
|
||||
unsigned long flags, void *context)
|
||||
{
|
||||
struct stm32_mdma_chan *chan = to_stm32_mdma_chan(c);
|
||||
@ -1885,7 +1871,7 @@ index f17a9ffcd..133534663 100644
|
||||
int i, ret;
|
||||
|
||||
/*
|
||||
@@ -804,6 +834,20 @@ stm32_mdma_prep_slave_sg(struct dma_chan *c, struct scatterlist *sgl,
|
||||
@@ -803,6 +834,20 @@ stm32_mdma_prep_slave_sg(struct dma_chan *c, struct scatterlist *sgl,
|
||||
if (ret < 0)
|
||||
goto xfer_setup_err;
|
||||
|
||||
@ -1906,7 +1892,7 @@ index f17a9ffcd..133534663 100644
|
||||
desc->cyclic = false;
|
||||
|
||||
return vchan_tx_prep(&chan->vchan, &desc->vdesc, flags);
|
||||
@@ -825,9 +869,10 @@ stm32_mdma_prep_dma_cyclic(struct dma_chan *c, dma_addr_t buf_addr,
|
||||
@@ -824,9 +869,10 @@ stm32_mdma_prep_dma_cyclic(struct dma_chan *c, dma_addr_t buf_addr,
|
||||
struct stm32_mdma_chan *chan = to_stm32_mdma_chan(c);
|
||||
struct stm32_mdma_device *dmadev = stm32_mdma_get_dev(chan);
|
||||
struct dma_slave_config *dma_config = &chan->dma_config;
|
||||
@ -1918,7 +1904,7 @@ index f17a9ffcd..133534663 100644
|
||||
int i, ret;
|
||||
|
||||
/*
|
||||
@@ -881,12 +926,29 @@ stm32_mdma_prep_dma_cyclic(struct dma_chan *c, dma_addr_t buf_addr,
|
||||
@@ -880,12 +926,29 @@ stm32_mdma_prep_dma_cyclic(struct dma_chan *c, dma_addr_t buf_addr,
|
||||
desc->ccr = ccr;
|
||||
|
||||
/* Configure hwdesc list */
|
||||
@ -1950,7 +1936,7 @@ index f17a9ffcd..133534663 100644
|
||||
dst_addr = buf_addr + i * period_len;
|
||||
}
|
||||
|
||||
@@ -896,6 +958,7 @@ stm32_mdma_prep_dma_cyclic(struct dma_chan *c, dma_addr_t buf_addr,
|
||||
@@ -895,6 +958,7 @@ stm32_mdma_prep_dma_cyclic(struct dma_chan *c, dma_addr_t buf_addr,
|
||||
}
|
||||
|
||||
desc->cyclic = true;
|
||||
@ -1958,7 +1944,7 @@ index f17a9ffcd..133534663 100644
|
||||
|
||||
return vchan_tx_prep(&chan->vchan, &desc->vdesc, flags);
|
||||
|
||||
@@ -1280,14 +1343,28 @@ static size_t stm32_mdma_desc_residue(struct stm32_mdma_chan *chan,
|
||||
@@ -1279,14 +1343,28 @@ static size_t stm32_mdma_desc_residue(struct stm32_mdma_chan *chan,
|
||||
{
|
||||
struct stm32_mdma_device *dmadev = stm32_mdma_get_dev(chan);
|
||||
struct stm32_mdma_hwdesc *hwdesc = desc->node[0].hwdesc;
|
||||
@ -1990,7 +1976,7 @@ index f17a9ffcd..133534663 100644
|
||||
cbndtr = stm32_mdma_read(dmadev, STM32_MDMA_CBNDTR(chan->id));
|
||||
residue += cbndtr & STM32_MDMA_CBNDTR_BNDT_MASK;
|
||||
|
||||
@@ -1307,24 +1384,36 @@ static enum dma_status stm32_mdma_tx_status(struct dma_chan *c,
|
||||
@@ -1306,24 +1384,36 @@ static enum dma_status stm32_mdma_tx_status(struct dma_chan *c,
|
||||
struct dma_tx_state *state)
|
||||
{
|
||||
struct stm32_mdma_chan *chan = to_stm32_mdma_chan(c);
|
||||
@ -2032,39 +2018,7 @@ index f17a9ffcd..133534663 100644
|
||||
dma_set_residue(state, residue);
|
||||
|
||||
spin_unlock_irqrestore(&chan->vchan.lock, flags);
|
||||
@@ -1345,26 +1434,16 @@ static void stm32_mdma_xfer_end(struct stm32_mdma_chan *chan)
|
||||
static irqreturn_t stm32_mdma_irq_handler(int irq, void *devid)
|
||||
{
|
||||
struct stm32_mdma_device *dmadev = devid;
|
||||
- struct stm32_mdma_chan *chan = devid;
|
||||
+ struct stm32_mdma_chan *chan;
|
||||
u32 reg, id, ccr, ien, status;
|
||||
|
||||
/* Find out which channel generates the interrupt */
|
||||
status = readl_relaxed(dmadev->base + STM32_MDMA_GISR0);
|
||||
- if (status) {
|
||||
- id = __ffs(status);
|
||||
- } else {
|
||||
- status = readl_relaxed(dmadev->base + STM32_MDMA_GISR1);
|
||||
- if (!status) {
|
||||
- dev_dbg(mdma2dev(dmadev), "spurious it\n");
|
||||
- return IRQ_NONE;
|
||||
- }
|
||||
- id = __ffs(status);
|
||||
- /*
|
||||
- * As GISR0 provides status for channel id from 0 to 31,
|
||||
- * so GISR1 provides status for channel id from 32 to 62
|
||||
- */
|
||||
- id += 32;
|
||||
+ if (!status) {
|
||||
+ dev_dbg(mdma2dev(dmadev), "spurious it\n");
|
||||
+ return IRQ_NONE;
|
||||
}
|
||||
+ id = __ffs(status);
|
||||
|
||||
chan = &dmadev->chan[id];
|
||||
if (!chan) {
|
||||
@@ -1382,9 +1461,12 @@ static irqreturn_t stm32_mdma_irq_handler(int irq, void *devid)
|
||||
@@ -1371,9 +1461,12 @@ static irqreturn_t stm32_mdma_irq_handler(int irq, void *devid)
|
||||
|
||||
if (!(status & ien)) {
|
||||
spin_unlock(&chan->vchan.lock);
|
||||
@ -2080,7 +2034,7 @@ index f17a9ffcd..133534663 100644
|
||||
return IRQ_NONE;
|
||||
}
|
||||
|
||||
@@ -1484,15 +1566,28 @@ static void stm32_mdma_free_chan_resources(struct dma_chan *c)
|
||||
@@ -1473,15 +1566,28 @@ static void stm32_mdma_free_chan_resources(struct dma_chan *c)
|
||||
chan->desc_pool = NULL;
|
||||
}
|
||||
|
||||
@ -2110,7 +2064,7 @@ index f17a9ffcd..133534663 100644
|
||||
dev_err(mdma2dev(dmadev), "Bad number of args\n");
|
||||
return NULL;
|
||||
}
|
||||
@@ -1502,6 +1597,7 @@ static struct dma_chan *stm32_mdma_of_xlate(struct of_phandle_args *dma_spec,
|
||||
@@ -1491,6 +1597,7 @@ static struct dma_chan *stm32_mdma_of_xlate(struct of_phandle_args *dma_spec,
|
||||
config.transfer_config = dma_spec->args[2];
|
||||
config.mask_addr = dma_spec->args[3];
|
||||
config.mask_data = dma_spec->args[4];
|
||||
@ -2118,7 +2072,7 @@ index f17a9ffcd..133534663 100644
|
||||
|
||||
if (config.request >= dmadev->nr_requests) {
|
||||
dev_err(mdma2dev(dmadev), "Bad request line\n");
|
||||
@@ -1513,7 +1609,7 @@ static struct dma_chan *stm32_mdma_of_xlate(struct of_phandle_args *dma_spec,
|
||||
@@ -1502,7 +1609,7 @@ static struct dma_chan *stm32_mdma_of_xlate(struct of_phandle_args *dma_spec,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@ -2127,7 +2081,7 @@ index f17a9ffcd..133534663 100644
|
||||
if (!c) {
|
||||
dev_err(mdma2dev(dmadev), "No more channels available\n");
|
||||
return NULL;
|
||||
@@ -1642,6 +1738,10 @@ static int stm32_mdma_probe(struct platform_device *pdev)
|
||||
@@ -1631,6 +1738,10 @@ static int stm32_mdma_probe(struct platform_device *pdev)
|
||||
for (i = 0; i < dmadev->nr_channels; i++) {
|
||||
chan = &dmadev->chan[i];
|
||||
chan->id = i;
|
||||
@ -2139,5 +2093,5 @@ index f17a9ffcd..133534663 100644
|
||||
vchan_init(&chan->vchan, dd);
|
||||
}
|
||||
--
|
||||
2.25.1
|
||||
2.17.1
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,9 +1,9 @@
|
||||
From 924efc211ec362bf6b42a5f18327ad6b8b0652a2 Mon Sep 17 00:00:00 2001
|
||||
From: Christophe Priouzeau <christophe.priouzeau@foss.st.com>
|
||||
Date: Tue, 31 May 2022 11:53:54 +0200
|
||||
Subject: [PATCH 07/22] ARM-5.15.24-stm32mp1-r1-HWSPINLOCK
|
||||
From 8fade81923d0fc70c09d3f2beae3466cc5e71c2d Mon Sep 17 00:00:00 2001
|
||||
From: Romuald JEANNE <romuald.jeanne@st.com>
|
||||
Date: Thu, 3 Nov 2022 15:28:58 +0100
|
||||
Subject: [PATCH 08/22] v5.15-stm32mp-r2 HWSPINLOCK
|
||||
|
||||
Signed-off-by: Christophe Priouzeau <christophe.priouzeau@foss.st.com>
|
||||
Signed-off-by: Romuald JEANNE <romuald.jeanne@st.com>
|
||||
---
|
||||
.../devicetree/bindings/hwlock/hwlock.txt | 27 +++++--
|
||||
.../bindings/hwlock/st,stm32-hwspinlock.yaml | 4 +-
|
||||
@ -14,7 +14,7 @@ Signed-off-by: Christophe Priouzeau <christophe.priouzeau@foss.st.com>
|
||||
6 files changed, 131 insertions(+), 50 deletions(-)
|
||||
|
||||
diff --git a/Documentation/devicetree/bindings/hwlock/hwlock.txt b/Documentation/devicetree/bindings/hwlock/hwlock.txt
|
||||
index 085d1f5c9..e98088a40 100644
|
||||
index 085d1f5c916a..e98088a409ba 100644
|
||||
--- a/Documentation/devicetree/bindings/hwlock/hwlock.txt
|
||||
+++ b/Documentation/devicetree/bindings/hwlock/hwlock.txt
|
||||
@@ -13,7 +13,7 @@ hwlock providers:
|
||||
@ -69,7 +69,7 @@ index 085d1f5c9..e98088a40 100644
|
||||
+ };
|
||||
\ No newline at end of file
|
||||
diff --git a/Documentation/devicetree/bindings/hwlock/st,stm32-hwspinlock.yaml b/Documentation/devicetree/bindings/hwlock/st,stm32-hwspinlock.yaml
|
||||
index 47cf9c8d9..539a1dc05 100644
|
||||
index 47cf9c8d97e9..539a1dc052b7 100644
|
||||
--- a/Documentation/devicetree/bindings/hwlock/st,stm32-hwspinlock.yaml
|
||||
+++ b/Documentation/devicetree/bindings/hwlock/st,stm32-hwspinlock.yaml
|
||||
@@ -12,7 +12,7 @@ maintainers:
|
||||
@ -91,7 +91,7 @@ index 47cf9c8d9..539a1dc05 100644
|
||||
clocks = <&rcc HSEM>;
|
||||
clock-names = "hsem";
|
||||
diff --git a/Documentation/locking/hwspinlock.rst b/Documentation/locking/hwspinlock.rst
|
||||
index 6f03713b7..605bd2dc8 100644
|
||||
index 6f03713b7003..605bd2dc8a03 100644
|
||||
--- a/Documentation/locking/hwspinlock.rst
|
||||
+++ b/Documentation/locking/hwspinlock.rst
|
||||
@@ -54,9 +54,11 @@ Should be called from a process context (might sleep).
|
||||
@ -124,7 +124,7 @@ index 6f03713b7..605bd2dc8 100644
|
||||
};
|
||||
|
||||
diff --git a/drivers/hwspinlock/hwspinlock_core.c b/drivers/hwspinlock/hwspinlock_core.c
|
||||
index fd5f5c5a5..a2197af89 100644
|
||||
index fd5f5c5a5244..a2197af8973d 100644
|
||||
--- a/drivers/hwspinlock/hwspinlock_core.c
|
||||
+++ b/drivers/hwspinlock/hwspinlock_core.c
|
||||
@@ -29,6 +29,8 @@
|
||||
@ -309,7 +309,7 @@ index fd5f5c5a5..a2197af89 100644
|
||||
return ret;
|
||||
}
|
||||
diff --git a/drivers/hwspinlock/hwspinlock_internal.h b/drivers/hwspinlock/hwspinlock_internal.h
|
||||
index 29892767b..e1f9c9600 100644
|
||||
index 29892767bb7a..e1f9c9600635 100644
|
||||
--- a/drivers/hwspinlock/hwspinlock_internal.h
|
||||
+++ b/drivers/hwspinlock/hwspinlock_internal.h
|
||||
@@ -35,11 +35,13 @@ struct hwspinlock_ops {
|
||||
@ -327,7 +327,7 @@ index 29892767b..e1f9c9600 100644
|
||||
};
|
||||
|
||||
diff --git a/drivers/hwspinlock/stm32_hwspinlock.c b/drivers/hwspinlock/stm32_hwspinlock.c
|
||||
index 3ad0ce0da..5bd11a7fa 100644
|
||||
index 3ad0ce0da4d9..5bd11a7fab65 100644
|
||||
--- a/drivers/hwspinlock/stm32_hwspinlock.c
|
||||
+++ b/drivers/hwspinlock/stm32_hwspinlock.c
|
||||
@@ -54,8 +54,23 @@ static const struct hwspinlock_ops stm32_hwspinlock_ops = {
|
||||
@ -427,5 +427,5 @@ index 3ad0ce0da..5bd11a7fa 100644
|
||||
.name = "stm32_hwspinlock",
|
||||
.of_match_table = stm32_hwpinlock_ids,
|
||||
--
|
||||
2.25.1
|
||||
2.17.1
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,9 +1,9 @@
|
||||
From d88b31f16b525087c38623bda52699ff7859dcf6 Mon Sep 17 00:00:00 2001
|
||||
From: Christophe Priouzeau <christophe.priouzeau@foss.st.com>
|
||||
Date: Tue, 31 May 2022 11:59:44 +0200
|
||||
Subject: [PATCH 11/22] ARM-5.15.24-stm32mp1-r1-MFD
|
||||
From 69ed3aa4864f05afff66ffd7596de3b45d739360 Mon Sep 17 00:00:00 2001
|
||||
From: Romuald JEANNE <romuald.jeanne@st.com>
|
||||
Date: Thu, 3 Nov 2022 15:55:56 +0100
|
||||
Subject: [PATCH 12/22] v5.15-stm32mp-r2 MFD
|
||||
|
||||
Signed-off-by: Christophe Priouzeau <christophe.priouzeau@foss.st.com>
|
||||
Signed-off-by: Romuald JEANNE <romuald.jeanne@st.com>
|
||||
---
|
||||
.../bindings/mfd/st,stm32-lptimer.yaml | 3 +
|
||||
.../bindings/mfd/st,stm32mp1-pwr.txt | 57 +++
|
||||
@ -19,7 +19,7 @@ Signed-off-by: Christophe Priouzeau <christophe.priouzeau@foss.st.com>
|
||||
create mode 100644 drivers/mfd/stm32-pwr.c
|
||||
|
||||
diff --git a/Documentation/devicetree/bindings/mfd/st,stm32-lptimer.yaml b/Documentation/devicetree/bindings/mfd/st,stm32-lptimer.yaml
|
||||
index 8bcea8dd7..6e518ae12 100644
|
||||
index 8bcea8dd7d90..6e518ae12e7f 100644
|
||||
--- a/Documentation/devicetree/bindings/mfd/st,stm32-lptimer.yaml
|
||||
+++ b/Documentation/devicetree/bindings/mfd/st,stm32-lptimer.yaml
|
||||
@@ -44,6 +44,9 @@ properties:
|
||||
@ -34,7 +34,7 @@ index 8bcea8dd7..6e518ae12 100644
|
||||
|
||||
diff --git a/Documentation/devicetree/bindings/mfd/st,stm32mp1-pwr.txt b/Documentation/devicetree/bindings/mfd/st,stm32mp1-pwr.txt
|
||||
new file mode 100644
|
||||
index 000000000..b5f414a19
|
||||
index 000000000000..b5f414a19120
|
||||
--- /dev/null
|
||||
+++ b/Documentation/devicetree/bindings/mfd/st,stm32mp1-pwr.txt
|
||||
@@ -0,0 +1,57 @@
|
||||
@ -96,7 +96,7 @@ index 000000000..b5f414a19
|
||||
+};
|
||||
+
|
||||
diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
|
||||
index d2f345245..181730a69 100644
|
||||
index d2f345245538..181730a693a1 100644
|
||||
--- a/drivers/mfd/Kconfig
|
||||
+++ b/drivers/mfd/Kconfig
|
||||
@@ -2042,6 +2042,16 @@ config MFD_STPMIC1
|
||||
@ -117,7 +117,7 @@ index d2f345245..181730a69 100644
|
||||
tristate "Support for STMicroelectronics Multi-Function eXpander (STMFX)"
|
||||
depends on I2C
|
||||
diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile
|
||||
index 2ba6646e8..68201ea8e 100644
|
||||
index 2ba6646e874c..68201ea8e037 100644
|
||||
--- a/drivers/mfd/Makefile
|
||||
+++ b/drivers/mfd/Makefile
|
||||
@@ -255,6 +255,7 @@ obj-$(CONFIG_MFD_SUN4I_GPADC) += sun4i-gpadc.o
|
||||
@ -130,7 +130,7 @@ index 2ba6646e8..68201ea8e 100644
|
||||
obj-$(CONFIG_RAVE_SP_CORE) += rave-sp.o
|
||||
diff --git a/drivers/mfd/stm32-pwr.c b/drivers/mfd/stm32-pwr.c
|
||||
new file mode 100644
|
||||
index 000000000..c06e2fb6c
|
||||
index 000000000000..c06e2fb6c0eb
|
||||
--- /dev/null
|
||||
+++ b/drivers/mfd/stm32-pwr.c
|
||||
@@ -0,0 +1,423 @@
|
||||
@ -558,7 +558,7 @@ index 000000000..c06e2fb6c
|
||||
+arch_initcall(stm32_pwr_init);
|
||||
+module_exit(stm32_pwr_exit);
|
||||
diff --git a/drivers/mfd/stmfx.c b/drivers/mfd/stmfx.c
|
||||
index e095a3930..b411d2958 100644
|
||||
index e095a3930142..b411d2958c18 100644
|
||||
--- a/drivers/mfd/stmfx.c
|
||||
+++ b/drivers/mfd/stmfx.c
|
||||
@@ -81,13 +81,11 @@ static struct mfd_cell stmfx_cells[] = {
|
||||
@ -576,7 +576,7 @@ index e095a3930..b411d2958 100644
|
||||
.resources = stmfx_ts_resources,
|
||||
.num_resources = ARRAY_SIZE(stmfx_ts_resources),
|
||||
diff --git a/drivers/mfd/stpmic1.c b/drivers/mfd/stpmic1.c
|
||||
index eb3da558c..40eef5d18 100644
|
||||
index eb3da558c3fb..40eef5d18b90 100644
|
||||
--- a/drivers/mfd/stpmic1.c
|
||||
+++ b/drivers/mfd/stpmic1.c
|
||||
@@ -170,6 +170,9 @@ static int stpmic1_suspend(struct device *dev)
|
||||
@ -600,7 +600,7 @@ index eb3da558c..40eef5d18 100644
|
||||
|
||||
return 0;
|
||||
diff --git a/drivers/mfd/wm8994-core.c b/drivers/mfd/wm8994-core.c
|
||||
index 7b1d27072..e2c98c66b 100644
|
||||
index 7b1d270722ba..e2c98c66bf9f 100644
|
||||
--- a/drivers/mfd/wm8994-core.c
|
||||
+++ b/drivers/mfd/wm8994-core.c
|
||||
@@ -185,6 +185,12 @@ static int wm8994_resume(struct device *dev)
|
||||
@ -617,7 +617,7 @@ index 7b1d27072..e2c98c66b 100644
|
||||
wm8994->supplies);
|
||||
if (ret != 0) {
|
||||
diff --git a/include/linux/mfd/stm32-timers.h b/include/linux/mfd/stm32-timers.h
|
||||
index f8db83aed..f48f04dc4 100644
|
||||
index f8db83aedb2b..f48f04dc4187 100644
|
||||
--- a/include/linux/mfd/stm32-timers.h
|
||||
+++ b/include/linux/mfd/stm32-timers.h
|
||||
@@ -31,6 +31,7 @@
|
||||
@ -629,5 +629,5 @@ index f8db83aed..f48f04dc4 100644
|
||||
#define TIM_CR1_CEN BIT(0) /* Counter Enable */
|
||||
#define TIM_CR1_DIR BIT(4) /* Counter Direction */
|
||||
--
|
||||
2.25.1
|
||||
2.17.1
|
||||
|
||||
@ -0,0 +1,341 @@
|
||||
From 99e2eb7f37c25b7e9a5e0b18af405d8bae95df12 Mon Sep 17 00:00:00 2001
|
||||
From: Romuald JEANNE <romuald.jeanne@st.com>
|
||||
Date: Thu, 3 Nov 2022 15:56:26 +0100
|
||||
Subject: [PATCH 13/22] v5.15-stm32mp-r2 MMC
|
||||
|
||||
Signed-off-by: Romuald JEANNE <romuald.jeanne@st.com>
|
||||
---
|
||||
.../devicetree/bindings/mmc/arm,pl18x.yaml | 6 ++
|
||||
drivers/mmc/host/mmci.c | 7 +-
|
||||
drivers/mmc/host/mmci_stm32_sdmmc.c | 93 +++++++++++++++----
|
||||
drivers/mtd/nand/raw/stm32_fmc2_nand.c | 40 +++++++-
|
||||
4 files changed, 125 insertions(+), 21 deletions(-)
|
||||
|
||||
diff --git a/Documentation/devicetree/bindings/mmc/arm,pl18x.yaml b/Documentation/devicetree/bindings/mmc/arm,pl18x.yaml
|
||||
index 47595cb483be..eed54bee7665 100644
|
||||
--- a/Documentation/devicetree/bindings/mmc/arm,pl18x.yaml
|
||||
+++ b/Documentation/devicetree/bindings/mmc/arm,pl18x.yaml
|
||||
@@ -53,6 +53,12 @@ properties:
|
||||
items:
|
||||
- const: arm,pl18x
|
||||
- const: arm,primecell
|
||||
+ - description: Entry for STMicroelectronics variant of PL18x.
|
||||
+ This dedicated compatible is used by bootloaders.
|
||||
+ items:
|
||||
+ - const: st,stm32-sdmmc2
|
||||
+ - const: arm,pl18x
|
||||
+ - const: arm,primecell
|
||||
|
||||
clocks:
|
||||
description: One or two clocks, the "apb_pclk" and the "MCLK"
|
||||
diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c
|
||||
index 3765e2f4ad98..3d416c4edc7c 100644
|
||||
--- a/drivers/mmc/host/mmci.c
|
||||
+++ b/drivers/mmc/host/mmci.c
|
||||
@@ -280,7 +280,7 @@ static struct variant_data variant_stm32_sdmmc = {
|
||||
static struct variant_data variant_stm32_sdmmcv2 = {
|
||||
.fifosize = 16 * 4,
|
||||
.fifohalfsize = 8 * 4,
|
||||
- .f_max = 208000000,
|
||||
+ .f_max = 267000000,
|
||||
.stm32_clkdiv = true,
|
||||
.cmdreg_cpsm_enable = MCI_CPSM_STM32_ENABLE,
|
||||
.cmdreg_lrsp_crc = MCI_CPSM_STM32_LRSP_CRC,
|
||||
@@ -2431,6 +2431,11 @@ static const struct amba_id mmci_ids[] = {
|
||||
.mask = 0xf0ffffff,
|
||||
.data = &variant_stm32_sdmmcv2,
|
||||
},
|
||||
+ {
|
||||
+ .id = 0x20253180,
|
||||
+ .mask = 0xf0ffffff,
|
||||
+ .data = &variant_stm32_sdmmcv2,
|
||||
+ },
|
||||
/* Qualcomm variants */
|
||||
{
|
||||
.id = 0x00051180,
|
||||
diff --git a/drivers/mmc/host/mmci_stm32_sdmmc.c b/drivers/mmc/host/mmci_stm32_sdmmc.c
|
||||
index 4cceb9bab036..60bca78a72b1 100644
|
||||
--- a/drivers/mmc/host/mmci_stm32_sdmmc.c
|
||||
+++ b/drivers/mmc/host/mmci_stm32_sdmmc.c
|
||||
@@ -43,6 +43,9 @@ struct sdmmc_lli_desc {
|
||||
struct sdmmc_idma {
|
||||
dma_addr_t sg_dma;
|
||||
void *sg_cpu;
|
||||
+ dma_addr_t bounce_dma_addr;
|
||||
+ void *bounce_buf;
|
||||
+ bool use_bounce_buffer;
|
||||
};
|
||||
|
||||
struct sdmmc_dlyb {
|
||||
@@ -54,6 +57,8 @@ struct sdmmc_dlyb {
|
||||
static int sdmmc_idma_validate_data(struct mmci_host *host,
|
||||
struct mmc_data *data)
|
||||
{
|
||||
+ struct sdmmc_idma *idma = host->dma_priv;
|
||||
+ struct device *dev = mmc_dev(host->mmc);
|
||||
struct scatterlist *sg;
|
||||
int i;
|
||||
|
||||
@@ -61,41 +66,69 @@ static int sdmmc_idma_validate_data(struct mmci_host *host,
|
||||
* idma has constraints on idmabase & idmasize for each element
|
||||
* excepted the last element which has no constraint on idmasize
|
||||
*/
|
||||
+ idma->use_bounce_buffer = false;
|
||||
for_each_sg(data->sg, sg, data->sg_len - 1, i) {
|
||||
if (!IS_ALIGNED(sg->offset, sizeof(u32)) ||
|
||||
!IS_ALIGNED(sg->length, SDMMC_IDMA_BURST)) {
|
||||
- dev_err(mmc_dev(host->mmc),
|
||||
+ dev_dbg(mmc_dev(host->mmc),
|
||||
"unaligned scatterlist: ofst:%x length:%d\n",
|
||||
data->sg->offset, data->sg->length);
|
||||
- return -EINVAL;
|
||||
+ goto use_bounce_buffer;
|
||||
}
|
||||
}
|
||||
|
||||
if (!IS_ALIGNED(sg->offset, sizeof(u32))) {
|
||||
- dev_err(mmc_dev(host->mmc),
|
||||
+ dev_dbg(mmc_dev(host->mmc),
|
||||
"unaligned last scatterlist: ofst:%x length:%d\n",
|
||||
data->sg->offset, data->sg->length);
|
||||
- return -EINVAL;
|
||||
+ goto use_bounce_buffer;
|
||||
}
|
||||
|
||||
+ return 0;
|
||||
+
|
||||
+use_bounce_buffer:
|
||||
+ if (!idma->bounce_buf) {
|
||||
+ idma->bounce_buf = dmam_alloc_coherent(dev,
|
||||
+ host->mmc->max_req_size,
|
||||
+ &idma->bounce_dma_addr,
|
||||
+ GFP_KERNEL);
|
||||
+ if (!idma->bounce_buf) {
|
||||
+ dev_err(dev, "Unable to map allocate DMA bounce buffer.\n");
|
||||
+ return -ENOMEM;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ idma->use_bounce_buffer = true;
|
||||
+
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int _sdmmc_idma_prep_data(struct mmci_host *host,
|
||||
struct mmc_data *data)
|
||||
{
|
||||
- int n_elem;
|
||||
+ struct sdmmc_idma *idma = host->dma_priv;
|
||||
|
||||
- n_elem = dma_map_sg(mmc_dev(host->mmc),
|
||||
- data->sg,
|
||||
- data->sg_len,
|
||||
- mmc_get_dma_dir(data));
|
||||
+ if (idma->use_bounce_buffer) {
|
||||
+ if (data->flags & MMC_DATA_WRITE) {
|
||||
+ unsigned int xfer_bytes = data->blksz * data->blocks;
|
||||
|
||||
- if (!n_elem) {
|
||||
- dev_err(mmc_dev(host->mmc), "dma_map_sg failed\n");
|
||||
- return -EINVAL;
|
||||
- }
|
||||
+ sg_copy_to_buffer(data->sg, data->sg_len,
|
||||
+ idma->bounce_buf, xfer_bytes);
|
||||
+ dma_wmb();
|
||||
+ }
|
||||
+ } else {
|
||||
+ int n_elem;
|
||||
+
|
||||
+ n_elem = dma_map_sg(mmc_dev(host->mmc),
|
||||
+ data->sg,
|
||||
+ data->sg_len,
|
||||
+ mmc_get_dma_dir(data));
|
||||
|
||||
+ if (!n_elem) {
|
||||
+ dev_err(mmc_dev(host->mmc), "dma_map_sg failed\n");
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+ }
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -112,8 +145,19 @@ static int sdmmc_idma_prep_data(struct mmci_host *host,
|
||||
static void sdmmc_idma_unprep_data(struct mmci_host *host,
|
||||
struct mmc_data *data, int err)
|
||||
{
|
||||
- dma_unmap_sg(mmc_dev(host->mmc), data->sg, data->sg_len,
|
||||
- mmc_get_dma_dir(data));
|
||||
+ struct sdmmc_idma *idma = host->dma_priv;
|
||||
+
|
||||
+ if (idma->use_bounce_buffer) {
|
||||
+ if (data->flags & MMC_DATA_READ) {
|
||||
+ unsigned int xfer_bytes = data->blksz * data->blocks;
|
||||
+
|
||||
+ sg_copy_from_buffer(data->sg, data->sg_len,
|
||||
+ idma->bounce_buf, xfer_bytes);
|
||||
+ }
|
||||
+ } else {
|
||||
+ dma_unmap_sg(mmc_dev(host->mmc), data->sg, data->sg_len,
|
||||
+ mmc_get_dma_dir(data));
|
||||
+ }
|
||||
}
|
||||
|
||||
static int sdmmc_idma_setup(struct mmci_host *host)
|
||||
@@ -137,6 +181,8 @@ static int sdmmc_idma_setup(struct mmci_host *host)
|
||||
host->mmc->max_segs = SDMMC_LLI_BUF_LEN /
|
||||
sizeof(struct sdmmc_lli_desc);
|
||||
host->mmc->max_seg_size = host->variant->stm32_idmabsize_mask;
|
||||
+
|
||||
+ host->mmc->max_req_size = SZ_1M;
|
||||
} else {
|
||||
host->mmc->max_segs = 1;
|
||||
host->mmc->max_seg_size = host->mmc->max_req_size;
|
||||
@@ -154,8 +200,16 @@ static int sdmmc_idma_start(struct mmci_host *host, unsigned int *datactrl)
|
||||
struct scatterlist *sg;
|
||||
int i;
|
||||
|
||||
- if (!host->variant->dma_lli || data->sg_len == 1) {
|
||||
- writel_relaxed(sg_dma_address(data->sg),
|
||||
+ if (!host->variant->dma_lli || data->sg_len == 1 ||
|
||||
+ idma->use_bounce_buffer) {
|
||||
+ u32 dma_addr;
|
||||
+
|
||||
+ if (idma->use_bounce_buffer)
|
||||
+ dma_addr = idma->bounce_dma_addr;
|
||||
+ else
|
||||
+ dma_addr = sg_dma_address(data->sg);
|
||||
+
|
||||
+ writel_relaxed(dma_addr,
|
||||
host->base + MMCI_STM32_IDMABASE0R);
|
||||
writel_relaxed(MMCI_STM32_IDMAEN,
|
||||
host->base + MMCI_STM32_IDMACTRLR);
|
||||
@@ -241,11 +295,12 @@ static void mmci_sdmmc_set_clkreg(struct mmci_host *host, unsigned int desired)
|
||||
|
||||
/*
|
||||
* SDMMC_FBCK is selected when an external Delay Block is needed
|
||||
- * with SDR104.
|
||||
+ * with SDR104 or HS200.
|
||||
*/
|
||||
if (host->mmc->ios.timing >= MMC_TIMING_UHS_SDR50) {
|
||||
clk |= MCI_STM32_CLK_BUSSPEED;
|
||||
- if (host->mmc->ios.timing == MMC_TIMING_UHS_SDR104) {
|
||||
+ if (host->mmc->ios.timing == MMC_TIMING_UHS_SDR104 ||
|
||||
+ host->mmc->ios.timing == MMC_TIMING_MMC_HS200) {
|
||||
clk &= ~MCI_STM32_CLK_SEL_MSK;
|
||||
clk |= MCI_STM32_CLK_SELFBCK;
|
||||
}
|
||||
diff --git a/drivers/mtd/nand/raw/stm32_fmc2_nand.c b/drivers/mtd/nand/raw/stm32_fmc2_nand.c
|
||||
index 1c277fbb91f2..733f9857e801 100644
|
||||
--- a/drivers/mtd/nand/raw/stm32_fmc2_nand.c
|
||||
+++ b/drivers/mtd/nand/raw/stm32_fmc2_nand.c
|
||||
@@ -9,6 +9,7 @@
|
||||
#include <linux/dmaengine.h>
|
||||
#include <linux/dma-mapping.h>
|
||||
#include <linux/errno.h>
|
||||
+#include <linux/gpio/consumer.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/iopoll.h>
|
||||
#include <linux/mfd/syscon.h>
|
||||
@@ -231,6 +232,7 @@ struct stm32_fmc2_timings {
|
||||
|
||||
struct stm32_fmc2_nand {
|
||||
struct nand_chip chip;
|
||||
+ struct gpio_desc *wp_gpio;
|
||||
struct stm32_fmc2_timings timings;
|
||||
int ncs;
|
||||
int cs_used[FMC2_MAX_CE];
|
||||
@@ -1747,6 +1749,18 @@ static const struct nand_controller_ops stm32_fmc2_nfc_controller_ops = {
|
||||
.setup_interface = stm32_fmc2_nfc_setup_interface,
|
||||
};
|
||||
|
||||
+static void stm32_fmc2_nfc_wp_enable(struct stm32_fmc2_nand *nand)
|
||||
+{
|
||||
+ if (nand->wp_gpio)
|
||||
+ gpiod_set_value(nand->wp_gpio, 1);
|
||||
+}
|
||||
+
|
||||
+static void stm32_fmc2_nfc_wp_disable(struct stm32_fmc2_nand *nand)
|
||||
+{
|
||||
+ if (nand->wp_gpio)
|
||||
+ gpiod_set_value(nand->wp_gpio, 0);
|
||||
+}
|
||||
+
|
||||
static int stm32_fmc2_nfc_parse_child(struct stm32_fmc2_nfc *nfc,
|
||||
struct device_node *dn)
|
||||
{
|
||||
@@ -1785,6 +1799,18 @@ static int stm32_fmc2_nfc_parse_child(struct stm32_fmc2_nfc *nfc,
|
||||
nand->cs_used[i] = cs;
|
||||
}
|
||||
|
||||
+ nand->wp_gpio = devm_gpiod_get_from_of_node(nfc->dev, dn,
|
||||
+ "wp-gpios", 0,
|
||||
+ GPIOD_OUT_HIGH, "wp");
|
||||
+ if (IS_ERR(nand->wp_gpio)) {
|
||||
+ ret = PTR_ERR(nand->wp_gpio);
|
||||
+ if (ret != -ENOENT)
|
||||
+ return dev_err_probe(nfc->dev, ret,
|
||||
+ "failed to request WP GPIO\n");
|
||||
+
|
||||
+ nand->wp_gpio = NULL;
|
||||
+ }
|
||||
+
|
||||
nand_set_flash_node(&nand->chip, dn);
|
||||
|
||||
return 0;
|
||||
@@ -1960,10 +1986,12 @@ static int stm32_fmc2_nfc_probe(struct platform_device *pdev)
|
||||
chip->options |= NAND_BUSWIDTH_AUTO | NAND_NO_SUBPAGE_WRITE |
|
||||
NAND_USES_DMA;
|
||||
|
||||
+ stm32_fmc2_nfc_wp_disable(nand);
|
||||
+
|
||||
/* Scan to find existence of the device */
|
||||
ret = nand_scan(chip, nand->ncs);
|
||||
if (ret)
|
||||
- goto err_release_dma;
|
||||
+ goto err_wp_enable;
|
||||
|
||||
ret = mtd_device_register(mtd, NULL, 0);
|
||||
if (ret)
|
||||
@@ -1976,6 +2004,9 @@ static int stm32_fmc2_nfc_probe(struct platform_device *pdev)
|
||||
err_nand_cleanup:
|
||||
nand_cleanup(chip);
|
||||
|
||||
+err_wp_enable:
|
||||
+ stm32_fmc2_nfc_wp_enable(nand);
|
||||
+
|
||||
err_release_dma:
|
||||
if (nfc->dma_ecc_ch)
|
||||
dma_release_channel(nfc->dma_ecc_ch);
|
||||
@@ -2016,15 +2047,20 @@ static int stm32_fmc2_nfc_remove(struct platform_device *pdev)
|
||||
|
||||
clk_disable_unprepare(nfc->clk);
|
||||
|
||||
+ stm32_fmc2_nfc_wp_enable(nand);
|
||||
+
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int __maybe_unused stm32_fmc2_nfc_suspend(struct device *dev)
|
||||
{
|
||||
struct stm32_fmc2_nfc *nfc = dev_get_drvdata(dev);
|
||||
+ struct stm32_fmc2_nand *nand = &nfc->nand;
|
||||
|
||||
clk_disable_unprepare(nfc->clk);
|
||||
|
||||
+ stm32_fmc2_nfc_wp_enable(nand);
|
||||
+
|
||||
pinctrl_pm_select_sleep_state(dev);
|
||||
|
||||
return 0;
|
||||
@@ -2046,6 +2082,8 @@ static int __maybe_unused stm32_fmc2_nfc_resume(struct device *dev)
|
||||
|
||||
stm32_fmc2_nfc_init(nfc);
|
||||
|
||||
+ stm32_fmc2_nfc_wp_disable(nand);
|
||||
+
|
||||
for (chip_cs = 0; chip_cs < FMC2_MAX_CE; chip_cs++) {
|
||||
if (!(nfc->cs_assigned & BIT(chip_cs)))
|
||||
continue;
|
||||
--
|
||||
2.17.1
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,9 +1,9 @@
|
||||
From 004f2714f71a2ebf3f233b3fae5a3e0e14b5e68e Mon Sep 17 00:00:00 2001
|
||||
From: Christophe Priouzeau <christophe.priouzeau@foss.st.com>
|
||||
Date: Tue, 31 May 2022 12:01:13 +0200
|
||||
Subject: [PATCH 14/22] ARM-5.15.24-stm32mp1-r1-PERF
|
||||
From df5b54b2fc266fd51fff7130ee8707027e2aa3ea Mon Sep 17 00:00:00 2001
|
||||
From: Romuald JEANNE <romuald.jeanne@st.com>
|
||||
Date: Thu, 3 Nov 2022 15:58:41 +0100
|
||||
Subject: [PATCH 15/22] v5.15-stm32mp-r2 PERF
|
||||
|
||||
Signed-off-by: Christophe Priouzeau <christophe.priouzeau@foss.st.com>
|
||||
Signed-off-by: Romuald JEANNE <romuald.jeanne@st.com>
|
||||
---
|
||||
Documentation/admin-guide/perf/index.rst | 1 +
|
||||
.../admin-guide/perf/stm32-ddr-pmu.rst | 44 ++
|
||||
@ -17,7 +17,7 @@ Signed-off-by: Christophe Priouzeau <christophe.priouzeau@foss.st.com>
|
||||
create mode 100644 drivers/perf/stm32_ddr_pmu.c
|
||||
|
||||
diff --git a/Documentation/admin-guide/perf/index.rst b/Documentation/admin-guide/perf/index.rst
|
||||
index 5a8f2529a..9f68f68be 100644
|
||||
index 5a8f2529a033..9f68f68be161 100644
|
||||
--- a/Documentation/admin-guide/perf/index.rst
|
||||
+++ b/Documentation/admin-guide/perf/index.rst
|
||||
@@ -11,6 +11,7 @@ Performance monitor support
|
||||
@ -30,7 +30,7 @@ index 5a8f2529a..9f68f68be 100644
|
||||
xgene-pmu
|
||||
diff --git a/Documentation/admin-guide/perf/stm32-ddr-pmu.rst b/Documentation/admin-guide/perf/stm32-ddr-pmu.rst
|
||||
new file mode 100644
|
||||
index 000000000..db647fc1a
|
||||
index 000000000000..db647fc1acad
|
||||
--- /dev/null
|
||||
+++ b/Documentation/admin-guide/perf/stm32-ddr-pmu.rst
|
||||
@@ -0,0 +1,44 @@
|
||||
@ -80,7 +80,7 @@ index 000000000..db647fc1a
|
||||
+
|
||||
diff --git a/Documentation/devicetree/bindings/perf/stm32-ddr-pmu.yaml b/Documentation/devicetree/bindings/perf/stm32-ddr-pmu.yaml
|
||||
new file mode 100644
|
||||
index 000000000..085f2886e
|
||||
index 000000000000..085f2886e580
|
||||
--- /dev/null
|
||||
+++ b/Documentation/devicetree/bindings/perf/stm32-ddr-pmu.yaml
|
||||
@@ -0,0 +1,44 @@
|
||||
@ -129,7 +129,7 @@ index 000000000..085f2886e
|
||||
+ };
|
||||
+...
|
||||
diff --git a/drivers/perf/Kconfig b/drivers/perf/Kconfig
|
||||
index 77522e5ef..fb55e0bbf 100644
|
||||
index 77522e5efe11..fb55e0bbfb90 100644
|
||||
--- a/drivers/perf/Kconfig
|
||||
+++ b/drivers/perf/Kconfig
|
||||
@@ -106,6 +106,13 @@ config QCOM_L3_PMU
|
||||
@ -147,7 +147,7 @@ index 77522e5ef..fb55e0bbf 100644
|
||||
tristate "Cavium ThunderX2 SoC PMU UNCORE"
|
||||
depends on ARCH_THUNDER2 && ARM64 && ACPI && NUMA
|
||||
diff --git a/drivers/perf/Makefile b/drivers/perf/Makefile
|
||||
index 5260b116c..f1d363307 100644
|
||||
index 5260b116c7da..f1d3633075b7 100644
|
||||
--- a/drivers/perf/Makefile
|
||||
+++ b/drivers/perf/Makefile
|
||||
@@ -10,6 +10,7 @@ obj-$(CONFIG_FSL_IMX8_DDR_PMU) += fsl_imx8_ddr_perf.o
|
||||
@ -160,7 +160,7 @@ index 5260b116c..f1d363307 100644
|
||||
obj-$(CONFIG_ARM_SPE_PMU) += arm_spe_pmu.o
|
||||
diff --git a/drivers/perf/stm32_ddr_pmu.c b/drivers/perf/stm32_ddr_pmu.c
|
||||
new file mode 100644
|
||||
index 000000000..c0082109a
|
||||
index 000000000000..c0082109aa16
|
||||
--- /dev/null
|
||||
+++ b/drivers/perf/stm32_ddr_pmu.c
|
||||
@@ -0,0 +1,439 @@
|
||||
@ -604,5 +604,5 @@ index 000000000..c0082109a
|
||||
+MODULE_AUTHOR("Gerald Baeza <gerald.baeza@st.com>");
|
||||
+MODULE_LICENSE("GPL v2");
|
||||
--
|
||||
2.25.1
|
||||
2.17.1
|
||||
|
||||
@ -1,24 +1,24 @@
|
||||
From 36353ea45646109b55656e806ea70c10fce2453b Mon Sep 17 00:00:00 2001
|
||||
From: Christophe Priouzeau <christophe.priouzeau@foss.st.com>
|
||||
Date: Tue, 31 May 2022 12:04:31 +0200
|
||||
Subject: [PATCH 15/22] ARM-5.15.24-stm32mp1-r1-PHY-USB
|
||||
From f593955537b76035054bfc42586146cd974c9ae3 Mon Sep 17 00:00:00 2001
|
||||
From: Romuald JEANNE <romuald.jeanne@st.com>
|
||||
Date: Thu, 3 Nov 2022 15:59:56 +0100
|
||||
Subject: [PATCH 16/22] v5.15-stm32mp-r2 PHY-USB
|
||||
|
||||
Signed-off-by: Christophe Priouzeau <christophe.priouzeau@foss.st.com>
|
||||
Signed-off-by: Romuald JEANNE <romuald.jeanne@st.com>
|
||||
---
|
||||
.../bindings/phy/phy-stm32-usbphyc.yaml | 133 +++
|
||||
.../devicetree/bindings/usb/dwc2.yaml | 33 +-
|
||||
.../devicetree/bindings/usb/generic-ehci.yaml | 5 +
|
||||
.../devicetree/bindings/usb/generic-ohci.yaml | 5 +
|
||||
.../bindings/usb/st,typec-stm32g0.yaml | 83 ++
|
||||
drivers/phy/st/phy-stm32-usbphyc.c | 232 ++++-
|
||||
drivers/phy/st/phy-stm32-usbphyc.c | 233 +++++-
|
||||
drivers/usb/core/hcd.c | 9 +-
|
||||
drivers/usb/core/phy.c | 22 +-
|
||||
drivers/usb/core/phy.h | 6 +-
|
||||
drivers/usb/dwc2/core.h | 24 +-
|
||||
drivers/usb/dwc2/core.h | 22 +-
|
||||
drivers/usb/dwc2/core_intr.c | 3 +-
|
||||
drivers/usb/dwc2/debugfs.c | 4 +-
|
||||
drivers/usb/dwc2/drd.c | 85 +-
|
||||
drivers/usb/dwc2/gadget.c | 5 +-
|
||||
drivers/usb/dwc2/drd.c | 79 +-
|
||||
drivers/usb/dwc2/gadget.c | 2 +-
|
||||
drivers/usb/dwc2/hcd.c | 61 +-
|
||||
drivers/usb/dwc2/params.c | 75 +-
|
||||
drivers/usb/dwc2/platform.c | 82 +-
|
||||
@ -26,15 +26,15 @@ Signed-off-by: Christophe Priouzeau <christophe.priouzeau@foss.st.com>
|
||||
drivers/usb/host/ohci-platform.c | 14 +-
|
||||
drivers/usb/typec/ucsi/Kconfig | 10 +
|
||||
drivers/usb/typec/ucsi/Makefile | 1 +
|
||||
drivers/usb/typec/ucsi/ucsi.c | 42 +-
|
||||
drivers/usb/typec/ucsi/ucsi.c | 49 +-
|
||||
drivers/usb/typec/ucsi/ucsi.h | 2 +
|
||||
drivers/usb/typec/ucsi/ucsi_stm32g0.c | 801 ++++++++++++++++++
|
||||
24 files changed, 1584 insertions(+), 169 deletions(-)
|
||||
drivers/usb/typec/ucsi/ucsi_stm32g0.c | 770 ++++++++++++++++++
|
||||
24 files changed, 1551 insertions(+), 168 deletions(-)
|
||||
create mode 100644 Documentation/devicetree/bindings/usb/st,typec-stm32g0.yaml
|
||||
create mode 100644 drivers/usb/typec/ucsi/ucsi_stm32g0.c
|
||||
|
||||
diff --git a/Documentation/devicetree/bindings/phy/phy-stm32-usbphyc.yaml b/Documentation/devicetree/bindings/phy/phy-stm32-usbphyc.yaml
|
||||
index 3329f1d33..750ce7074 100644
|
||||
index 3329f1d33a4f..750ce7074648 100644
|
||||
--- a/Documentation/devicetree/bindings/phy/phy-stm32-usbphyc.yaml
|
||||
+++ b/Documentation/devicetree/bindings/phy/phy-stm32-usbphyc.yaml
|
||||
@@ -74,6 +74,10 @@ patternProperties:
|
||||
@ -199,7 +199,7 @@ index 3329f1d33..750ce7074 100644
|
||||
};
|
||||
...
|
||||
diff --git a/Documentation/devicetree/bindings/usb/dwc2.yaml b/Documentation/devicetree/bindings/usb/dwc2.yaml
|
||||
index 10c7d9b6c..882a2f1e0 100644
|
||||
index 10c7d9b6cc53..882a2f1e0738 100644
|
||||
--- a/Documentation/devicetree/bindings/usb/dwc2.yaml
|
||||
+++ b/Documentation/devicetree/bindings/usb/dwc2.yaml
|
||||
@@ -9,6 +9,9 @@ title: DesignWare HS OTG USB 2.0 controller Bindings
|
||||
@ -258,10 +258,10 @@ index 10c7d9b6c..882a2f1e0 100644
|
||||
- compatible
|
||||
- reg
|
||||
diff --git a/Documentation/devicetree/bindings/usb/generic-ehci.yaml b/Documentation/devicetree/bindings/usb/generic-ehci.yaml
|
||||
index 891349762..c134aabec 100644
|
||||
index cb5da1df8d40..0b12acf804ec 100644
|
||||
--- a/Documentation/devicetree/bindings/usb/generic-ehci.yaml
|
||||
+++ b/Documentation/devicetree/bindings/usb/generic-ehci.yaml
|
||||
@@ -148,6 +148,11 @@ properties:
|
||||
@@ -149,6 +149,11 @@ properties:
|
||||
- host
|
||||
- otg
|
||||
|
||||
@ -274,10 +274,10 @@ index 891349762..c134aabec 100644
|
||||
- compatible
|
||||
- reg
|
||||
diff --git a/Documentation/devicetree/bindings/usb/generic-ohci.yaml b/Documentation/devicetree/bindings/usb/generic-ohci.yaml
|
||||
index acbf94fa5..1efa1eed9 100644
|
||||
index d5fd3aa53ed2..ef237675a83a 100644
|
||||
--- a/Documentation/devicetree/bindings/usb/generic-ohci.yaml
|
||||
+++ b/Documentation/devicetree/bindings/usb/generic-ohci.yaml
|
||||
@@ -115,6 +115,11 @@ properties:
|
||||
@@ -116,6 +116,11 @@ properties:
|
||||
- host
|
||||
- otg
|
||||
|
||||
@ -291,7 +291,7 @@ index acbf94fa5..1efa1eed9 100644
|
||||
- reg
|
||||
diff --git a/Documentation/devicetree/bindings/usb/st,typec-stm32g0.yaml b/Documentation/devicetree/bindings/usb/st,typec-stm32g0.yaml
|
||||
new file mode 100644
|
||||
index 000000000..b2729bd01
|
||||
index 000000000000..b2729bd015a1
|
||||
--- /dev/null
|
||||
+++ b/Documentation/devicetree/bindings/usb/st,typec-stm32g0.yaml
|
||||
@@ -0,0 +1,83 @@
|
||||
@ -379,7 +379,7 @@ index 000000000..b2729bd01
|
||||
+ };
|
||||
+...
|
||||
diff --git a/drivers/phy/st/phy-stm32-usbphyc.c b/drivers/phy/st/phy-stm32-usbphyc.c
|
||||
index da05642d3..d3d1235b9 100644
|
||||
index cd0747ab6267..af198f7c3f09 100644
|
||||
--- a/drivers/phy/st/phy-stm32-usbphyc.c
|
||||
+++ b/drivers/phy/st/phy-stm32-usbphyc.c
|
||||
@@ -12,6 +12,7 @@
|
||||
@ -493,7 +493,7 @@ index da05642d3..d3d1235b9 100644
|
||||
};
|
||||
|
||||
struct stm32_usbphyc {
|
||||
@@ -295,6 +376,12 @@ static int stm32_usbphyc_phy_exit(struct phy *phy)
|
||||
@@ -297,6 +378,12 @@ static int stm32_usbphyc_phy_exit(struct phy *phy)
|
||||
static int stm32_usbphyc_phy_power_on(struct phy *phy)
|
||||
{
|
||||
struct stm32_usbphyc_phy *usbphyc_phy = phy_get_drvdata(phy);
|
||||
@ -506,7 +506,7 @@ index da05642d3..d3d1235b9 100644
|
||||
|
||||
if (usbphyc_phy->vbus)
|
||||
return regulator_enable(usbphyc_phy->vbus);
|
||||
@@ -305,6 +392,12 @@ static int stm32_usbphyc_phy_power_on(struct phy *phy)
|
||||
@@ -307,6 +394,12 @@ static int stm32_usbphyc_phy_power_on(struct phy *phy)
|
||||
static int stm32_usbphyc_phy_power_off(struct phy *phy)
|
||||
{
|
||||
struct stm32_usbphyc_phy *usbphyc_phy = phy_get_drvdata(phy);
|
||||
@ -519,7 +519,7 @@ index da05642d3..d3d1235b9 100644
|
||||
|
||||
if (usbphyc_phy->vbus)
|
||||
return regulator_disable(usbphyc_phy->vbus);
|
||||
@@ -375,6 +468,107 @@ static int stm32_usbphyc_clk48_register(struct stm32_usbphyc *usbphyc)
|
||||
@@ -377,6 +470,107 @@ static int stm32_usbphyc_clk48_register(struct stm32_usbphyc *usbphyc)
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -627,7 +627,7 @@ index da05642d3..d3d1235b9 100644
|
||||
static void stm32_usbphyc_switch_setup(struct stm32_usbphyc *usbphyc,
|
||||
u32 utmi_switch)
|
||||
{
|
||||
@@ -492,17 +686,15 @@ static int stm32_usbphyc_probe(struct platform_device *pdev)
|
||||
@@ -494,17 +688,15 @@ static int stm32_usbphyc_probe(struct platform_device *pdev)
|
||||
|
||||
usbphyc->vdda1v1 = devm_regulator_get(dev, "vdda1v1");
|
||||
if (IS_ERR(usbphyc->vdda1v1)) {
|
||||
@ -649,14 +649,15 @@ index da05642d3..d3d1235b9 100644
|
||||
goto clk_disable;
|
||||
}
|
||||
|
||||
@@ -550,6 +742,14 @@ static int stm32_usbphyc_probe(struct platform_device *pdev)
|
||||
@@ -552,6 +744,15 @@ static int stm32_usbphyc_probe(struct platform_device *pdev)
|
||||
usbphyc->phys[port]->vbus = NULL;
|
||||
}
|
||||
|
||||
+ /* Get optional wakeup interrupt */
|
||||
+ usbphyc->phys[port]->wakeirq = of_irq_get(child, 0);
|
||||
+ if (usbphyc->phys[port]->wakeirq == -EPROBE_DEFER)
|
||||
+ ret = of_irq_get(child, 0);
|
||||
+ if (ret == -EPROBE_DEFER)
|
||||
+ goto put_child;
|
||||
+ usbphyc->phys[port]->wakeirq = ret;
|
||||
+
|
||||
+ /* Configure phy tuning */
|
||||
+ stm32_usbphyc_phy_tuning(usbphyc, child, index);
|
||||
@ -664,7 +665,7 @@ index da05642d3..d3d1235b9 100644
|
||||
port++;
|
||||
}
|
||||
|
||||
@@ -598,6 +798,25 @@ static int stm32_usbphyc_remove(struct platform_device *pdev)
|
||||
@@ -600,6 +801,25 @@ static int stm32_usbphyc_remove(struct platform_device *pdev)
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -690,7 +691,7 @@ index da05642d3..d3d1235b9 100644
|
||||
static const struct of_device_id stm32_usbphyc_of_match[] = {
|
||||
{ .compatible = "st,stm32mp1-usbphyc", },
|
||||
{ },
|
||||
@@ -610,6 +829,7 @@ static struct platform_driver stm32_usbphyc_driver = {
|
||||
@@ -612,6 +832,7 @@ static struct platform_driver stm32_usbphyc_driver = {
|
||||
.driver = {
|
||||
.of_match_table = stm32_usbphyc_of_match,
|
||||
.name = "stm32-usbphyc",
|
||||
@ -699,10 +700,10 @@ index da05642d3..d3d1235b9 100644
|
||||
};
|
||||
module_platform_driver(stm32_usbphyc_driver);
|
||||
diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c
|
||||
index dd3c288fa..9c4fef396 100644
|
||||
index 6c5934dbe9b3..ee16e33b431e 100644
|
||||
--- a/drivers/usb/core/hcd.c
|
||||
+++ b/drivers/usb/core/hcd.c
|
||||
@@ -2292,7 +2292,8 @@ int hcd_bus_suspend(struct usb_device *rhdev, pm_message_t msg)
|
||||
@@ -2295,7 +2295,8 @@ int hcd_bus_suspend(struct usb_device *rhdev, pm_message_t msg)
|
||||
|
||||
if (!PMSG_IS_AUTO(msg))
|
||||
usb_phy_roothub_suspend(hcd->self.sysdev,
|
||||
@ -712,7 +713,7 @@ index dd3c288fa..9c4fef396 100644
|
||||
|
||||
/* Did we race with a root-hub wakeup event? */
|
||||
if (rhdev->do_remote_wakeup) {
|
||||
@@ -2333,7 +2334,8 @@ int hcd_bus_resume(struct usb_device *rhdev, pm_message_t msg)
|
||||
@@ -2336,7 +2337,8 @@ int hcd_bus_resume(struct usb_device *rhdev, pm_message_t msg)
|
||||
|
||||
if (!PMSG_IS_AUTO(msg)) {
|
||||
status = usb_phy_roothub_resume(hcd->self.sysdev,
|
||||
@ -722,7 +723,7 @@ index dd3c288fa..9c4fef396 100644
|
||||
if (status)
|
||||
return status;
|
||||
}
|
||||
@@ -2378,7 +2380,8 @@ int hcd_bus_resume(struct usb_device *rhdev, pm_message_t msg)
|
||||
@@ -2381,7 +2383,8 @@ int hcd_bus_resume(struct usb_device *rhdev, pm_message_t msg)
|
||||
}
|
||||
} else {
|
||||
hcd->state = old_state;
|
||||
@ -733,7 +734,7 @@ index dd3c288fa..9c4fef396 100644
|
||||
"resume", status);
|
||||
if (status != -ESHUTDOWN)
|
||||
diff --git a/drivers/usb/core/phy.c b/drivers/usb/core/phy.c
|
||||
index fb1588e7c..746615aa1 100644
|
||||
index fb1588e7c282..746615aa1b2d 100644
|
||||
--- a/drivers/usb/core/phy.c
|
||||
+++ b/drivers/usb/core/phy.c
|
||||
@@ -212,34 +212,36 @@ void usb_phy_roothub_power_off(struct usb_phy_roothub *phy_roothub)
|
||||
@ -784,7 +785,7 @@ index fb1588e7c..746615aa1 100644
|
||||
|
||||
return err;
|
||||
diff --git a/drivers/usb/core/phy.h b/drivers/usb/core/phy.h
|
||||
index 20a267cd9..3df4ddbb6 100644
|
||||
index 20a267cd986b..3df4ddbb6046 100644
|
||||
--- a/drivers/usb/core/phy.h
|
||||
+++ b/drivers/usb/core/phy.h
|
||||
@@ -23,8 +23,10 @@ int usb_phy_roothub_power_on(struct usb_phy_roothub *phy_roothub);
|
||||
@ -801,7 +802,7 @@ index 20a267cd9..3df4ddbb6 100644
|
||||
|
||||
#endif /* __USB_CORE_PHY_H_ */
|
||||
diff --git a/drivers/usb/dwc2/core.h b/drivers/usb/dwc2/core.h
|
||||
index cb9059a84..255fca4e8 100644
|
||||
index 71e62b3081db..255fca4e8346 100644
|
||||
--- a/drivers/usb/dwc2/core.h
|
||||
+++ b/drivers/usb/dwc2/core.h
|
||||
@@ -238,11 +238,14 @@ enum dwc2_ep0_state {
|
||||
@ -854,24 +855,8 @@ index cb9059a84..255fca4e8 100644
|
||||
unsigned int hcd_enabled:1;
|
||||
unsigned int gadget_enabled:1;
|
||||
unsigned int ll_hw_enabled:1;
|
||||
@@ -1417,6 +1419,7 @@ void dwc2_hsotg_core_connect(struct dwc2_hsotg *hsotg);
|
||||
void dwc2_hsotg_disconnect(struct dwc2_hsotg *dwc2);
|
||||
int dwc2_hsotg_set_test_mode(struct dwc2_hsotg *hsotg, int testmode);
|
||||
#define dwc2_is_device_connected(hsotg) (hsotg->connected)
|
||||
+#define dwc2_is_device_enabled(hsotg) (hsotg->enabled)
|
||||
int dwc2_backup_device_registers(struct dwc2_hsotg *hsotg);
|
||||
int dwc2_restore_device_registers(struct dwc2_hsotg *hsotg, int remote_wakeup);
|
||||
int dwc2_gadget_enter_hibernation(struct dwc2_hsotg *hsotg);
|
||||
@@ -1453,6 +1456,7 @@ static inline int dwc2_hsotg_set_test_mode(struct dwc2_hsotg *hsotg,
|
||||
int testmode)
|
||||
{ return 0; }
|
||||
#define dwc2_is_device_connected(hsotg) (0)
|
||||
+#define dwc2_is_device_enabled(hsotg) (0)
|
||||
static inline int dwc2_backup_device_registers(struct dwc2_hsotg *hsotg)
|
||||
{ return 0; }
|
||||
static inline int dwc2_restore_device_registers(struct dwc2_hsotg *hsotg,
|
||||
diff --git a/drivers/usb/dwc2/core_intr.c b/drivers/usb/dwc2/core_intr.c
|
||||
index a5c52b237..c786560fb 100644
|
||||
index a5c52b237e72..c786560fb54e 100644
|
||||
--- a/drivers/usb/dwc2/core_intr.c
|
||||
+++ b/drivers/usb/dwc2/core_intr.c
|
||||
@@ -433,13 +433,14 @@ static void dwc2_handle_wakeup_detected_intr(struct dwc2_hsotg *hsotg)
|
||||
@ -891,7 +876,7 @@ index a5c52b237..c786560fb 100644
|
||||
/* Change to L0 state */
|
||||
hsotg->lx_state = DWC2_L0;
|
||||
diff --git a/drivers/usb/dwc2/debugfs.c b/drivers/usb/dwc2/debugfs.c
|
||||
index f13eed423..1d72ece9c 100644
|
||||
index f13eed4231e1..1d72ece9cfe4 100644
|
||||
--- a/drivers/usb/dwc2/debugfs.c
|
||||
+++ b/drivers/usb/dwc2/debugfs.c
|
||||
@@ -670,7 +670,9 @@ static int params_show(struct seq_file *seq, void *v)
|
||||
@ -906,7 +891,7 @@ index f13eed423..1d72ece9c 100644
|
||||
print_param(seq, p, dma_desc_fs_enable);
|
||||
print_param(seq, p, speed);
|
||||
diff --git a/drivers/usb/dwc2/drd.c b/drivers/usb/dwc2/drd.c
|
||||
index aa6eb76f6..c64701307 100644
|
||||
index 36f2c38416e5..c64701307ccc 100644
|
||||
--- a/drivers/usb/dwc2/drd.c
|
||||
+++ b/drivers/usb/dwc2/drd.c
|
||||
@@ -13,6 +13,10 @@
|
||||
@ -967,7 +952,7 @@ index aa6eb76f6..c64701307 100644
|
||||
gotgctl &= ~GOTGCTL_AVALOVAL;
|
||||
if (valid)
|
||||
gotgctl |= GOTGCTL_BVALOVAL | GOTGCTL_VBVALOVAL;
|
||||
@@ -105,12 +118,22 @@ static int dwc2_drd_role_sw_set(struct usb_role_switch *sw, enum usb_role role)
|
||||
@@ -105,6 +118,14 @@ static int dwc2_drd_role_sw_set(struct usb_role_switch *sw, enum usb_role role)
|
||||
|
||||
spin_lock_irqsave(&hsotg->lock, flags);
|
||||
|
||||
@ -982,17 +967,7 @@ index aa6eb76f6..c64701307 100644
|
||||
if (role == USB_ROLE_HOST) {
|
||||
already = dwc2_ovr_avalid(hsotg, true);
|
||||
} else if (role == USB_ROLE_DEVICE) {
|
||||
already = dwc2_ovr_bvalid(hsotg, true);
|
||||
- /* This clear DCTL.SFTDISCON bit */
|
||||
- dwc2_hsotg_core_connect(hsotg);
|
||||
+ if (dwc2_is_device_enabled(hsotg)) {
|
||||
+ /* This clear DCTL.SFTDISCON bit */
|
||||
+ dwc2_hsotg_core_connect(hsotg);
|
||||
+ }
|
||||
} else {
|
||||
if (dwc2_is_device_mode(hsotg)) {
|
||||
if (!dwc2_ovr_bvalid(hsotg, false))
|
||||
@@ -123,9 +146,18 @@ static int dwc2_drd_role_sw_set(struct usb_role_switch *sw, enum usb_role role)
|
||||
@@ -125,9 +146,18 @@ static int dwc2_drd_role_sw_set(struct usb_role_switch *sw, enum usb_role role)
|
||||
|
||||
spin_unlock_irqrestore(&hsotg->lock, flags);
|
||||
|
||||
@ -1012,7 +987,7 @@ index aa6eb76f6..c64701307 100644
|
||||
|
||||
if (!hsotg->ll_hw_enabled && hsotg->clk)
|
||||
clk_disable_unprepare(hsotg->clk);
|
||||
@@ -141,11 +173,21 @@ int dwc2_drd_init(struct dwc2_hsotg *hsotg)
|
||||
@@ -143,11 +173,21 @@ int dwc2_drd_init(struct dwc2_hsotg *hsotg)
|
||||
{
|
||||
struct usb_role_switch_desc role_sw_desc = {0};
|
||||
struct usb_role_switch *role_sw;
|
||||
@ -1034,7 +1009,7 @@ index aa6eb76f6..c64701307 100644
|
||||
role_sw_desc.driver_data = hsotg;
|
||||
role_sw_desc.fwnode = dev_fwnode(hsotg->dev);
|
||||
role_sw_desc.set = dwc2_drd_role_sw_set;
|
||||
@@ -183,6 +225,31 @@ void dwc2_drd_suspend(struct dwc2_hsotg *hsotg)
|
||||
@@ -185,6 +225,31 @@ void dwc2_drd_suspend(struct dwc2_hsotg *hsotg)
|
||||
void dwc2_drd_resume(struct dwc2_hsotg *hsotg)
|
||||
{
|
||||
u32 gintsts, gintmsk;
|
||||
@ -1067,20 +1042,10 @@ index aa6eb76f6..c64701307 100644
|
||||
if (hsotg->role_sw && !hsotg->params.external_id_pin_ctl) {
|
||||
gintsts = dwc2_readl(hsotg, GINTSTS);
|
||||
diff --git a/drivers/usb/dwc2/gadget.c b/drivers/usb/dwc2/gadget.c
|
||||
index 0909b088a..c96299472 100644
|
||||
index 519bb82b00e8..b171fac12585 100644
|
||||
--- a/drivers/usb/dwc2/gadget.c
|
||||
+++ b/drivers/usb/dwc2/gadget.c
|
||||
@@ -3594,7 +3594,8 @@ void dwc2_hsotg_core_disconnect(struct dwc2_hsotg *hsotg)
|
||||
void dwc2_hsotg_core_connect(struct dwc2_hsotg *hsotg)
|
||||
{
|
||||
/* remove the soft-disconnect and let's go */
|
||||
- dwc2_clear_bit(hsotg, DCTL, DCTL_SFTDISCON);
|
||||
+ if (!hsotg->role_sw || (dwc2_readl(hsotg, GOTGCTL) & GOTGCTL_BSESVLD))
|
||||
+ dwc2_clear_bit(hsotg, DCTL, DCTL_SFTDISCON);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -4988,6 +4989,7 @@ int dwc2_gadget_init(struct dwc2_hsotg *hsotg)
|
||||
@@ -4988,6 +4988,7 @@ int dwc2_gadget_init(struct dwc2_hsotg *hsotg)
|
||||
|
||||
hsotg->gadget.ops = &dwc2_hsotg_gadget_ops;
|
||||
hsotg->gadget.name = dev_name(dev);
|
||||
@ -1088,7 +1053,7 @@ index 0909b088a..c96299472 100644
|
||||
hsotg->remote_wakeup_allowed = 0;
|
||||
|
||||
if (hsotg->params.lpm)
|
||||
@@ -5670,7 +5672,6 @@ void dwc2_gadget_exit_clock_gating(struct dwc2_hsotg *hsotg, int rem_wakeup)
|
||||
@@ -5670,7 +5671,6 @@ void dwc2_gadget_exit_clock_gating(struct dwc2_hsotg *hsotg, int rem_wakeup)
|
||||
}
|
||||
|
||||
/* Change to L0 state */
|
||||
@ -1097,7 +1062,7 @@ index 0909b088a..c96299472 100644
|
||||
hsotg->bus_suspended = false;
|
||||
}
|
||||
diff --git a/drivers/usb/dwc2/hcd.c b/drivers/usb/dwc2/hcd.c
|
||||
index 657dbd50f..7929af33f 100644
|
||||
index 82322696b903..c0dc708cc32a 100644
|
||||
--- a/drivers/usb/dwc2/hcd.c
|
||||
+++ b/drivers/usb/dwc2/hcd.c
|
||||
@@ -138,19 +138,15 @@ static void dwc2_gusbcfg_init(struct dwc2_hsotg *hsotg)
|
||||
@ -1255,7 +1220,7 @@ index 657dbd50f..7929af33f 100644
|
||||
usleep_range(3000, 5000);
|
||||
spin_lock_irqsave(&hsotg->lock, flags);
|
||||
diff --git a/drivers/usb/dwc2/params.c b/drivers/usb/dwc2/params.c
|
||||
index 59e119345..d300ae3d9 100644
|
||||
index 59e119345994..d300ae3d9274 100644
|
||||
--- a/drivers/usb/dwc2/params.c
|
||||
+++ b/drivers/usb/dwc2/params.c
|
||||
@@ -36,6 +36,7 @@
|
||||
@ -1425,7 +1390,7 @@ index 59e119345..d300ae3d9 100644
|
||||
|
||||
if (!valid)
|
||||
diff --git a/drivers/usb/dwc2/platform.c b/drivers/usb/dwc2/platform.c
|
||||
index c331a5128..cdfd78535 100644
|
||||
index 265d437ca0f1..d16a69355e89 100644
|
||||
--- a/drivers/usb/dwc2/platform.c
|
||||
+++ b/drivers/usb/dwc2/platform.c
|
||||
@@ -222,20 +222,16 @@ static int dwc2_lowlevel_hw_init(struct dwc2_hsotg *hsotg)
|
||||
@ -1599,7 +1564,7 @@ index c331a5128..cdfd78535 100644
|
||||
if (dwc2_is_device_mode(dwc2))
|
||||
ret = dwc2_hsotg_resume(dwc2);
|
||||
diff --git a/drivers/usb/host/ehci-platform.c b/drivers/usb/host/ehci-platform.c
|
||||
index c3dc90627..92401d01d 100644
|
||||
index c3dc906274d9..92401d01d28d 100644
|
||||
--- a/drivers/usb/host/ehci-platform.c
|
||||
+++ b/drivers/usb/host/ehci-platform.c
|
||||
@@ -35,6 +35,7 @@
|
||||
@ -1661,7 +1626,7 @@ index c3dc90627..92401d01d 100644
|
||||
int err = pdata->power_on(pdev);
|
||||
if (err < 0)
|
||||
diff --git a/drivers/usb/host/ohci-platform.c b/drivers/usb/host/ohci-platform.c
|
||||
index 4a8456f12..f2e0c78cc 100644
|
||||
index 4a8456f12a73..f2e0c78cc58d 100644
|
||||
--- a/drivers/usb/host/ohci-platform.c
|
||||
+++ b/drivers/usb/host/ohci-platform.c
|
||||
@@ -214,7 +214,8 @@ static int ohci_platform_probe(struct platform_device *dev)
|
||||
@ -1714,7 +1679,7 @@ index 4a8456f12..f2e0c78cc 100644
|
||||
int err = pdata->power_on(pdev);
|
||||
if (err < 0)
|
||||
diff --git a/drivers/usb/typec/ucsi/Kconfig b/drivers/usb/typec/ucsi/Kconfig
|
||||
index 5e9b37b3f..8f9c4b9f3 100644
|
||||
index 5e9b37b3f25e..8f9c4b9f31f7 100644
|
||||
--- a/drivers/usb/typec/ucsi/Kconfig
|
||||
+++ b/drivers/usb/typec/ucsi/Kconfig
|
||||
@@ -48,4 +48,14 @@ config UCSI_ACPI
|
||||
@ -1733,7 +1698,7 @@ index 5e9b37b3f..8f9c4b9f3 100644
|
||||
+
|
||||
endif
|
||||
diff --git a/drivers/usb/typec/ucsi/Makefile b/drivers/usb/typec/ucsi/Makefile
|
||||
index 8a8eb5cb8..480d533d7 100644
|
||||
index 8a8eb5cb8e0f..480d533d762f 100644
|
||||
--- a/drivers/usb/typec/ucsi/Makefile
|
||||
+++ b/drivers/usb/typec/ucsi/Makefile
|
||||
@@ -17,3 +17,4 @@ endif
|
||||
@ -1742,10 +1707,24 @@ index 8a8eb5cb8..480d533d7 100644
|
||||
obj-$(CONFIG_UCSI_CCG) += ucsi_ccg.o
|
||||
+obj-$(CONFIG_UCSI_STM32G0) += ucsi_stm32g0.o
|
||||
diff --git a/drivers/usb/typec/ucsi/ucsi.c b/drivers/usb/typec/ucsi/ucsi.c
|
||||
index 5ef5bd0e8..3f5bd05a6 100644
|
||||
index 1f23eb543d8f..9659819ca2c9 100644
|
||||
--- a/drivers/usb/typec/ucsi/ucsi.c
|
||||
+++ b/drivers/usb/typec/ucsi/ucsi.c
|
||||
@@ -1142,12 +1142,8 @@ static int ucsi_register_port(struct ucsi *ucsi, int index)
|
||||
@@ -205,8 +205,11 @@ void ucsi_altmode_update_active(struct ucsi_connector *con)
|
||||
ret = ucsi_send_command(con->ucsi, command, &cur, sizeof(cur));
|
||||
if (ret < 0) {
|
||||
if (con->ucsi->version > 0x0100) {
|
||||
- dev_err(con->ucsi->dev,
|
||||
- "GET_CURRENT_CAM command failed\n");
|
||||
+ if (ret != -EOPNOTSUPP)
|
||||
+ dev_err(con->ucsi->dev,
|
||||
+ "GET_CURRENT_CAM command failed %d\n", ret);
|
||||
+ else
|
||||
+ dev_dbg(con->ucsi->dev, "GET_CURRENT_CAM not supported\n");
|
||||
return;
|
||||
}
|
||||
cur = 0xff;
|
||||
@@ -1156,12 +1159,8 @@ static int ucsi_register_port(struct ucsi *ucsi, int index)
|
||||
ucsi_port_psy_changed(con);
|
||||
}
|
||||
|
||||
@ -1760,7 +1739,7 @@ index 5ef5bd0e8..3f5bd05a6 100644
|
||||
|
||||
/* Only notify USB controller if partner supports USB data */
|
||||
if (!(UCSI_CONSTAT_PARTNER_FLAGS(con->status.flags) & UCSI_CONSTAT_PARTNER_FLAG_USB))
|
||||
@@ -1331,7 +1327,9 @@ EXPORT_SYMBOL_GPL(ucsi_destroy);
|
||||
@@ -1345,7 +1344,9 @@ EXPORT_SYMBOL_GPL(ucsi_destroy);
|
||||
*/
|
||||
int ucsi_register(struct ucsi *ucsi)
|
||||
{
|
||||
@ -1771,7 +1750,7 @@ index 5ef5bd0e8..3f5bd05a6 100644
|
||||
|
||||
ret = ucsi->ops->read(ucsi, UCSI_VERSION, &ucsi->version,
|
||||
sizeof(ucsi->version));
|
||||
@@ -1341,6 +1339,33 @@ int ucsi_register(struct ucsi *ucsi)
|
||||
@@ -1355,6 +1356,33 @@ int ucsi_register(struct ucsi *ucsi)
|
||||
if (!ucsi->version)
|
||||
return -ENODEV;
|
||||
|
||||
@ -1805,7 +1784,7 @@ index 5ef5bd0e8..3f5bd05a6 100644
|
||||
queue_work(system_long_wq, &ucsi->work);
|
||||
|
||||
return 0;
|
||||
@@ -1374,6 +1399,9 @@ void ucsi_unregister(struct ucsi *ucsi)
|
||||
@@ -1388,6 +1416,9 @@ void ucsi_unregister(struct ucsi *ucsi)
|
||||
}
|
||||
|
||||
kfree(ucsi->connector);
|
||||
@ -1816,7 +1795,7 @@ index 5ef5bd0e8..3f5bd05a6 100644
|
||||
EXPORT_SYMBOL_GPL(ucsi_unregister);
|
||||
|
||||
diff --git a/drivers/usb/typec/ucsi/ucsi.h b/drivers/usb/typec/ucsi/ucsi.h
|
||||
index cee666790..26572e953 100644
|
||||
index cee666790907..26572e953e9c 100644
|
||||
--- a/drivers/usb/typec/ucsi/ucsi.h
|
||||
+++ b/drivers/usb/typec/ucsi/ucsi.h
|
||||
@@ -286,6 +286,8 @@ struct ucsi {
|
||||
@ -1830,10 +1809,10 @@ index cee666790..26572e953 100644
|
||||
|
||||
diff --git a/drivers/usb/typec/ucsi/ucsi_stm32g0.c b/drivers/usb/typec/ucsi/ucsi_stm32g0.c
|
||||
new file mode 100644
|
||||
index 000000000..9d7651d5c
|
||||
index 000000000000..a107f2eb9129
|
||||
--- /dev/null
|
||||
+++ b/drivers/usb/typec/ucsi/ucsi_stm32g0.c
|
||||
@@ -0,0 +1,801 @@
|
||||
@@ -0,0 +1,770 @@
|
||||
+// SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
|
||||
+/*
|
||||
+ * UCSI driver for STMicroelectronics STM32G0 Type-C controller
|
||||
@ -2281,8 +2260,7 @@ index 000000000..9d7651d5c
|
||||
+{
|
||||
+ struct ucsi_stm32g0 *g0 = ucsi_get_drvdata(ucsi);
|
||||
+ struct i2c_client *client = g0->client;
|
||||
+ struct power_supply *psy;
|
||||
+ int i, ret;
|
||||
+ int ret;
|
||||
+
|
||||
+ /* Request alert interrupt */
|
||||
+ ret = request_threaded_irq(client->irq, NULL, ucsi_stm32g0_irq_handler, IRQF_ONESHOT,
|
||||
@ -2299,27 +2277,6 @@ index 000000000..9d7651d5c
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ /*
|
||||
+ * Below hack disables psy wakeup (enabled by default) to avoid limiting the low power
|
||||
+ * mode that can be achieved on the platform. Another way is to let the userland
|
||||
+ * enable or disable it with power/wakeup entries.
|
||||
+ * So, unless stm32g0 wakeup has been explicitly enabled, also disable the power supply
|
||||
+ * wakeup. Else, we're done here, so simply return.
|
||||
+ */
|
||||
+ if (device_may_wakeup(g0->dev))
|
||||
+ return 0;
|
||||
+
|
||||
+ /*
|
||||
+ * ucsi_init() runs on system_long_wq, wait for it to complete. Then num_connectors is
|
||||
+ * known and psy have been registered.
|
||||
+ */
|
||||
+ flush_workqueue(system_long_wq);
|
||||
+
|
||||
+ for (i = 0; i < ucsi->cap.num_connectors; i++) {
|
||||
+ psy = ucsi->connector[i].psy;
|
||||
+ device_wakeup_disable(&psy->dev);
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
@ -2486,15 +2443,6 @@ index 000000000..9d7651d5c
|
||||
+
|
||||
+ ucsi_set_drvdata(g0->ucsi, g0);
|
||||
+
|
||||
+ /*
|
||||
+ * When the "wakeup-source" flag is found, I2C core marks the device as wakeup capable
|
||||
+ * and enables the wakeup by default.
|
||||
+ * Only stick with wakeup capable here (disable wakeup), to avoid limiting the low power
|
||||
+ * mode that can be achived by default (depending on the selected power domain).
|
||||
+ */
|
||||
+ if (client->flags & I2C_CLIENT_WAKE)
|
||||
+ device_wakeup_disable(dev);
|
||||
+
|
||||
+ /* STM32G0 in bootloader mode communicates at reserved address 0x51 */
|
||||
+ g0->i2c_bl = i2c_new_dummy_device(client->adapter, STM32G0_I2C_BL_ADDR);
|
||||
+ if (IS_ERR(g0->i2c_bl)) {
|
||||
@ -2636,5 +2584,5 @@ index 000000000..9d7651d5c
|
||||
+MODULE_LICENSE("Dual BSD/GPL");
|
||||
+MODULE_ALIAS("platform:ucsi-stm32g0");
|
||||
--
|
||||
2.25.1
|
||||
2.17.1
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,9 +1,9 @@
|
||||
From 4f71b18aeac456fac466593f3baa12e5e3f698f3 Mon Sep 17 00:00:00 2001
|
||||
From: Christophe Priouzeau <christophe.priouzeau@foss.st.com>
|
||||
Date: Tue, 31 May 2022 12:06:36 +0200
|
||||
Subject: [PATCH 17/22] ARM-5.15.24-stm32mp1-r1-RESET-RTC
|
||||
From b0e70738cf7a9a1c9b4e10c3aec7cea6004ed9a4 Mon Sep 17 00:00:00 2001
|
||||
From: Romuald JEANNE <romuald.jeanne@st.com>
|
||||
Date: Thu, 3 Nov 2022 16:04:20 +0100
|
||||
Subject: [PATCH 18/22] v5.15-stm32mp-r2 RESET-RTC
|
||||
|
||||
Signed-off-by: Christophe Priouzeau <christophe.priouzeau@foss.st.com>
|
||||
Signed-off-by: Romuald JEANNE <romuald.jeanne@st.com>
|
||||
---
|
||||
.../devicetree/bindings/rtc/st,stm32-rtc.yaml | 37 ++
|
||||
drivers/rtc/Kconfig | 1 +
|
||||
@ -16,7 +16,7 @@ Signed-off-by: Christophe Priouzeau <christophe.priouzeau@foss.st.com>
|
||||
create mode 100644 include/dt-bindings/rtc/rtc-stm32.h
|
||||
|
||||
diff --git a/Documentation/devicetree/bindings/rtc/st,stm32-rtc.yaml b/Documentation/devicetree/bindings/rtc/st,stm32-rtc.yaml
|
||||
index 5456604b1..d94e1d13d 100644
|
||||
index 5456604b1c14..d94e1d13d908 100644
|
||||
--- a/Documentation/devicetree/bindings/rtc/st,stm32-rtc.yaml
|
||||
+++ b/Documentation/devicetree/bindings/rtc/st,stm32-rtc.yaml
|
||||
@@ -52,6 +52,20 @@ properties:
|
||||
@ -98,7 +98,7 @@ index 5456604b1..d94e1d13d 100644
|
||||
|
||||
...
|
||||
diff --git a/drivers/rtc/Kconfig b/drivers/rtc/Kconfig
|
||||
index e1bc52144..57ef1efdf 100644
|
||||
index e1bc5214494e..57ef1efdfc3c 100644
|
||||
--- a/drivers/rtc/Kconfig
|
||||
+++ b/drivers/rtc/Kconfig
|
||||
@@ -1867,6 +1867,7 @@ config RTC_DRV_R7301
|
||||
@ -110,7 +110,7 @@ index e1bc52144..57ef1efdf 100644
|
||||
help
|
||||
If you say yes here you get support for the STM32 On-Chip
|
||||
diff --git a/drivers/rtc/rtc-stm32.c b/drivers/rtc/rtc-stm32.c
|
||||
index ac9e228b5..20896b4b4 100644
|
||||
index ac9e228b56d0..20896b4b4641 100644
|
||||
--- a/drivers/rtc/rtc-stm32.c
|
||||
+++ b/drivers/rtc/rtc-stm32.c
|
||||
@@ -5,7 +5,10 @@
|
||||
@ -714,7 +714,7 @@ index ac9e228b5..20896b4b4 100644
|
||||
static struct platform_driver stm32_rtc_driver = {
|
||||
.probe = stm32_rtc_probe,
|
||||
diff --git a/include/dt-bindings/reset/stm32mp1-resets.h b/include/dt-bindings/reset/stm32mp1-resets.h
|
||||
index f3a0ed317..bdbf9e253 100644
|
||||
index f3a0ed317835..bdbf9e253015 100644
|
||||
--- a/include/dt-bindings/reset/stm32mp1-resets.h
|
||||
+++ b/include/dt-bindings/reset/stm32mp1-resets.h
|
||||
@@ -107,17 +107,17 @@
|
||||
@ -749,7 +749,7 @@ index f3a0ed317..bdbf9e253 100644
|
||||
#endif /* _DT_BINDINGS_STM32MP1_RESET_H_ */
|
||||
diff --git a/include/dt-bindings/reset/stm32mp13-resets.h b/include/dt-bindings/reset/stm32mp13-resets.h
|
||||
new file mode 100644
|
||||
index 000000000..934864e90
|
||||
index 000000000000..934864e90da6
|
||||
--- /dev/null
|
||||
+++ b/include/dt-bindings/reset/stm32mp13-resets.h
|
||||
@@ -0,0 +1,100 @@
|
||||
@ -855,7 +855,7 @@ index 000000000..934864e90
|
||||
+#endif /* _DT_BINDINGS_STM32MP13_RESET_H_ */
|
||||
diff --git a/include/dt-bindings/rtc/rtc-stm32.h b/include/dt-bindings/rtc/rtc-stm32.h
|
||||
new file mode 100644
|
||||
index 000000000..2fd78c2e6
|
||||
index 000000000000..2fd78c2e62d4
|
||||
--- /dev/null
|
||||
+++ b/include/dt-bindings/rtc/rtc-stm32.h
|
||||
@@ -0,0 +1,14 @@
|
||||
@ -874,5 +874,5 @@ index 000000000..2fd78c2e6
|
||||
+
|
||||
+#endif
|
||||
--
|
||||
2.25.1
|
||||
2.17.1
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
From e21e9c56de8df104ae24bff08afea4907932f915 Mon Sep 17 00:00:00 2001
|
||||
From: Christophe Priouzeau <christophe.priouzeau@foss.st.com>
|
||||
Date: Tue, 31 May 2022 12:07:03 +0200
|
||||
Subject: [PATCH 18/22] ARM-5.15.24-stm32mp1-r1-SCMI
|
||||
From ae4d172fd1f74a9adc7eed21b80dc3049a56a462 Mon Sep 17 00:00:00 2001
|
||||
From: Romuald JEANNE <romuald.jeanne@st.com>
|
||||
Date: Thu, 3 Nov 2022 16:05:11 +0100
|
||||
Subject: [PATCH 19/22] v5.15-stm32mp-r2 SCMI
|
||||
|
||||
Signed-off-by: Christophe Priouzeau <christophe.priouzeau@foss.st.com>
|
||||
Signed-off-by: Romuald JEANNE <romuald.jeanne@st.com>
|
||||
---
|
||||
drivers/firmware/arm_scmi/Makefile | 1 +
|
||||
drivers/firmware/arm_scmi/clock.c | 78 +++
|
||||
@ -15,7 +15,7 @@ Signed-off-by: Christophe Priouzeau <christophe.priouzeau@foss.st.com>
|
||||
create mode 100644 drivers/firmware/arm_scmi/optee.c
|
||||
|
||||
diff --git a/drivers/firmware/arm_scmi/Makefile b/drivers/firmware/arm_scmi/Makefile
|
||||
index 1dcf123d6..d1460cf7e 100644
|
||||
index 1dcf123d64ab..d1460cf7e9de 100644
|
||||
--- a/drivers/firmware/arm_scmi/Makefile
|
||||
+++ b/drivers/firmware/arm_scmi/Makefile
|
||||
@@ -6,6 +6,7 @@ scmi-transport-$(CONFIG_ARM_SCMI_TRANSPORT_MAILBOX) += mailbox.o
|
||||
@ -27,7 +27,7 @@ index 1dcf123d6..d1460cf7e 100644
|
||||
scmi-module-objs := $(scmi-bus-y) $(scmi-driver-y) $(scmi-protocols-y) \
|
||||
$(scmi-transport-y)
|
||||
diff --git a/drivers/firmware/arm_scmi/clock.c b/drivers/firmware/arm_scmi/clock.c
|
||||
index 35b56c8ba..79b81cf51 100644
|
||||
index 492f3a9197ec..47814d175ce7 100644
|
||||
--- a/drivers/firmware/arm_scmi/clock.c
|
||||
+++ b/drivers/firmware/arm_scmi/clock.c
|
||||
@@ -16,6 +16,8 @@ enum scmi_clock_protocol_cmd {
|
||||
@ -51,7 +51,7 @@ index 35b56c8ba..79b81cf51 100644
|
||||
struct scmi_clock_set_rate {
|
||||
__le32 flags;
|
||||
#define CLOCK_SET_ASYNC BIT(0)
|
||||
@@ -214,6 +221,34 @@ scmi_clock_describe_rates_get(const struct scmi_protocol_handle *ph, u32 clk_id,
|
||||
@@ -215,6 +222,34 @@ scmi_clock_describe_rates_get(const struct scmi_protocol_handle *ph, u32 clk_id,
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -86,7 +86,7 @@ index 35b56c8ba..79b81cf51 100644
|
||||
static int
|
||||
scmi_clock_rate_get(const struct scmi_protocol_handle *ph,
|
||||
u32 clk_id, u64 *value)
|
||||
@@ -271,6 +306,47 @@ static int scmi_clock_rate_set(const struct scmi_protocol_handle *ph,
|
||||
@@ -272,6 +307,47 @@ static int scmi_clock_rate_set(const struct scmi_protocol_handle *ph,
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -134,7 +134,7 @@ index 35b56c8ba..79b81cf51 100644
|
||||
static int
|
||||
scmi_clock_config_set(const struct scmi_protocol_handle *ph, u32 clk_id,
|
||||
u32 config)
|
||||
@@ -330,6 +406,8 @@ static const struct scmi_clk_proto_ops clk_proto_ops = {
|
||||
@@ -331,6 +407,8 @@ static const struct scmi_clk_proto_ops clk_proto_ops = {
|
||||
.rate_set = scmi_clock_rate_set,
|
||||
.enable = scmi_clock_enable,
|
||||
.disable = scmi_clock_disable,
|
||||
@ -144,7 +144,7 @@ index 35b56c8ba..79b81cf51 100644
|
||||
|
||||
static int scmi_clock_protocol_init(const struct scmi_protocol_handle *ph)
|
||||
diff --git a/drivers/firmware/arm_scmi/common.h b/drivers/firmware/arm_scmi/common.h
|
||||
index dea1bfbe1..82ff3c3a6 100644
|
||||
index dea1bfbe1052..82ff3c3a6d2d 100644
|
||||
--- a/drivers/firmware/arm_scmi/common.h
|
||||
+++ b/drivers/firmware/arm_scmi/common.h
|
||||
@@ -421,6 +421,9 @@ extern const struct scmi_desc scmi_smc_desc;
|
||||
@ -158,10 +158,10 @@ index dea1bfbe1..82ff3c3a6 100644
|
||||
void scmi_rx_callback(struct scmi_chan_info *cinfo, u32 msg_hdr, void *priv);
|
||||
void scmi_free_channel(struct scmi_chan_info *cinfo, struct idr *idr, int id);
|
||||
diff --git a/drivers/firmware/arm_scmi/driver.c b/drivers/firmware/arm_scmi/driver.c
|
||||
index b406b3f78..7d9c5b7b0 100644
|
||||
index e815b8f98739..4a5b9c2c0c53 100644
|
||||
--- a/drivers/firmware/arm_scmi/driver.c
|
||||
+++ b/drivers/firmware/arm_scmi/driver.c
|
||||
@@ -1997,6 +1997,9 @@ static const struct of_device_id scmi_of_match[] = {
|
||||
@@ -1998,6 +1998,9 @@ static const struct of_device_id scmi_of_match[] = {
|
||||
#ifdef CONFIG_ARM_SCMI_TRANSPORT_SMC
|
||||
{ .compatible = "arm,scmi-smc", .data = &scmi_smc_desc},
|
||||
#endif
|
||||
@ -173,7 +173,7 @@ index b406b3f78..7d9c5b7b0 100644
|
||||
#endif
|
||||
diff --git a/drivers/firmware/arm_scmi/optee.c b/drivers/firmware/arm_scmi/optee.c
|
||||
new file mode 100644
|
||||
index 000000000..4ec54b3c6
|
||||
index 000000000000..4ec54b3c6628
|
||||
--- /dev/null
|
||||
+++ b/drivers/firmware/arm_scmi/optee.c
|
||||
@@ -0,0 +1,848 @@
|
||||
@ -1026,7 +1026,7 @@ index 000000000..4ec54b3c6
|
||||
+MODULE_AUTHOR("Etienne Carriere <etienne.carriere@linaro.org>");
|
||||
+MODULE_DESCRIPTION("OP-TEE SCMI transport driver");
|
||||
diff --git a/include/linux/scmi_protocol.h b/include/linux/scmi_protocol.h
|
||||
index 80e781c51..f0b8bc4cf 100644
|
||||
index 80e781c51ddc..f0b8bc4cf83a 100644
|
||||
--- a/include/linux/scmi_protocol.h
|
||||
+++ b/include/linux/scmi_protocol.h
|
||||
@@ -82,6 +82,10 @@ struct scmi_clk_proto_ops {
|
||||
@ -1041,5 +1041,5 @@ index 80e781c51..f0b8bc4cf 100644
|
||||
|
||||
/**
|
||||
--
|
||||
2.25.1
|
||||
2.17.1
|
||||
|
||||
@ -1,23 +1,23 @@
|
||||
From a0c67a64074c33685451fff84871a846bc29d523 Mon Sep 17 00:00:00 2001
|
||||
From: Christophe Priouzeau <christophe.priouzeau@foss.st.com>
|
||||
Date: Tue, 31 May 2022 12:07:28 +0200
|
||||
Subject: [PATCH 19/22] ARM-5.15.24-stm32mp1-r1-SOUND
|
||||
From bf84be1a6e25855048a341b6e8d86a660d6fac1a Mon Sep 17 00:00:00 2001
|
||||
From: Romuald JEANNE <romuald.jeanne@st.com>
|
||||
Date: Thu, 3 Nov 2022 16:05:34 +0100
|
||||
Subject: [PATCH 20/22] v5.15-stm32mp-r2 SOUND
|
||||
|
||||
Signed-off-by: Christophe Priouzeau <christophe.priouzeau@foss.st.com>
|
||||
Signed-off-by: Romuald JEANNE <romuald.jeanne@st.com>
|
||||
---
|
||||
sound/soc/codecs/Kconfig | 2 +-
|
||||
sound/soc/codecs/wm8994.c | 81 ++++++++++++++++++++++++++++++++---
|
||||
sound/soc/stm/stm32_adfsdm.c | 11 +++--
|
||||
sound/soc/stm/stm32_i2s.c | 4 ++
|
||||
sound/soc/stm/stm32_adfsdm.c | 22 ++++++++--
|
||||
sound/soc/stm/stm32_i2s.c | 6 ++-
|
||||
sound/soc/stm/stm32_sai_sub.c | 4 +-
|
||||
sound/soc/stm/stm32_spdifrx.c | 4 ++
|
||||
6 files changed, 94 insertions(+), 12 deletions(-)
|
||||
6 files changed, 106 insertions(+), 13 deletions(-)
|
||||
|
||||
diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig
|
||||
index f12c9b942..4cc91bcfe 100644
|
||||
index d59a7e99ce42..31ed450b4069 100644
|
||||
--- a/sound/soc/codecs/Kconfig
|
||||
+++ b/sound/soc/codecs/Kconfig
|
||||
@@ -1771,7 +1771,7 @@ config SND_SOC_WM8993
|
||||
@@ -1774,7 +1774,7 @@ config SND_SOC_WM8993
|
||||
depends on I2C
|
||||
|
||||
config SND_SOC_WM8994
|
||||
@ -27,7 +27,7 @@ index f12c9b942..4cc91bcfe 100644
|
||||
config SND_SOC_WM8995
|
||||
tristate
|
||||
diff --git a/sound/soc/codecs/wm8994.c b/sound/soc/codecs/wm8994.c
|
||||
index f117ec0c4..98e803516 100644
|
||||
index f117ec0c489f..98e803516fe5 100644
|
||||
--- a/sound/soc/codecs/wm8994.c
|
||||
+++ b/sound/soc/codecs/wm8994.c
|
||||
@@ -7,6 +7,7 @@
|
||||
@ -179,7 +179,7 @@ index f117ec0c4..98e803516 100644
|
||||
snd_soc_dapm_new_controls(dapm, wm8994_lateclk_revd_widgets,
|
||||
ARRAY_SIZE(wm8994_lateclk_revd_widgets));
|
||||
diff --git a/sound/soc/stm/stm32_adfsdm.c b/sound/soc/stm/stm32_adfsdm.c
|
||||
index e6078f50e..534f96af9 100644
|
||||
index e6078f50e508..75e75cc7fa02 100644
|
||||
--- a/sound/soc/stm/stm32_adfsdm.c
|
||||
+++ b/sound/soc/stm/stm32_adfsdm.c
|
||||
@@ -12,7 +12,7 @@
|
||||
@ -191,7 +191,32 @@ index e6078f50e..534f96af9 100644
|
||||
#include <linux/iio/iio.h>
|
||||
#include <linux/iio/consumer.h>
|
||||
#include <linux/iio/adc/stm32-dfsdm-adc.h>
|
||||
@@ -363,15 +363,20 @@ static int stm32_adfsdm_probe(struct platform_device *pdev)
|
||||
@@ -303,6 +303,11 @@ static int stm32_adfsdm_dummy_cb(const void *data, void *private)
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static void stm32_adfsdm_cleanup(void *data)
|
||||
+{
|
||||
+ iio_channel_release_all_cb(data);
|
||||
+}
|
||||
+
|
||||
static struct snd_soc_component_driver stm32_adfsdm_soc_platform = {
|
||||
.open = stm32_adfsdm_pcm_open,
|
||||
.close = stm32_adfsdm_pcm_close,
|
||||
@@ -349,6 +354,12 @@ static int stm32_adfsdm_probe(struct platform_device *pdev)
|
||||
if (IS_ERR(priv->iio_cb))
|
||||
return PTR_ERR(priv->iio_cb);
|
||||
|
||||
+ ret = devm_add_action_or_reset(&pdev->dev, stm32_adfsdm_cleanup, priv->iio_cb);
|
||||
+ if (ret < 0) {
|
||||
+ dev_err(&pdev->dev, "Unable to add action\n");
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
component = devm_kzalloc(&pdev->dev, sizeof(*component), GFP_KERNEL);
|
||||
if (!component)
|
||||
return -ENOMEM;
|
||||
@@ -363,15 +374,20 @@ static int stm32_adfsdm_probe(struct platform_device *pdev)
|
||||
#endif
|
||||
|
||||
ret = snd_soc_add_component(component, NULL, 0);
|
||||
@ -215,7 +240,7 @@ index e6078f50e..534f96af9 100644
|
||||
|
||||
return 0;
|
||||
diff --git a/sound/soc/stm/stm32_i2s.c b/sound/soc/stm/stm32_i2s.c
|
||||
index 717f45a83..61e2c5d51 100644
|
||||
index 717f45a83445..f16dd7608b7e 100644
|
||||
--- a/sound/soc/stm/stm32_i2s.c
|
||||
+++ b/sound/soc/stm/stm32_i2s.c
|
||||
@@ -13,6 +13,7 @@
|
||||
@ -226,6 +251,15 @@ index 717f45a83..61e2c5d51 100644
|
||||
#include <linux/regmap.h>
|
||||
#include <linux/reset.h>
|
||||
#include <linux/spinlock.h>
|
||||
@@ -1087,7 +1088,7 @@ static int stm32_i2s_parse_dt(struct platform_device *pdev,
|
||||
if (irq < 0)
|
||||
return irq;
|
||||
|
||||
- ret = devm_request_irq(&pdev->dev, irq, stm32_i2s_isr, IRQF_ONESHOT,
|
||||
+ ret = devm_request_irq(&pdev->dev, irq, stm32_i2s_isr, 0,
|
||||
dev_name(&pdev->dev), i2s);
|
||||
if (ret) {
|
||||
dev_err(&pdev->dev, "irq request returned %d\n", ret);
|
||||
@@ -1113,6 +1114,7 @@ static int stm32_i2s_remove(struct platform_device *pdev)
|
||||
{
|
||||
snd_dmaengine_pcm_unregister(&pdev->dev);
|
||||
@ -244,7 +278,7 @@ index 717f45a83..61e2c5d51 100644
|
||||
|
||||
error:
|
||||
diff --git a/sound/soc/stm/stm32_sai_sub.c b/sound/soc/stm/stm32_sai_sub.c
|
||||
index 9c3b8e209..95cd38a50 100644
|
||||
index 9c3b8e209656..95cd38a502bb 100644
|
||||
--- a/sound/soc/stm/stm32_sai_sub.c
|
||||
+++ b/sound/soc/stm/stm32_sai_sub.c
|
||||
@@ -1294,7 +1294,7 @@ static struct snd_soc_dai_driver stm32_sai_playback_dai = {
|
||||
@ -266,7 +300,7 @@ index 9c3b8e209..95cd38a50 100644
|
||||
.rate_max = 192000,
|
||||
.rates = SNDRV_PCM_RATE_CONTINUOUS,
|
||||
diff --git a/sound/soc/stm/stm32_spdifrx.c b/sound/soc/stm/stm32_spdifrx.c
|
||||
index 48145f553..e885796ca 100644
|
||||
index 48145f553588..e885796ca5f4 100644
|
||||
--- a/sound/soc/stm/stm32_spdifrx.c
|
||||
+++ b/sound/soc/stm/stm32_spdifrx.c
|
||||
@@ -12,6 +12,7 @@
|
||||
@ -295,5 +329,5 @@ index 48145f553..e885796ca 100644
|
||||
|
||||
error:
|
||||
--
|
||||
2.25.1
|
||||
2.17.1
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,20 +1,20 @@
|
||||
From 334f4603a6c9a1bb69ca6b65edf385156dac578b Mon Sep 17 00:00:00 2001
|
||||
From: Christophe Priouzeau <christophe.priouzeau@foss.st.com>
|
||||
Date: Tue, 31 May 2022 12:10:24 +0200
|
||||
Subject: [PATCH 22/22] ARM-5.15.24-stm32mp1-r1-CONFIG
|
||||
From ff0775651b034096b3f72ed6ec90efc39eb8627c Mon Sep 17 00:00:00 2001
|
||||
From: Romuald JEANNE <romuald.jeanne@st.com>
|
||||
Date: Thu, 3 Nov 2022 16:51:45 +0100
|
||||
Subject: [PATCH 22/22] v5.15-stm32mp-r2 CONFIG
|
||||
|
||||
Signed-off-by: Christophe Priouzeau <christophe.priouzeau@foss.st.com>
|
||||
Signed-off-by: Romuald JEANNE <romuald.jeanne@st.com>
|
||||
---
|
||||
.../fragment-01-multiv7_cleanup.config | 408 +++++++++++++++++
|
||||
.../configs/fragment-02-multiv7_addons.config | 419 ++++++++++++++++++
|
||||
.../configs/fragment-02-multiv7_addons.config | 426 ++++++++++++++++++
|
||||
arch/arm/configs/multi_v7_defconfig | 1 +
|
||||
3 files changed, 828 insertions(+)
|
||||
3 files changed, 835 insertions(+)
|
||||
create mode 100644 arch/arm/configs/fragment-01-multiv7_cleanup.config
|
||||
create mode 100644 arch/arm/configs/fragment-02-multiv7_addons.config
|
||||
|
||||
diff --git a/arch/arm/configs/fragment-01-multiv7_cleanup.config b/arch/arm/configs/fragment-01-multiv7_cleanup.config
|
||||
new file mode 100644
|
||||
index 000000000..52f28a765
|
||||
index 000000000000..52f28a765b25
|
||||
--- /dev/null
|
||||
+++ b/arch/arm/configs/fragment-01-multiv7_cleanup.config
|
||||
@@ -0,0 +1,408 @@
|
||||
@ -428,10 +428,10 @@ index 000000000..52f28a765
|
||||
+# CONFIG_FRAMEBUFFER_CONSOLE is not set
|
||||
diff --git a/arch/arm/configs/fragment-02-multiv7_addons.config b/arch/arm/configs/fragment-02-multiv7_addons.config
|
||||
new file mode 100644
|
||||
index 000000000..5ce8ee7aa
|
||||
index 000000000000..7b5ffd562d8a
|
||||
--- /dev/null
|
||||
+++ b/arch/arm/configs/fragment-02-multiv7_addons.config
|
||||
@@ -0,0 +1,419 @@
|
||||
@@ -0,0 +1,426 @@
|
||||
+#
|
||||
+# General setup
|
||||
+#
|
||||
@ -851,8 +851,15 @@ index 000000000..5ce8ee7aa
|
||||
+#
|
||||
+CONFIG_SAMPLES=y
|
||||
+CONFIG_SAMPLE_RPMSG_CLIENT=m
|
||||
+
|
||||
+#
|
||||
+# Block modes
|
||||
+#
|
||||
+CONFIG_CRYPTO_CFB=m
|
||||
+CONFIG_CRYPTO_LRW=m
|
||||
+CONFIG_CRYPTO_OFB=m
|
||||
diff --git a/arch/arm/configs/multi_v7_defconfig b/arch/arm/configs/multi_v7_defconfig
|
||||
index 33572998d..afb97c505 100644
|
||||
index 33572998dbbe..afb97c5051c9 100644
|
||||
--- a/arch/arm/configs/multi_v7_defconfig
|
||||
+++ b/arch/arm/configs/multi_v7_defconfig
|
||||
@@ -646,6 +646,7 @@ CONFIG_V4L_PLATFORM_DRIVERS=y
|
||||
@ -864,5 +871,5 @@ index 33572998d..afb97c505 100644
|
||||
CONFIG_VIDEO_SAMSUNG_EXYNOS4_IS=m
|
||||
CONFIG_VIDEO_S5P_FIMC=m
|
||||
--
|
||||
2.25.1
|
||||
2.17.1
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
# CONFIG_GCC_PLUGINS is not set
|
||||
|
||||
# Allow to load kernel modules built with different kernel version
|
||||
CONFIG_MODULE_FORCE_LOAD=y
|
||||
CONFIG_MODVERSIONS=y
|
||||
|
||||
# Support of iks01a2
|
||||
|
||||
@ -7,41 +7,41 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
|
||||
include linux-stm32mp.inc
|
||||
|
||||
LINUX_VERSION = "5.15"
|
||||
LINUX_SUBVERSION = "24"
|
||||
LINUX_SUBVERSION = "67"
|
||||
LINUX_TARNAME = "linux-${LINUX_VERSION}.${LINUX_SUBVERSION}"
|
||||
SRC_URI = "https://cdn.kernel.org/pub/linux/kernel/v5.x/${LINUX_TARNAME}.tar.xz;name=kernel"
|
||||
#SRC_URI = "https://git.kernel.org/torvalds/t/linux-${LINUX_VERSION}-${LINUX_SUBVERSION}.tar.gz;name=kernel"
|
||||
|
||||
|
||||
SRC_URI[kernel.sha256sum] = "f496eb03c88731540d483837f919c083148875a7b400468237f0217b5e5ca97f"
|
||||
SRC_URI[kernel.sha256sum] = "da47d9a80b694548835ccb553b6eb1a1f3f5d5cddd9e2bd6f4886b99ca14f940"
|
||||
|
||||
SRC_URI += " \
|
||||
file://${LINUX_VERSION}/${LINUX_VERSION}.${LINUX_SUBVERSION}/0001-ARM-5.15.24-stm32mp1-r1-MACHINE.patch \
|
||||
file://${LINUX_VERSION}/${LINUX_VERSION}.${LINUX_SUBVERSION}/0002-ARM-5.15.24-stm32mp1-r1-CLOCK.patch \
|
||||
file://${LINUX_VERSION}/${LINUX_VERSION}.${LINUX_SUBVERSION}/0003-ARM-5.15.24-stm32mp1-r1-CPUFREQ.patch \
|
||||
file://${LINUX_VERSION}/${LINUX_VERSION}.${LINUX_SUBVERSION}/0004-ARM-5.15.24-stm32mp1-r1-CRYPTO.patch \
|
||||
file://${LINUX_VERSION}/${LINUX_VERSION}.${LINUX_SUBVERSION}/0005-ARM-5.15.24-stm32mp1-r1-DMA.patch \
|
||||
file://${LINUX_VERSION}/${LINUX_VERSION}.${LINUX_SUBVERSION}/0006-ARM-5.15.24-stm32mp1-r1-DRM.patch \
|
||||
file://${LINUX_VERSION}/${LINUX_VERSION}.${LINUX_SUBVERSION}/0007-ARM-5.15.24-stm32mp1-r1-HWSPINLOCK.patch \
|
||||
file://${LINUX_VERSION}/${LINUX_VERSION}.${LINUX_SUBVERSION}/0008-ARM-5.15.24-stm32mp1-r1-I2C-IIO-IRQCHIP.patch \
|
||||
file://${LINUX_VERSION}/${LINUX_VERSION}.${LINUX_SUBVERSION}/0009-ARM-5.15.24-stm32mp1-r1-REMOTEPROC-RPMSG.patch \
|
||||
file://${LINUX_VERSION}/${LINUX_VERSION}.${LINUX_SUBVERSION}/0010-ARM-5.15.24-stm32mp1-r1-MISC-MEDIA-SOC-THERMAL.patch \
|
||||
file://${LINUX_VERSION}/${LINUX_VERSION}.${LINUX_SUBVERSION}/0011-ARM-5.15.24-stm32mp1-r1-MFD.patch \
|
||||
file://${LINUX_VERSION}/${LINUX_VERSION}.${LINUX_SUBVERSION}/0012-ARM-5.15.24-stm32mp1-r1-MMC.patch \
|
||||
file://${LINUX_VERSION}/${LINUX_VERSION}.${LINUX_SUBVERSION}/0013-ARM-5.15.24-stm32mp1-r1-NET-TTY.patch \
|
||||
file://${LINUX_VERSION}/${LINUX_VERSION}.${LINUX_SUBVERSION}/0014-ARM-5.15.24-stm32mp1-r1-PERF.patch \
|
||||
file://${LINUX_VERSION}/${LINUX_VERSION}.${LINUX_SUBVERSION}/0015-ARM-5.15.24-stm32mp1-r1-PHY-USB.patch \
|
||||
file://${LINUX_VERSION}/${LINUX_VERSION}.${LINUX_SUBVERSION}/0016-ARM-5.15.24-stm32mp1-r1-PINCTRL-REGULATOR-SPI.patch \
|
||||
file://${LINUX_VERSION}/${LINUX_VERSION}.${LINUX_SUBVERSION}/0017-ARM-5.15.24-stm32mp1-r1-RESET-RTC.patch \
|
||||
file://${LINUX_VERSION}/${LINUX_VERSION}.${LINUX_SUBVERSION}/0018-ARM-5.15.24-stm32mp1-r1-SCMI.patch \
|
||||
file://${LINUX_VERSION}/${LINUX_VERSION}.${LINUX_SUBVERSION}/0019-ARM-5.15.24-stm32mp1-r1-SOUND.patch \
|
||||
file://${LINUX_VERSION}/${LINUX_VERSION}.${LINUX_SUBVERSION}/0020-ARM-5.15.24-stm32mp1-r1-CPUIDLE-POWER.patch \
|
||||
file://${LINUX_VERSION}/${LINUX_VERSION}.${LINUX_SUBVERSION}/0021-ARM-5.15.24-stm32mp1-r1-DEVICETREE.patch \
|
||||
file://${LINUX_VERSION}/${LINUX_VERSION}.${LINUX_SUBVERSION}/0022-ARM-5.15.24-stm32mp1-r1-CONFIG.patch \
|
||||
file://${LINUX_VERSION}/${LINUX_VERSION}.${LINUX_SUBVERSION}/0001-v5.15-stm32mp-r2-MACHINE.patch \
|
||||
file://${LINUX_VERSION}/${LINUX_VERSION}.${LINUX_SUBVERSION}/0002-v5.15-stm32mp-r2-CLOCK.patch \
|
||||
file://${LINUX_VERSION}/${LINUX_VERSION}.${LINUX_SUBVERSION}/0003-v5.15-stm32mp-r2-CPUFREQ.patch \
|
||||
file://${LINUX_VERSION}/${LINUX_VERSION}.${LINUX_SUBVERSION}/0004-v5.15-stm32mp-r2-CPUIDLE-POWER.patch \
|
||||
file://${LINUX_VERSION}/${LINUX_VERSION}.${LINUX_SUBVERSION}/0005-v5.15-stm32mp-r2-CRYPTO.patch \
|
||||
file://${LINUX_VERSION}/${LINUX_VERSION}.${LINUX_SUBVERSION}/0006-v5.15-stm32mp-r2-DMA.patch \
|
||||
file://${LINUX_VERSION}/${LINUX_VERSION}.${LINUX_SUBVERSION}/0007-v5.15-stm32mp-r2-DRM.patch \
|
||||
file://${LINUX_VERSION}/${LINUX_VERSION}.${LINUX_SUBVERSION}/0008-v5.15-stm32mp-r2-HWSPINLOCK.patch \
|
||||
file://${LINUX_VERSION}/${LINUX_VERSION}.${LINUX_SUBVERSION}/0009-v5.15-stm32mp-r2-I2C-IIO-IRQCHIP.patch \
|
||||
file://${LINUX_VERSION}/${LINUX_VERSION}.${LINUX_SUBVERSION}/0010-v5.15-stm32mp-r2-REMOTEPROC-RPMSG.patch \
|
||||
file://${LINUX_VERSION}/${LINUX_VERSION}.${LINUX_SUBVERSION}/0011-v5.15-stm32mp-r2-MISC-MEDIA-SOC-THERMAL.patch \
|
||||
file://${LINUX_VERSION}/${LINUX_VERSION}.${LINUX_SUBVERSION}/0012-v5.15-stm32mp-r2-MFD.patch \
|
||||
file://${LINUX_VERSION}/${LINUX_VERSION}.${LINUX_SUBVERSION}/0013-v5.15-stm32mp-r2-MMC.patch \
|
||||
file://${LINUX_VERSION}/${LINUX_VERSION}.${LINUX_SUBVERSION}/0014-v5.15-stm32mp-r2-NET-TTY.patch \
|
||||
file://${LINUX_VERSION}/${LINUX_VERSION}.${LINUX_SUBVERSION}/0015-v5.15-stm32mp-r2-PERF.patch \
|
||||
file://${LINUX_VERSION}/${LINUX_VERSION}.${LINUX_SUBVERSION}/0016-v5.15-stm32mp-r2-PHY-USB.patch \
|
||||
file://${LINUX_VERSION}/${LINUX_VERSION}.${LINUX_SUBVERSION}/0017-v5.15-stm32mp-r2-PINCTRL-REGULATOR-SPI.patch \
|
||||
file://${LINUX_VERSION}/${LINUX_VERSION}.${LINUX_SUBVERSION}/0018-v5.15-stm32mp-r2-RESET-RTC.patch \
|
||||
file://${LINUX_VERSION}/${LINUX_VERSION}.${LINUX_SUBVERSION}/0019-v5.15-stm32mp-r2-SCMI.patch \
|
||||
file://${LINUX_VERSION}/${LINUX_VERSION}.${LINUX_SUBVERSION}/0020-v5.15-stm32mp-r2-SOUND.patch \
|
||||
file://${LINUX_VERSION}/${LINUX_VERSION}.${LINUX_SUBVERSION}/0021-v5.15-stm32mp-r2-DEVICETREE.patch \
|
||||
file://${LINUX_VERSION}/${LINUX_VERSION}.${LINUX_SUBVERSION}/0022-v5.15-stm32mp-r2-CONFIG.patch \
|
||||
"
|
||||
|
||||
LINUX_TARGET = "stm32mp"
|
||||
LINUX_RELEASE = "r1"
|
||||
LINUX_RELEASE = "r2"
|
||||
|
||||
PV = "${LINUX_VERSION}.${LINUX_SUBVERSION}-${LINUX_TARGET}-${LINUX_RELEASE}"
|
||||
|
||||
@ -59,7 +59,7 @@ S = "${WORKDIR}/linux-${LINUX_VERSION}.${LINUX_SUBVERSION}"
|
||||
BBCLASSEXTEND = "devupstream:target"
|
||||
|
||||
SRC_URI:class-devupstream = "git://github.com/STMicroelectronics/linux.git;protocol=https;branch=${ARCHIVER_ST_BRANCH}"
|
||||
SRCREV:class-devupstream = "0ea7234e7642a404115908c4688a050cb6cc2503"
|
||||
SRCREV:class-devupstream = "661e4b11da679e4e1f4de088279282f6fbbe528b"
|
||||
|
||||
# ---------------------------------
|
||||
# Configure default preference to manage dynamic selection between tarball and github
|
||||
|
||||
Reference in New Issue
Block a user