This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Tool/software: Linux
Hi,
We are using a custom board based on AM3352. Currently we are able to display logo in LCD at the u-boot level. I did the u-boot changes based on http://processors.wiki.ti.com/index.php/Processor_SDK_Linux_U-Boot_Splash_Screen
At u-boot frambuffer address is configured ad CONFIG_FB_ADDRESS 0x83000000
Once kernel boot, the display no longer holds the image from u-boot due to framebuffer and LCD reinitialization. So
1) How to maintain same framebuffer address throughout u-boot and kernel boot.
2) How to avoid re-initialization of LCD core.
Our goal is to display logo throughout uboot and kernel boot without any flickering.
I'm using processor-sdk-04.01.00.06 version
Regards,
Manoj
Hi Manoj,
Since such solutions are not upstreamable, we do not support them. You will have to work on it by yourself. All the driver codes are available in Processor SDK and also on TI git repo.
Manoj Kumar said:1) How to maintain same framebuffer address throughout u-boot and kernel boot.
You will have to find some mean to preserve and pass the buffer address to kernel driver.
Manoj Kumar said:2) How to avoid re-initialization of LCD core.
Please look at the driver code and comment the ones that deals with lcdc clocking and resetting.
You may find this application note on early splash screen useful though for different device. You may also want to google if any other customers did such work already on AM335x and have their code publicly available in some repository.
Hi Manish,
I followed reference as you mentioned. I tried to avoid lcdc clock reset during kernel boot but lcdc clocks are disbled once kernel boot and again it is getting initialized during lcdc driver load. Below are my changes
--- a/arch/arm/mach-omap2/omap_hwmod.c
+++ b/arch/arm/mach-omap2/omap_hwmod.c
@@ -2558,6 +2558,8 @@ static int __init _init(struct omap_hwmod *oh, void *data)
if (np) {
if (of_find_property(np, "ti,no-reset-on-init", NULL))
oh->flags |= HWMOD_INIT_NO_RESET;
+ if (of_find_property(np, "ti,enable-opt-clks-on-reset", NULL))
+ oh->flags |= HWMOD_CONTROL_OPT_CLKS_IN_RESET;
if (of_find_property(np, "ti,no-idle-on-init", NULL))
oh->flags |= HWMOD_INIT_NO_IDLE;
if (of_find_property(np, "ti,no-idle", NULL))
--- a/drivers/clk/clk.c
+++ b/drivers/clk/clk.c
@@ -878,6 +878,7 @@ static int clk_disable_unused(void)
{
struct clk_core *core;
+ return 0;
if (clk_ignore_unused) {
pr_warn("clk: Not disabling unused clocks\n");
return 0;
&lcdc {
compatible = "ti,am33xx-tilcdc";
status = "okay";
+ ti,enable-opt-clks-on-reset;
blue-and-red-wiring = "crossed";
};
and
lcd_gclk: lcd_gclk@534 {
#clock-cells = <0>;
compatible = "ti,mux-clock";
clocks = <&dpll_disp_m2_ck>, <&dpll_core_m5_ck>, <&dpll_per_m2_ck>;
reg = <0x0534>;
ti,set-rate-parent;
ti,enable-opt-clks-on-reset
};
Even I tested with modifying omap_hwmod_7xx_data.c adding flag HWMOD_CONTROL_OPT_CLKS_IN_RESET in lcdc hwmod.
How to avoid lcdc clock disable at start of kernel boot.
Regards,
Manoj