* [PATCH v2 0/3] arm64: exynos: Enable drivers for Exynos5433 @ 2017-03-14 17:10 Krzysztof Kozlowski 2017-03-14 17:10 ` [PATCH v2 1/3] arm64: defconfig: Enable video, DRM and LPASS drivers for Exynos5433 and Exynos7 Krzysztof Kozlowski ` (3 more replies) 0 siblings, 4 replies; 7+ messages in thread From: Krzysztof Kozlowski @ 2017-03-14 17:10 UTC (permalink / raw) To: linux-arm-kernel Hi, Patches are independent but I organized them into one patchset as they have common goal - enable more drivers for ARMv8 Exynos chips. If there are no objections, I can take it through samsung-soc. Changes since v1: ================ 1. Patch 1/3: Do not enable entire DRM stack but only drivers supporting Exynos5433 and Exynos7 (suggested by Bartlomiej). 2. Add Bartlomiej's and Alim's reviews. Best regards, Krzysztof Krzysztof Kozlowski (3): arm64: defconfig: Enable video, DRM and LPASS drivers for Exynos5433 and Exynos7 soc: samsung: Do not build ARMv7 PMU drivers on ARMv8 arm64: exynos: Enable Exynos PMU and PM domains drivers arch/arm64/Kconfig.platforms | 2 ++ arch/arm64/configs/defconfig | 11 +++++++++++ drivers/soc/samsung/Kconfig | 8 +++++++- drivers/soc/samsung/Makefile | 4 +++- drivers/soc/samsung/exynos-pmu.c | 22 ++++++++++++++++------ drivers/soc/samsung/exynos-pmu.h | 3 +++ 6 files changed, 42 insertions(+), 8 deletions(-) -- 2.9.3 ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v2 1/3] arm64: defconfig: Enable video, DRM and LPASS drivers for Exynos5433 and Exynos7 2017-03-14 17:10 [PATCH v2 0/3] arm64: exynos: Enable drivers for Exynos5433 Krzysztof Kozlowski @ 2017-03-14 17:10 ` Krzysztof Kozlowski 2017-03-15 1:01 ` Chanwoo Choi 2017-03-14 17:10 ` [PATCH v2 2/3] soc: samsung: Do not build ARMv7 PMU drivers on ARMv8 Krzysztof Kozlowski ` (2 subsequent siblings) 3 siblings, 1 reply; 7+ messages in thread From: Krzysztof Kozlowski @ 2017-03-14 17:10 UTC (permalink / raw) To: linux-arm-kernel Enable drivers specific to Exynos5433 and Exynos7: 1. MFD Low Power Audio SubSystem (LPASS), 2. DRM drivers (DECON display, outputs), 3. Drivers for video-related sub-blocks (JPEG, Multi Format Codec, GScaler). Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org> --- arch/arm64/configs/defconfig | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig index 5e7fa211eb0a..3b54794d3166 100644 --- a/arch/arm64/configs/defconfig +++ b/arch/arm64/configs/defconfig @@ -302,6 +302,7 @@ CONFIG_RENESAS_WDT=y CONFIG_S3C2410_WATCHDOG=y CONFIG_MESON_GXBB_WATCHDOG=m CONFIG_MESON_WATCHDOG=m +CONFIG_MFD_EXYNOS_LPASS=m CONFIG_MFD_MAX77620=y CONFIG_MFD_RK808=y CONFIG_MFD_SPMI_PMIC=y @@ -327,10 +328,20 @@ CONFIG_MEDIA_CONTROLLER=y CONFIG_VIDEO_V4L2_SUBDEV_API=y # CONFIG_DVB_NET is not set CONFIG_V4L_MEM2MEM_DRIVERS=y +CONFIG_VIDEO_SAMSUNG_S5P_JPEG=m +CONFIG_VIDEO_SAMSUNG_S5P_MFC=m +CONFIG_VIDEO_SAMSUNG_EXYNOS_GSC=m CONFIG_VIDEO_RENESAS_FCP=m CONFIG_VIDEO_RENESAS_VSP1=m CONFIG_DRM=m CONFIG_DRM_NOUVEAU=m +CONFIG_DRM_EXYNOS=m +CONFIG_DRM_EXYNOS5433_DECON=y +CONFIG_DRM_EXYNOS7_DECON=y +CONFIG_DRM_EXYNOS_DSI=y +# CONFIG_DRM_EXYNOS_DP is not set +CONFIG_DRM_EXYNOS_HDMI=y +CONFIG_DRM_EXYNOS_MIC=y CONFIG_DRM_RCAR_DU=m CONFIG_DRM_RCAR_HDMI=y CONFIG_DRM_RCAR_LVDS=y -- 2.9.3 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v2 1/3] arm64: defconfig: Enable video, DRM and LPASS drivers for Exynos5433 and Exynos7 2017-03-14 17:10 ` [PATCH v2 1/3] arm64: defconfig: Enable video, DRM and LPASS drivers for Exynos5433 and Exynos7 Krzysztof Kozlowski @ 2017-03-15 1:01 ` Chanwoo Choi 0 siblings, 0 replies; 7+ messages in thread From: Chanwoo Choi @ 2017-03-15 1:01 UTC (permalink / raw) To: linux-arm-kernel Hi, On 2017? 03? 15? 02:10, Krzysztof Kozlowski wrote: > Enable drivers specific to Exynos5433 and Exynos7: > 1. MFD Low Power Audio SubSystem (LPASS), > 2. DRM drivers (DECON display, outputs), > 3. Drivers for video-related sub-blocks (JPEG, Multi Format Codec, > GScaler). > > Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org> > --- > arch/arm64/configs/defconfig | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig > index 5e7fa211eb0a..3b54794d3166 100644 > --- a/arch/arm64/configs/defconfig > +++ b/arch/arm64/configs/defconfig > @@ -302,6 +302,7 @@ CONFIG_RENESAS_WDT=y > CONFIG_S3C2410_WATCHDOG=y > CONFIG_MESON_GXBB_WATCHDOG=m > CONFIG_MESON_WATCHDOG=m > +CONFIG_MFD_EXYNOS_LPASS=m > CONFIG_MFD_MAX77620=y > CONFIG_MFD_RK808=y > CONFIG_MFD_SPMI_PMIC=y > @@ -327,10 +328,20 @@ CONFIG_MEDIA_CONTROLLER=y > CONFIG_VIDEO_V4L2_SUBDEV_API=y > # CONFIG_DVB_NET is not set > CONFIG_V4L_MEM2MEM_DRIVERS=y > +CONFIG_VIDEO_SAMSUNG_S5P_JPEG=m > +CONFIG_VIDEO_SAMSUNG_S5P_MFC=m > +CONFIG_VIDEO_SAMSUNG_EXYNOS_GSC=m > CONFIG_VIDEO_RENESAS_FCP=m > CONFIG_VIDEO_RENESAS_VSP1=m > CONFIG_DRM=m > CONFIG_DRM_NOUVEAU=m > +CONFIG_DRM_EXYNOS=m > +CONFIG_DRM_EXYNOS5433_DECON=y > +CONFIG_DRM_EXYNOS7_DECON=y > +CONFIG_DRM_EXYNOS_DSI=y > +# CONFIG_DRM_EXYNOS_DP is not set > +CONFIG_DRM_EXYNOS_HDMI=y > +CONFIG_DRM_EXYNOS_MIC=y > CONFIG_DRM_RCAR_DU=m > CONFIG_DRM_RCAR_HDMI=y > CONFIG_DRM_RCAR_LVDS=y > Reviewed-by: Chanwoo Choi <cw00.choi@samsung.com> -- Best Regards, Chanwoo Choi Samsung Electronics ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v2 2/3] soc: samsung: Do not build ARMv7 PMU drivers on ARMv8 2017-03-14 17:10 [PATCH v2 0/3] arm64: exynos: Enable drivers for Exynos5433 Krzysztof Kozlowski 2017-03-14 17:10 ` [PATCH v2 1/3] arm64: defconfig: Enable video, DRM and LPASS drivers for Exynos5433 and Exynos7 Krzysztof Kozlowski @ 2017-03-14 17:10 ` Krzysztof Kozlowski 2017-03-14 17:10 ` [PATCH v2 3/3] arm64: exynos: Enable Exynos PMU and PM domains drivers Krzysztof Kozlowski 2017-03-21 17:18 ` [PATCH v2 0/3] arm64: exynos: Enable drivers for Exynos5433 Krzysztof Kozlowski 3 siblings, 0 replies; 7+ messages in thread From: Krzysztof Kozlowski @ 2017-03-14 17:10 UTC (permalink / raw) To: linux-arm-kernel The Exynos Power Management Unit (PMU) drivers contain quite large static arrays of register values necessary for given Exynos SoC to enter low power mode. All this data is useless for ARMv8 SoC like Exynos5433, because the image will not be shared between ARMv7 and ARMv8. Add additional Kconfig symbol for selecting the SoC-specific driver addons thus skipping the useless data in the final image (this is similar approach to chosen for Exynos clock controller drivers): - exynos-pmu driver will be compiled on both architectures ARMv7 and ARMv8, - additional driver_data for ARMv7 SoCs will not be built on ARMv8 and a macro will return NULL for them in of_device_id - this should be safe as these compatibles cannot match on ARMv7 and driver anyway handles NULL driver_data, - on ARMv8 compile only exynos-pmu driver which exposes the syscon-regmap for PMU address space. Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org> Reviewed-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> Reviewed-by: Alim Akhtar <alim.akhtar@samsung.com> --- drivers/soc/samsung/Kconfig | 8 +++++++- drivers/soc/samsung/Makefile | 4 +++- drivers/soc/samsung/exynos-pmu.c | 22 ++++++++++++++++------ drivers/soc/samsung/exynos-pmu.h | 3 +++ 4 files changed, 29 insertions(+), 8 deletions(-) diff --git a/drivers/soc/samsung/Kconfig b/drivers/soc/samsung/Kconfig index 245533907d1b..8b25bd55e648 100644 --- a/drivers/soc/samsung/Kconfig +++ b/drivers/soc/samsung/Kconfig @@ -8,7 +8,13 @@ if SOC_SAMSUNG config EXYNOS_PMU bool "Exynos PMU controller driver" if COMPILE_TEST - depends on (ARM && ARCH_EXYNOS) || ((ARM || ARM64) && COMPILE_TEST) + depends on ARCH_EXYNOS || ((ARM || ARM64) && COMPILE_TEST) + select EXYNOS_PMU_ARM_DRIVERS if ARM && ARCH_EXYNOS + +# There is no need to enable these drivers for ARMv8 +config EXYNOS_PMU_ARM_DRIVERS + bool "Exynos PMU ARMv7-specific driver extensions" if COMPILE_TEST + depends on EXYNOS_PMU config EXYNOS_PM_DOMAINS bool "Exynos PM domains" if COMPILE_TEST diff --git a/drivers/soc/samsung/Makefile b/drivers/soc/samsung/Makefile index 3619f2ecddaa..4d7694a4e7a4 100644 --- a/drivers/soc/samsung/Makefile +++ b/drivers/soc/samsung/Makefile @@ -1,3 +1,5 @@ -obj-$(CONFIG_EXYNOS_PMU) += exynos-pmu.o exynos3250-pmu.o exynos4-pmu.o \ +obj-$(CONFIG_EXYNOS_PMU) += exynos-pmu.o + +obj-$(CONFIG_EXYNOS_PMU_ARM_DRIVERS) += exynos3250-pmu.o exynos4-pmu.o \ exynos5250-pmu.o exynos5420-pmu.o obj-$(CONFIG_EXYNOS_PM_DOMAINS) += pm_domains.o diff --git a/drivers/soc/samsung/exynos-pmu.c b/drivers/soc/samsung/exynos-pmu.c index 56d9244ff981..bd4a76f27bc2 100644 --- a/drivers/soc/samsung/exynos-pmu.c +++ b/drivers/soc/samsung/exynos-pmu.c @@ -69,27 +69,37 @@ void exynos_sys_powerdown_conf(enum sys_powerdown mode) } /* + * Split the data between ARM architectures because it is relatively big + * and useless on other arch. + */ +#ifdef CONFIG_EXYNOS_PMU_ARM_DRIVERS +#define exynos_pmu_data_arm_ptr(data) (&data) +#else +#define exynos_pmu_data_arm_ptr(data) NULL +#endif + +/* * PMU platform driver and devicetree bindings. */ static const struct of_device_id exynos_pmu_of_device_ids[] = { { .compatible = "samsung,exynos3250-pmu", - .data = &exynos3250_pmu_data, + .data = exynos_pmu_data_arm_ptr(exynos3250_pmu_data), }, { .compatible = "samsung,exynos4210-pmu", - .data = &exynos4210_pmu_data, + .data = exynos_pmu_data_arm_ptr(exynos4210_pmu_data), }, { .compatible = "samsung,exynos4212-pmu", - .data = &exynos4212_pmu_data, + .data = exynos_pmu_data_arm_ptr(exynos4212_pmu_data), }, { .compatible = "samsung,exynos4412-pmu", - .data = &exynos4412_pmu_data, + .data = exynos_pmu_data_arm_ptr(exynos4412_pmu_data), }, { .compatible = "samsung,exynos5250-pmu", - .data = &exynos5250_pmu_data, + .data = exynos_pmu_data_arm_ptr(exynos5250_pmu_data), }, { .compatible = "samsung,exynos5420-pmu", - .data = &exynos5420_pmu_data, + .data = exynos_pmu_data_arm_ptr(exynos5420_pmu_data), }, { .compatible = "samsung,exynos5433-pmu", }, diff --git a/drivers/soc/samsung/exynos-pmu.h b/drivers/soc/samsung/exynos-pmu.h index a469e366fead..40d4229abfb5 100644 --- a/drivers/soc/samsung/exynos-pmu.h +++ b/drivers/soc/samsung/exynos-pmu.h @@ -31,6 +31,8 @@ struct exynos_pmu_data { }; extern void __iomem *pmu_base_addr; + +#ifdef CONFIG_EXYNOS_PMU_ARM_DRIVERS /* list of all exported SoC specific data */ extern const struct exynos_pmu_data exynos3250_pmu_data; extern const struct exynos_pmu_data exynos4210_pmu_data; @@ -38,6 +40,7 @@ extern const struct exynos_pmu_data exynos4212_pmu_data; extern const struct exynos_pmu_data exynos4412_pmu_data; extern const struct exynos_pmu_data exynos5250_pmu_data; extern const struct exynos_pmu_data exynos5420_pmu_data; +#endif extern void pmu_raw_writel(u32 val, u32 offset); extern u32 pmu_raw_readl(u32 offset); -- 2.9.3 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v2 3/3] arm64: exynos: Enable Exynos PMU and PM domains drivers 2017-03-14 17:10 [PATCH v2 0/3] arm64: exynos: Enable drivers for Exynos5433 Krzysztof Kozlowski 2017-03-14 17:10 ` [PATCH v2 1/3] arm64: defconfig: Enable video, DRM and LPASS drivers for Exynos5433 and Exynos7 Krzysztof Kozlowski 2017-03-14 17:10 ` [PATCH v2 2/3] soc: samsung: Do not build ARMv7 PMU drivers on ARMv8 Krzysztof Kozlowski @ 2017-03-14 17:10 ` Krzysztof Kozlowski 2017-03-15 0:55 ` Chanwoo Choi 2017-03-21 17:18 ` [PATCH v2 0/3] arm64: exynos: Enable drivers for Exynos5433 Krzysztof Kozlowski 3 siblings, 1 reply; 7+ messages in thread From: Krzysztof Kozlowski @ 2017-03-14 17:10 UTC (permalink / raw) To: linux-arm-kernel Enable EXYNOS_PM_DOMAINS because recently Exynos5433 got support for Power Management domains. The Exynos5433 pinctrl driver requires EXYNOS_PMU to get the syscon-regmap for PMU address space. Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org> Reviewed-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> Reviewed-by: Alim Akhtar <alim.akhtar@samsung.com> --- arch/arm64/Kconfig.platforms | 2 ++ 1 file changed, 2 insertions(+) diff --git a/arch/arm64/Kconfig.platforms b/arch/arm64/Kconfig.platforms index 129cc5ae4091..9cdaecd3e583 100644 --- a/arch/arm64/Kconfig.platforms +++ b/arch/arm64/Kconfig.platforms @@ -54,6 +54,8 @@ config ARCH_BRCMSTB config ARCH_EXYNOS bool "ARMv8 based Samsung Exynos SoC family" select COMMON_CLK_SAMSUNG + select EXYNOS_PM_DOMAINS if PM_GENERIC_DOMAINS + select EXYNOS_PMU select HAVE_S3C2410_WATCHDOG if WATCHDOG select HAVE_S3C_RTC if RTC_CLASS select PINCTRL -- 2.9.3 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v2 3/3] arm64: exynos: Enable Exynos PMU and PM domains drivers 2017-03-14 17:10 ` [PATCH v2 3/3] arm64: exynos: Enable Exynos PMU and PM domains drivers Krzysztof Kozlowski @ 2017-03-15 0:55 ` Chanwoo Choi 0 siblings, 0 replies; 7+ messages in thread From: Chanwoo Choi @ 2017-03-15 0:55 UTC (permalink / raw) To: linux-arm-kernel Hi, On 2017? 03? 15? 02:10, Krzysztof Kozlowski wrote: > Enable EXYNOS_PM_DOMAINS because recently Exynos5433 got support for > Power Management domains. The Exynos5433 pinctrl driver requires > EXYNOS_PMU to get the syscon-regmap for PMU address space. > > Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org> > Reviewed-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> > Reviewed-by: Alim Akhtar <alim.akhtar@samsung.com> > --- > arch/arm64/Kconfig.platforms | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/arch/arm64/Kconfig.platforms b/arch/arm64/Kconfig.platforms > index 129cc5ae4091..9cdaecd3e583 100644 > --- a/arch/arm64/Kconfig.platforms > +++ b/arch/arm64/Kconfig.platforms > @@ -54,6 +54,8 @@ config ARCH_BRCMSTB > config ARCH_EXYNOS > bool "ARMv8 based Samsung Exynos SoC family" > select COMMON_CLK_SAMSUNG > + select EXYNOS_PM_DOMAINS if PM_GENERIC_DOMAINS > + select EXYNOS_PMU > select HAVE_S3C2410_WATCHDOG if WATCHDOG > select HAVE_S3C_RTC if RTC_CLASS > select PINCTRL > Reviewed-by: Chanwoo Choi <cw00.choi@samsung.com> -- Best Regards, Chanwoo Choi Samsung Electronics ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v2 0/3] arm64: exynos: Enable drivers for Exynos5433 2017-03-14 17:10 [PATCH v2 0/3] arm64: exynos: Enable drivers for Exynos5433 Krzysztof Kozlowski ` (2 preceding siblings ...) 2017-03-14 17:10 ` [PATCH v2 3/3] arm64: exynos: Enable Exynos PMU and PM domains drivers Krzysztof Kozlowski @ 2017-03-21 17:18 ` Krzysztof Kozlowski 3 siblings, 0 replies; 7+ messages in thread From: Krzysztof Kozlowski @ 2017-03-21 17:18 UTC (permalink / raw) To: linux-arm-kernel On Tue, Mar 14, 2017 at 07:10:25PM +0200, Krzysztof Kozlowski wrote: > Hi, > > > Patches are independent but I organized them into one patchset > as they have common goal - enable more drivers for ARMv8 Exynos chips. > > If there are no objections, I can take it through samsung-soc. > > Changes since v1: > ================ > 1. Patch 1/3: Do not enable entire DRM stack but only drivers > supporting Exynos5433 and Exynos7 (suggested by Bartlomiej). > 2. Add Bartlomiej's and Alim's reviews. > > > Best regards, > Krzysztof > I appled all three to samsung-soc and I will push them through arm-soc. Best regards, Krzysztof ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2017-03-21 17:18 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2017-03-14 17:10 [PATCH v2 0/3] arm64: exynos: Enable drivers for Exynos5433 Krzysztof Kozlowski 2017-03-14 17:10 ` [PATCH v2 1/3] arm64: defconfig: Enable video, DRM and LPASS drivers for Exynos5433 and Exynos7 Krzysztof Kozlowski 2017-03-15 1:01 ` Chanwoo Choi 2017-03-14 17:10 ` [PATCH v2 2/3] soc: samsung: Do not build ARMv7 PMU drivers on ARMv8 Krzysztof Kozlowski 2017-03-14 17:10 ` [PATCH v2 3/3] arm64: exynos: Enable Exynos PMU and PM domains drivers Krzysztof Kozlowski 2017-03-15 0:55 ` Chanwoo Choi 2017-03-21 17:18 ` [PATCH v2 0/3] arm64: exynos: Enable drivers for Exynos5433 Krzysztof Kozlowski
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).