All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/5] sunxi: video: Add V3S simple-framebuffer
@ 2020-09-16 14:10 Martin Cerveny
  2020-09-16 14:10 ` [PATCH 1/5] sunxi: video: No double clock on DE2 Martin Cerveny
                   ` (4 more replies)
  0 siblings, 5 replies; 15+ messages in thread
From: Martin Cerveny @ 2020-09-16 14:10 UTC (permalink / raw)
  To: u-boot

There are patches to enable "allwinner,simple-framebuffer"
with "mixer0-lcd0" pipeline for V3s.

First patch corrects "2x pll" loop for pixelclock search.
Second patch enable PWM0 (for backlight support).
Third patch is the main extension to code and build:
- V3s has 2x VI and 1x UI channels (use UI channel), so use third channel.
- V3s uses PLL3 (PLL_VIDEO) for both DE2 and TCON0 pixelclock.
  PLL10 is used for DDR2.
- V3s supports resolution upto 1024x1024. Also scale down memory 
  requirements for V3s (64MB embedded DDR2)
- V3s does not support HDMI.
Fourth patch extends u-boot DTS (linux DTS patch coming soon)
Fifth patch enable PWM drivers and corrects CONFIG_VIDEO_LCD_DCLK_PHASE.

Tested with "Lichee Zero" V3s and 480x272 LCD
(not configured DRM DE2/TCON0/panel in linux DTS).
- https://github.com/mcerveny/u-boot/tree/simplefb_v3s_v1

Martin Cerveny (5):
  sunxi: video: No double clock on DE2
  pwm: sunxi: v3s: Enable PWM0
  sunxi: video: v3s: Enable LCD support
  arm: dts: v3s: Add support for simple-framebuffer with DE2/TCON
  sunxi: add drivers and configs needed for LCD display

 arch/arm/dts/sun8i-v3s.dtsi                   | 128 +++++++++++++++++-
 arch/arm/include/asm/arch-sunxi/clock_sun6i.h |   5 +-
 arch/arm/include/asm/arch-sunxi/gpio.h        |   2 +
 arch/arm/mach-sunxi/Kconfig                   |   1 +
 configs/LicheePi_Zero_defconfig               |   4 +
 drivers/pwm/sunxi_pwm.c                       |   3 +
 drivers/video/sunxi/lcdc.c                    |   7 +-
 drivers/video/sunxi/sunxi_de2.c               |  25 +++-
 drivers/video/sunxi/sunxi_dw_hdmi.c           |   2 +
 drivers/video/sunxi/sunxi_lcd.c               |   9 +-
 10 files changed, 172 insertions(+), 14 deletions(-)

-- 
2.17.1

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

* [PATCH 1/5] sunxi: video: No double clock on DE2
  2020-09-16 14:10 [PATCH 0/5] sunxi: video: Add V3S simple-framebuffer Martin Cerveny
@ 2020-09-16 14:10 ` Martin Cerveny
  2020-09-16 14:48   ` Maxime Ripard
  2020-09-16 14:10 ` [PATCH 2/5] pwm: sunxi: v3s: Enable PWM0 Martin Cerveny
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 15+ messages in thread
From: Martin Cerveny @ 2020-09-16 14:10 UTC (permalink / raw)
  To: u-boot

Weird code or comment. This is variant is tested on V3s.

Signed-off-by: Martin Cerveny <m.cerveny@computer.org>
---
 drivers/video/sunxi/lcdc.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/drivers/video/sunxi/lcdc.c b/drivers/video/sunxi/lcdc.c
index 73033c3b85..b772947a6b 100644
--- a/drivers/video/sunxi/lcdc.c
+++ b/drivers/video/sunxi/lcdc.c
@@ -244,7 +244,6 @@ void lcdc_pll_set(struct sunxi_ccm_reg *ccm, int tcon, int dotclock,
 	 * not sync to higher frequencies.
 	 */
 	for (m = min_m; m <= max_m; m++) {
-#ifndef CONFIG_SUNXI_DE2
 		n = (m * dotclock) / step;
 
 		if ((n >= 9) && (n <= 127)) {
@@ -261,8 +260,8 @@ void lcdc_pll_set(struct sunxi_ccm_reg *ccm, int tcon, int dotclock,
 		/* These are just duplicates */
 		if (!(m & 1))
 			continue;
-#endif
 
+#ifndef CONFIG_SUNXI_DE2
 		/* No double clock on DE2 */
 		n = (m * dotclock) / (step * 2);
 		if ((n >= 9) && (n <= 127)) {
@@ -275,6 +274,7 @@ void lcdc_pll_set(struct sunxi_ccm_reg *ccm, int tcon, int dotclock,
 				best_double = 1;
 			}
 		}
+#endif
 	}
 
 #ifdef CONFIG_MACH_SUN6I
@@ -315,8 +315,7 @@ void lcdc_pll_set(struct sunxi_ccm_reg *ccm, int tcon, int dotclock,
 		writel(CCM_LCD_CH0_CTRL_GATE | CCM_LCD_CH0_CTRL_RST | pll,
 		       &ccm->lcd0_ch0_clk_cfg);
 #else
-		writel(CCM_LCD_CH0_CTRL_GATE | CCM_LCD_CH0_CTRL_RST | pll,
-		       &ccm->lcd0_clk_cfg);
+		writel(CCM_LCD0_CTRL_GATE | pll, &ccm->lcd0_clk_cfg);
 #endif
 	}
 #ifndef CONFIG_SUNXI_DE2
-- 
2.17.1

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

* [PATCH 2/5] pwm: sunxi: v3s: Enable PWM0
  2020-09-16 14:10 [PATCH 0/5] sunxi: video: Add V3S simple-framebuffer Martin Cerveny
  2020-09-16 14:10 ` [PATCH 1/5] sunxi: video: No double clock on DE2 Martin Cerveny
