2024-08-07 02:06 AM - edited 2024-08-07 02:07 AM
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
2024-08-07 03:59 AM - edited 2024-08-07 04:01 AM
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 ?