cancel
Showing results for 
Search instead for 
Did you mean: 

STM32MP1 ECO 5.0 LTDC device tree, RGB LCD not working anymore

debugging
Lead

Objective is to get the RGB888 LCD working with ECO 5.0 This panel worked fine with ECO 1.0

[1] Follow this, topic: https://community.st.com/t5/stm32-mpus-products/stm32mp1-ltdc-device-tree-for-rgb-display/td-p/315953.  In ECO 5.0 these DT entries seems not valid anymore. DTC warnings occurs as listed below, even though the build goes through.

[2] RGB LCDs have reset and Enable pins for LCD control,  The link above had an  DT entry for it.

 

enable-gpios = <&gpioh 15 GPIO_ACTIVE_HIGH>; // DISP
reset-gpios = <&gpioh 7 GPIO_ACTIVE_HIGH>; // RESET

 

But PH7 the reset  pin is not released at boot. using gpioset -c 7 7=1, the reset is released (backlight goes on), it seems the panel DT node is ignored or panel entries have been changed. Since CubeMX does not generate  DT panel examples and the wiki's might be outdated, it feels like a  state of limbo.

P.S: when using gpioget -c 7 7, the tool seems to reconfigure the I/O as input and the output goes low. (LCD reset)

[3] Perhaps not related, ( I guessed it may been needed to switch on the GPU) DT examples for dk2 mention:

&gpu
{
contiguous-area = <&gpu_reserved>;
};

but this give an error in ECO 5.0,

 

For item [1] the u-boot DTC output:

 

