IPU and Display Issues on iMX6QuadPlus

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

IPU and Display Issues on iMX6QuadPlus

1,339 Views
gianlucarenzi71
Contributor II

Hello to everybody!

I hope you all are safe and healthy.

Now the question: I have two identical boards (iMX6QuadPlus and iMX6DualLite) with LDB LVDS panel running at 1024x600.

The kernel is latest 4.19.144 from Linux Kernel site.

The distribution is the latest Debian Buster 10.5 upgraded at the end of August.

Running some OpenGL based software, the screen get garbled and distrorted after 10 minutes from the cold start. The processor has a RaspberryPi heatsink, but it is pretty cold, slightly warm (I think around 40 degrees Celsius).

The software is the OpenGL benchmark glmark2. It is executed with the following commandline: glmark2-es2-drm.

After running for about 10 minutes with no glitches or issues, the screen lcd becomes full of strange data and seems out of sync, but the software is still running. I can clearly see a kernel workqueue eating 50% of the CPU or more. The GPU is getting less than 5% of the processing power.

In the kernel log I can clearly see a lot of messages like this:

[ 1325.381092] imx-ipu-pre 21c8000.pre: timeout waiting for PRE safe window
[ 1325.401061] imx-ipu-pre 21c8000.pre: timeout waiting for PRE safe window
[ 1325.431189] imx-ipu-pre 21c8000.pre: timeout waiting for PRE safe window
[ 1325.451069] imx-ipu-pre 21c8000.pre: timeout waiting for PRE safe window
[ 1325.471066] imx-ipu-pre 21c8000.pre: timeout waiting for PRE safe window
[ 1325.501122] imx-ipu-pre 21c8000.pre: timeout waiting for PRE safe window
[ 1325.521054] imx-ipu-pre 21c8000.pre: timeout waiting for PRE safe window

after some minutes, the screen is working again but with some scanlines on top rolledover... It's hard to explain but it looks like a sort of out-of-sync...

And again after a while it turns black again... and so forth...

The device-tree is:

 

/*
* $Id: imx6qp-eurek-ek360.dts,v 1.25 2020/07/22 10:40:37 gianluca Exp $
*
* Copyright 2016/2017 Gianluca Renzi, Eurek Elettronica S.R.L.
*
* Attention to all developers!
* ============================
*
* This device-tree structure has the video and touchscreen sections disabled by
* default. They will be enabled run-time by Barebox Bootloader during
* initialization scripts.
* During Linux Kernel boot-up the device-tree will be passed with the
* correct values set, according to the hardware found.
* So, basically, this board is strictly coupled with Barebox and
* Linux Kernel greater than 4.11...
*
* Copyright 2014 Raphaël Poggi
* Copyright 2012 Freescale Semiconductor, Inc.
* Copyright 2011 Linaro Ltd.
*
* The code contained herein is licensed under the GNU General Public
* License. You may obtain a copy of the GNU General Public License
* Version 2 or later at the following locations:
*
* http://www.opensource.org/licenses/gpl-license.html
* http://www.gnu.org/copyleft/gpl.html
*/

/dts-v1/;

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <arm/imx6qp.dtsi>
#include "imx6qdl.dtsi"
#include "imx6q.dtsi"

