linux-samsung-soc.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/3] arm64: exynos: Enable drivers for Exynos5433
@ 2017-03-11 21:38 Krzysztof Kozlowski
  2017-03-11 21:38 ` [PATCH 1/3] arm64: defconfig: Enable DRM and LPASS drivers for Exynos5433 and Exynos7 Krzysztof Kozlowski
                   ` (2 more replies)
  0 siblings, 3 replies; 14+ messages in thread
From: Krzysztof Kozlowski @ 2017-03-11 21:38 UTC (permalink / raw)
  To: Catalin Marinas, Will Deacon, Kukjin Kim, Krzysztof Kozlowski,
	Javier Martinez Canillas, Arnd Bergmann, Kevin Hilman,
	Olof Johansson, linux-arm-kernel, linux-kernel,
	linux-samsung-soc

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.


Best regards,
Krzysztof

Krzysztof Kozlowski (3):
  arm64: defconfig: Enable 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     | 18 ++++++++++++++++++
 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, 49 insertions(+), 8 deletions(-)

-- 
2.9.3

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH 1/3] arm64: defconfig: Enable DRM and LPASS drivers for Exynos5433 and Exynos7
  2017-03-11 21:38 [PATCH 0/3] arm64: exynos: Enable drivers for Exynos5433 Krzysztof Kozlowski
@ 2017-03-11 21:38 ` Krzysztof Kozlowski
       [not found]   ` <CGME20170314141613epcas5p30fa91bf723a5e3a8f11ce9a8cfdb7dd7@epcas5p3.samsung.com>
  2017-03-11 21:38 ` [PATCH 2/3] soc: samsung: Do not build ARMv7 PMU drivers on ARMv8 Krzysztof Kozlowski
  2017-03-11 21:38 ` [PATCH 3/3] arm64: exynos: Enable Exynos PMU and PM domains drivers Krzysztof Kozlowski
  2 siblings, 1 reply; 14+ messages in thread
From: Krzysztof Kozlowski @ 2017-03-11 21:38 UTC (permalink / raw)
  To: Catalin Marinas, Will Deacon, Kukjin Kim, Krzysztof Kozlowski,
	Javier Martinez Canillas, Arnd Bergmann, Kevin Hilman,
	Olof Johansson, linux-arm-kernel, linux-kernel,
	linux-samsung-soc

Enable drivers specific to Exynos5433 and Exynos7:
1. MFD Low Power Audio SubSystem (LPASS),
2. Entire DRM stack (display, outputs, additional sub-blocks),
3. Drivers for video-related sub-blocks (JPEG, Multi Format Codec,
   GScaler).

Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
---
 arch/arm64/configs/defconfig | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig
index 5e7fa211eb0a..81515cbd2fe8 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,27 @@ 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_EXYNOS_FIMD=y
+CONFIG_DRM_EXYNOS5433_DECON=y
+CONFIG_DRM_EXYNOS7_DECON=y
+CONFIG_DRM_EXYNOS_MIXER=y
+CONFIG_DRM_EXYNOS_VIDI=y
+CONFIG_DRM_EXYNOS_DPI=y
+CONFIG_DRM_EXYNOS_DSI=y
+CONFIG_DRM_EXYNOS_HDMI=y
+CONFIG_DRM_EXYNOS_MIC=y
+CONFIG_DRM_EXYNOS_G2D=y
+CONFIG_DRM_EXYNOS_IPP=y
+CONFIG_DRM_EXYNOS_FIMC=y
+CONFIG_DRM_EXYNOS_ROTATOR=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] 14+ messages in thread

