nickbreen Posted December 21, 2019 Share Posted December 21, 2019 Armbianmonitor: http://ix.io/24Zy I have an early model of the 14" pinebook with the 1366x768 panel, apparently this model has invalid EDID which prevents the display working. During booting the log is full of errors like this and also a [ 10.808400] [drm:anx_aux_transfer [analogix_dp_i2c]] *ERROR* Failed to wait for AUX channel (status: 02) [ 10.816392] [drm:anx_aux_transfer [analogix_dp_i2c]] *ERROR* Failed to wait for AUX channel (status: 02) [ 10.816409] [drm:anx6345_bridge_enable [analogix_anx6345]] *ERROR* Failed to power up DisplayPort link: -110 [ 10.816415] [drm:anx6345_bridge_enable [analogix_anx6345]] *ERROR* Failed transmitter initialization: -110 [ 10.816420] [drm:anx6345_bridge_enable [analogix_anx6345]] *ERROR* Failed DisplayPort transmitter initialization: -110 [ 10.827228] [drm:anx6345_bridge_enable [analogix_anx6345]] *ERROR* Failed to initialize: -110 [ 10.829757] Console: switching to colour frame buffer device 128x48 [ 12.003087] sun4i-drm display-engine: fb0: sun4i-drmdrmfb frame buffer device [ 12.036141] asoc-simple-card soc:sound_hdmi: i2s-hifi <-> 1c22800.i2s mapping ok [ 19.479538] ------------[ cut here ]------------ [ 19.479672] WARNING: CPU: 0 PID: 474 at drivers/gpu/drm/bridge/analogix/analogix-anx6345.c:531 anx6345_get_modes+0x1c8/0x1d8 [analogix_anx6345] [ 19.479675] Modules linked in: zstd snd_soc_hdmi_codec dw_hdmi_cec dw_hdmi_i2s_audio zram 8723cs analogix_anx6345 analogix_dp_i2c axp20x_adc axp20x_ac_power axp20x_usb_power axp20x_battery snd_soc_simple_card snd_soc_simple_card_utils snd_soc_spdif_tx sun50i_codec_analog sun8i_adda_pr_regmap cfg80211 lima rfkill sun4i_gpadc_iio gpu_sched industrialio sun8i_codec sun4i_i2s pwm_sun4i snd_soc_simple_amplifier pwm_bl snd_soc_core snd_pcm_dmaengine snd_pcm snd_timer cpufreq_dt snd soundcore pinctrl_axp209 i2c_mv64xxx [ 19.479742] CPU: 0 PID: 474 Comm: kworker/0:2 Not tainted 5.3.9-sunxi64 #19.11.3 [ 19.479744] Hardware name: Pinebook (DT) [ 19.479760] Workqueue: events output_poll_execute [ 19.479767] pstate: 40000005 (nZcv daif -PAN -UAO) [ 19.479774] pc : anx6345_get_modes+0x1c8/0x1d8 [analogix_anx6345] [ 19.479780] lr : anx6345_get_modes+0x1c8/0x1d8 [analogix_anx6345] [ 19.479782] sp : ffff000011163a00 [ 19.479785] x29: ffff000011163a00 x28: 0000000000000001 [ 19.479790] x27: 0000000000000300 x26: ffff000008c42178 [ 19.479795] x25: 00000000fffffffd x24: ffff000010ca43e0 [ 19.479799] x23: ffff000010ef6000 x22: ffff000010e886c8 [ 19.479804] x21: ffff800074b48080 x20: ffff800074b485d0 [ 19.479809] x19: ffff000010e886c8 x18: 00000000fffffff0 [ 19.479814] x17: 0000000000000000 x16: 0000000000010101 [ 19.479818] x15: ffff000010ea2aa8 x14: ffff000010f3f10a [ 19.479823] x13: 00000000000042b8 x12: ffff000010f3e000 [ 19.479828] x11: ffff000010ea2000 x10: ffff000010f3e750 [ 19.479832] x9 : 0000000000000000 x8 : 0000000000000004 [ 19.479837] x7 : 000000000000022b x6 : 0000000000000001 [ 19.479841] x5 : 0000000000000000 x4 : 0000000000000000 [ 19.479845] x3 : 0000000000000000 x2 : 28413e20c265e700 [ 19.479850] x1 : 0000000000000000 x0 : 0000000000000024 [ 19.479855] Call trace: [ 19.479862] anx6345_get_modes+0x1c8/0x1d8 [analogix_anx6345] [ 19.479869] drm_helper_probe_single_connector_modes+0x190/0x670 [ 19.479876] drm_client_modeset_probe+0x238/0xee8 [ 19.479884] drm_fb_helper_hotplug_event.part.13+0x84/0xc8 [ 19.479889] drm_fbdev_client_hotplug+0x38/0x188 [ 19.479893] drm_client_dev_hotplug+0x70/0xb8 [ 19.479898] drm_kms_helper_hotplug_event+0x30/0x40 [ 19.479903] output_poll_execute+0x198/0x1e0 [ 19.479913] process_one_work+0x1ec/0x370 [ 19.479918] worker_thread+0x4c/0x4f8 [ 19.479923] kthread+0x120/0x128 [ 19.479930] ret_from_fork+0x10/0x18 [ 19.479934] ---[ end trace d810ecbc95ab5c05 ]--- [ 33.765167] vcc3v3: disabling [ 74.826296] ------------[ cut here ]------------ [ 74.826415] WARNING: CPU: 2 PID: 1768 at drivers/gpu/drm/bridge/analogix/analogix-anx6345.c:531 anx6345_get_modes+0x1c8/0x1d8 [analogix_anx6345] [ 74.826418] Modules linked in: zstd snd_soc_hdmi_codec dw_hdmi_cec dw_hdmi_i2s_audio zram 8723cs analogix_anx6345 analogix_dp_i2c axp20x_adc axp20x_ac_power axp20x_usb_power axp20x_battery snd_soc_simple_card snd_soc_simple_card_utils snd_soc_spdif_tx sun50i_codec_analog sun8i_adda_pr_regmap cfg80211 lima rfkill sun4i_gpadc_iio gpu_sched industrialio sun8i_codec sun4i_i2s pwm_sun4i snd_soc_simple_amplifier pwm_bl snd_soc_core snd_pcm_dmaengine snd_pcm snd_timer cpufreq_dt snd soundcore pinctrl_axp209 i2c_mv64xxx [ 74.826486] CPU: 2 PID: 1768 Comm: Xorg Tainted: G W 5.3.9-sunxi64 #19.11.3 [ 74.826488] Hardware name: Pinebook (DT) [ 74.826494] pstate: 40000005 (nZcv daif -PAN -UAO) [ 74.826501] pc : anx6345_get_modes+0x1c8/0x1d8 [analogix_anx6345] [ 74.826506] lr : anx6345_get_modes+0x1c8/0x1d8 [analogix_anx6345] [ 74.826509] sp : ffff000012ad3a40 [ 74.826511] x29: ffff000012ad3a40 x28: 0000000000000001 [ 74.826516] x27: 0000000000002000 x26: ffff000008c42178 [ 74.826521] x25: 00000000fffffffd x24: ffff000010ca43e0 [ 74.826526] x23: ffff000010ef6000 x22: ffff000010e886c8 [ 74.826530] x21: ffff800074b48080 x20: ffff800074b485d0 [ 74.826535] x19: ffff000010e886c8 x18: 00000000fffffff0 [ 74.826540] x17: 0000000000000000 x16: 0000000000000000 [ 74.826545] x15: ffff000010ea2aa8 x14: ffff000010f3f10a [ 74.826549] x13: 0000000000004d8c x12: ffff000010f3e000 [ 74.826554] x11: ffff000010ea2000 x10: ffff000010f3e750 [ 74.826558] x9 : 0000000000000000 x8 : 0000000000000004 [ 74.826563] x7 : 0000000000000253 x6 : 0000000000000001 [ 74.826567] x5 : 0000000000000000 x4 : 0000000000000000 [ 74.826571] x3 : 0000000000000000 x2 : 28413e20c265e700 [ 74.826576] x1 : 0000000000000000 x0 : 0000000000000024 [ 74.826581] Call trace: [ 74.826588] anx6345_get_modes+0x1c8/0x1d8 [analogix_anx6345] [ 74.826602] drm_helper_probe_single_connector_modes+0x190/0x670 [ 74.826611] drm_mode_getconnector+0x2a8/0x428 [ 74.826619] drm_ioctl_kernel+0xbc/0x108 [ 74.826624] drm_ioctl+0x22c/0x3d0 [ 74.826632] do_vfs_ioctl+0xb8/0x8b0 [ 74.826637] ksys_ioctl+0x78/0xa8 [ 74.826641] __arm64_sys_ioctl+0x1c/0x28 [ 74.826650] el0_svc_common.constprop.0+0x88/0x150 [ 74.826655] el0_svc_handler+0x20/0x80 [ 74.826660] el0_svc+0x8/0xc [ 74.826663] ---[ end trace d810ecbc95ab5c06 ]--- [ 74.831375] ------------[ cut here ]------------ [ 74.831496] WARNING: CPU: 2 PID: 1768 at drivers/gpu/drm/bridge/analogix/analogix-anx6345.c:531 anx6345_get_modes+0x1c8/0x1d8 [analogix_anx6345] [ 74.831499] Modules linked in: zstd snd_soc_hdmi_codec dw_hdmi_cec dw_hdmi_i2s_audio zram 8723cs analogix_anx6345 analogix_dp_i2c axp20x_adc axp20x_ac_power axp20x_usb_power axp20x_battery snd_soc_simple_card snd_soc_simple_card_utils snd_soc_spdif_tx sun50i_codec_analog sun8i_adda_pr_regmap cfg80211 lima rfkill sun4i_gpadc_iio gpu_sched industrialio sun8i_codec sun4i_i2s pwm_sun4i snd_soc_simple_amplifier pwm_bl snd_soc_core snd_pcm_dmaengine snd_pcm snd_timer cpufreq_dt snd soundcore pinctrl_axp209 i2c_mv64xxx [ 74.831567] CPU: 2 PID: 1768 Comm: Xorg Tainted: G W 5.3.9-sunxi64 #19.11.3 [ 74.831569] Hardware name: Pinebook (DT) [ 74.831575] pstate: 40000005 (nZcv daif -PAN -UAO) [ 74.831580] pc : anx6345_get_modes+0x1c8/0x1d8 [analogix_anx6345] [ 74.831586] lr : anx6345_get_modes+0x1c8/0x1d8 [analogix_anx6345] [ 74.831588] sp : ffff000012ad3a40 [ 74.831591] x29: ffff000012ad3a40 x28: 0000000000000001 [ 74.831596] x27: 0000000000002000 x26: ffff000008c42178 [ 74.831601] x25: 00000000fffffffd x24: ffff000010ca43e0 [ 74.831605] x23: ffff000010ef6000 x22: ffff000010e886c8 [ 74.831610] x21: ffff800074b48080 x20: ffff800074b485d0 [ 74.831618] x19: ffff000010e886c8 x18: 00000000fffffff0 [ 74.831623] x17: 0000000000000000 x16: 0000000000000000 [ 74.831627] x15: ffff000010ea2aa8 x14: ffff000010f3f10a [ 74.831632] x13: 00000000000057b4 x12: ffff000010f3e000 [ 74.831637] x11: ffff000010ea2000 x10: ffff000010f3e750 [ 74.831641] x9 : 0000000000000000 x8 : 0000000000000004 [ 74.831646] x7 : 0000000000000278 x6 : 0000000000000001 [ 74.831650] x5 : 0000000000000000 x4 : 0000000000000000 [ 74.831655] x3 : 0000000000000000 x2 : 28413e20c265e700 [ 74.831659] x1 : 0000000000000000 x0 : 0000000000000024 [ 74.831664] Call trace: [ 74.831671] anx6345_get_modes+0x1c8/0x1d8 [analogix_anx6345] [ 74.831686] drm_helper_probe_single_connector_modes+0x190/0x670 [ 74.831694] drm_mode_getconnector+0x2a8/0x428 [ 74.831703] drm_ioctl_kernel+0xbc/0x108 [ 74.831708] drm_ioctl+0x22c/0x3d0 [ 74.831716] do_vfs_ioctl+0xb8/0x8b0 [ 74.831720] ksys_ioctl+0x78/0xa8 [ 74.831724] __arm64_sys_ioctl+0x1c/0x28 [ 74.831736] el0_svc_common.constprop.0+0x88/0x150 [ 74.831741] el0_svc_handler+0x20/0x80 [ 74.831746] el0_svc+0x8/0xc [ 74.831750] ---[ end trace d810ecbc95ab5c07 ]--- [ 79.631807] ------------[ cut here ]------------ [ 79.631988] WARNING: CPU: 0 PID: 1768 at drivers/gpu/drm/bridge/analogix/analogix-anx6345.c:531 anx6345_get_modes+0x1c8/0x1d8 [analogix_anx6345] [ 79.631993] Modules linked in: zstd snd_soc_hdmi_codec dw_hdmi_cec dw_hdmi_i2s_audio zram 8723cs analogix_anx6345 analogix_dp_i2c axp20x_adc axp20x_ac_power axp20x_usb_power axp20x_battery snd_soc_simple_card snd_soc_simple_card_utils snd_soc_spdif_tx sun50i_codec_analog sun8i_adda_pr_regmap cfg80211 lima rfkill sun4i_gpadc_iio gpu_sched industrialio sun8i_codec sun4i_i2s pwm_sun4i snd_soc_simple_amplifier pwm_bl snd_soc_core snd_pcm_dmaengine snd_pcm snd_timer cpufreq_dt snd soundcore pinctrl_axp209 i2c_mv64xxx [ 79.632066] CPU: 0 PID: 1768 Comm: Xorg Tainted: G W 5.3.9-sunxi64 #19.11.3 [ 79.632068] Hardware name: Pinebook (DT) [ 79.632074] pstate: 40000005 (nZcv daif -PAN -UAO) [ 79.632081] pc : anx6345_get_modes+0x1c8/0x1d8 [analogix_anx6345] [ 79.632086] lr : anx6345_get_modes+0x1c8/0x1d8 [analogix_anx6345] [ 79.632089] sp : ffff000012ad3a40 [ 79.632091] x29: ffff000012ad3a40 x28: 0000000000000001 [ 79.632096] x27: 0000000000002000 x26: ffff000008c42178 [ 79.632101] x25: 00000000fffffffd x24: ffff000010ca43e0 [ 79.632106] x23: ffff000010ef6000 x22: ffff000010e886c8 [ 79.632111] x21: ffff800074b48080 x20: ffff800074b485d0 [ 79.632115] x19: ffff000010e886c8 x18: 00000000fffffff0 [ 79.632120] x17: 0000000000000000 x16: 0000000000000000 [ 79.632125] x15: ffff000010ea2aa8 x14: ffff000010f3f10a [ 79.632130] x13: 00000000000061f8 x12: ffff000010f3e000 [ 79.632135] x11: ffff000010ea2000 x10: ffff000010f3e750 [ 79.632139] x9 : 0000000000000000 x8 : 0000000000000004 [ 79.632144] x7 : 000000000000029d x6 : 0000000000000001 [ 79.632148] x5 : 0000000000000000 x4 : 0000000000000000 [ 79.632152] x3 : 0000000000000000 x2 : 28413e20c265e700 [ 79.632157] x1 : 0000000000000000 x0 : 0000000000000024 [ 79.632162] Call trace: [ 79.632169] anx6345_get_modes+0x1c8/0x1d8 [analogix_anx6345] [ 79.632187] drm_helper_probe_single_connector_modes+0x190/0x670 [ 79.632197] drm_mode_getconnector+0x2a8/0x428 [ 79.632208] drm_ioctl_kernel+0xbc/0x108 [ 79.632213] drm_ioctl+0x22c/0x3d0 [ 79.632221] do_vfs_ioctl+0xb8/0x8b0 [ 79.632226] ksys_ioctl+0x78/0xa8 [ 79.632230] __arm64_sys_ioctl+0x1c/0x28 [ 79.632241] el0_svc_common.constprop.0+0x88/0x150 [ 79.632246] el0_svc_handler+0x20/0x80 [ 79.632252] el0_svc+0x8/0xc [ 79.632256] ---[ end trace d810ecbc95ab5c08 ]--- [ 80.691657] fuse: init (API version 7.31) [ 85.456411] ------------[ cut here ]------------ [ 85.456566] WARNING: CPU: 0 PID: 1768 at drivers/gpu/drm/bridge/analogix/analogix-anx6345.c:531 anx6345_get_modes+0x1c8/0x1d8 [analogix_anx6345] [ 85.456570] Modules linked in: fuse zstd snd_soc_hdmi_codec dw_hdmi_cec dw_hdmi_i2s_audio zram 8723cs analogix_anx6345 analogix_dp_i2c axp20x_adc axp20x_ac_power axp20x_usb_power axp20x_battery snd_soc_simple_card snd_soc_simple_card_utils snd_soc_spdif_tx sun50i_codec_analog sun8i_adda_pr_regmap cfg80211 lima rfkill sun4i_gpadc_iio gpu_sched industrialio sun8i_codec sun4i_i2s pwm_sun4i snd_soc_simple_amplifier pwm_bl snd_soc_core snd_pcm_dmaengine snd_pcm snd_timer cpufreq_dt snd soundcore pinctrl_axp209 i2c_mv64xxx [ 85.456640] CPU: 0 PID: 1768 Comm: Xorg Tainted: G W 5.3.9-sunxi64 #19.11.3 [ 85.456643] Hardware name: Pinebook (DT) [ 85.456648] pstate: 40000005 (nZcv daif -PAN -UAO) [ 85.456655] pc : anx6345_get_modes+0x1c8/0x1d8 [analogix_anx6345] [ 85.456660] lr : anx6345_get_modes+0x1c8/0x1d8 [analogix_anx6345] [ 85.456663] sp : ffff000012ad3a40 [ 85.456665] x29: ffff000012ad3a40 x28: 0000000000000001 [ 85.456670] x27: 0000000000002000 x26: ffff000008c42178 [ 85.456675] x25: 00000000fffffffd x24: ffff000010ca43e0 [ 85.456680] x23: ffff000010ef6000 x22: ffff000010e886c8 [ 85.456684] x21: ffff800074b48080 x20: ffff800074b485d0 [ 85.456689] x19: ffff000010e886c8 x18: 00000000fffffff0 [ 85.456694] x17: 0000000000000000 x16: 0000000000000000 [ 85.456699] x15: ffff000010ea2aa8 x14: ffff000010f3f10a [ 85.456703] x13: 0000000000006c54 x12: ffff000010f3e000 [ 85.456708] x11: ffff000010ea2000 x10: ffff000010f3e750 [ 85.456713] x9 : 0000000000000000 x8 : 0000000000000004 [ 85.456717] x7 : 00000000000002c3 x6 : 0000000000000001 [ 85.456723] x5 : 0000000000000000 x4 : 0000000000000000 [ 85.456727] x3 : 0000000000000000 x2 : 28413e20c265e700 [ 85.456731] x1 : 0000000000000000 x0 : 0000000000000024 [ 85.456736] Call trace: [ 85.456743] anx6345_get_modes+0x1c8/0x1d8 [analogix_anx6345] [ 85.456760] drm_helper_probe_single_connector_modes+0x190/0x670 [ 85.456769] drm_mode_getconnector+0x2a8/0x428 [ 85.456779] drm_ioctl_kernel+0xbc/0x108 [ 85.456784] drm_ioctl+0x22c/0x3d0 [ 85.456792] do_vfs_ioctl+0xb8/0x8b0 [ 85.456796] ksys_ioctl+0x78/0xa8 [ 85.456801] __arm64_sys_ioctl+0x1c/0x28 [ 85.456812] el0_svc_common.constprop.0+0x88/0x150 [ 85.456817] el0_svc_handler+0x20/0x80 [ 85.456822] el0_svc+0x8/0xc [ 85.456827] ---[ end trace d810ecbc95ab5c09 ]--- I found a BSD patch that provided a clue: that the early panels had no EDID and that it could be provided manually: https://wiki.netbsd.org/users/youri/pinebook-bugs/ Quote ANX6345 EDID detection fails at boot with sysutils/u-boot-pinebook Patch to use static EDID and LCD parameters for 14" Pinebook: http://www.netbsd.org/~jmcneill/patch-drivers_video_bridge_anx6345.c So, I wrote the EDID struct from the patch to a file and found a forum post that explained how to manually provide it: https://forum.armbian.com/topic/9714-edid-firmware-for-800x480-lcd-loading-failed/ logo=disabled console=both edid=0 disp_mode=800x480 extraargs=drm.edid_firmware=edid/800x480.bin It seems that I need to provide a disp_mode too and disable EDID probing. Even then, only some boots seem to work, others just fail in the same way: a blank grey screen. Behaviour seems inconsistent: only once, the entire u-boot log was displayed on the pinebook screen (I'd love to know how to get u-boot to do this every time) occasionally (maybe about 1/4 of boots) the kernel log will display on the pinebook screen and then lightdm displays. most boots just result in a blank grey screen I have tried with the 19.11.4 nightly too, with the same results. Link to comment Share on other sites More sharing options...
nickbreen Posted December 21, 2019 Author Share Posted December 21, 2019 It seems that 19.11.4 is a little happier. There is still a kernel trace in dmesg: http://ix.io/254J (also attached). Generate the EDID with: https://github.com/nickbreen/pinebook.edid (EDID.java attached) and copied to /lib/firmware/edid/ Configure armbianEnv.txt with: extraargs=drm.edid_firmware=edid/pinebook.edid.bin disp_mode=800x480 edid=0 254J.txt EDID.java Link to comment Share on other sites More sharing options...
nickbreen Posted December 21, 2019 Author Share Posted December 21, 2019 So real questions: Is it possible to setup the manual EDID as an overlay, if so how/where? Where should I send the bug reports for the dmseg traces? Link to comment Share on other sites More sharing options...
nickbreen Posted December 21, 2019 Author Share Posted December 21, 2019 Found the specification of the EDID for the HB140WX1-501 panel used in this model. 14inches-HB140WX1-501( EDP1.2) Preliminary Product specification.pdf Link to comment Share on other sites More sharing options...
nickbreen Posted December 25, 2019 Author Share Posted December 25, 2019 There's also ayufans's DTS which does work with the older kernels for this panel. https://gist.github.com/ayufan/904990b5273851c5a2719511e7f274e9 at least I think this is the one that's used in his projects. Link to comment Share on other sites More sharing options...
nickbreen Posted December 28, 2019 Author Share Posted December 28, 2019 ... and this DTS (also ayufan's): https://github.com/ayufan/build-pine64-image/blob/master/blobs/pine64pinebook.dts ... and this one from BSD: https://github.com/Linux-BSD/linux/blob/eb2138d7bf673dddfd9e5ad6b434623ffd61c751/arch/arm64/boot/dts/allwinner/sun50i-a64-pinebook.dts Link to comment Share on other sites More sharing options...
nickbreen Posted January 1, 2020 Author Share Posted January 1, 2020 Manjaro has yet more DTS patching: https://gitlab.manjaro.org/manjaro-arm/packages/core/linux-aarch64/blob/2415919282f13d69ac3b4c1ee22fc123d8e43105/0002-enable-lcd-on-pinebook.patch Link to comment Share on other sites More sharing options...
nickbreen Posted January 2, 2020 Author Share Posted January 2, 2020 This patch from NetBSD: http://www.netbsd.org/~jmcneill/patch-drivers_video_bridge_anx6345.c applied to Main line U-Boot (at tag v2019.10) works. All U-Boot output appears on the Pinebook's HB140WX1-501 screen. patch-drivers_video_bridge_anx6345.c Link to comment Share on other sites More sharing options...
Igor Posted January 2, 2020 Share Posted January 2, 2020 On 12/21/2019 at 11:21 AM, nickbreen said: I have an early model of the 14" pinebook with the 1366x768 panel, Me too. And one with HD screen. Both works perfectly with this patch. I already merged it in https://github.com/armbian/build/pull/1708 Thanks! Link to comment Share on other sites More sharing options...
nickbreen Posted January 4, 2020 Author Share Posted January 4, 2020 I guess that that same patch (at least the save fix) will also need to apply to drivers/gpu/drm/bridge/analogix/analogix-anx6345.c (which is patched in with armbian/build/patch/kernel/sunxi-current/0130-drm-bridge-Add-Analogix-anx6345-support.patch). Link to comment Share on other sites More sharing options...
nickbreen Posted January 4, 2020 Author Share Posted January 4, 2020 I've been trying to see if a device tree patch or just an overlay (attached) would be sufficient to describe the panel's EDID. With no luck so far, oddly there appears to be no messages at all about the DTS overlay working or not in the build output or dmesg during boot, and the panel object I'd expect to see at /proc/device-tree/base/panel (or anywhere) does not appear. boe-hb140wx1-501.dts Link to comment Share on other sites More sharing options...
nickbreen Posted January 4, 2020 Author Share Posted January 4, 2020 Ah, after having a read of Documentation/devicetree/bindings/display/bridge/anx6345.txt and drivers/gpu/drm/bridge/analogix/analogix-anx6345.c is seems like all I need is an overlay to add the EDID byte array as an "edid" property to the anx6345 node... Link to comment Share on other sites More sharing options...
nickbreen Posted January 4, 2020 Author Share Posted January 4, 2020 So, using an overlay (attached, enabled using armbian-add-overlay) to insert the EDID appears make no different to the error from the anx6345 driver. http://ix.io/26md. Of interest: AUX channel failures status 02 and 06 in analogix_dp_i2c group of four failures in analogix_anx6345 trace from anx6345_get_modes [ 14.466817] [drm:anx_aux_transfer [analogix_dp_i2c]] *ERROR* Failed to wait for AUX channel (status: 02) [ 14.525930] [drm:anx_aux_transfer [analogix_dp_i2c]] *ERROR* Failed to wait for AUX channel (status: 06) [ 14.526350] [drm:anx6345_bridge_enable [analogix_anx6345]] *ERROR* Failed to probe link capabilities: -110 [ 14.526748] [drm:anx6345_bridge_enable [analogix_anx6345]] *ERROR* Failed transmitter initialization: -110 [ 14.527139] [drm:anx6345_bridge_enable [analogix_anx6345]] *ERROR* Failed DisplayPort transmitter initialization: -110 [ 14.602073] [drm:anx6345_bridge_enable [analogix_anx6345]] *ERROR* Failed to initialize: -110 [ 14.747519] Console: switching to colour frame buffer device 128x48 [ 14.898359] sun4i-drm display-engine: fb0: sun4i-drmdrmfb frame buffer device [ 15.021177] asoc-simple-card soc:sound_hdmi: i2s-hifi <-> 1c22800.i2s mapping ok [ 15.155387] EXT4-fs (zram0): mounted filesystem without journal. Opts: discard [ 15.155430] ext4 filesystem being mounted at /var/log supports timestamps until 2038 (0x7fffffff) [ 18.917116] ------------[ cut here ]------------ [ 18.917151] WARNING: CPU: 1 PID: 289 at drivers/gpu/drm/bridge/analogix/analogix-anx6345.c:531 anx6345_get_modes+0x108/0x1c8 [analogix_anx6345] [ 18.917154] Modules linked in: zstd snd_soc_hdmi_codec dw_hdmi_i2s_audio dw_hdmi_cec 8723cs analogix_anx6345 snd_soc_spdif_tx zram analogix_dp_i2c snd_soc_simple_card axp20x_battery axp20x_usb_power axp20x_ac_power axp20x_adc snd_soc_simple_card_utils hci_uart btqca sun50i_codec_analog btrtl sun8i_adda_pr_regmap btbcm cfg80211 lima btintel bluetooth gpu_sched rfkill sun4i_gpadc_iio industrialio sun8i_codec sun4i_i2s pwm_sun4i snd_soc_simple_amplifier snd_soc_core snd_pcm_dmaengine snd_pcm snd_timer pwm_bl snd soundcore cpufreq_dt pinctrl_axp209 i2c_mv64xxx [ 18.917232] CPU: 1 PID: 289 Comm: kworker/1:3 Tainted: G W 5.4.7-sunxi64 #19.11.6 [ 18.917234] Hardware name: Pinebook (DT) [ 18.917253] Workqueue: events output_poll_execute [ 18.917260] pstate: 80000005 (Nzcv daif -PAN -UAO) [ 18.917266] pc : anx6345_get_modes+0x108/0x1c8 [analogix_anx6345] [ 18.917272] lr : drm_helper_probe_single_connector_modes+0x174/0x670 [ 18.917274] sp : ffff800011c4ba00 [ 18.917276] x29: ffff800011c4ba00 x28: 0000000000000001 [ 18.917281] x27: ffff800010d2b468 x26: 0000000000000400 [ 18.917285] x25: ffff800008cfa178 x24: ffff000072493998 [ 18.917289] x23: ffff800010ec88c8 x22: ffff800010f36000 [ 18.917293] x21: ffff00007251f080 x20: ffff00007251f5d8 [ 18.917298] x19: ffff800010ec88c8 x18: 0000000000000000 [ 18.917301] x17: 0000000000000000 x16: 0000000000000000 [ 18.917305] x15: ffffffffffffffff x14: 4550595456454400 [ 18.917310] x13: 31647261632f6972 x12: 0000000000000001 [ 18.917314] x11: 0000000000000000 x10: 0000000000000400 [ 18.917318] x9 : 0000000000000000 x8 : ffff800010fab000 [ 18.917321] x7 : 0000000000000000 x6 : 000000000000003f [ 18.917325] x5 : ffff000072a15cc0 x4 : ffff000072a15cc0 [ 18.917329] x3 : 0000000000000000 x2 : ffff800008cf9000 [ 18.917333] x1 : 0000000000000000 x0 : ffff00007251f5d8 [ 18.917338] Call trace: [ 18.917345] anx6345_get_modes+0x108/0x1c8 [analogix_anx6345] [ 18.917349] drm_helper_probe_single_connector_modes+0x174/0x670 [ 18.917356] drm_client_modeset_probe+0x238/0xe90 [ 18.917364] drm_fb_helper_hotplug_event.part.23+0x84/0xc8 [ 18.917369] drm_fbdev_client_hotplug+0x38/0x188 [ 18.917374] drm_client_dev_hotplug+0x70/0xb8 [ 18.917377] drm_kms_helper_hotplug_event+0x30/0x40 [ 18.917381] output_poll_execute+0x198/0x1e0 [ 18.917393] process_one_work+0x1ec/0x370 [ 18.917398] worker_thread+0x4c/0x4f8 [ 18.917405] kthread+0x120/0x128 [ 18.917412] ret_from_fork+0x10/0x18 [ 18.917415] ---[ end trace fe0494b18b0506f7 ]--- boe-hb140wx1-501.dts Link to comment Share on other sites More sharing options...
nickbreen Posted January 4, 2020 Author Share Posted January 4, 2020 Correction, using the attached overlay did not work. [ 9.630294] [drm:anx6345_get_modes [analogix_anx6345]] *ERROR* Failed to read EDID from panel [ 9.630315] [drm:anx6345_get_modes [analogix_anx6345]] *ERROR* Failed to probe EDID from device tree However the EDID does appear in /proc/device-tree/... as expected: # hd /proc/device-tree/soc/i2c@1f02400/anx6345@38/edid 00000000 00 ff ff ff ff ff ff 00 09 e5 37 00 00 00 00 00 |..........7.....| 00000010 01 16 01 04 80 1f 11 78 0a b0 90 97 58 54 92 26 |.......x....XT.&| 00000020 1d 50 54 00 00 00 01 01 01 01 01 01 01 01 01 01 |.PT.............| 00000030 01 01 01 01 01 01 3e 1c 56 a0 50 00 16 30 30 20 |......>.V.P..00 | 00000040 36 00 35 ad 10 00 00 1a 3e 1c 56 a0 50 00 16 30 |6.5.....>.V.P..0| 00000050 30 20 36 00 35 ad 10 00 00 1a 00 00 00 fe 00 42 |0 6.5..........B| 00000060 4f 45 20 48 46 0a 20 20 20 20 20 20 00 00 00 fe |OE HF. ....| 00000070 00 48 42 31 34 30 57 58 31 2d 35 30 31 0a 00 81 |.HB140WX1-501...| Link to comment Share on other sites More sharing options...
nickbreen Posted January 4, 2020 Author Share Posted January 4, 2020 Oddly, these errors: [ 9.368987] [drm:anx6345_get_modes [analogix_anx6345]] *ERROR* Get sink count failed -110 [ 9.368993] [drm:anx6345_get_modes [analogix_anx6345]] *ERROR* Failed to get downstream info: -110 [ 9.630294] [drm:anx6345_get_modes [analogix_anx6345]] *ERROR* Failed to read EDID from panel [ 9.630315] [drm:anx6345_get_modes [analogix_anx6345]] *ERROR* Failed to probe EDID from device tree Do not quite seem to match what I'd expect from: static int anx6345_get_modes(struct drm_connector *connector) { struct anx6345 *anx6345 = connector_to_anx6345(connector); int err, num_modes = 0; if (WARN_ON(!anx6345->powered)) return 0; if (anx6345->edid) return drm_add_edid_modes(connector, anx6345->edid); mutex_lock(&anx6345->lock); err = anx6345_get_downstream_info(anx6345); if (err) { DRM_ERROR("Failed to get downstream info: %d\n", err); goto unlock; } anx6345->edid = drm_get_edid(connector, &anx6345->aux.ddc); if (!anx6345->edid) DRM_ERROR("Failed to read EDID from panel\n"); if (!anx6345->edid) { err = anx6345_probe_edid_from_of(anx6345); if (err) { DRM_ERROR("Failed to probe EDID from device tree\n"); goto unlock; } } err = drm_connector_update_edid_property(connector, anx6345->edid); if (err) { DRM_ERROR("Failed to update EDID property: %d\n", err); goto unlock; } num_modes = drm_add_edid_modes(connector, anx6345->edid); unlock: mutex_unlock(&anx6345->lock); return num_modes; } So, at some point, anx6345_get_downstream_info fails due to drm_dp_dpcd_readb(&anx6345->aux, DP_SINK_COUNT, &value) returning -110 (ETIMEDOUT?); the DPCP stuff depends on AUX stuff, which probably fails as per these logged errors: [ 14.466817] [drm:anx_aux_transfer [analogix_dp_i2c]] *ERROR* Failed to wait for AUX channel (status: 02) [ 14.525930] [drm:anx_aux_transfer [analogix_dp_i2c]] *ERROR* Failed to wait for AUX channel (status: 06) I guess that status 2 is ENOENT and 6 is ENXIO which would make sense if there is missing stuff in the device tree for the anx6345. Though, it eventually succeeds and allows anx6345_get_modes to continue to the EDID bit, promptly logging the failure to get EDID from the panel (as expected for the HB140WX1-501) and then fail to get it from the device tree. Link to comment Share on other sites More sharing options...
nickbreen Posted January 5, 2020 Author Share Posted January 5, 2020 Patch to log the errno when EDID fails to be read from device tree (patch/kernel/sunxi-current/board-pinebook-a64): anx6345-log-errno-on-edid-device-tree-read-err.patch Link to comment Share on other sites More sharing options...
nickbreen Posted January 5, 2020 Author Share Posted January 5, 2020 latest armbian monitor log. Of interest: trace: 146 [ 8.544887] WARNING: CPU: 0 PID: 5 at drivers/clocksource/arm_arch_timer.c:360 sun50i_a64_read_cntpct_el0+0x24/0x30 what ever this is might not be helping, same for vcc-pf, vcc-pd, vcc-pg 144 [ 8.537344] sun50i-a64-pinctrl 1c20800.pinctrl: 1c20800.pinctrl supply vcc-pd not found, using dummy regulator the usual: 251 [ 9.301868] [drm:anx_aux_transfer [analogix_dp_i2c]] *ERROR* Failed to wait for AUX channel (status: 06) 252 [ 9.339947] [drm:anx_aux_transfer [analogix_dp_i2c]] *ERROR* Failed to wait for AUX channel (status: 02) the expected failure to load EDID from panel, but not followed by the failure to load EDID from device tree! So it is loading the EDID! there's a switch to sun4i-drm-fb which might correlate with the screen reset to a different text-mode and then goes all-grey. 932 [ 8.937293] [drm] Found ANX6345 (ver. 170) eDP Transmitter 933 [ 8.937692] asoc-simple-card sound: sun8i <-> 1c22c00.dai mapping ok 938 [ 8.974740] sun4i-drm display-engine: bound 1100000.mixer (ops 0xffff800010bde728) 939 [ 8.976301] sun4i-drm display-engine: bound 1200000.mixer (ops 0xffff800010bde728) 940 [ 8.977712] sun4i-drm display-engine: bound 1c0c000.lcd-controller (ops 0xffff800010bdac28) 941 [ 8.978086] sun4i-drm display-engine: bound 1c0d000.lcd-controller (ops 0xffff800010bdac28) 942 [ 8.986040] sun8i-dw-hdmi 1ee0000.hdmi: Detected HDMI TX controller v1.32a with HDCP (sun8i_dw_hdmi_phy) 943 [ 8.990956] sun8i-dw-hdmi 1ee0000.hdmi: registered DesignWare HDMI I2C bus driver 944 [ 8.991437] sun4i-drm display-engine: bound 1ee0000.hdmi (ops 0xffff800010bddad0) 945 [ 8.991448] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013). 946 [ 8.991451] [drm] No driver support for vblank timestamp query. 947 [ 8.991457] checking generic (be000000 400800) vs hw (0 ffffffffffffffff) 948 [ 8.991461] fb0: switching to sun4i-drm-fb from simple 949 [ 8.996681] Console: switching to colour dummy device 80x25 950 [ 8.997895] [drm] Initialized sun4i-drm 1.0.0 20150629 for display-engine on minor 1 987 [ 9.391844] [drm:anx6345_get_modes [analogix_anx6345]] *ERROR* Get sink count failed -110 988 [ 9.391855] [drm:anx6345_get_modes [analogix_anx6345]] *ERROR* Failed to get downstream info: -110 1035 [ 11.676615] [drm:anx6345_bridge_enable [analogix_anx6345]] *ERROR* Failed transmitter initialization: -110 1036 [ 11.680519] [drm:anx6345_bridge_enable [analogix_anx6345]] *ERROR* Failed DisplayPort transmitter initialization: -110 1037 [ 11.737075] [drm:anx6345_bridge_enable [analogix_anx6345]] *ERROR* Failed to initialize: -110 1039 [ 11.948943] Console: switching to colour frame buffer device 128x48 1041 [ 12.045146] sun4i-drm display-engine: fb0: sun4i-drmdrmfb frame buffer device armbianmonitor.txt Link to comment Share on other sites More sharing options...
nickbreen Posted January 6, 2020 Author Share Posted January 6, 2020 Found in drivers/gpu/drm/drm_dp_helper.c: /** * DOC: dp helpers * * These functions contain some common logic and helpers at various abstraction * levels to deal with Display Port sink devices and related things like DP aux * channel transfers, EDID reading over DP aux channels, decoding certain DPCD * blocks, ... */ /** * DOC: dp helpers * * The DisplayPort AUX channel is an abstraction to allow generic, driver- * independent access to AUX functionality. Drivers can take advantage of * this by filling in the fields of the drm_dp_aux structure. * * Transactions are described using a hardware-independent drm_dp_aux_msg * structure, which is passed into a driver's .transfer() implementation. * Both native and I2C-over-AUX transactions are supported. */ // ... and removed in some patch... /* * An AUX channel can also be used to transport I2C messages to a sink. A * typical application of that is to access an EDID that's present in the * sink device. The .transfer() function can also be used to execute such * transactions. The drm_dp_aux_register_i2c_bus() function registers an * I2C adapter that can be passed to drm_probe_ddc(). Upon removal, drivers * should call drm_dp_aux_unregister_i2c_bus() to remove the I2C adapter. */ Link to comment Share on other sites More sharing options...
nickbreen Posted January 10, 2020 Author Share Posted January 10, 2020 Tried with KERNEL=dev (5.5.0-rc2) seems that the mainline anx6345 works differently enough that it handles the missing EDID gracefully. Notes: there appears to be no explicit anx6345 driver that I can find. The patch to add anx6345 for sunxi-dev is disabled. There is a drivers/gpu/bridge/analogix driver which I assume is the one. Link to comment Share on other sites More sharing options...
martinayotte Posted January 11, 2020 Share Posted January 11, 2020 15 hours ago, nickbreen said: The patch to add anx6345 for sunxi-dev is disabled. This patch has been disabled in 5.5.y because it didn't compile at all. Feel free to correct it and submit PR ... Link to comment Share on other sites More sharing options...
nickbreen Posted January 12, 2020 Author Share Posted January 12, 2020 12 hours ago, martinayotte said: This patch has been disabled in 5.5.y because it didn't compile at all. Feel free to correct it and submit PR ... It doesn't appear to be necessary. 5.5.y appears to work perfectly (display-wise)! Link to comment Share on other sites More sharing options...
martinayotte Posted January 12, 2020 Share Posted January 12, 2020 9 hours ago, nickbreen said: It doesn't appear to be necessary. 5.5.y appears to work perfectly (display-wise)! Good ! Then, we will remove/delete the patch completely ... Link to comment Share on other sites More sharing options...
Recommended Posts