INTF blocks are not really handled by resource manager, they are assigned at dpu_encoder_setup_display using dpu_encoder_get_intf(). Then this allocation is passed to RM and then returned to then dpu_encoder. So allocate them outside of RM and use them directly. While we are at it, drop the lm_max_width from the RM and simplify VBIF handling (move creation/destruction to the RM too). Once this and SSPP handling patches are merged, the RM would handle lifetime of all dpu_hw_* objects. Changes since v4: - Changes IS_ERR_OR_NULL() to IS_ERR() in dpu_rm_init() - Removed if(!null) conditions when calling dpu_hw_intf_destroy() and dpu_hw_vbif_destroy() Changes since v3: - Add missing DSPP blocks teardown - Remove dpu_hw_blk from dpu_hw_intf - move dpu_hw_vbif creation/destruction to the RM Changes since v2: - Dropped DSPP, PP and MERGE_3D patches for now. Changes since v1: - Split into separate patch series to ease review. Dmitry Baryshkov (6): drm/msm/dpu: drop unused lm_max_width from RM drm/msm/dpu: add DSPP blocks teardown drm/msm/dpu: get INTF blocks directly rather than through RM drm/msm/dpu: stop embedding dpu_hw_blk into dpu_hw_intf drm/msm/dpu: fix error handling in dpu_rm_init drm/msm/dpu: move VBIF blocks handling to dpu_rm drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 36 +---- drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.h | 16 --- .../gpu/drm/msm/disp/dpu1/dpu_encoder_phys.h | 5 - .../drm/msm/disp/dpu1/dpu_encoder_phys_cmd.c | 8 -- .../drm/msm/disp/dpu1/dpu_encoder_phys_vid.c | 8 -- drivers/gpu/drm/msm/disp/dpu1/dpu_hw_intf.h | 11 -- drivers/gpu/drm/msm/disp/dpu1/dpu_hw_vbif.h | 1 + drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 28 +--- drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h | 2 - drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c | 126 +++++------------- drivers/gpu/drm/msm/disp/dpu1/dpu_rm.h | 31 ++++- drivers/gpu/drm/msm/disp/dpu1/dpu_vbif.c | 26 +--- 12 files changed, 73 insertions(+), 225 deletions(-) -- 2.34.1