* [PATCH 2/3] soc: samsung: Do not build ARMv7 PMU drivers on ARMv8
  2017-03-11 21:38 [PATCH 0/3] arm64: exynos: Enable drivers for Exynos5433 Krzysztof Kozlowski
  2017-03-11 21:38 ` [PATCH 1/3] arm64: defconfig: Enable DRM and LPASS drivers for Exynos5433 and Exynos7 Krzysztof Kozlowski
@ 2017-03-11 21:38 ` Krzysztof Kozlowski
       [not found]   ` <CGME20170314075427epcas5p19d137fbcc390e937172a17ae99f11a0c@epcas5p1.samsung.com>
       [not found]   ` <CGME20170314140626epcas5p20694a5324299c556fbaf7df1e9bf5955@epcas5p2.samsung.com>
  2017-03-11 21:38 ` [PATCH 3/3] arm64: exynos: Enable Exynos PMU and PM domains drivers Krzysztof Kozlowski
  2 siblings, 2 replies; 14+ messages in thread
From: Krzysztof Kozlowski @ 2017-03-11 21:38 UTC (permalink / raw)
  To: Catalin Marinas, Will Deacon, Kukjin Kim, Krzysztof Kozlowski,
	Javier Martinez Canillas, Arnd Bergmann, Kevin Hilman,
	Olof Johansson, linux-arm-kernel, linux-kernel,
	linux-samsung-soc

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>
---
 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] 14+ messages in thread

* [PATCH 3/3] arm64: exynos: Enable Exynos PMU and PM domains drivers
  2017-03-11 21:38 [PATCH 0/3] arm64: exynos: Enable drivers for Exynos5433 Krzysztof Kozlowski
  2017-03-11 21:38 ` [PATCH 1/3] arm64: defconfig: Enable DRM and LPASS drivers for Exynos5433 and Exynos7 Krzysztof Kozlowski
  2017-03-11 21:38 ` [PATCH 2/3] soc: samsung: Do not build ARMv7 PMU drivers on ARMv8 Krzysztof Kozlowski
@ 2017-03-11 21:38 ` Krzysztof Kozlowski
       [not found]   ` <CGME20170314141711epcas1p40ae1d73674e2c0eaa95da6d021456452@epcas1p4.samsung.com>
       [not found]   ` <CGME20170314143652epcas5p43c7c8556228f996d19d716506eb9a0ed@epcas5p4.samsung.com>
  2 siblings, 2 replies; 14+ messages in thread
From: Krzysztof Kozlowski @ 2017-03-11 21:38 UTC (permalink / raw)
  To: Catalin Marinas, Will Deacon, Kukjin Kim, Krzysztof Kozlowski,
	Javier Martinez Canillas, Arnd Bergmann, Kevin Hilman,
	Olof Johansson, linux-arm-kernel, linux-kernel,
	linux-samsung-soc

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>
---
 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] 14+ messages in thread

* Re: [2/3] soc: samsung: Do not build ARMv7 PMU drivers on ARMv8
       [not found]   ` <CGME20170314075427epcas5p19d137fbcc390e937172a17ae99f11a0c@epcas5p1.samsung.com>
@ 2017-03-14  7:51     ` Alim Akhtar
  2017-03-14  8:02       ` Krzysztof Kozlowski
  0 siblings, 1 reply; 14+ messages in thread
From: Alim Akhtar @ 2017-03-14  7:51 UTC (permalink / raw)
  To: Krzysztof Kozlowski, Catalin Marinas, Will Deacon, Kukjin Kim,
	Javier Martinez Canillas, Arnd Bergmann, Kevin Hilman,
	Olof Johansson, linux-arm-kernel, linux-kernel,
	linux-samsung-soc

Hi Krzysztof,

On 03/12/2017 03:08 AM, Krzysztof Kozlowski wrote:
> 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>
> ---
>  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
> +

In general this patch look ok, but I was think we should make these 
configs configurable via _menuconfig_. Currently these are visible only 
if COMPILE_TEST is enabled.
Recently I was working on adding PMU support for Exynos7 and I face 
issues when I want to disable this option and re-enable it for testing 
purpose.

> +# 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",
So, as I understand, the idea here to use something like
	.data = &exynos5433_pmu_data or so in case ARMv8?

>  	},
> 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);
>

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [2/3] soc: samsung: Do not build ARMv7 PMU drivers on ARMv8
  2017-03-14  7:51     ` [2/3] " Alim Akhtar
@ 2017-03-14  8:02       ` Krzysztof Kozlowski
  2017-03-14  8:40         ` Alim Akhtar
  0 siblings, 1 reply; 14+ messages in thread
