Yocto从Hardknott升级到Mickledore后,ti_sn65dsi86与backlight设备链路创建失败
Yocto升级到Mickledore后SN65DSI86与背光设备链接失败问题排查
将Yocto从Hardknott(内核5.10系列)升级到Mickledore(内核6.1系列)后,修改设备树时遇到SN65DSI86无法与背光设备创建链接的问题。已在pwm-bl驱动中添加调试打印,dmesg输出如下:
[ 0.527574] pwm-backlight backlight: registered pwm-backlight [ 0.533359] ti_sn65dsi86 2-002d: Failed to create device link (0x180) with backlight
相关设备树节点配置
/ { reg_1v8_adapter: regulator-1v8-adapter { compatible = "regulator-fixed"; regulator-name = "1v8-adapter"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-always-on; }; reg_1v2_adapter: regulator-1v2-adapter { compatible = "regulator-fixed"; regulator-name = "1v2-adapter"; regulator-min-microvolt = <1200000>; regulator-max-microvolt = <1200000>; regulator-always-on; }; reg_12v_backlight: regulator-12v-backlight { compatible = "regulator-fixed"; regulator-name = "12v-backlight"; regulator-min-microvolt = <12000000>; regulator-max-microvolt = <12000000>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_12v_backlight>; gpio = <&gpio1 9 GPIO_ACTIVE_HIGH>; enable-active-high; }; dsi86_clk: dsi86-clk { compatible = "fixed-clock"; #clock-cells = <0>; clock-frequency = <27000000>; }; backlight: backlight { compatible = "pwm-backlight"; pwms = <&pwm1 0 100000 0>; brightness-levels = < 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100>; default-brightness-level = <80>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_pwm_backlight>; power-supply = <®_12v_backlight>; enable-gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>;//154 }; // panel: panel { // compatible = "hkc,pc156cs01"; // // compatible = "panel-edp"; // backlight = <&backlight>; // power-supply = <®_3v3>; // no-hdp; // ports { // panel_in: port { // panel_in_edp: endpoint { // remote-endpoint = <&edp_bridge_out>; // }; // }; // }; // }; }; &pwm1 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_pwm1>; status = "okay"; }; &i2c4 { sn65dsi86: bridge@2d { compatible = "ti,sn65dsi86"; reg = <0x2d>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_edp_en &pinctrl_edp_int>; enable-gpios = <&gpio4 14 GPIO_ACTIVE_HIGH>;//113 interrupt-parent = <&gpio5>; interrupts = <5 IRQ_TYPE_LEVEL_HIGH>;//146 vccio-supply = <®_1v8_adapter>; vcca-supply = <®_1v2_adapter>; vpll-supply = <®_1v8_adapter>; vcc-supply = <®_1v2_adapter>; clocks = <&dsi86_clk>; clock-names = "refclk"; no-hdp; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; edp_bridge_in: endpoint { remote-endpoint = <&mipi_dsi_out>; }; }; port@1 { reg = <1>; edp_bridge_out: endpoint { // data-lanes = <0 1>; remote-endpoint = <&panel_in_edp>; }; }; }; aux-bus { panel { compatible = "hkc,pc156cs01"; // compatible = "edp-panel"; backlight = <&backlight>; power-supply = <®_3v3>; no-hdp; port { panel_in_edp: endpoint { remote-endpoint = <&edp_bridge_out>; }; }; }; }; }; }; &lcdif1 { status = "okay"; }; &mipi_dsi { status = "okay"; port@1 { mipi_dsi_out: endpoint { remote-endpoint = <&edp_bridge_in>; data-lanes = <0 1 2 3>; attach-bridge; }; }; }; &iomuxc { pinctrl_12v_backlight: 12v-backlightgrp { fsl,pins = < MX8MP_IOMUXC_GPIO1_IO09__GPIO1_IO09 0x142 /* COM pin 159 boost converter enable */ >; }; pinctrl_pwm_backlight: pwm-backlightgrp { fsl,pins = < MX8MP_IOMUXC_GPIO1_IO04__GPIO1_IO04 0x156 /* Enable backlight COM pin 154 */ >; }; pinctrl_pwm1: pwm1grp { fsl,pins = < MX8MP_IOMUXC_GPIO1_IO01__PWM1_OUT 0x06 /* COM pin 42 PWM1_OUT */ >; }; pinctrl_edp_en: edp_en { fsl,pins = < MX8MP_IOMUXC_SAI1_TXD2__GPIO4_IO14 0x140 /*113*/ >; }; pinctrl_edp_int: edp_int{ fsl,pins = < MX8MP_IOMUXC_SPDIF_EXT_CLK__GPIO5_IO05 0x140 /*146*/ >; }; };
内核代码修改
已将原panel-simple.c中的显示时序迁移到panel-edp.c,代码如下:
static const struct drm_display_mode hkc_pc156cs01_mode = { .clock = 148500, .hdisplay = 1920, .hsync_start = 1920 + 88, .hsync_end = 1920 + 88 + 44, .htotal = 1920 + 280, .vdisplay = 1080, .vsync_start = 1080 + 4, .vsync_end = 1080 + 4 + 5, .vtotal = 1080 + 45, .flags = DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC, }; static const struct panel_desc hkc_pc156cs01 = { .modes = &hkc_pc156cs01_mode, .num_modes = 1, .bpc = 8, .size = { .width = 340, .height = 190, }, .delay = { .hpd_absent = 200, .unprepare = 500, }, };
已参考多个使用相同组件的设备树配置,仍未定位问题,请求帮忙排查解决。
内容的提问来源于stack exchange,提问作者owndampu
相关产品推荐
相关产品推荐

