drm/rockchip: vop2: At rk3588 splice mode we need use vp0 to set config done
If less this commit, it will trigger null point at the following case: 1. VP0 -> HDMI0 & HDMI1 for dual 8K splice output; 2. Play HDR video, the port_mux_cfg is update and enter additional config done; 3. The crtc for VP1 isn't registered, so the crtc state is null; The error logs: [ 21.985727][ T399] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000165 [ 21.986201][ T238] ueventd: restorecon_recursive: /sys/devices/platform/fde80000.hdmi/extcon/extcon11 [ 21.986563][ T399] Mem abort info: [ 21.986565][ T399] ESR = 0x0000000096000005 [ 21.986568][ T399] EC = 0x25: DABT (current EL), IL = 32 bits [ 21.988612][ T399] SET = 0, FnV = 0 [ 21.988943][ T399] EA = 0, S1PTW = 0 [ 21.989284][ T399] FSC = 0x05: level 1 translation fault [ 21.989776][ T399] Data abort info: [ 21.990095][ T399] ISV = 0, ISS = 0x000000 ... [ 22.003577][ T399] Call trace: [ 22.003864][ T399] vop2_cfg_done+0x11c/0x184 [ 22.004262][ T399] vop2_setup_port_mux+0xdc/0x1b8 [ 22.004693][ T399] vop2_crtc_atomic_begin+0x2a50/0x2c90 [ 22.005177][ T399] drm_atomic_helper_commit_planes+0x40/0x1e0 [ 22.005706][ T399] rockchip_drm_atomic_helper_commit_tail_rpm+0x1b4/0x26c [ 22.006320][ T399] commit_tail+0xa4/0x154 [ 22.006696][ T399] drm_atomic_helper_commit+0x1c4/0x1e4 [ 22.007178][ T399] drm_atomic_commit+0xa4/0xd0 [ 22.007589][ T399] drm_mode_atomic_ioctl+0x5e4/0x754 [ 22.008051][ T399] drm_ioctl_kernel+0x80/0xf8 [ 22.008461][ T399] drm_ioctl+0x2d4/0x554 Signed-off-by: Sandy Huang <hjc@rock-chips.com> Change-Id: I9076a866fe82c8f8972b94d09fbb5c7e1eb8e61a
This commit is contained in:
@@ -10668,7 +10668,7 @@ static void vop2_crtc_atomic_begin(struct drm_crtc *crtc, struct drm_atomic_stat
|
||||
sort(vop2_zpos_splice, splice_nr_layers, sizeof(vop2_zpos_splice[0]),
|
||||
vop2_zpos_cmp, NULL);
|
||||
|
||||
vop2_setup_port_mux(splice_vp);
|
||||
vop2_setup_port_mux(vp);
|
||||
if (!vp->hdr10_at_splice_mode)
|
||||
vop2_setup_layer_mixer_for_vp(splice_vp, vop2_zpos_splice);
|
||||
vop2_setup_hdr10(splice_vp, vop2_zpos_splice[0].win_phys_id);
|
||||
|
||||
Reference in New Issue
Block a user