arch/arm/dts/stm32mp157a-board-mx-lcd.dtb: Warning (reg_format): /panel/port@0:reg: property has invalid length (4 bytes) (#address-cells == 2, #size-cells == 1)
arch/arm/dts/stm32mp157a-board-mx-lcd.dtb: Warning (avoid_default_addr_size): /panel/port@0: Relying on default #address-cells value
arch/arm/dts/stm32mp157a-board-mx-lcd.dtb: Warning (avoid_default_addr_size): /panel/port@0: Relying on default #size-cells value

 

 

1 REPLY 1
debugging
Lead

 

Addtions:  dmseg reports

[ 0.317852] platform 5a001000.display-controller: Fixed dependency cycle(s) with /panel
[ 12.710279] platform panel-backlight: deferred probe pending
[ 12.721404] platform panel: deferred probe pending
[ 15.135513] pwm-backlight panel-backlight: supply power not found, using dummy regulator
[ 16.011862] pwm-backlight panel-backlight: supply power not found, using dummy regulator
[ 16.045170] pwm-backlight panel-backlight: invalid default brightness level: 32, using 7
[ 16.091774] panel-simple panel: supply power not found, using dummy regulator
[ 16.195329] panel-simple panel: Specify missing connector_type
[ 16.203700] stm32mp157-pinctrl soc:pinctrl@50002000: pin PI12 already requested by panel; cannot claim for 5a001000.display-controller

[ 16.265550] stm32mp157-pinctrl soc:pinctrl@50002000: pin-140 (5a001000.display-controller) status -22
[ 16.273481] stm32mp157-pinctrl soc:pinctrl@50002000: could not request pin 140 (PI12) from group PI12 on device soc:pinctrl@50002000

 

[1][ 16.045170] pwm-backlight panel-backlight: invalid default brightness level: 32, using 7

Default-brightness was set to <3> both in kernel and uboot, 

 

	 panel_backlight: panel-backlight {
		compatible = "pwm-backlight";
		pwms = <&pwm2 0 5000000>;
		brightness-levels = <0 4 8 16 32 64 128 255>;
		// dmseg: pwm-backlight panel-backlight: invalid default brightness level: 32, using 7
		default-brightness-level = <3>;
		status = "okay";
	};

 

[ 16.203700] stm32mp157-pinctrl soc:pinctrl@50002000: pin PI12 already requested by panel; cannot claim for 5a001000.display-controller

Both uboot and kernels declare the following and there isn't overlap. Definitions were copied from CubeMX generated device trees. Why this report?

 

ltdc_sleep_pins_mx: ltdc_sleep_mx-0 {
pins1 {
pinmux = <STM32_PINMUX('I', 12, AF14)>, /* LTDC_HSYNC */
<STM32_PINMUX('I', 13, AF14)>, /* LTDC_VSYNC */
<STM32_PINMUX('I', 15, AF14)>, /* LTDC_R0 */
<STM32_PINMUX('J', 0, AF14)>, /* LTDC_R1 */
<STM32_PINMUX('J', 1, AF14)>, /* LTDC_R2 */
<STM32_PINMUX('J', 2, AF14)>, /* LTDC_R3 */
<STM32_PINMUX('J', 3, AF14)>, /* LTDC_R4 */
<STM32_PINMUX('J', 4, AF14)>, /* LTDC_R5 */
<STM32_PINMUX('J', 5, AF14)>, /* LTDC_R6 */
<STM32_PINMUX('J', 6, AF14)>, /* LTDC_R7 */
<STM32_PINMUX('J', 7, AF14)>, /* LTDC_G0 */
<STM32_PINMUX('J', 8, AF14)>, /* LTDC_G1 */
<STM32_PINMUX('J', 9, AF14)>, /* LTDC_G2 */
<STM32_PINMUX('J', 10, AF14)>, /* LTDC_G3 */
<STM32_PINMUX('J', 11, AF14)>, /* LTDC_G4 */
<STM32_PINMUX('J', 12, AF14)>, /* LTDC_B0 */
<STM32_PINMUX('J', 13, AF14)>, /* LTDC_B1 */
<STM32_PINMUX('J', 14, AF14)>, /* LTDC_B2 */
<STM32_PINMUX('J', 15, AF14)>, /* LTDC_B3 */
<STM32_PINMUX('K', 0, AF14)>, /* LTDC_G5 */
<STM32_PINMUX('K', 1, AF14)>, /* LTDC_G6 */
<STM32_PINMUX('K', 2, AF14)>, /* LTDC_G7 */
<STM32_PINMUX('K', 3, AF14)>, /* LTDC_B4 */
<STM32_PINMUX('K', 4, AF14)>, /* LTDC_B5 */
<STM32_PINMUX('K', 5, AF14)>, /* LTDC_B6 */
<STM32_PINMUX('K', 6, AF14)>, /* LTDC_B7 */
<STM32_PINMUX('K', 7, AF14)>; /* LTDC_DE */
bias-disable;
drive-push-pull;
slew-rate = <0>;
};
pins2 {
pinmux = <STM32_PINMUX('I', 14, AF14)>; /* LTDC_CLK */
bias-disable;
drive-push-pull;
slew-rate = <1>;
};

pins {
pinmux = <STM32_PINMUX('I', 12, ANALOG)>, /* LTDC_HSYNC */
<STM32_PINMUX('I', 13, ANALOG)>, /* LTDC_VSYNC */
<STM32_PINMUX('I', 14, ANALOG)>, /* LTDC_CLK */
<STM32_PINMUX('I', 15, ANALOG)>, /* LTDC_R0 */
<STM32_PINMUX('J', 0, ANALOG)>, /* LTDC_R1 */
<STM32_PINMUX('J', 1, ANALOG)>, /* LTDC_R2 */
<STM32_PINMUX('J', 2, ANALOG)>, /* LTDC_R3 */
<STM32_PINMUX('J', 3, ANALOG)>, /* LTDC_R4 */
<STM32_PINMUX('J', 4, ANALOG)>, /* LTDC_R5 */
<STM32_PINMUX('J', 5, ANALOG)>, /* LTDC_R6 */
<STM32_PINMUX('J', 6, ANALOG)>, /* LTDC_R7 */
<STM32_PINMUX('J', 7, ANALOG)>, /* LTDC_G0 */
<STM32_PINMUX('J', 8, ANALOG)>, /* LTDC_G1 */
<STM32_PINMUX('J', 9, ANALOG)>, /* LTDC_G2 */
<STM32_PINMUX('J', 10, ANALOG)>, /* LTDC_G3 */
<STM32_PINMUX('J', 11, ANALOG)>, /* LTDC_G4 */
<STM32_PINMUX('J', 12, ANALOG)>, /* LTDC_B0 */
<STM32_PINMUX('J', 13, ANALOG)>, /* LTDC_B1 */
<STM32_PINMUX('J', 14, ANALOG)>, /* LTDC_B2 */
<STM32_PINMUX('J', 15, ANALOG)>, /* LTDC_B3 */
<STM32_PINMUX('K', 0, ANALOG)>, /* LTDC_G5 */
<STM32_PINMUX('K', 1, ANALOG)>, /* LTDC_G6 */
<STM32_PINMUX('K', 2, ANALOG)>, /* LTDC_G7 */
<STM32_PINMUX('K', 3, ANALOG)>, /* LTDC_B4 */
<STM32_PINMUX('K', 4, ANALOG)>, /* LTDC_B5 */
<STM32_PINMUX('K', 5, ANALOG)>, /* LTDC_B6 */
<STM32_PINMUX('K', 6, ANALOG)>, /* LTDC_B7 */
<STM32_PINMUX('K', 7, ANALOG)>; /* LTDC_DE */
};
};

 

 

[3] [ 16.195329] panel-simple panel: Specify missing connector_type

Even though panel-simple.c was the standard file added .connector_type = DRM_MODE_CONNECTOR_DPI,

[4] Regulator issues

The WIKI did not mentioned about such requirement.  but this panel is fed from direct power, Not sure if this issue has impact on enabling the panel ?