Message ID | 20230416133422.1949-1-aweber.kernel@gmail.com |
---|---|
Headers | show |
Series | Re-introduce Exynos4212 support and add Samsung Galaxy Tab 3 8.0 boards | expand |
On 16/04/2023 15:34, Artur Weber wrote: > The platform was originally dropped in commit bca9085e0ae9 ("ARM: > dts: exynos: remove Exynos4212 support (dead code)"), as there were > no boards using it. You meant commit c40610198f35e? This is the one which you partially revert. > > We will be adding a device that uses it, so add it back. > > Signed-off-by: Artur Weber <aweber.kernel@gmail.com> > --- > Documentation/devicetree/bindings/soc/samsung/exynos-pmu.yaml | 3 +++ > 1 file changed, 3 insertions(+) > Best regards, Krzysztof
On 16/04/2023 15:34, Artur Weber wrote: > The platform was originally dropped in commit bca9085e0ae9 ("ARM: > dts: exynos: remove Exynos4212 support (dead code)"), as there were > no boards using it. This is not accurate. Platform was not dropped with that commit. This was only DTS. I propose to drop it and focus on commit which you are reverting. > > We will be adding a device that uses it, so add it back. > > This effectively reverts commit 9e43eca3c874 ("ARM: EXYNOS: Remove > Exynos4212 related dead code"). > > Signed-off-by: Artur Weber <aweber.kernel@gmail.com> > --- > arch/arm/mach-exynos/Kconfig | 5 +++++ > arch/arm/mach-exynos/common.h | 8 ++++++++ > arch/arm/mach-exynos/exynos.c | 2 ++ > arch/arm/mach-exynos/firmware.c | 8 +++++++- > arch/arm/mach-exynos/pm.c | 2 +- > arch/arm/mach-exynos/suspend.c | 4 ++++ > 6 files changed, 27 insertions(+), 2 deletions(-) > > diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig > index 4d3b40e4049a..b3d5df5225fe 100644 > --- a/arch/arm/mach-exynos/Kconfig > +++ b/arch/arm/mach-exynos/Kconfig > @@ -78,6 +78,11 @@ config CPU_EXYNOS4210 > default y > depends on ARCH_EXYNOS4 > > +config SOC_EXYNOS4212 > + bool "Samsung Exynos4212" > + default y > + depends on ARCH_EXYNOS4 > + > config SOC_EXYNOS4412 > bool "Samsung Exynos4412" > default y > diff --git a/arch/arm/mach-exynos/common.h b/arch/arm/mach-exynos/common.h > index 29eb075b24a4..c9e85d33c309 100644 > --- a/arch/arm/mach-exynos/common.h > +++ b/arch/arm/mach-exynos/common.h > @@ -15,6 +15,7 @@ > #define EXYNOS3_SOC_MASK 0xFFFFF000 > > #define EXYNOS4210_CPU_ID 0x43210000 > +#define EXYNOS4212_CPU_ID 0x43220000 > #define EXYNOS4412_CPU_ID 0xE4412200 > #define EXYNOS4_CPU_MASK 0xFFFE0000 > > @@ -34,6 +35,7 @@ static inline int is_samsung_##name(void) \ > > IS_SAMSUNG_CPU(exynos3250, EXYNOS3250_SOC_ID, EXYNOS3_SOC_MASK) > IS_SAMSUNG_CPU(exynos4210, EXYNOS4210_CPU_ID, EXYNOS4_CPU_MASK) > +IS_SAMSUNG_CPU(exynos4212, EXYNOS4212_CPU_ID, EXYNOS4_CPU_MASK) > IS_SAMSUNG_CPU(exynos4412, EXYNOS4412_CPU_ID, EXYNOS4_CPU_MASK) > IS_SAMSUNG_CPU(exynos5250, EXYNOS5250_SOC_ID, EXYNOS5_SOC_MASK) > IS_SAMSUNG_CPU(exynos5410, EXYNOS5410_SOC_ID, EXYNOS5_SOC_MASK) > @@ -52,6 +54,12 @@ IS_SAMSUNG_CPU(exynos5800, EXYNOS5800_SOC_ID, EXYNOS5_SOC_MASK) > # define soc_is_exynos4210() 0 > #endif > > +#if defined(CONFIG_SOC_EXYNOS4212) > +# define soc_is_exynos4212() is_samsung_exynos4212() > +#else > +# define soc_is_exynos4212() 0 > +#endif > + > #if defined(CONFIG_SOC_EXYNOS4412) > # define soc_is_exynos4412() is_samsung_exynos4412() > #else > diff --git a/arch/arm/mach-exynos/exynos.c b/arch/arm/mach-exynos/exynos.c > index 51a247ca4da8..5671621f1661 100644 > --- a/arch/arm/mach-exynos/exynos.c > +++ b/arch/arm/mach-exynos/exynos.c > @@ -178,6 +178,7 @@ static void __init exynos_dt_machine_init(void) > exynos_cpuidle.dev.platform_data = &cpuidle_coupled_exynos_data; > #endif > if (of_machine_is_compatible("samsung,exynos4210") || > + of_machine_is_compatible("samsung,exynos4212") || > (of_machine_is_compatible("samsung,exynos4412") && > (of_machine_is_compatible("samsung,trats2") || > of_machine_is_compatible("samsung,midas") || > @@ -192,6 +193,7 @@ static char const *const exynos_dt_compat[] __initconst = { > "samsung,exynos3250", > "samsung,exynos4", > "samsung,exynos4210", > + "samsung,exynos4212", > "samsung,exynos4412", > "samsung,exynos5", > "samsung,exynos5250", > diff --git a/arch/arm/mach-exynos/firmware.c b/arch/arm/mach-exynos/firmware.c > index 2da5b60b59e2..110c8064ee64 100644 > --- a/arch/arm/mach-exynos/firmware.c > +++ b/arch/arm/mach-exynos/firmware.c > @@ -63,12 +63,18 @@ static int exynos_cpu_boot(int cpu) > * > * On Exynos5 devices the call is ignored by trustzone firmware. > */ > - if (!soc_is_exynos4210() && !soc_is_exynos4412()) > + if (!soc_is_exynos4210() && !soc_is_exynos4412() && > + !soc_is_exynos4212()) Keep them ordered, so 4210, 4212 and 4412. > return 0; > > /* > * The second parameter of SMC_CMD_CPU1BOOT command means CPU id. > + * But, Exynos4212 has only one secondary CPU so second parameter > + * isn't used for informing secure firmware about CPU id. > */ > + if (soc_is_exynos4212()) > + cpu = 0; > + > exynos_smc(SMC_CMD_CPU1BOOT, cpu, 0, 0); > return 0; > } > diff --git a/arch/arm/mach-exynos/pm.c b/arch/arm/mach-exynos/pm.c > index 30f4e55bf39e..9b6db04e4e34 100644 > --- a/arch/arm/mach-exynos/pm.c > +++ b/arch/arm/mach-exynos/pm.c > @@ -161,7 +161,7 @@ void exynos_enter_aftr(void) > > exynos_pm_central_suspend(); > > - if (soc_is_exynos4412()) { > + if (soc_is_exynos4412() || soc_is_exynos4212()) { Ditto Best regards, Krzysztof
On 16/04/2023 15:34, Artur Weber wrote: > In preparation for the re-introduction of the Exynos4212, move > their shared definitions to a separate file. Rename the pinctrl > definitions accordingly, and adapt the Exynos4412 DTSI to these > changes. This should be actually revert of the commit you are referencing in all other patches. Why is it not? > > Signed-off-by: Artur Weber <aweber.kernel@gmail.com> > --- > arch/arm/boot/dts/exynos4412.dtsi | 645 +---------------- > ...2-pinctrl.dtsi => exynos4x12-pinctrl.dtsi} | 4 +- > arch/arm/boot/dts/exynos4x12.dtsi | 665 ++++++++++++++++++ Copy should be detected. Play with -M/-B/-C arguments to format-patch. Best regards, Krzysztof
On 16/04/2023 15:34, Artur Weber wrote: > Add the compatible strings for the Samsung Galaxy Tab 3 8.0 series > of tablets. > > Signed-off-by: Artur Weber <aweber.kernel@gmail.com> > --- > .../bindings/arm/samsung/samsung-boards.yaml | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/Documentation/devicetree/bindings/arm/samsung/samsung-boards.yaml b/Documentation/devicetree/bindings/arm/samsung/samsung-boards.yaml > index deb2cf971871..4ee026e7f7ad 100644 > --- a/Documentation/devicetree/bindings/arm/samsung/samsung-boards.yaml > +++ b/Documentation/devicetree/bindings/arm/samsung/samsung-boards.yaml > @@ -104,6 +104,16 @@ properties: > - const: samsung,exynos4412 > - const: samsung,exynos4 > > + - description: Samsung Tab3 family boards s/Samsung Tab3/Samsung Galaxy Tab3/ > + items: > + - enum: > + - samsung,t310 # Samsung Galaxy Tab 3 8.0 WiFi (SM-T310) > + - samsung,t311 # Samsung Galaxy Tab 3 8.0 3G (SM-T311) > + - samsung,t315 # Samsung Galaxy Tab 3 8.0 LTE (SM-T315) > + - const: samsung,tab3 > + - const: samsung,exynos4212 > + - const: samsung,exynos4 The entries are ordered by SoC compatible, so this should go before Exynos4412. > + > - description: Exynos5250 based boards > items: > - enum: Best regards, Krzysztof
This patches re-introduces the Exynos4212 platform and adds support for the Samsung Galaxy Tab 3 8.0 series of tablets that uses it: - Samsung Galaxy Tab 3 8.0 WiFi (SM-T310/lt01wifi) - Samsung Galaxy Tab 3 8.0 3G (SM-T311/lt013g) - Samsung Galaxy Tab 3 8.0 LTE (SM-T315/lt01lte) What works: - Display and backlight - Touchscreen (without touchkeys) - GPIO buttons, hall sensor - WiFi and Bluetooth - USB, fuel gauge, charging (partial) - Accelerometer and magnetometer - WiFi model only: light sensor Display panel bindings used by the Tab3 DTSI are added in a separate patchset - "[PATCH 0/3] Add Samsung S6D7AA0 panel controller driver": https://lore.kernel.org/all/20230416131632.31673-1-aweber.kernel@gmail.com/ Signed-off-by: Artur Weber <aweber.kernel@gmail.com> Changed in v2: - Added note about display panel bindings to cover letter and Tab3 DTSI commit Artur Weber (12): dt-bindings: soc: samsung: add Exynos4212 PMU compatible dt-bindings: clock: add Exynos4212 clock compatible ARM: exynos: Re-introduce Exynos4212 support soc: samsung: Re-introduce Exynos4212 support clk: samsung: Add Exynos4212 compatible to CLKOUT driver clk: samsung: Re-add support for Exynos4212 CPU clock Revert "media: exynos4-is: Remove dependency on obsolete SoC support" Revert "phy: Remove SOC_EXYNOS4212 dep. from PHY_EXYNOS4X12_USB" ARM: dts: Move common Exynos4x12 definitions to exynos4x12.dtsi ARM: dts: Re-introduce Exynos4212 DTSI dt-bindings: arm: samsung: Add Samsung Galaxy Tab3 family boards ARM: dts: exynos: Add Samsung Galaxy Tab 3 8.0 boards .../bindings/arm/samsung/samsung-boards.yaml | 10 + .../bindings/clock/samsung,exynos-clock.yaml | 1 + .../bindings/soc/samsung/exynos-pmu.yaml | 3 + arch/arm/boot/dts/Makefile | 3 + arch/arm/boot/dts/exynos4212-tab3-3g8.dts | 30 + arch/arm/boot/dts/exynos4212-tab3-lte8.dts | 43 + arch/arm/boot/dts/exynos4212-tab3-wifi8.dts | 25 + arch/arm/boot/dts/exynos4212-tab3.dtsi | 1175 +++++++++++++++++ arch/arm/boot/dts/exynos4212.dtsi | 157 +++ arch/arm/boot/dts/exynos4412.dtsi | 645 +-------- ...2-pinctrl.dtsi => exynos4x12-pinctrl.dtsi} | 4 +- arch/arm/boot/dts/exynos4x12.dtsi | 665 ++++++++++ arch/arm/mach-exynos/Kconfig | 5 + arch/arm/mach-exynos/common.h | 8 + arch/arm/mach-exynos/exynos.c | 2 + arch/arm/mach-exynos/firmware.c | 8 +- arch/arm/mach-exynos/pm.c | 2 +- arch/arm/mach-exynos/suspend.c | 4 + drivers/clk/samsung/clk-exynos-clkout.c | 3 + drivers/clk/samsung/clk-exynos4.c | 44 +- .../media/platform/samsung/exynos4-is/Kconfig | 2 +- .../platform/samsung/exynos4-is/fimc-core.c | 2 +- .../platform/samsung/exynos4-is/fimc-lite.c | 2 +- drivers/phy/samsung/Kconfig | 2 +- drivers/soc/samsung/exynos-pmu.c | 9 + drivers/soc/samsung/exynos-pmu.h | 2 + drivers/soc/samsung/exynos4-pmu.c | 13 +- 27 files changed, 2213 insertions(+), 656 deletions(-) create mode 100644 arch/arm/boot/dts/exynos4212-tab3-3g8.dts create mode 100644 arch/arm/boot/dts/exynos4212-tab3-lte8.dts create mode 100644 arch/arm/boot/dts/exynos4212-tab3-wifi8.dts create mode 100644 arch/arm/boot/dts/exynos4212-tab3.dtsi create mode 100644 arch/arm/boot/dts/exynos4212.dtsi rename arch/arm/boot/dts/{exynos4412-pinctrl.dtsi => exynos4x12-pinctrl.dtsi} (99%) create mode 100644 arch/arm/boot/dts/exynos4x12.dtsi