/ {
model = "Eurek EK360 i.MX6QP";
compatible = "eurek,ek360", "fsl,imx6qp";

chosen {
linux,stdout-path = &uart3;
};

soc {

/*
* Those definitions pre-prg are for usage the display controller
* in Linux Kernel higher than 4.11...
*/
aips-bus@02100000 {
pre1: pre@21c8000 {
compatible = "fsl,imx6qp-pre";
reg = <0x021c8000 0x1000>;
interrupts = <GIC_SPI 90 IRQ_TYPE_EDGE_RISING>;
clocks = <&clks IMX6QDL_CLK_PRE0>;
clock-names = "axi";
fsl,iram = <&ocram2>;
};

pre2: pre@21c9000 {
compatible = "fsl,imx6qp-pre";
reg = <0x021c9000 0x1000>;
interrupts = <GIC_SPI 97 IRQ_TYPE_EDGE_RISING>;
clocks = <&clks IMX6QDL_CLK_PRE1>;
clock-names = "axi";
fsl,iram = <&ocram2>;
};

pre3: pre@21ca000 {
compatible = "fsl,imx6qp-pre";
reg = <0x021ca000 0x1000>;
interrupts = <GIC_SPI 98 IRQ_TYPE_EDGE_RISING>;
clocks = <&clks IMX6QDL_CLK_PRE2>;
clock-names = "axi";
fsl,iram = <&ocram3>;
};

pre4: pre@21cb000 {
compatible = "fsl,imx6qp-pre";
reg = <0x021cb000 0x1000>;
interrupts = <GIC_SPI 99 IRQ_TYPE_EDGE_RISING>;
clocks = <&clks IMX6QDL_CLK_PRE3>;
clock-names = "axi";
fsl,iram = <&ocram3>;
};

prg1: prg@21cc000 {
compatible = "fsl,imx6qp-prg";
reg = <0x021cc000 0x1000>;
clocks = <&clks IMX6QDL_CLK_PRG0_APB>,
<&clks IMX6QDL_CLK_PRG0_AXI>;
clock-names = "ipg", "axi";
fsl,pres = <&pre1>, <&pre2>, <&pre3>;
};

prg2: prg@21cd000 {
compatible = "fsl,imx6qp-prg";
reg = <0x021cd000 0x1000>;
clocks = <&clks IMX6QDL_CLK_PRG1_APB>,
<&clks IMX6QDL_CLK_PRG1_AXI>;
clock-names = "ipg", "axi";
fsl,pres = <&pre4>, <&pre2>, <&pre3>;
};
};
};

memory {
reg = <0x10000000 0x40000000>;
};

regulators {
compatible = "simple-bus";
#address-cells = <1>;
#size-cells = <0>;

reg_1p2v: regulator@0 {
compatible = "regulator-fixed";
reg = <0>;
regulator-name = "1P2V";
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
regulator-always-on;
};

reg_1p5v: regulator@1 {
compatible = "regulator-fixed";
reg = <1>;
regulator-name = "1P5V";
regulator-min-microvolt = <1500000>;
regulator-max-microvolt = <1500000>;
regulator-always-on;
};

reg_2p5v: regulator@2 {
compatible = "regulator-fixed";
reg = <2>;
regulator-name = "2P5V";
regulator-min-microvolt = <2500000>;
regulator-max-microvolt = <2500000>;
regulator-always-on;
};

reg_3p3v: regulator@3 {
compatible = "regulator-fixed";
reg = <3>;
regulator-name = "3P3V";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-always-on;
};

reg_usb_otg_vbus: regulator@4 {
compatible = "regulator-fixed";
reg = <4>;
regulator-name = "usb_otg_vbus";
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
gpio = <&gpio3 22 GPIO_ACTIVE_HIGH>;
enable-active-high;
};

reg_usb_h1_vbus: regulator@5 {
compatible = "regulator-fixed";
reg = <5>;
regulator-name = "usb_h1_vbus";
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
gpio = <&gpio3 31 GPIO_ACTIVE_HIGH>;
enable-active-high;
regulator-always-on;
};

reg_sdio_en: regulator@6 {
compatible = "regulator-fixed";
reg = <6>;
regulator-name = "sdio_en";
regulator-min-microvolt = <33000000>;
regulator-max-microvolt = <33000000>;
gpio = <&gpio2 3 GPIO_ACTIVE_HIGH>;
enable-active-high;
regulator-always-on;
};

reg_5p0v: regulator@7 {
compatible = "regulator-fixed";
reg = <7>;
regulator-name = "5P0V";
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
regulator-always-on;
};

};

leds {
compatible = "gpio-leds";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_led>;
status = "okay";

led0: led0 {
label = "led";
gpios = <&gpio5 11 GPIO_ACTIVE_LOW>;
default-state = "off";
};
};

backlight: backlight {
compatible = "pwm-backlight";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_pwm1>;
pwms = <&pwm1 0 6666666>;
brightness-levels = <0 8 16 24 32 40 48 56 64 72 80 88 96 104 112 120 128 136 144 152 160 168 176 184 192 200 208 216 224 232 240 248 255>;
default-brightness-level = <28>;
power-supply = <&reg_3p3v>;
status = "okay";
};

sound {
compatible = "fsl,imx6-ek360-sgtl5000",
"fsl,imx-audio-sgtl5000";
model = "imx6-ek360-sgtl5000";
ssi-controller = <&ssi1>;
audio-codec = <&sgtl5000>;
audio-routing =
"MIC_IN", "Mic Jack",
"Mic Jack", "Mic Bias",
"Headphone Jack", "HP_OUT";
mux-int-port = <1>;
mux-ext-port = <3>;
micbias-resistor-k-ohms = <2>;
micbias-voltage-m-volts = <3000>;
status = "okay";
};

panel: panel {
/*
* compatible must be filled-in by bootloader:
* compatible = "innolux,g101ice-l01", "panel-lvds";
*/
data-mapping = "jeida-24";
backlight = <&backlight>;
/*
* width-mm and height-mm must be filled-in by bootloader,
* as well as the panel-timing properties...
*/
power-supply = <&reg_3p3v>;
status = "okay";

panel-timing {
};

port {
in_lvds0: endpoint {
remote-endpoint = <&lvds0_out>;
};
};
};

gpio-buttons {
compatible = "gpio-keys";
pinctrl-names = "default";
pinctrl-0 = <&board_buttons>;
status = "okay";

factrst {
label = "FACT_RST";
gpios = <&gpio3 16 GPIO_ACTIVE_LOW>;
linux,code = <KEY_WAKEUP>;
wakeup-source;
};
};
};

