From c26084b3642f262f858535ab4e46c1e9b520d3a1 Mon Sep 17 00:00:00 2001
From: huangcm <1263938474@qq.com>
Date: Thu, 03 Jul 2025 07:51:19 +0000
Subject: [PATCH] fix(longan): fix rgb pro & debug uart pro

---
 longan/brandy/arisc/ar100s/.config.old                                                        |    6 +-----
 longan/brandy/brandy-2.0/u-boot-2018/drivers/video/sunxi/disp2/disp/de/lowlevel_v2x/disp_al.c |    3 ++-
 longan/kernel/linux-4.9/drivers/video/fbdev/sunxi/disp2/disp/de/disp_lcd.c                    |    4 +++-
 longan/kernel/linux-4.9/drivers/video/fbdev/sunxi/disp2/disp/de/disp_vdevice.c                |    1 +
 longan/kernel/linux-4.9/drivers/video/fbdev/sunxi/disp2/disp/de/lowlevel_v2x/disp_al.c        |    6 +++++-
 5 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/longan/brandy/arisc/ar100s/.config.old b/longan/brandy/arisc/ar100s/.config.old
index f28e527..6819289 100644
--- a/longan/brandy/arisc/ar100s/.config.old
+++ b/longan/brandy/arisc/ar100s/.config.old
@@ -37,11 +37,7 @@
 #
 # debug printk function
 #
-CFG_DEBUGGER_PRINTF=y
-CFG_DEBUG_ERR=y
-CFG_DEBUG_LOG=y
-CFG_DEBUG_WRN=y
-# CFG_DEBUG_INF is not set
+# CFG_DEBUGGER_PRINTF is not set
 
 #
 # shell function
diff --git a/longan/brandy/brandy-2.0/u-boot-2018/drivers/video/sunxi/disp2/disp/de/lowlevel_v2x/disp_al.c b/longan/brandy/brandy-2.0/u-boot-2018/drivers/video/sunxi/disp2/disp/de/lowlevel_v2x/disp_al.c
index 339613a..8b22e90 100644
--- a/longan/brandy/brandy-2.0/u-boot-2018/drivers/video/sunxi/disp2/disp/de/lowlevel_v2x/disp_al.c
+++ b/longan/brandy/brandy-2.0/u-boot-2018/drivers/video/sunxi/disp2/disp/de/lowlevel_v2x/disp_al.c
@@ -654,7 +654,7 @@
 }
 
 static struct lcd_clk_info clk_tbl[] = {
-	{LCD_IF_HV, 6, 1, 1, 0},
+	{LCD_IF_HV, 0x10, 1, 1, 0},
 	{LCD_IF_CPU, 12, 1, 1, 0},
 	{LCD_IF_LVDS, 7, 1, 1, 0},
 #if defined(DSI_VERSION_40)
@@ -689,6 +689,7 @@
 			dsi_div = clk_tbl[i].dsi_div;
 			dsi_rate = clk_tbl[i].dsi_rate;
 			find = 1;
+            printf("kickpi v2x find %d tcon_div = %d lcd_div = %d dsi_div = %d dsi_rate %d \n", i, tcon_div, lcd_div, dsi_div, dsi_rate);
 			break;
 		}
 	}
diff --git a/longan/kernel/linux-4.9/drivers/video/fbdev/sunxi/disp2/disp/de/disp_lcd.c b/longan/kernel/linux-4.9/drivers/video/fbdev/sunxi/disp2/disp/de/disp_lcd.c
index fcf5e6b..37fbc48 100644
--- a/longan/kernel/linux-4.9/drivers/video/fbdev/sunxi/disp2/disp/de/disp_lcd.c
+++ b/longan/kernel/linux-4.9/drivers/video/fbdev/sunxi/disp2/disp/de/disp_lcd.c
@@ -558,7 +558,7 @@
 	memset(&clk_info, 0, sizeof(struct lcd_clk_info));
 	disp_al_lcd_get_clk_info(lcd->hwdev_index, &clk_info,
 				 &lcdp->panel_info);