From: Krzysztof Kozlowski @ 2017-03-14  8:02 UTC (permalink / raw)
  To: Alim Akhtar
  Cc: Catalin Marinas, Will Deacon, Kukjin Kim,
	Javier Martinez Canillas, Arnd Bergmann, Kevin Hilman,
	Olof Johansson, linux-arm-kernel, linux-kernel,
	linux-samsung-soc

On Tue, Mar 14, 2017 at 9:51 AM, Alim Akhtar <alim.akhtar@samsung.com> wrote:
> Hi Krzysztof,
>
> On 03/12/2017 03:08 AM, Krzysztof Kozlowski wrote:
>> 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>
>> ---
>>  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
>> +
>
> In general this patch look ok, but I was think we should make these
> configs configurable via _menuconfig_. Currently these are visible only
> if COMPILE_TEST is enabled.
> Recently I was working on adding PMU support for Exynos7 and I face
> issues when I want to disable this option and re-enable it for testing
> purpose.

These drivers are not available in menuconfig on purpose - these are
essential parts of SoC. Without them usually something will not work
so user should not be able to disable them. For all of such drivers,
we use the SELECT from mach approach.

>> +# 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",
> So, as I understand, the idea here to use something like
>         .data = &exynos5433_pmu_data or so in case ARMv8?

In the future, yes. Now there is no low power mode support for
Exynos5433 so the data is left empty.

Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [2/3] soc: samsung: Do not build ARMv7 PMU drivers on ARMv8
  2017-03-14  8:02       ` Krzysztof Kozlowski
@ 2017-03-14  8:40         ` Alim Akhtar
  2017-03-14  9:14           ` Krzysztof Kozlowski
  0 siblings, 1 reply; 14+ messages in thread
From: Alim Akhtar @ 2017-03-14  8:40 UTC (permalink / raw)
  To: Krzysztof Kozlowski
  Cc: Catalin Marinas, Will Deacon, Kukjin Kim,
	Javier Martinez Canillas, Arnd Bergmann, Kevin Hilman,
	Olof Johansson, linux-arm-kernel, linux-kernel,
	linux-samsung-soc



On 03/14/2017 01:32 PM, Krzysztof Kozlowski wrote:
> On Tue, Mar 14, 2017 at 9:51 AM, Alim Akhtar <alim.akhtar@samsung.com> wrote:
>> Hi Krzysztof,
>>
>> On 03/12/2017 03:08 AM, Krzysztof Kozlowski wrote:
>>> 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>
>>> ---
>>>  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
>>> +
>>
>> In general this patch look ok, but I was think we should make these
>> configs configurable via _menuconfig_. Currently these are visible only
>> if COMPILE_TEST is enabled.
>> Recently I was working on adding PMU support for Exynos7 and I face
>> issues when I want to disable this option and re-enable it for testing
>> purpose.
>
> These drivers are not available in menuconfig on purpose - these are
> essential parts of SoC. Without them usually something will not work
> so user should not be able to disable them. For all of such drivers,
> we use the SELECT from mach approach.
>
Well, what you are saying is very subjective. In past I have face issues 
where to isolate or narrow down some issue, we do need to play with PMU 
and power domains. So, having a configurable option won't hurt here.
Anyway if you (or anyone else) strongly feel we should be following 
"SELECT from MACH approach" then lets follow it.


>>> +# 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",
>> So, as I understand, the idea here to use something like
>>         .data = &exynos5433_pmu_data or so in case ARMv8?
>
> In the future, yes. Now there is no low power mode support for
> Exynos5433 so the data is left empty.
>
Ok, this is fine.

> Best regards,
> Krzysztof
>
>
>

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [2/3] soc: samsung: Do not build ARMv7 PMU drivers on ARMv8
  2017-03-14  8:40         ` Alim Akhtar
@ 2017-03-14  9:14           ` Krzysztof Kozlowski
  2017-03-14 14:30             ` Alim Akhtar
  0 siblings, 1 reply; 14+ messages in thread