&iomuxc {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_sgtl5000_clk>;

imx6qp-ek360 {
pinctrl_sgtl5000_clk: sgtl5000sysmclk {
fsl,pins = <
/* SGTL5000 sys_mclk */
MX6QDL_PAD_GPIO_0__CCM_CLKO1 0x030b0
>;
};

pinctrl_uart1: uart1grp {
/* RS232 port */
fsl,pins = <
MX6QDL_PAD_CSI0_DAT10__UART1_TX_DATA 0x1b0b1
MX6QDL_PAD_CSI0_DAT11__UART1_RX_DATA 0x1b0b1
>;
};

pinctrl_uart2: uart2grp {
/* RS485 port */
fsl,pins = <
MX6QDL_PAD_EIM_D26__UART2_TX_DATA 0x1b0b1
MX6QDL_PAD_EIM_D27__UART2_RX_DATA 0x1b0b1
/* UART2_DIR */
MX6QDL_PAD_EIM_D18__GPIO3_IO18 0x1b0b1
>;
};

pinctrl_uart3: uart3grp {
/* debug port, serial console */
fsl,pins = <
MX6QDL_PAD_EIM_D24__UART3_TX_DATA 0x1b0b1
MX6QDL_PAD_EIM_D25__UART3_RX_DATA 0x1b0b1
>;
};

pinctrl_uart4: uart4grp {
/* BlueTooth serial port (RX,TX,RTS & CTS) */
fsl,pins = <
MX6QDL_PAD_CSI0_DAT12__UART4_TX_DATA 0x1b0b1
MX6QDL_PAD_CSI0_DAT13__UART4_RX_DATA 0x1b0b1
MX6QDL_PAD_CSI0_DAT16__UART4_RTS_B 0x1b0b1
MX6QDL_PAD_CSI0_DAT17__UART4_CTS_B 0x1b0b1
>;
};

pinctrl_usdhc2: usdhc2grp {
/* SDIO / WiFi Module */
fsl,pins = <
MX6QDL_PAD_SD2_CMD__SD2_CMD 0x17059
MX6QDL_PAD_SD2_CLK__SD2_CLK 0x10059
MX6QDL_PAD_SD2_DAT0__SD2_DATA0 0x17059
MX6QDL_PAD_SD2_DAT1__SD2_DATA1 0x17059
MX6QDL_PAD_SD2_DAT2__SD2_DATA2 0x17059
MX6QDL_PAD_SD2_DAT3__SD2_DATA3 0x17059
/* SD2_EN */
MX6QDL_PAD_NANDF_D3__GPIO2_IO03 0x1b0b1
>;
};

pinctrl_usdhc3: usdhc3grp {
/* uSD/MMC */
fsl,pins = <
MX6QDL_PAD_SD3_CMD__SD3_CMD 0x17059
MX6QDL_PAD_SD3_CLK__SD3_CLK 0x10059
MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x17059
MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x17059
MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x17059
MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x17059
/* SD3_CD */
MX6QDL_PAD_NANDF_D0__GPIO2_IO00 0x1f071
/* SD3_WP */
MX6QDL_PAD_NANDF_D1__GPIO2_IO01 0x1f071
>;
};

pinctrl_usdhc4: usdhc4grp {
/* eMMC */
fsl,pins = <
MX6QDL_PAD_SD4_CMD__SD4_CMD 0x17059
MX6QDL_PAD_SD4_CLK__SD4_CLK 0x10059
MX6QDL_PAD_SD4_DAT0__SD4_DATA0 0x17059
MX6QDL_PAD_SD4_DAT1__SD4_DATA1 0x17059
MX6QDL_PAD_SD4_DAT2__SD4_DATA2 0x17059
MX6QDL_PAD_SD4_DAT3__SD4_DATA3 0x17059
MX6QDL_PAD_SD4_DAT4__SD4_DATA4 0x17059
MX6QDL_PAD_SD4_DAT5__SD4_DATA5 0x17059
MX6QDL_PAD_SD4_DAT6__SD4_DATA6 0x17059
MX6QDL_PAD_SD4_DAT7__SD4_DATA7 0x17059
>;
};

pinctrl_i2c1: i2c1grp {
fsl,pins = <
MX6QDL_PAD_CSI0_DAT8__I2C1_SDA 0x4001b8b1
MX6QDL_PAD_CSI0_DAT9__I2C1_SCL 0x4001b8b1
>;
};

pinctrl_i2c2: i2c2grp {
fsl,pins = <
MX6QDL_PAD_KEY_ROW3__I2C2_SDA 0x4001b8b1
MX6QDL_PAD_KEY_COL3__I2C2_SCL 0x4001b8b1
>;
};

pinctrl_i2c3: i2c3grp {
fsl,pins = <
MX6QDL_PAD_GPIO_6__I2C3_SDA 0x4001b8b1
MX6QDL_PAD_GPIO_3__I2C3_SCL 0x4001b8b1
>;
};

pinctrl_enet: enetgrp {
fsl,pins = <
MX6QDL_PAD_RGMII_RXC__RGMII_RXC 0x1b0b0
MX6QDL_PAD_RGMII_RD0__RGMII_RD0 0x1b0b0
MX6QDL_PAD_RGMII_RD1__RGMII_RD1 0x1b0b0
MX6QDL_PAD_RGMII_RD2__RGMII_RD2 0x1b0b0
MX6QDL_PAD_RGMII_RD3__RGMII_RD3 0x1b0b0
MX6QDL_PAD_RGMII_RX_CTL__RGMII_RX_CTL 0x1b0b0
MX6QDL_PAD_RGMII_TXC__RGMII_TXC 0x1b0b0
MX6QDL_PAD_RGMII_TD0__RGMII_TD0 0x1b0b0
MX6QDL_PAD_RGMII_TD1__RGMII_TD1 0x1b0b0
MX6QDL_PAD_RGMII_TD2__RGMII_TD2 0x1b0b0
MX6QDL_PAD_RGMII_TD3__RGMII_TD3 0x1b0b0
MX6QDL_PAD_RGMII_TX_CTL__RGMII_TX_CTL 0x1b0b0
MX6QDL_PAD_ENET_REF_CLK__ENET_TX_CLK 0x1b0b0
MX6QDL_PAD_ENET_MDIO__ENET_MDIO 0x1b0b0
MX6QDL_PAD_ENET_MDC__ENET_MDC 0x1b0b0
/* KSZ9031 PHY Reset */
MX6QDL_PAD_EIM_D23__GPIO3_IO23 0x80000000
>;
};

pinctrl_usbh1: usbh1grp {
fsl,pins = <
MX6QDL_PAD_EIM_D30__USB_H1_OC 0x1b0b0
>;
};

pinctrl_usbh1_vcc: usbh1vccgrp {
fsl,pins = <
MX6QDL_PAD_EIM_D31__GPIO3_IO31 0x1b0b0
>;
};

pinctrl_usbotg: usbotggrp {
fsl,pins = <
MX6QDL_PAD_GPIO_1__USB_OTG_ID 0x17059
MX6QDL_PAD_EIM_D21__USB_OTG_OC 0x1b0b0
>;
};

pinctrl_usbotg_vcc: usbotgvccgrp {
fsl,pins = <
MX6QDL_PAD_EIM_D22__GPIO3_IO22 0x1b0b1
>;
};

pinctrl_pwm1: pwm1grp {
fsl,pins = <
MX6QDL_PAD_SD1_DAT3__PWM1_OUT 0x1b0b1
>;
};

pinctrl_audmux: audmuxgrp {
fsl,pins = <
MX6QDL_PAD_CSI0_DAT7__AUD3_RXD 0x130b0
MX6QDL_PAD_CSI0_DAT4__AUD3_TXC 0x130b0
MX6QDL_PAD_CSI0_DAT5__AUD3_TXD 0x110b0
MX6QDL_PAD_CSI0_DAT6__AUD3_TXFS 0x130b0
>;
};

pinctrl_led: ledgrp {
fsl,pins = <
/* user led */
MX6QDL_PAD_DISP0_DAT17__GPIO5_IO11 0x1b0b1
>;
};

pinctrl_flexcan1: flexcan1grp {
fsl,pins = <
MX6QDL_PAD_GPIO_7__FLEXCAN1_TX 0x1b0b0
MX6QDL_PAD_GPIO_8__FLEXCAN1_RX 0x1b0b0
>;
};

pinctrl_display: dispgrp {
fsl,pins = <
/* DISP GPIO2 1,20 */
MX6QDL_PAD_SD1_CLK__GPIO1_IO20 0x1b0b1
/* DISP GPIO1 1,19 */
MX6QDL_PAD_SD1_DAT2__GPIO1_IO19 0x1b0b1
>;
};

pinctrl_touchscreen: touchscreengrp {
fsl,pins = <
/* DISP INT 1,17 */
MX6QDL_PAD_SD1_DAT1__GPIO1_IO17 0x1b0b1
>;
};

board_buttons: board-buttons {
fsl,pins = <
/* FACT RST 3,16 */
MX6QDL_PAD_EIM_D16__GPIO3_IO16 0x1b0b1
>;
};
};
};

