MIPI_DSI Panel and iMX8QXP

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

MIPI_DSI Panel and iMX8QXP

3,064件の閲覧回数
donal1
Contributor I

Hi There,

I'm struggling to integrate a ILI9881C Display Driver into our custom carrier board, running an iMX8QXP & kernel 4.14. I've manually back-ported the driver for this to 4.14 (no modifications were required for this).

This is the only output I'm getting related to the panel at start-up:

[ 1.469065] imx-drm display-subsystem: bound imx-drm-dpu-bliteng.2 (ops dpu_bliteng_ops)
[ 1.477523] imx-drm display-subsystem: bound imx-dpu-crtc.0 (ops dpu_crtc_ops)
[ 1.485025] imx-drm display-subsystem: bound imx-dpu-crtc.1 (ops dpu_crtc_ops)
[ 1.492999] ili9881c-dsi 56228000.mipi_dsi_bridge.0: ili9881c_dsi_probe()
[ 1.499839] ili9881c-dsi 56228000.mipi_dsi_bridge.0: 56228000.mipi_dsi_bridge.0 supply power not found, using dummy regulator
[ 1.511326] nwl-mipi-dsi 56228000.mipi_dsi_bridge: [drm:nwl_dsi_host_attach] lanes=2, format=0x0 flags=0x411
[ 1.521393] imx-drm display-subsystem: bound mipi_dsi@56228000 (ops imx_nwl_dsi_component_ops)
[ 1.530092] [drm] fb_helper->crtc_count: 2
[ 1.534201] [drm] desired_mode: 0, mode_set: 1927159296
[ 1.539446] [drm] desired_mode: 0, mode_set: 1927159360
[ 1.544687] [drm] Cannot find any crtc or sizes, crtc_count=0, sizes.fb_width=-1, sizes.fb_height=-1
[ 1.554625] [drm] Initialized imx-drm 1.0.0 20120507 for display-subsystem on minor 0
[ 1.580112] brd: module loaded
[ 1.590345] loop: module loaded
[ 1.594251] zram: Added device: zram0

The main error I'm seeing is "Cannot find any crtc or sizes". I've traced this back to the crtc not having a 'desired_mode' configured. The screen is blank (although the backlight is working).

My current thinking is that this is a device tree configuration issue. The following is an excerpt of my device tree:

&mipi_dsi_phy1 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "mixel,imx8qxp-mipi-dsi-phy";
reg = <0x0 0x56228300 0x0 0x100>;
#phy-cells = <0>;
status = "okay";
};


&mipi_dsi_bridge1 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "nwl,mipi-dsi";
reg = <0x0 0x56228000 0x0 0x300>;
interrupts = <16 IRQ_TYPE_LEVEL_HIGH>;
interrupt-parent = <&irqsteer_mipi_lvds0>;
clocks =
<&clk IMX8QXP_MIPI0_DSI_PHY_CLK>,
<&clk IMX8QXP_MIPI0_DSI_TX_ESC_CLK>,
<&clk IMX8QXP_MIPI0_DSI_RX_ESC_CLK>;
clock-names = "phy_ref", "tx_esc", "rx_esc";
assigned-clocks =
<&clk IMX8QXP_MIPI0_DSI_PHY_SEL>,
<&clk IMX8QXP_MIPI0_DSI_TX_ESC_SEL>,
<&clk IMX8QXP_MIPI0_DSI_RX_ESC_SEL>,
<&clk IMX8QXP_MIPI0_DSI_TX_ESC_CLK>,
<&clk IMX8QXP_MIPI0_DSI_RX_ESC_CLK>;
assigned-clock-rates = <0>, <0>, <0>, <18000000>, <72000000>;
assigned-clock-parents =
<&clk IMX8QXP_MIPI0_DSI_PLL_DIV2_CLK>,
<&clk IMX8QXP_MIPI0_DSI_PLL_DIV2_CLK>,
<&clk IMX8QXP_MIPI0_DSI_PLL_DIV2_CLK>;
power-domains = <&pd_mipi_dsi0>;
phys = <&mipi_dsi_phy1>;
phy-names = "dphy";
status = "okay";

panel@0 {
compatible = "bananapi,lhr050h41", "ilitek,ili9881c";
label = "ili9881c - WF50DTYA3MNG10";
reg = <0>;
reset-gpio = <&gpio0 4 GPIO_ACTIVE_LOW>;
dsi-lanes = <2>;
/*backlight = <&backlight>;*/
port {
panel1_in: endpoint {
remote-endpoint = <&mipi_dsi_bridge1_out>;
};
};
};

port@1 {
mipi_dsi_bridge1_out: endpoint {
remote-endpoint = <&panel1_in>;
};
};
};