From: Krzysztof Kozlowski @ 2017-03-14  9:14 UTC (permalink / raw)
  To: Alim Akhtar
  Cc: Catalin Marinas, Will Deacon, Kukjin Kim,
	Javier Martinez Canillas, Arnd Bergmann, Kevin Hilman,
	Olof Johansson, linux-arm-kernel, linux-kernel,
	linux-samsung-soc

On Tue, Mar 14, 2017 at 10:40 AM, Alim Akhtar <alim.akhtar@samsung.com> wrote:
>
>
> On 03/14/2017 01:32 PM, Krzysztof Kozlowski wrote:
>> On Tue, Mar 14, 2017 at 9:51 AM, Alim Akhtar <alim.akhtar@samsung.com> wrote:
>>> Hi Krzysztof,
>>>
>>> On 03/12/2017 03:08 AM, Krzysztof Kozlowski wrote:
>>>> 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>
>>>> ---
>>>>  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
>>>> +
>>>
>>> In general this patch look ok, but I was think we should make these
>>> configs configurable via _menuconfig_. Currently these are visible only
>>> if COMPILE_TEST is enabled.
>>> Recently I was working on adding PMU support for Exynos7 and I face
>>> issues when I want to disable this option and re-enable it for testing
>>> purpose.
>>
>> These drivers are not available in menuconfig on purpose - these are
>> essential parts of SoC. Without them usually something will not work
>> so user should not be able to disable them. For all of such drivers,
>> we use the SELECT from mach approach.
>>
> Well, what you are saying is very subjective. In past I have face issues
> where to isolate or narrow down some issue, we do need to play with PMU
> and power domains. So, having a configurable option won't hurt here.
> Anyway if you (or anyone else) strongly feel we should be following
> "SELECT from MACH approach" then lets follow it.

For ARMv7, in the past you could not do this. It behaved (almost)
always the same as it is now. The PMU driver was being compiled in if
ARCH_EXYNOS is selected.

On ARMv8 - Exynos7 - there was no PMU driver so indeed this behavior
changes. However PMU driver now is necessary for pinctrl (and actually
for some others referring by syscon) so really you cannot disable it
and expect things to work. Menuconfig serves such purpose - user
(distro config developer) can choose what he wants but he wants to
boot the kernel. People in general and people setting up configs for
distro usually do not know all the subtle SoC submodule relations for
all of the SoCs. That is our responsibility to provide them something
which is usable.

On the other hand, for debugging we always had to change some things.
That's debugging.

Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 2/3] soc: samsung: Do not build ARMv7 PMU drivers on ARMv8
       [not found]   ` <CGME20170314140626epcas5p20694a5324299c556fbaf7df1e9bf5955@epcas5p2.samsung.com>
@ 2017-03-14 14:06     ` Bartlomiej Zolnierkiewicz
  0 siblings, 0 replies; 14+ messages in thread
From: Bartlomiej Zolnierkiewicz @ 2017-03-14 14:06 UTC (permalink / raw)
  To: Krzysztof Kozlowski
  Cc: Catalin Marinas, Will Deacon, Kukjin Kim,
	Javier Martinez Canillas, Arnd Bergmann, Kevin Hilman,
	Olof Johansson, linux-arm-kernel, linux-kernel,
	linux-samsung-soc

On Saturday, March 11, 2017 11:38:55 PM Krzysztof Kozlowski wrote:
> 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>