&can1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_flexcan1>;
xceiver-supply = <&reg_5p0v>;
status = "okay";
};

&audmux {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_audmux>;
status = "okay";
};

&ssi1 {
status = "okay";
};

&pwm1 {
status = "okay";
};

&fec {
phy-supply=<&reg_3p3v>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_enet>;
phy-mode = "rgmii";
phy-reset-gpios = <&gpio3 23 GPIO_ACTIVE_HIGH>;
phy-reset-duration = <100>;
txen-skew-ps = <0>;
txc-skew-ps = <3000>;
rxdv-skew-ps = <0>;
rxc-skew-ps = <3000>;
rxd0-skew-ps = <0>;
rxd1-skew-ps = <0>;
rxd2-skew-ps = <0>;
rxd3-skew-ps = <0>;
txd0-skew-ps = <0>;
txd1-skew-ps = <0>;
txd2-skew-ps = <0>;
txd3-skew-ps = <0>;
status = "okay";
};

&uart1 {
/* RS-232C Port */
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart1>;
status = "okay";
};

&uart2 {
/* RS-485 Port */
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart2>;
uart-has-rtscts;
rts-gpios = <&gpio3 18 GPIO_ACTIVE_HIGH>;
linux,rs485-enabled-at-boot-time;
rs485-rts-delay = <0 0>;
status = "okay";
};