@ 2020-09-16 14:10 ` Martin Cerveny
  2020-09-16 14:10 ` [PATCH 3/5] sunxi: video: v3s: Enable LCD support Martin Cerveny
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 15+ messages in thread
From: Martin Cerveny @ 2020-09-16 14:10 UTC (permalink / raw)
  To: u-boot

Enable PWM0 for V3S (for backlight LCD support).

Signed-off-by: Martin Cerveny <m.cerveny@computer.org>
---
 arch/arm/include/asm/arch-sunxi/gpio.h | 1 +
 drivers/pwm/sunxi_pwm.c                | 3 +++
 2 files changed, 4 insertions(+)

diff --git a/arch/arm/include/asm/arch-sunxi/gpio.h b/arch/arm/include/asm/arch-sunxi/gpio.h
index a646ea6a3c..d83dfdf605 100644
--- a/arch/arm/include/asm/arch-sunxi/gpio.h
+++ b/arch/arm/include/asm/arch-sunxi/gpio.h
@@ -164,6 +164,7 @@ enum sunxi_gpio_number {
 #define SUN8I_A33_GPB_UART0	3
 #define SUN8I_A83T_GPB_UART0	2
 #define SUN8I_V3S_GPB_UART0	3
+#define SUN8I_V3S_GPB_PWM0	2
 #define SUN50I_GPB_UART0	4
 
 #define SUNXI_GPC_NAND		2
diff --git a/drivers/pwm/sunxi_pwm.c b/drivers/pwm/sunxi_pwm.c
index e2ae1a8009..136e7c63d3 100644
--- a/drivers/pwm/sunxi_pwm.c
+++ b/drivers/pwm/sunxi_pwm.c
@@ -48,6 +48,8 @@ static int sunxi_pwm_config_pinmux(void)
 {
 #ifdef CONFIG_MACH_SUN50I
 	sunxi_gpio_set_cfgpin(SUNXI_GPD(22), SUNXI_GPD_PWM);
+#elif defined CONFIG_MACH_SUN8I_V3S
+	sunxi_gpio_set_cfgpin(SUNXI_GPB(4), SUN8I_V3S_GPB_PWM0);
 #endif
 	return 0;
 }
@@ -171,6 +173,7 @@ static const struct pwm_ops sunxi_pwm_ops = {
 static const struct udevice_id sunxi_pwm_ids[] = {
 	{ .compatible = "allwinner,sun5i-a13-pwm" },
 	{ .compatible = "allwinner,sun50i-a64-pwm" },
+	{ .compatible = "allwinner,sun7i-a20-pwm" },
 	{ }
 };
 
-- 
2.17.1

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

* [PATCH 3/5] sunxi: video: v3s: Enable LCD support
  2020-09-16 14:10 [PATCH 0/5] sunxi: video: Add V3S simple-framebuffer Martin Cerveny
  2020-09-16 14:10 ` [PATCH 1/5] sunxi: video: No double clock on DE2 Martin Cerveny
  2020-09-16 14:10 ` [PATCH 2/5] pwm: sunxi: v3s: Enable PWM0 Martin Cerveny
@ 2020-09-16 14:10 ` Martin Cerveny
  2020-09-16 14:10 ` [PATCH 4/5] arm: dts: v3s: Add support for simple-framebuffer with DE2/TCON Martin Cerveny
  2020-09-16 14:10 ` [PATCH 5/5] sunxi: add drivers and configs needed for LCD display Martin Cerveny
  4 siblings, 0 replies; 15+ messages in thread
From: Martin Cerveny @ 2020-09-16 14:10 UTC (permalink / raw)
  To: u-boot

Enable support for V3s LCD display.

V3s has 2x VI and 1x UI channels (use UI channel).
V3s uses PLL3 (PLL_VIDEO) for both DE2 and TCON0 pixelclock.
V3s supports resolution upto 1024x1024.
V3s does not support HDMI.

Signed-off-by: Martin Cerveny <m.cerveny@computer.org>
---
 arch/arm/include/asm/arch-sunxi/clock_sun6i.h |  5 ++--
 arch/arm/include/asm/arch-sunxi/gpio.h        |  1 +
 arch/arm/mach-sunxi/Kconfig                   |  1 +
 drivers/video/sunxi/sunxi_de2.c               | 25 ++++++++++++++++---
 drivers/video/sunxi/sunxi_dw_hdmi.c           |  2 ++
 drivers/video/sunxi/sunxi_lcd.c               |  9 ++++++-
 6 files changed, 37 insertions(+), 6 deletions(-)

diff --git a/arch/arm/include/asm/arch-sunxi/clock_sun6i.h b/arch/arm/include/asm/arch-sunxi/clock_sun6i.h
index ee387127f3..737c3a77fc 100644
--- a/arch/arm/include/asm/arch-sunxi/clock_sun6i.h
+++ b/arch/arm/include/asm/arch-sunxi/clock_sun6i.h
@@ -329,7 +329,7 @@ struct sunxi_ccm_reg {
 #define AHB_GATE_OFFSET_DE		12
 #define AHB_GATE_OFFSET_HDMI		11
 #define AHB_GATE_OFFSET_TVE		9
-#ifndef CONFIG_SUNXI_DE2
+#if !defined CONFIG_SUNXI_DE2 || defined CONFIG_MACH_SUN8I_V3S
 #define AHB_GATE_OFFSET_LCD1		5
 #define AHB_GATE_OFFSET_LCD0		4
 #else
@@ -476,7 +476,7 @@ struct sunxi_ccm_reg {
 #define AHB_RESET_OFFSET_HDMI		11
 #define AHB_RESET_OFFSET_HDMI2		10
 #define AHB_RESET_OFFSET_TVE		9
-#ifndef CONFIG_SUNXI_DE2
+#if !defined CONFIG_SUNXI_DE2 || defined CONFIG_MACH_SUN8I_V3S
 #define AHB_RESET_OFFSET_LCD1		5
 #define AHB_RESET_OFFSET_LCD0		4
 #else
@@ -510,6 +510,7 @@ struct sunxi_ccm_reg {
 #define CCM_DE2_CTRL_PLL_MASK		(3 << 24)
 #define CCM_DE2_CTRL_PLL6_2X		(0 << 24)
 #define CCM_DE2_CTRL_PLL10		(1 << 24)
+#define CCM_DE2_CTRL_PLL3_V3S		(0 << 24)
 #define CCM_DE2_CTRL_GATE		(0x1 << 31)
 
 /* CCU security switch, H3 only */
diff --git a/arch/arm/include/asm/arch-sunxi/gpio.h b/arch/arm/include/asm/arch-sunxi/gpio.h
index d83dfdf605..9b580fbe26 100644
--- a/arch/arm/include/asm/arch-sunxi/gpio.h
+++ b/arch/arm/include/asm/arch-sunxi/gpio.h
@@ -181,6 +181,7 @@ enum sunxi_gpio_number {
 #define SUN5I_GPE_SDC2		3
 #define SUN8I_GPE_TWI2		3
 #define SUN50I_GPE_TWI2		3
+#define SUN8I_V3S_GPE_LCD0	3
 
 #define SUNXI_GPF_SDC0		2
 #define SUNXI_GPF_UART0		4
diff --git a/arch/arm/mach-sunxi/Kconfig b/arch/arm/mach-sunxi/Kconfig
index be0822bfb7..dc0ee2cdef 100644
--- a/arch/arm/mach-sunxi/Kconfig
+++ b/arch/arm/mach-sunxi/Kconfig
@@ -258,6 +258,7 @@ config MACH_SUN8I_V3S
 	select CPU_V7_HAS_NONSEC
 	select CPU_V7_HAS_VIRT
 	select ARCH_SUPPORT_PSCI
+	select SUNXI_DE2
 	select SUNXI_GEN_SUN6I
 	select SUNXI_DRAM_DW
 	select SUNXI_DRAM_DW_16BIT
diff --git a/drivers/video/sunxi/sunxi_de2.c b/drivers/video/sunxi/sunxi_de2.c
index b657e163f0..49d41eb243 100644
--- a/drivers/video/sunxi/sunxi_de2.c
+++ b/drivers/video/sunxi/sunxi_de2.c
@@ -26,12 +26,21 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
+#ifdef CONFIG_MACH_SUN8I_V3S
+enum {
+	/* Maximum LCD size we support */
+	LCD_MAX_WIDTH		= 1024,
+	LCD_MAX_HEIGHT		= 1024,
+	LCD_MAX_LOG2_BPP	= VIDEO_BPP32,
+};
+#else
 enum {
 	/* Maximum LCD size we support */
 	LCD_MAX_WIDTH		= 3840,
 	LCD_MAX_HEIGHT		= 2160,
 	LCD_MAX_LOG2_BPP	= VIDEO_BPP32,
 };
+#endif
 
 static void sunxi_de2_composer_init(void)
 {
@@ -47,11 +56,19 @@ static void sunxi_de2_composer_init(void)
 	writel(reg_value, SUNXI_SRAMC_BASE + 0x04);
 #endif
 
+#ifdef CONFIG_MACH_SUN8I_V3S
+	clock_set_pll3(50000000);
+	/* pll3 is also used for pixelclock and speed will be recomputed */
+	/* Set DE parent to pll3 */
+	clrsetbits_le32(&ccm->de_clk_cfg, CCM_DE2_CTRL_PLL_MASK,
+			CCM_DE2_CTRL_PLL3_V3S);
+#else
 	clock_set_pll10(432000000);
 
 	/* Set DE parent to pll10 */
 	clrsetbits_le32(&ccm->de_clk_cfg, CCM_DE2_CTRL_PLL_MASK,
 			CCM_DE2_CTRL_PLL10);
+#endif
 
 	/* Set ahb gating to pass */
 	setbits_le32(&ccm->ahb_reset1_cfg, 1 << AHB_RESET_OFFSET_DE);
@@ -77,7 +94,8 @@ static void sunxi_de2_mode_set(int mux, const struct display_timing *mode,
 	struct de_ui * const de_ui_regs =
 		(struct de_ui *)(de_mux_base +
 				 SUNXI_DE2_MUX_CHAN_REGS +
-				 SUNXI_DE2_MUX_CHAN_SZ * 1);
+				 SUNXI_DE2_MUX_CHAN_SZ *
+				 (IS_ENABLED(CONFIG_MACH_SUN8I_V3S) ? 2 : 1));
 	struct de_csc * const de_csc_regs =
 		(struct de_csc *)(de_mux_base +
 				  SUNXI_DE2_MUX_DCSC_REGS);
@@ -104,14 +122,15 @@ static void sunxi_de2_mode_set(int mux, const struct display_timing *mode,
 	for (channel = 0; channel < 4; channel++) {
 		void *ch = (void *)(de_mux_base + SUNXI_DE2_MUX_CHAN_REGS +
 				    SUNXI_DE2_MUX_CHAN_SZ * channel);
-		memset(ch, 0, (channel == 0) ?
+		memset(ch, 0, (channel == 0 ||
+			       (IS_ENABLED(CONFIG_MACH_SUN8I_V3S) && channel == 1)) ?
 			sizeof(struct de_vi) : sizeof(struct de_ui));
 	}
 	memset(de_bld_regs, 0, sizeof(struct de_bld));
 
 	writel(0x00000101, &de_bld_regs->fcolor_ctl);
 
-	writel(1, &de_bld_regs->route);
+	writel(IS_ENABLED(CONFIG_MACH_SUN8I_V3S) ? 2 : 1, &de_bld_regs->route);
 
 	writel(0, &de_bld_regs->premultiply);
 	writel(0xff000000, &de_bld_regs->bkcolor);
diff --git a/drivers/video/sunxi/sunxi_dw_hdmi.c b/drivers/video/sunxi/sunxi_dw_hdmi.c
index 01d4b7a11c..899fbe2f7f 100644
--- a/drivers/video/sunxi/sunxi_dw_hdmi.c
+++ b/drivers/video/sunxi/sunxi_dw_hdmi.c
@@ -398,6 +398,8 @@ U_BOOT_DRIVER(sunxi_dw_hdmi) = {
 	.priv_auto_alloc_size = sizeof(struct sunxi_dw_hdmi_priv),
 };
 
+#ifndef CONFIG_MACH_SUN8I_V3S
 U_BOOT_DEVICE(sunxi_dw_hdmi) = {
 	.name = "sunxi_dw_hdmi"
 };
+#endif
diff --git a/drivers/video/sunxi/sunxi_lcd.c b/drivers/video/sunxi/sunxi_lcd.c
index 49bf083a8d..132e970e7d 100644
--- a/drivers/video/sunxi/sunxi_lcd.c
+++ b/drivers/video/sunxi/sunxi_lcd.c
@@ -32,6 +32,13 @@ static void sunxi_lcdc_config_pinmux(void)
 		sunxi_gpio_set_cfgpin(pin, SUNXI_GPD_LCD0);
 		sunxi_gpio_set_drv(pin, 3);
 	}
+#elif defined CONFIG_MACH_SUN8I_V3S
+	int pin;
+
+	for (pin = SUNXI_GPE(0); pin <= SUNXI_GPE(19); pin++)
+		sunxi_gpio_set_cfgpin(pin, SUN8I_V3S_GPE_LCD0);
+	sunxi_gpio_set_cfgpin(SUNXI_GPE(23), SUN8I_V3S_GPE_LCD0);
+	sunxi_gpio_set_cfgpin(SUNXI_GPE(24), SUN8I_V3S_GPE_LCD0);
 #endif
 }
 
@@ -145,7 +152,7 @@ U_BOOT_DRIVER(sunxi_lcd) = {
 	.priv_auto_alloc_size = sizeof(struct sunxi_lcd_priv),
 };
 
-#ifdef CONFIG_MACH_SUN50I
+#if defined CONFIG_MACH_SUN50I || defined CONFIG_MACH_SUN8I_V3S
 U_BOOT_DEVICE(sunxi_lcd) = {
 	.name = "sunxi_lcd"
 };
-- 
2.17.1

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

* [PATCH 4/5] arm: dts: v3s: Add support for simple-framebuffer with DE2/TCON
  2020-09-16 14:10 [PATCH 0/5] sunxi: video: Add V3S simple-framebuffer Martin Cerveny
                   ` (2 preceding siblings ...)
  2020-09-16 14:10 ` [PATCH 3/5] sunxi: video: v3s: Enable LCD support Martin Cerveny
@ 2020-09-16 14:10 ` Martin Cerveny
  2020-09-16 14:50   ` Maxime Ripard
  2020-09-16 14:10 ` [PATCH 5/5] sunxi: add drivers and configs needed for LCD display Martin Cerveny
  4 siblings, 1 reply; 15+ messages in thread
From: Martin Cerveny @ 2020-09-16 14:10 UTC (permalink / raw)
  To: u-boot

Add support for DE2 and TCON connected LCD display.
Add support for export as "allwinner,simple-framebuffer"
with "mixer0-lcd0" pipeline.

Signed-off-by: Martin Cerveny <m.cerveny@computer.org>
---
 arch/arm/dts/sun8i-v3s.dtsi | 128 ++++++++++++++++++++++++++++++++++--
 1 file changed, 124 insertions(+), 4 deletions(-)

diff --git a/arch/arm/dts/sun8i-v3s.dtsi b/arch/arm/dts/sun8i-v3s.dtsi
index ebefc0fefe..59ad5945a1 100644
--- a/arch/arm/dts/sun8i-v3s.dtsi
+++ b/arch/arm/dts/sun8i-v3s.dtsi
@@ -44,12 +44,28 @@
 #include <dt-bindings/reset/sun8i-v3s-ccu.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
 #include <dt-bindings/pinctrl/sun4i-a10.h>
+#include <dt-bindings/clock/sun8i-de2.h>
 
 / {
 	#address-cells = <1>;
 	#size-cells = <1>;
 	interrupt-parent = <&gic>;
 
+	chosen {
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges;
+
+		framebuffer-lcd {
+			compatible = "allwinner,simple-framebuffer",
+				     "simple-framebuffer";
+			allwinner,pipeline = "mixer0-lcd0";
+			clocks = <&display_clocks CLK_MIXER0>,
+				 <&ccu CLK_TCON0>;
+			status = "disabled";
+		};
+	};
+
 	cpus {
 		#address-cells = <1>;
 		#size-cells = <0>;
@@ -90,12 +106,90 @@
 		};
 	};
 
+	de: display-engine {
+		compatible = "allwinner,sun8i-v3s-display-engine";
+		allwinner,pipelines = <&mixer0>;
+		status = "disabled";
+	};
+
 	soc {
 		compatible = "simple-bus";
 		#address-cells = <1>;
 		#size-cells = <1>;
 		ranges;
 
+		display_clocks: clock at 1000000 {
+			compatible = "allwinner,sun8i-v3s-de2-clk";
+			reg = <0x01000000 0x10000>;
+			clocks = <&ccu CLK_BUS_DE>,
+				 <&ccu CLK_DE>;
+			clock-names = "bus",
+				      "mod";
+			resets = <&ccu RST_BUS_DE>;
+			#clock-cells = <1>;
+			#reset-cells = <1>;
+		};
+
+		mixer0: mixer at 1100000 {
+			compatible = "allwinner,sun8i-v3s-de2-mixer";
+			reg = <0x01100000 0x100000>;
+			clocks = <&display_clocks 0>,
+				 <&display_clocks 6>;
+			clock-names = "bus",
+				      "mod";
+			resets = <&display_clocks 0>;
+
+			ports {
+				#address-cells = <1>;
+				#size-cells = <0>;
+
+				mixer0_out: port at 1 {
+					reg = <1>;
+
+					mixer0_out_tcon0: endpoint {
+						remote-endpoint = <&tcon0_in_mixer0>;
+					};
+				};
+			};
+		};
+
+		tcon0: lcd-controller at 1c0c000 {
+			compatible = "allwinner,sun8i-v3s-tcon";
+			reg = <0x01c0c000 0x1000>;
+			interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&ccu CLK_BUS_TCON0>,
+				 <&ccu CLK_TCON0>;
+			clock-names = "ahb",
+				      "tcon-ch0";
+			clock-output-names = "tcon-pixel-clock";
+			#clock-cells = <0>;
+			resets = <&ccu RST_BUS_TCON0>;
+			reset-names = "lcd";
+			status = "disabled";
+
+			ports {
+				#address-cells = <1>;
+				#size-cells = <0>;
+
+				tcon0_in: port at 0 {
+					reg = <0>;
+
+					tcon0_in_mixer0: endpoint {
+						remote-endpoint = <&mixer0_out_tcon0>;
+					};
+				};
+
+				tcon0_out: port at 1 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <1>;
+					tcon0_out_lcd: endpoint at 0 {
+						reg = <0>;
+					};
+				};
+			};
+		};
+
 		mmc0: mmc at 01c0f000 {
 			compatible = "allwinner,sun7i-a20-mmc";
 			reg = <0x01c0f000 0x1000>;
@@ -208,10 +302,12 @@
 			interrupt-controller;
 			#interrupt-cells = <3>;
 
-			uart0_pins_a: uart0 at 0 {
-				pins = "PB8", "PB9";
-				function = "uart0";
-				bias-pull-up;
+			lcd_pins: lcd-pins {
+				pins = "PE0", "PE1", "PE2", "PE3", "PE4", "PE5",
+				       "PE6", "PE7", "PE8", "PE9", "PE10", "PE11",
+				       "PE12", "PE13", "PE14", "PE15", "PE16", "PE17",
+				       "PE18", "PE19", "PE23", "PE24";
+				function = "lcd";
 			};
 
 			mmc0_pins_a: mmc0 at 0 {
@@ -221,6 +317,22 @@
 				drive-strength = <30>;
 				bias-pull-up;
 			};
+
+			pwm0_pins: pwm0-pins {
+				pins = "PB4";
+				function = "pwm0";
+			};
+
+			pwm1_pins: pwm1-pins {
+				pins = "PB5";
+				function = "pwm1";
+			};
+
+			uart0_pins_a: uart0 at 0 {
+				pins = "PB8", "PB9";
+				function = "uart0";
+				bias-pull-up;
+			};
 		};
 
 		timer at 01c20c00 {
@@ -280,5 +392,13 @@
 			#interrupt-cells = <3>;
 			interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
 		};
+
+		pwm: pwm at 1c21400 {
+			compatible = "allwinner,sun7i-a20-pwm";
+			reg = <0x01c21400 0x400>;
+			clocks = <&osc24M>;
+			#pwm-cells = <3>;
+			status = "disabled";
+		};
 	};
 };
-- 
2.17.1

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

* [PATCH 5/5] sunxi: add drivers and configs needed for LCD display
  2020-09-16 14:10 [PATCH 0/5] sunxi: video: Add V3S simple-framebuffer Martin Cerveny
                   ` (3 preceding siblings ...)
  2020-09-16 14:10 ` [PATCH 4/5] arm: dts: v3s: Add support for simple-framebuffer with DE2/TCON Martin Cerveny
@ 2020-09-16 14:10 ` Martin Cerveny
  2020-09-16 14:51   ` Maxime Ripard
  4 siblings, 1 reply; 15+ messages in thread
From: Martin Cerveny @ 2020-09-16 14:10 UTC (permalink / raw)
  To: u-boot

Add PWM and dummy power regulator support.
Modify data timings for LCD displays.

Signed-off-by: Martin Cerveny <m.cerveny@computer.org>
---
 configs/LicheePi_Zero_defconfig | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/configs/LicheePi_Zero_defconfig b/configs/LicheePi_Zero_defconfig
index 04d7b64504..ba1c085ec3 100644
--- a/configs/LicheePi_Zero_defconfig
+++ b/configs/LicheePi_Zero_defconfig
@@ -3,5 +3,9 @@ CONFIG_ARCH_SUNXI=y
 CONFIG_SPL=y
 CONFIG_MACH_SUN8I_V3S=y
 CONFIG_DRAM_CLK=360
+CONFIG_VIDEO_LCD_DCLK_PHASE=0
 CONFIG_DEFAULT_DEVICE_TREE="sun8i-v3s-licheepi-zero"
 # CONFIG_NETDEVICES is not set
+CONFIG_DM_REGULATOR=y
+CONFIG_DM_PWM=y
+CONFIG_PWM_SUNXI=y
-- 
2.17.1

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

* [PATCH 1/5] sunxi: video: No double clock on DE2
  2020-09-16 14:10 ` [PATCH 1/5] sunxi: video: No double clock on DE2 Martin Cerveny
@ 2020-09-16 14:48   ` Maxime Ripard
  2020-09-16 16:25     ` Martin Cerveny
  0 siblings, 1 reply; 15+ messages in thread
From: Maxime Ripard @ 2020-09-16 14:48 UTC (permalink / raw)
  To: u-boot

On Wed, Sep 16, 2020 at 04:10:48PM +0200, Martin Cerveny wrote:
> Weird code or comment. This is variant is tested on V3s.
> 
> Signed-off-by: Martin Cerveny <m.cerveny@computer.org>

Generally speaking your commit logs are fairly concise, but it really
becomes an issue when you're allegedly fixing a bug.

There's a bunch of questions here that are completely up in the air:

  - What issue are you actually trying to fix, how can one reproduce it
  - You claim that there's no double clock on the DE2, according to
    what?
  - DE2 is used on way more SoCs than just the V3s, did you check/test
    on those SoCs as well?

In general, a good commit log should not explain what you're doing but
*why* you're doing it. The what can be quite easily figured out from the
patch content, the why can't today, and it will be even harder in a
year's time.

Maxime
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20200916/57638848/attachment.sig>

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

* [PATCH 4/5] arm: dts: v3s: Add support for simple-framebuffer with DE2/TCON
  2020-09-16 14:10 ` [PATCH 4/5] arm: dts: v3s: Add support for simple-framebuffer with DE2/TCON Martin Cerveny
@ 2020-09-16 14:50   ` Maxime Ripard
  2020-09-16 15:53     ` Martin Cerveny
  0 siblings, 1 reply; 15+ messages in thread
From: Maxime Ripard @ 2020-09-16 14:50 UTC (permalink / raw)
  To: u-boot

On Wed, Sep 16, 2020 at 04:10:51PM +0200, Martin Cerveny wrote:
> Add support for DE2 and TCON connected LCD display.
> Add support for export as "allwinner,simple-framebuffer"
> with "mixer0-lcd0" pipeline.
> 
> Signed-off-by: Martin Cerveny <m.cerveny@computer.org>

You shouldn't do multiple things at once. If you need to, then split it into several patches.

Maxime
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20200916/16d2ee9f/attachment.sig>

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

* [PATCH 5/5] sunxi: add drivers and configs needed for LCD display
  2020-09-16 14:10 ` [PATCH 5/5] sunxi: add drivers and configs needed for LCD display Martin Cerveny
@ 2020-09-16 14:51   ` Maxime Ripard
  2020-09-16 15:44     ` Martin Cerveny
  0 siblings, 1 reply; 15+ messages in thread
From: Maxime Ripard @ 2020-09-16 14:51 UTC (permalink / raw)
  To: u-boot

On Wed, Sep 16, 2020 at 04:10:52PM +0200, Martin Cerveny wrote:
> Add PWM and dummy power regulator support.
> Modify data timings for LCD displays.
> 
> Signed-off-by: Martin Cerveny <m.cerveny@computer.org>
> ---
>  configs/LicheePi_Zero_defconfig | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/configs/LicheePi_Zero_defconfig b/configs/LicheePi_Zero_defconfig
> index 04d7b64504..ba1c085ec3 100644
> --- a/configs/LicheePi_Zero_defconfig
> +++ b/configs/LicheePi_Zero_defconfig
> @@ -3,5 +3,9 @@ CONFIG_ARCH_SUNXI=y
>  CONFIG_SPL=y
>  CONFIG_MACH_SUN8I_V3S=y
>  CONFIG_DRAM_CLK=360
> +CONFIG_VIDEO_LCD_DCLK_PHASE=0
>  CONFIG_DEFAULT_DEVICE_TREE="sun8i-v3s-licheepi-zero"
>  # CONFIG_NETDEVICES is not set
> +CONFIG_DM_REGULATOR=y
> +CONFIG_DM_PWM=y
> +CONFIG_PWM_SUNXI=y

The LicheePi Zero doesn't have any display by default. Also you're
mentionning in your commit log that you "modify data timings", but I
don't see any timings in there?

Maxime
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20200916/9411ab26/attachment.sig>

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

* [PATCH 5/5] sunxi: add drivers and configs needed for LCD display
  2020-09-16 14:51   ` Maxime Ripard
@ 2020-09-16 15:44     ` Martin Cerveny
  2020-09-21 12:59       ` Maxime Ripard
  0 siblings, 1 reply; 15+ messages in thread
From: Martin Cerveny @ 2020-09-16 15:44 UTC (permalink / raw)
  To: u-boot



On Wed, 16 Sep 2020, Maxime Ripard wrote:
> On Wed, Sep 16, 2020 at 04:10:52PM +0200, Martin Cerveny wrote:
>> Add PWM and dummy power regulator support.
>> Modify data timings for LCD displays.
>>
>> Signed-off-by: Martin Cerveny <m.cerveny@computer.org>
>> ---
>>  configs/LicheePi_Zero_defconfig | 4 ++++
>>  1 file changed, 4 insertions(+)
>>
>> diff --git a/configs/LicheePi_Zero_defconfig b/configs/LicheePi_Zero_defconfig
>> index 04d7b64504..ba1c085ec3 100644
>> --- a/configs/LicheePi_Zero_defconfig
>> +++ b/configs/LicheePi_Zero_defconfig
>> @@ -3,5 +3,9 @@ CONFIG_ARCH_SUNXI=y
>>  CONFIG_SPL=y
>>  CONFIG_MACH_SUN8I_V3S=y
>>  CONFIG_DRAM_CLK=360
>> +CONFIG_VIDEO_LCD_DCLK_PHASE=0
>>  CONFIG_DEFAULT_DEVICE_TREE="sun8i-v3s-licheepi-zero"
>>  # CONFIG_NETDEVICES is not set
>> +CONFIG_DM_REGULATOR=y
>> +CONFIG_DM_PWM=y
>> +CONFIG_PWM_SUNXI=y
>
> The LicheePi Zero doesn't have any display by default. Also you're
> mentionning in your commit log that you "modify data timings", but I
> don't see any timings in there?

CONFIG_VIDEO_LCD_DCLK_PHASE is LCD data clock phase,
standard "1" corrupts output on display,
see
- register "TCON0_IO_POL_REG" in V3S manual
- arch/arm/mach-sunxi/Kconfig

Regards.

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

* [PATCH 4/5] arm: dts: v3s: Add support for simple-framebuffer with DE2/TCON
  2020-09-16 14:50   ` Maxime Ripard
@ 2020-09-16 15:53     ` Martin Cerveny
  2020-09-21 13:05       ` Maxime Ripard
  0 siblings, 1 reply; 15+ messages in thread
From: Martin Cerveny @ 2020-09-16 15:53 UTC (permalink / raw)
  To: u-boot



On Wed, 16 Sep 2020, Maxime Ripard wrote:
> On Wed, Sep 16, 2020 at 04:10:51PM +0200, Martin Cerveny wrote:
>> Add support for DE2 and TCON connected LCD display.
>> Add support for export as "allwinner,simple-framebuffer"
>> with "mixer0-lcd0" pipeline.
>>
>> Signed-off-by: Martin Cerveny <m.cerveny@computer.org>
>
> You shouldn't do multiple things at once. If you need to, then split it into several patches.
>
> Maxime

How to split - is three sufficient ?
- pwm pins & registration
- LCD pins & DE/TCOM registration
- choosen framebuffer-lcd

Regards.

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

* [PATCH 1/5] sunxi: video: No double clock on DE2
  2020-09-16 14:48   ` Maxime Ripard
@ 2020-09-16 16:25     ` Martin Cerveny
  2020-09-16 20:32       ` Vasily Khoruzhick
  0 siblings, 1 reply; 15+ messages in thread
From: Martin Cerveny @ 2020-09-16 16:25 UTC (permalink / raw)
  To: u-boot



On Wed, 16 Sep 2020, Maxime Ripard wrote:

> On Wed, Sep 16, 2020 at 04:10:48PM +0200, Martin Cerveny wrote:
>> Weird code or comment. This is variant is tested on V3s.
>>
>> Signed-off-by: Martin Cerveny <m.cerveny@computer.org>
>
> Generally speaking your commit logs are fairly concise, but it really
> becomes an issue when you're allegedly fixing a bug.
>
> There's a bunch of questions here that are completely up in the air:
>
>  - What issue are you actually trying to fix, how can one reproduce it
>  - You claim that there's no double clock on the DE2, according to
>    what?
>  - DE2 is used on way more SoCs than just the V3s, did you check/test
>    on those SoCs as well?
>
> In general, a good commit log should not explain what you're doing but
> *why* you're doing it. The what can be quite easily figured out from the
> patch content, the why can't today, and it will be even harder in a
> year's time.
>
> Maxime
>

I cannot issue more information on the problem:
- check original code - the "1x pll" was commented by #ifndef
   (only "2x pll" is computed)
- but original author added comment "/* No double clock on DE2 */"
- V3s does not support "2x pll" in TCON_CLK_REG

So I wrote where I tested this patch.
It should be discussed with original author.

Regards.

CC: Vasily Khoruzhick <anarsoul@gmail.com>

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

* [PATCH 1/5] sunxi: video: No double clock on DE2
  2020-09-16 16:25     ` Martin Cerveny
@ 2020-09-16 20:32       ` Vasily Khoruzhick
  0 siblings, 0 replies; 15+ messages in thread
From: Vasily Khoruzhick @ 2020-09-16 20:32 UTC (permalink / raw)
  To: u-boot

On Wed, Sep 16, 2020 at 9:26 AM Martin Cerveny <martin@c-home.cz> wrote:
>
>
>
> On Wed, 16 Sep 2020, Maxime Ripard wrote:
>
> > On Wed, Sep 16, 2020 at 04:10:48PM +0200, Martin Cerveny wrote:
> >> Weird code or comment. This is variant is tested on V3s.
> >>
> >> Signed-off-by: Martin Cerveny <m.cerveny@computer.org>
> >
> > Generally speaking your commit logs are fairly concise, but it really
> > becomes an issue when you're allegedly fixing a bug.
> >
> > There's a bunch of questions here that are completely up in the air:
> >
> >  - What issue are you actually trying to fix, how can one reproduce it
> >  - You claim that there's no double clock on the DE2, according to
> >    what?
> >  - DE2 is used on way more SoCs than just the V3s, did you check/test
> >    on those SoCs as well?
> >
> > In general, a good commit log should not explain what you're doing but
> > *why* you're doing it. The what can be quite easily figured out from the
> > patch content, the why can't today, and it will be even harder in a
> > year's time.
> >
> > Maxime
> >
>
> I cannot issue more information on the problem:
> - check original code - the "1x pll" was commented by #ifndef
>    (only "2x pll" is computed)
> - but original author added comment "/* No double clock on DE2 */"
> - V3s does not support "2x pll" in TCON_CLK_REG
>
> So I wrote where I tested this patch.
> It should be discussed with original author.

Sorry, I don't remember the details on why the driver uses
pll-video0-2x, that's the code from 2017

> Regards.
>
> CC: Vasily Khoruzhick <anarsoul@gmail.com>

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

* [PATCH 5/5] sunxi: add drivers and configs needed for LCD display
  2020-09-16 15:44     ` Martin Cerveny
@ 2020-09-21 12:59       ` Maxime Ripard
  0 siblings, 0 replies; 15+ messages in thread
From: Maxime Ripard @ 2020-09-21 12:59 UTC (permalink / raw)
  To: u-boot

On Wed, Sep 16, 2020 at 05:44:58PM +0200, Martin Cerveny wrote:
> 
> 
> On Wed, 16 Sep 2020, Maxime Ripard wrote:
> > On Wed, Sep 16, 2020 at 04:10:52PM +0200, Martin Cerveny wrote:
> > > Add PWM and dummy power regulator support.
> > > Modify data timings for LCD displays.
> > > 
> > > Signed-off-by: Martin Cerveny <m.cerveny@computer.org>
> > > ---
> > >  configs/LicheePi_Zero_defconfig | 4 ++++
> > >  1 file changed, 4 insertions(+)
> > > 
> > > diff --git a/configs/LicheePi_Zero_defconfig b/configs/LicheePi_Zero_defconfig
> > > index 04d7b64504..ba1c085ec3 100644
> > > --- a/configs/LicheePi_Zero_defconfig
> > > +++ b/configs/LicheePi_Zero_defconfig
> > > @@ -3,5 +3,9 @@ CONFIG_ARCH_SUNXI=y
> > >  CONFIG_SPL=y
> > >  CONFIG_MACH_SUN8I_V3S=y
> > >  CONFIG_DRAM_CLK=360
> > > +CONFIG_VIDEO_LCD_DCLK_PHASE=0
> > >  CONFIG_DEFAULT_DEVICE_TREE="sun8i-v3s-licheepi-zero"
> > >  # CONFIG_NETDEVICES is not set
> > > +CONFIG_DM_REGULATOR=y
> > > +CONFIG_DM_PWM=y
> > > +CONFIG_PWM_SUNXI=y
> > 
> > The LicheePi Zero doesn't have any display by default. Also you're
> > mentionning in your commit log that you "modify data timings", but I
> > don't see any timings in there?
> 
> CONFIG_VIDEO_LCD_DCLK_PHASE is LCD data clock phase,
> standard "1" corrupts output on display,
> see
> - register "TCON0_IO_POL_REG" in V3S manual
> - arch/arm/mach-sunxi/Kconfig

So just call the phase of the data signal. Timings for LCD displays have
a very different meaning.

Maxime

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

* [PATCH 4/5] arm: dts: v3s: Add support for simple-framebuffer with DE2/TCON
  2020-09-16 15:53     ` Martin Cerveny
@ 2020-09-21 13:05       ` Maxime Ripard
  0 siblings, 0 replies; 15+ messages in thread
From: Maxime Ripard @ 2020-09-21 13:05 UTC (permalink / raw)
  To: u-boot

On Wed, Sep 16, 2020 at 05:53:35PM +0200, Martin Cerveny wrote:
> On Wed, 16 Sep 2020, Maxime Ripard wrote:
> > On Wed, Sep 16, 2020 at 04:10:51PM +0200, Martin Cerveny wrote:
> > > Add support for DE2 and TCON connected LCD display.
> > > Add support for export as "allwinner,simple-framebuffer"
> > > with "mixer0-lcd0" pipeline.
> > > 
> > > Signed-off-by: Martin Cerveny <m.cerveny@computer.org>
> > 
> > You shouldn't do multiple things at once. If you need to, then split it into several patches.
> > 
> > Maxime
> 
> How to split - is three sufficient ?
> - pwm pins & registration
> - LCD pins & DE/TCOM registration
> - choosen framebuffer-lcd

Yep, that sounds reasonable.

For the last one though, we generally favor just sync'ing the Linux
device tree

Maxime

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

end of thread, other threads:[~2020-09-21 13:05 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-16 14:10 [PATCH 0/5] sunxi: video: Add V3S simple-framebuffer Martin Cerveny
2020-09-16 14:10 ` [PATCH 1/5] sunxi: video: No double clock on DE2 Martin Cerveny
2020-09-16 14:48   ` Maxime Ripard
2020-09-16 16:25     ` Martin Cerveny
2020-09-16 20:32       ` Vasily Khoruzhick
2020-09-16 14:10 ` [PATCH 2/5] pwm: sunxi: v3s: Enable PWM0 Martin Cerveny
2020-09-16 14:10 ` [PATCH 3/5] sunxi: video: v3s: Enable LCD support Martin Cerveny
2020-09-16 14:10 ` [PATCH 4/5] arm: dts: v3s: Add support for simple-framebuffer with DE2/TCON Martin Cerveny
2020-09-16 14:50   ` Maxime Ripard
2020-09-16 15:53     ` Martin Cerveny
2020-09-21 13:05       ` Maxime Ripard
2020-09-16 14:10 ` [PATCH 5/5] sunxi: add drivers and configs needed for LCD display Martin Cerveny
2020-09-16 14:51   ` Maxime Ripard
2020-09-16 15:44     ` Martin Cerveny
2020-09-21 12:59       ` Maxime Ripard

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.