Best regards,
--
Bartlomiej Zolnierkiewicz
Samsung R&D Institute Poland
Samsung Electronics

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 1/3] arm64: defconfig: Enable DRM and LPASS drivers for Exynos5433 and Exynos7
       [not found]   ` <CGME20170314141613epcas5p30fa91bf723a5e3a8f11ce9a8cfdb7dd7@epcas5p3.samsung.com>
@ 2017-03-14 14:16     ` Bartlomiej Zolnierkiewicz
  2017-03-14 14:18       ` Krzysztof Kozlowski
  0 siblings, 1 reply; 14+ messages in thread
From: Bartlomiej Zolnierkiewicz @ 2017-03-14 14:16 UTC (permalink / raw)
  To: linux-arm-kernel
  Cc: linux-samsung-soc, Arnd Bergmann, Catalin Marinas, Will Deacon,
	linux-kernel, Krzysztof Kozlowski, Javier Martinez Canillas,
	Kukjin Kim, Kevin Hilman, Olof Johansson


Hi,

On Saturday, March 11, 2017 11:38:54 PM Krzysztof Kozlowski wrote:
> Enable drivers specific to Exynos5433 and Exynos7:
> 1. MFD Low Power Audio SubSystem (LPASS),
> 2. Entire DRM stack (display, outputs, additional sub-blocks),
> 3. Drivers for video-related sub-blocks (JPEG, Multi Format Codec,
>    GScaler).
> 
> Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
> ---
>  arch/arm64/configs/defconfig | 18 ++++++++++++++++++
>  1 file changed, 18 insertions(+)
> 
> diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig
> index 5e7fa211eb0a..81515cbd2fe8 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,27 @@ 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_EXYNOS_FIMD=y
> +CONFIG_DRM_EXYNOS5433_DECON=y
> +CONFIG_DRM_EXYNOS7_DECON=y
> +CONFIG_DRM_EXYNOS_MIXER=y
> +CONFIG_DRM_EXYNOS_VIDI=y
> +CONFIG_DRM_EXYNOS_DPI=y
> +CONFIG_DRM_EXYNOS_DSI=y
> +CONFIG_DRM_EXYNOS_HDMI=y
> +CONFIG_DRM_EXYNOS_MIC=y
> +CONFIG_DRM_EXYNOS_G2D=y
> +CONFIG_DRM_EXYNOS_IPP=y
> +CONFIG_DRM_EXYNOS_FIMC=y
> +CONFIG_DRM_EXYNOS_ROTATOR=y

I would prefer to enable only sub-drivers that are actually
used on Exynos5433/Exynos7 hardware, i.e. currently only
exynos4.dtsi uses compatibles for FIMC and rotator drivers
(I have not checked all sub-drivers).

>  CONFIG_DRM_RCAR_DU=m
>  CONFIG_DRM_RCAR_HDMI=y
>  CONFIG_DRM_RCAR_LVDS=y

Best regards,
--
Bartlomiej Zolnierkiewicz
Samsung R&D Institute Poland
Samsung Electronics

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 3/3] arm64: exynos: Enable Exynos PMU and PM domains drivers
       [not found]   ` <CGME20170314141711epcas1p40ae1d73674e2c0eaa95da6d021456452@epcas1p4.samsung.com>
@ 2017-03-14 14:17     ` Bartlomiej Zolnierkiewicz
  0 siblings, 0 replies; 14+ messages in thread
From: Bartlomiej Zolnierkiewicz @ 2017-03-14 14:17 UTC (permalink / raw)
  To: Krzysztof Kozlowski
  Cc: Catalin Marinas, Will Deacon, Kukjin Kim,
	Javier Martinez Canillas, Arnd Bergmann, Kevin Hilman,
	Olof Johansson, linux-arm-kernel, linux-kernel,
	linux-samsung-soc

On Saturday, March 11, 2017 11:38:56 PM 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>

Best regards,
--
Bartlomiej Zolnierkiewicz
Samsung R&D Institute Poland
Samsung Electronics

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 1/3] arm64: defconfig: Enable DRM and LPASS drivers for Exynos5433 and Exynos7
  2017-03-14 14:16     ` Bartlomiej Zolnierkiewicz