&uart3 {
/* Debug port / console */
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart3>;
status = "okay";
};

&uart4 {
/* BlueTooth serial port */
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart4>;
uart-has-rtscts;
status = "okay";
};

&usdhc2 {
/* WiFi SDIO */
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_usdhc2>;
bus-width = <4>;
vmmc-supply = <&reg_sdio_en>;
voltage-ranges = <3300 3300>;
max-frequency = <25000000>;
no-1-8-v;
non-removable;
status = "okay";
};

&usdhc3 {
/* uSD / MMC */
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_usdhc3>;
cd-gpios = <&gpio2 0 GPIO_ACTIVE_LOW>;
bus-width = <4>;
vmmc-supply = <&reg_3p3v>;
voltage-ranges = <3300 3300>;
no-1-8-v;
status = "okay";
};

&usdhc4 {
/* eMMC */
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_usdhc4>;
bus-width = <8>;
vmmc-supply = <&reg_3p3v>;
voltage-ranges = <3300 3300>;
no-1-8-v;
non-removable;
status = "okay";
};

&i2c1 {
clock-frequency = <100000>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c1>;
status = "okay";

sgtl5000: codec@0a {
compatible = "fsl,sgtl5000";
reg = <0x0a>;
clocks = <&clks IMX6QDL_CLK_CKO>;
VDDA-supply = <&reg_3p3v>;
VDDIO-supply = <&reg_3p3v>;
VDDD-supply = <&reg_1p2v>;
status = "okay";
};

/* ILI2117A touch screen controller */
ili2117@41 {
compatible = "ilitek,ili2117";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_touchscreen>;
#address-cells = <1>;
#size-cells = <0>;
reg = <0x41>;
interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
interrupt-parent = <&gpio1>;
interrupt-controller;
id = <0>;
blocks = <0x5>;
irq-trigger = <0x1>;
status = "disabled";
};

/* ILI2512 touch screen controller */
ili2512@41 {
compatible = "ilitek,ili251x";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_touchscreen>;
#address-cells = <1>;
#size-cells = <0>;
reg = <0x41>;
interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
interrupt-parent = <&gpio1>;
interrupt-controller;
id = <0>;
blocks = <0x5>;
irq-trigger = <0x1>;
status = "disabled";
};

/* STMPE811 adc, gpio and touch screen controller */
stmpe811@41 {
compatible = "st,stmpe811";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_touchscreen>;
#address-cells = <1>;
#size-cells = <0>;
reg = <0x41>;
interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
interrupt-parent = <&gpio1>;
interrupt-controller;
id = <0>;
blocks = <0x5>;
irq-trigger = <0x1>;
skip-reset;
status = "disabled";

stmpe_touchscreen {
compatible = "st,stmpe-ts";
reg = <0>;
/* 3.25 MHz ADC clock speed */
st,adc-freq = <1>;
/* 8 sample average control */
st,ave-ctrl = <3>;
/* 7 length fractional part in z */
st,fraction-z = <7>;
/*
* 50 mA typical 80 mA max touchscreen drivers
* current limit value
*/
st,i-drive = <1>;
/* 12-bit ADC */
st,mod-12b = <1>;
/* internal ADC reference */
st,ref-sel = <0>;
/* ADC converstion time: 80 clocks */
st,sample-time = <4>;
/* 1 ms panel driver settling time */
st,settling = <3>;
/* 5 ms touch detect interrupt delay */
st,touch-det-delay = <5>;
};

stmpe_gpio {
compatible = "st,stmpe-gpio";
st,norequest-mask = <0xFF>;
};

stmpe_adc {
compatible = "st,stmpe-adc";
st,norequest-mask = <0x0F>;
};
};

sx8656@48 {
compatible = "eurek,sx8656-ek";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_touchscreen>;
#address-cells = <1>;
#size-cells = <0>;
reg = <0x48>;
interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
interrupt-parent = <&gpio1>;
interrupt-controller;
id = <0>;
blocks = <0x5>;
irq-trigger = <0x1>;
status = "disabled";
};

at24@50 {
compatible = "at24,24c64";
pagesize = <64>;
reg = <0x50>;
status = "okay";
};

pcf8563: rtc@51 {
compatible = "phg,pcf8563";
reg = <0x51>;
status = "okay";
};

};