&mipi_dsi1 {
compatible = "fsl,imx8qxp-mipi-dsi";
clocks =
<&clk IMX8QXP_MIPI0_PIXEL_CLK>,
<&clk IMX8QXP_MIPI0_BYPASS_CLK>,
<&clk IMX8QXP_MIPI0_DSI_PHY_CLK>;
clock-names = "pixel", "bypass", "phy_ref";
power-domains = <&pd_mipi_dsi0>;
csr = <&mipi_dsi_csr1>;
phys = <&mipi_dsi_phy1>;
phy-names = "dphy";
status = "okay";

port@0 {
mipi_dsi1_in: endpoint {
remote-endpoint = <&dpu_disp0_mipi_dsi>;
};
};

port@1 {
mipi_dsi1_out: endpoint {
remote-endpoint = <&mipi_dsi_bridge1_in>;
};
};
};

Any suggestions on what could be causing this issue?

Thank you,

Donal

ラベル(2)
0 件の賞賛
3 返答(返信)

1,666件の閲覧回数
jhgorse
Contributor I

Donal,

Did you happen to get the ili9881c to work for the iMX8QXP?

Cheers,
Joe Gorse

0 件の賞賛

2,466件の閲覧回数
igorpadykov
NXP Employee
NXP Employee

Hi Donal

one can try to use mipi-dsi lcd dts : fsl-imx8qxp-mek-dsi-rm67191.dts

fsl-imx8qxp-mek-dsi-rm67191.dts\freescale\dts\boot\arm64\arch - linux-imx - i.MX Linux kernel 

and panel-raydium-rm67191.c driver, modify it for custom lcd

panel-raydium-rm67191.c\panel\drm\gpu\drivers - linux-imx - i.MX Linux kernel 

pay attention to specific lcd initialization in functions:

cmd_set_entry manufacturer_cmd_set[], rad_panel_push_cmd_list,rad_panel_prepare,
struct display_timing rad_default_timing - modify according to ILI9881C datasheet
also in dts file:
dsi-lanes = <4>;
        panel-width-mm = <68>;
        panel-height-mm = <121>;

Best regards
igor
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 件の賞賛

1,869件の閲覧回数
VinithNama
Contributor III

Hi,

I'm using an NXP EVK for adding custom LVDS. Here we are using the bridge in between LVDS and EVK (i,e SN65DSI83).

In drivers/gpu/drm/panel/panel-raydium-rm67191.c 

I have adding my LVDS display data into the static const cmd_set_table manufacturer_cmd_set[] function and also adding the sn65dsi83 folder in the gpu/drm/bridge/sn65dsi83 and also adding the data in imx8mmevk.dts i,e

&i2c2 {
clock-frequency = <100000>;
pinctrl-names = "default", "gpio";
pinctrl-0 = <&pinctrl_i2c3>;
pinctrl-1 = <&pinctrl_i2c3_gpio>;
scl-gpios = <&gpio5 18 GPIO_ACTIVE_HIGH>;
sda-gpios = <&gpio5 19 GPIO_ACTIVE_HIGH>;
status = "okay";

dsi_lvds_bridge: sn65dsi84@2c {
compatible = "ti,sn65dsi83";
reg = <0x2c>;
ti,dsi-lanes = <4>;
ti,lvds-format = <1>;
ti,lvds-bpp = <24>;
ti,width-mm = <217>;
ti,height-mm = <136>;
enable-gpios = <&gpio3 0 GPIO_ACTIVE_HIGH>;
interrupt-parent = <&gpio3>;
interrupts = <6 IRQ_TYPE_LEVEL_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_lvds>;
status = "disabled";

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

/* AUO G101EVN01.0 */
lvds0_g101evn010: timing@0 {
clock-frequency = <69000000>;
hactive = <1280>;
vactive = <800>;
hfront-porch = <120>;
hback-porch = <1>;
hsync-len = <8>;
vback-porch = <10>;
vfront-porch = <1>;
vsync-len = <6>;
hsync-active = <1>;
vsync-active = <1>;
de-active = <1>;
pixelclk-active = <0>;
};

/* Fusion 10" F10A-0102 */
lvds0_hsd101pfw2: timing@1 {
clock-frequency = <45000000>;
hactive = <1024>;
vactive = <600>;
hfront-porch = <120>;
hback-porch = <1>;
hsync-len = <8>;
vback-porch = <10>;
vfront-porch = <1>;
vsync-len = <6>;
hsync-active = <1>;
vsync-active = <1>;
de-active = <1>;
pixelclk-active = <0>;
};
};

port {
dsi_lvds_bridge_in: endpoint {
remote-endpoint = <&mipi_dsi_lvds_out>;
};
};
};

...

};

...

&mipi_dsi {
status = "okay";

...

port@2 {
mipi_dsi_lvds_out: endpoint {
remote-endpoint = <&dsi_lvds_bridge_in>;
};
};
};

 

After generating image I'm unable to see any image on LVDS.

 

0 件の賞賛