@ 2017-03-14 14:18       ` Krzysztof Kozlowski
  0 siblings, 0 replies; 14+ messages in thread
From: Krzysztof Kozlowski @ 2017-03-14 14:18 UTC (permalink / raw)
  To: Bartlomiej Zolnierkiewicz
  Cc: linux-arm-kernel, Catalin Marinas, Will Deacon, Kukjin Kim,
	Javier Martinez Canillas, Arnd Bergmann, Kevin Hilman,
	Olof Johansson, linux-kernel, linux-samsung-soc

On Tue, Mar 14, 2017 at 4:16 PM, Bartlomiej Zolnierkiewicz
<b.zolnierkie@samsung.com> wrote:
>
> Hi,
>
> On Saturday, March 11, 2017 11:38:54 PM Krzysztof Kozlowski wrote:
>> Enable drivers specific to Exynos5433 and Exynos7:
>> 1. MFD Low Power Audio SubSystem (LPASS),
>> 2. Entire DRM stack (display, outputs, additional sub-blocks),
>> 3. Drivers for video-related sub-blocks (JPEG, Multi Format Codec,
>>    GScaler).
>>
>> Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
>> ---
>>  arch/arm64/configs/defconfig | 18 ++++++++++++++++++
>>  1 file changed, 18 insertions(+)
>>
>> diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig
>> index 5e7fa211eb0a..81515cbd2fe8 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,27 @@ 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_EXYNOS_FIMD=y
>> +CONFIG_DRM_EXYNOS5433_DECON=y
>> +CONFIG_DRM_EXYNOS7_DECON=y
>> +CONFIG_DRM_EXYNOS_MIXER=y
>> +CONFIG_DRM_EXYNOS_VIDI=y
>> +CONFIG_DRM_EXYNOS_DPI=y
>> +CONFIG_DRM_EXYNOS_DSI=y
>> +CONFIG_DRM_EXYNOS_HDMI=y
>> +CONFIG_DRM_EXYNOS_MIC=y
>> +CONFIG_DRM_EXYNOS_G2D=y
>> +CONFIG_DRM_EXYNOS_IPP=y
>> +CONFIG_DRM_EXYNOS_FIMC=y
>> +CONFIG_DRM_EXYNOS_ROTATOR=y
>
> I would prefer to enable only sub-drivers that are actually
> used on Exynos5433/Exynos7 hardware, i.e. currently only
> exynos4.dtsi uses compatibles for FIMC and rotator drivers
> (I have not checked all sub-drivers).

I thought I enabled only these which are present but apparently I went
too far. I'll fix it up. Thanks for review!

Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [2/3] soc: samsung: Do not build ARMv7 PMU drivers on ARMv8
  2017-03-14  9:14           ` Krzysztof Kozlowski
@ 2017-03-14 14:30             ` Alim Akhtar
  0 siblings, 0 replies; 14+ messages in thread
From: Alim Akhtar @ 2017-03-14 14:30 UTC (permalink / raw)
  To: Krzysztof Kozlowski
  Cc: linux-samsung-soc, Arnd Bergmann, Catalin Marinas, Will Deacon,
	linux-kernel, Javier Martinez Canillas, Kukjin Kim, Kevin Hilman,
	Olof Johansson, linux-arm-kernel



On 03/14/2017 02:44 PM, Krzysztof Kozlowski wrote:
> On Tue, Mar 14, 2017 at 10:40 AM, Alim Akhtar <alim.akhtar@samsung.com> wrote:
>>
>>
>> On 03/14/2017 01:32 PM, Krzysztof Kozlowski wrote:
>>> On Tue, Mar 14, 2017 at 9:51 AM, Alim Akhtar <alim.akhtar@samsung.com> wrote:
>>>> Hi Krzysztof,
>>>>
>>>> On 03/12/2017 03:08 AM, Krzysztof Kozlowski wrote:
>>>>> 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>
>>>>> ---
>>>>>  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
>>>>> +
>>>>
>>>> In general this patch look ok, but I was think we should make these
>>>> configs configurable via _menuconfig_. Currently these are visible only
>>>> if COMPILE_TEST is enabled.
>>>> Recently I was working on adding PMU support for Exynos7 and I face
>>>> issues when I want to disable this option and re-enable it for testing
>>>> purpose.
>>>
>>> These drivers are not available in menuconfig on purpose - these are
>>> essential parts of SoC. Without them usually something will not work
>>> so user should not be able to disable them. For all of such drivers,
>>> we use the SELECT from mach approach.
>>>
>> Well, what you are saying is very subjective. In past I have face issues
>> where to isolate or narrow down some issue, we do need to play with PMU
>> and power domains. So, having a configurable option won't hurt here.
>> Anyway if you (or anyone else) strongly feel we should be following
>> "SELECT from MACH approach" then lets follow it.
>
> For ARMv7, in the past you could not do this. It behaved (almost)
> always the same as it is now. The PMU driver was being compiled in if
> ARCH_EXYNOS is selected.
>
> On ARMv8 - Exynos7 - there was no PMU driver so indeed this behavior
> changes. However PMU driver now is necessary for pinctrl (and actually
> for some others referring by syscon) so really you cannot disable it
> and expect things to work. Menuconfig serves such purpose - user
> (distro config developer) can choose what he wants but he wants to
> boot the kernel. People in general and people setting up configs for
> distro usually do not know all the subtle SoC submodule relations for
> all of the SoCs. That is our responsibility to provide them something
> which is usable.
>
> On the other hand, for debugging we always had to change some things.
> That's debugging.
>
Ok, got it.
Feel free to add
Reviewed-by: Alim Akhtar <alim.akhtar@samsung.com>

> Best regards,
> Krzysztof
>
>
>

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [3/3] arm64: exynos: Enable Exynos PMU and PM domains drivers
       [not found]   ` <CGME20170314143652epcas5p43c7c8556228f996d19d716506eb9a0ed@epcas5p4.samsung.com>