&i2c2 {
clock-frequency = <100000>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c2>;
status = "okay";
};

&i2c3 {
clock-frequency = <100000>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c3>;
status = "okay";
};

&usbh1 {
vbus-supply = <&reg_usb_h1_vbus>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_usbh1
&pinctrl_usbh1_vcc>;
dr_mode = "host";
status = "okay";
};

&usbotg {
vbus-supply = <&reg_usb_otg_vbus>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_usbotg
&pinctrl_usbotg_vcc>;
dr_mode = "otg";
status = "okay";
};

&ipu1 {
compatible = "fsl,imx6qp-ipu", "fsl,imx6q-ipu";
fsl,prg = <&prg1>;
};

&ipu2 {
compatible = "fsl,imx6qp-ipu", "fsl,imx6q-ipu";
fsl,prg = <&prg2>;
};

&mmdc0 {
compatible = "fsl,imx6qp-mmdc", "fsl,imx6q-mmdc";
};

&hdmi {
ddc-i2c-bus = <&i2c2>;
status = "disabled";
};

&ldb {
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";

lvds0: lvds-channel@0 {
fsl,data-mapping = "spwg";
fsl,data-width = <24>;
fsl,panel = <&panel>;
status = "disabled";

display-timings {
native-mode = <&awt1280800t>;

awt1280800t: awt1280800t {
/* innolux,g101ice-l01 */
clock-frequency = <71000000>;
hactive = <1280>;
vactive = <800>;
hback-porch = <50>;
hfront-porch = <50>;
vback-porch = <5>;
vfront-porch = <5>;
hsync-len = <60>;
vsync-len = <13>;
hsync-active = <1>;
vsync-active = <0>;
de-active = <1>;
pixelclk-active = <0>;
};

am1024600l: am1024600l {
/* auo,b101aw03 */
clock-frequency = <51200000>;
hactive = <1024>;
vactive = <600>;
hback-porch = <0>;
hfront-porch = <320>;
vback-porch = <0>;
vfront-porch = <35>;
hsync-len = <20>;
vsync-len = <20>;
hsync-active = <1>;
vsync-active = <0>;
de-active = <1>;
pixelclk-active = <0>;
};

am1280800n3tz: am1280800n3tz {
/* innolux,g101ice-l01 */
clock-frequency = <71000000>;
hactive = <1280>;
vactive = <800>;
hback-porch = <50>;
hfront-porch = <50>;
vback-porch = <5>;
vfront-porch = <5>;
hsync-len = <60>;
vsync-len = <13>;
hsync-active = <1>;
vsync-active = <0>;
de-active = <1>;
pixelclk-active = <0>;
};

};

port@4 {
reg = <4>;
lvds0_out: endpoint {
remote-endpoint = <&in_lvds0>;
};
};

};
};