-
+    printk("kickpi %s:%d \n", __func__, __LINE__);
 	if (!lcdp->clk || !(&lcdp->panel_info)) {
 		DE_WRN("NULL clk or panel_info!\n");
 		goto OUT;
@@ -613,6 +613,7 @@
 		clk_info.tcon_div = lcdp->panel_info.lcd_tcon_div;
 	disp_al_lcd_get_clk_info(lcd->hwdev_index, &clk_info,
 				 &lcdp->panel_info);
+    printk("kickpi %s:%d \n", __func__, __LINE__);
 	dclk_rate = lcdp->panel_info.lcd_dclk_freq * 1000000;	/* Mhz -> hz */
 	if (lcdp->panel_info.lcd_if == LCD_IF_DSI) {
 		lcd_rate = dclk_rate * clk_info.dsi_div;
@@ -641,6 +642,7 @@
 	else
 		lcd_rate_set = pll_rate_set;
 
+    msleep(100);
 	clk_set_rate(lcdp->clk, lcd_rate_set);
 	lcd_rate_set = clk_get_rate(lcdp->clk);
 	if (lcdp->panel_info.lcd_if == LCD_IF_DSI) {
diff --git a/longan/kernel/linux-4.9/drivers/video/fbdev/sunxi/disp2/disp/de/disp_vdevice.c b/longan/kernel/linux-4.9/drivers/video/fbdev/sunxi/disp2/disp/de/disp_vdevice.c
index 97ec459..13812db 100644
--- a/longan/kernel/linux-4.9/drivers/video/fbdev/sunxi/disp2/disp/de/disp_vdevice.c
+++ b/longan/kernel/linux-4.9/drivers/video/fbdev/sunxi/disp2/disp/de/disp_vdevice.c
@@ -96,6 +96,7 @@
 	para->lcd_dclk_freq = dclk_rate;
 	para->ccir_clk_div = vdevicep->intf.ccir_clk_div;
 	disp_al_lcd_get_clk_info(vdevice->disp, &clk_info, para);
+    printk("kickpi %s:%d \n", __func__, __LINE__);
 	kfree((void *)para);
 
 	lcd_rate = dclk_rate * clk_info.tcon_div;
diff --git a/longan/kernel/linux-4.9/drivers/video/fbdev/sunxi/disp2/disp/de/lowlevel_v2x/disp_al.c b/longan/kernel/linux-4.9/drivers/video/fbdev/sunxi/disp2/disp/de/lowlevel_v2x/disp_al.c
index e86d20f..af1da4f 100644
--- a/longan/kernel/linux-4.9/drivers/video/fbdev/sunxi/disp2/disp/de/lowlevel_v2x/disp_al.c
+++ b/longan/kernel/linux-4.9/drivers/video/fbdev/sunxi/disp2/disp/de/lowlevel_v2x/disp_al.c
@@ -694,7 +694,7 @@
 };
 #else
 static struct lcd_clk_info clk_tbl[] = {
-	{LCD_IF_HV, 6, 1, 1, 0},
+	{LCD_IF_HV, 0x10, 1, 1, 0},
 	{LCD_IF_CPU, 12, 1, 1, 0},
 	{LCD_IF_LVDS, 7, 1, 1, 0},
 #if defined(DSI_VERSION_40)
@@ -732,6 +732,7 @@
 			dsi_div = clk_tbl[i].dsi_div;
 			dsi_rate = clk_tbl[i].dsi_rate;
 			find = 1;
+            printk("kickpi v2x find %d tcon_div = %d lcd_div = %d dsi_div = %d dsi_rate %d \n", i, tcon_div, lcd_div, dsi_div, dsi_rate);
 			break;
 		}
 	}
@@ -827,6 +828,7 @@
 
 	tcon_init(screen_id);
 	disp_al_lcd_get_clk_info(screen_id, &info, panel);
+    printk("kickpi %s:%d \n", __func__, __LINE__);
 	tcon0_set_dclk_div(screen_id, info.tcon_div);
 
 #if !defined(TCON1_DRIVE_PANEL)
@@ -1304,6 +1306,7 @@
 		info.lcd_hv_srgb_seq = para->sequence;
 	tcon_init(screen_id);
 	disp_al_lcd_get_clk_info(screen_id, &clk_info, &info);
+    printk("kickpi %s:%d \n", __func__, __LINE__);
 	tcon0_set_dclk_div(screen_id, clk_info.tcon_div);
 
 	if (para->sub_intf == LCD_HV_IF_CCIR656_2CYC)
@@ -1602,6 +1605,7 @@
 
 		tcon_init(screen_id);
 		disp_al_lcd_get_clk_info(screen_id, &clk_info, &panel);
+        printk("kickpi %s:%d \n", __func__, __LINE__);
 		tcon0_set_dclk_div(screen_id, clk_info.tcon_div);
 		if (tcon0_cfg(screen_id, &panel) != 0)
 			DE_WRN("lcd cfg fail!\n");

--
Gitblit v1.6.2