@ 2017-03-14 14:33     ` Alim Akhtar
  0 siblings, 0 replies; 14+ messages in thread
From: Alim Akhtar @ 2017-03-14 14:33 UTC (permalink / raw)
  To: Krzysztof Kozlowski, Catalin Marinas, Will Deacon, Kukjin Kim,
	Javier Martinez Canillas, Arnd Bergmann, Kevin Hilman,
	Olof Johansson, linux-arm-kernel, linux-kernel,
	linux-samsung-soc



On 03/12/2017 03:08 AM, 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>
> ---
Looks good.
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
>

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2017-03-14 14:36 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-03-11 21:38 [PATCH 0/3] arm64: exynos: Enable drivers for Exynos5433 Krzysztof Kozlowski
2017-03-11 21:38 ` [PATCH 1/3] arm64: defconfig: Enable DRM and LPASS drivers for Exynos5433 and Exynos7 Krzysztof Kozlowski
     [not found]   ` <CGME20170314141613epcas5p30fa91bf723a5e3a8f11ce9a8cfdb7dd7@epcas5p3.samsung.com>
2017-03-14 14:16     ` Bartlomiej Zolnierkiewicz
2017-03-14 14:18       ` Krzysztof Kozlowski
2017-03-11 21:38 ` [PATCH 2/3] soc: samsung: Do not build ARMv7 PMU drivers on ARMv8 Krzysztof Kozlowski
     [not found]   ` <CGME20170314075427epcas5p19d137fbcc390e937172a17ae99f11a0c@epcas5p1.samsung.com>
2017-03-14  7:51     ` [2/3] " Alim Akhtar
2017-03-14  8:02       ` Krzysztof Kozlowski
2017-03-14  8:40         ` Alim Akhtar
2017-03-14  9:14           ` Krzysztof Kozlowski
2017-03-14 14:30             ` Alim Akhtar
     [not found]   ` <CGME20170314140626epcas5p20694a5324299c556fbaf7df1e9bf5955@epcas5p2.samsung.com>
2017-03-14 14:06     ` [PATCH 2/3] " Bartlomiej Zolnierkiewicz
2017-03-11 21:38 ` [PATCH 3/3] arm64: exynos: Enable Exynos PMU and PM domains drivers Krzysztof Kozlowski
     [not found]   ` <CGME20170314141711epcas1p40ae1d73674e2c0eaa95da6d021456452@epcas1p4.samsung.com>
2017-03-14 14:17     ` Bartlomiej Zolnierkiewicz
     [not found]   ` <CGME20170314143652epcas5p43c7c8556228f996d19d716506eb9a0ed@epcas5p4.samsung.com>
2017-03-14 14:33     ` [3/3] " Alim Akhtar

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).