+CONFIG_BLK_DEV_CRYPTOLOOP=m
+CONFIG_CRYPTO_PCBC=m
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRC16=y
+CONFIG_NILFS2_FS=y
+CONFIG_MD=y
+CONFIG_DM_CRYPT=m
+CONFIG_DM_SNAPSHOT=m
+CONFIG_DM_THIN_PROVISIONING=m
+CONFIG_DM_ERA=m
+CONFIG_DM_MIRROR=m
+CONFIG_DM_RAID=m
+CONFIG_DM_ZERO=m
+CONFIG_DM_MULTIPATH=m
+CONFIG_DM_UEVENT=y
+CONFIG_DM_LOG_WRITES=m
+CONFIG_BLK_DEV_MD=m
+CONFIG_BLK_DEV_DM=m
+CONFIG_CRYPTO_USER_API=y
+CONFIG_CRYPTO_USER_API_HASH=m
+CONFIG_CRYPTO_USER_API_SKCIPHER=m
+CONFIG_CRYPTO_USER_API_RNG=m
+CONFIG_CRYPTO_USER_API_AEAD=m
+CONFIG_CRYPTO_ZSTD=m
+CONFIG_CRYPTO_XTS=m
+CONFIG_CRYPTO_KEYWRAP=m +CONFIG_INPUT_UINPUT=m
+CONFIG_USB_SERIAL_PL2303=m
+CONFIG_CAN_VCAN=m
+CONFIG_CAN_VXCAN=m
+CONFIG_CAN_SLCAN=m
+CONFIG_CAN_8DEV_USB=m
+CONFIG_CAN_EMS_USB=m
+CONFIG_CAN_ESD_USB2=m
+CONFIG_CAN_GS_USB=m
+CONFIG_CAN_KVASER_USB=m
+CONFIG_CAN_MCBA_USB=m
+CONFIG_CAN_PEAK_USB=m
+CONFIG_CAN_UCAN=m

