Jump to content

DRM errors during boot, EDID failure, screen does not always work


nickbreen

Recommended Posts

Armbianmonitor:

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

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

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

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

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

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

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

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

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

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

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

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

Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

Terms of Use - Privacy Policy - Guidelines