What is happening?

The iMX6DL based board, with the SAME SD Card, but with different device-tree is running fine so far.

Please help me,

Gianluca

0 Kudos
3 Replies

1,290 Views
gianlucarenzi71
Contributor II

Are you sure @Bio_TICFSL ? The kernel I am using is a vanilla Linux Kernel 4.19.144 and it works fine with the DUAL CORE CPU with the same Debian Buster Distro SDCard. The only differences between two boards are the Bootloaders SDRAM initialization and Device Tree Drivers. All remaining stuff is the EXACTLY the SAME!

Maybe you are talking about Yocto and its system builds. I am using Debian Buster and Vanilla Kernel, with Barebox as bootloader and the device tree customized from Linux 4.x series (I think 4.9 at the beginning)

Anyway which are the difference of the kernel 4.19.35v you are talking about and the 4.19.144 as in kernel.org?

Regards,

Gianluca

0 Kudos

1,322 Views
gianlucarenzi71
Contributor II

Hello,

thank you for information. So the correct kernel version for IPU support (I mean to NOT HAVE the timeout in ipu driver) is to GO BACK at 4.19.35(v?) instead of using the latest 4.19.144???

What kind of modification the latest kernels need to workaround the issue for IPU? I need special device-tree includes????

I strongly need updated kernel due to support for some filesystems and touch screen drivers, so go back at 4.19.35v is not a solution to me.

Kindest regards,

Gianluca

0 Kudos

1,325 Views
Bio_TICFSL
NXP TechSupport
NXP TechSupport

Hello gianlucarenzi71,

The kernel you are using is not supported by the current release i guess the graphics is not imported as module, the kernel supported must be 4.19.35v

 

Regards

 

 

0 Kudos