1. 04 Oct, 2018 5 commits
    • Sravanthi Kollukuduru's avatar
      drm/msm/dpu: enable cursor plane on dpu · 07ca1fc0
      Sravanthi Kollukuduru authored
      Reserve DMA pipe for cursor plane and attach it to the
      crtc during the initialization.
      
      Changes in V2:
      	None
      Signed-off-by: default avatarSravanthi Kollukuduru <skolluku@codeaurora.org>
      Signed-off-by: default avatarSean Paul <seanpaul@chromium.org>
      Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
      07ca1fc0
    • Stephen Boyd's avatar
      drm/msm/disp/dpu: Use proper define for drm_encoder_init() 'encoder_type' · 2c043eef
      Stephen Boyd authored
      We got a bug report that this function oopses when trying to do a kasprintf().
      
      PC is at string+0x2c/0x60
      LR is at vsnprintf+0x28c/0x4ec
      pc : [<ffffff80088d35d8>] lr : [<ffffff80088d5fc4>] pstate: a0c00049
      sp : ffffff80095fb540
      x29: ffffff80095fb540 x28: ffffff8008ad42bc
      x27: 00000000ffffffd8 x26: 0000000000000000
      x25: ffffff8008c216c8 x24: 0000000000000000
      x23: 0000000000000000 x22: ffffff80095fb720
      x21: 0000000000000000 x20: ffffff80095fb720
      x19: ffffff80095fb6f0 x18: 000000000000000a
      x17: 00000000b42ba473 x16: ffffff800805bbe8
      x15: 00000000000a157d x14: 000000000000000c
      x13: 0000000000000000 x12: 0000ffff0000000f
      x11: 0000000000000003 x10: 0000000000000001
      x9 : 0000000000000040 x8 : 000000000000001c
      x7 : ffffffffffffffff x6 : 0000000000000000
      x5 : 0000000000000228 x4 : 0000000000000000
      x3 : ffff0a00ffffff04 x2 : 0000000000007961
      x1 : 0000000000000000 x0 : 0000000000000000
      Process kworker/3:1 (pid: 61, stack limit = 0xffffff80095f8000)
      Call trace:
      Exception stack(0xffffff80095fb400 to 0xffffff80095fb540)
      b400: 0000000000000000 0000000000000000 0000000000007961 ffff0a00ffffff04
      b420: 0000000000000000 0000000000000228 0000000000000000 ffffffffffffffff
      b440: 000000000000001c 0000000000000040 0000000000000001 0000000000000003
      b460: 0000ffff0000000f 0000000000000000 000000000000000c 00000000000a157d
      b480: ffffff800805bbe8 00000000b42ba473 000000000000000a ffffff80095fb6f0
      b4a0: ffffff80095fb720 0000000000000000 ffffff80095fb720 0000000000000000
      b4c0: 0000000000000000 ffffff8008c216c8 0000000000000000 00000000ffffffd8
      b4e0: ffffff8008ad42bc ffffff80095fb540 ffffff80088d5fc4 ffffff80095fb540
      b500: ffffff80088d35d8 00000000a0c00049 ffffff80095fb550 ffffff80080d06a4
      b520: ffffffffffffffff ffffff80088d5e0c ffffff80095fb540 ffffff80088d35d8
      [<ffffff80088d35d8>] string+0x2c/0x60
      [<ffffff80088d5fc4>] vsnprintf+0x28c/0x4ec
      [<ffffff80083973b8>] kvasprintf+0x68/0x100
      [<ffffff800839755c>] kasprintf+0x60/0x80
      [<ffffff800849cc24>] drm_encoder_init+0x134/0x164
      [<ffffff80084d9a7c>] dpu_encoder_init+0x60/0x94
      [<ffffff80084eced0>] _dpu_kms_drm_obj_init+0xa0/0x424
      [<ffffff80084ed870>] dpu_kms_hw_init+0x61c/0x6bc
      [<ffffff80084f7614>] msm_drm_bind+0x380/0x67c
      [<ffffff80085114e4>] try_to_bring_up_master+0x228/0x264
      [<ffffff80085116e8>] component_master_add_with_match+0x90/0xc0
      [<ffffff80084f722c>] msm_pdev_probe+0x260/0x2c8
      [<ffffff800851a910>] platform_drv_probe+0x58/0xa8
      [<ffffff80085185c8>] driver_probe_device+0x2d8/0x40c
      [<ffffff8008518928>] __device_attach_driver+0xd4/0x10c
      [<ffffff800851644c>] bus_for_each_drv+0xb4/0xd0
      [<ffffff8008518230>] __device_attach+0xd0/0x160
      [<ffffff8008518984>] device_initial_probe+0x24/0x30
      [<ffffff800851744c>] bus_probe_device+0x38/0x98
      [<ffffff8008517aac>] deferred_probe_work_func+0x144/0x148
      [<ffffff80080c8654>] process_one_work+0x218/0x3bc
      [<ffffff80080c883c>] process_scheduled_works+0x44/0x48
      [<ffffff80080c95bc>] worker_thread+0x288/0x32c
      [<ffffff80080cea30>] kthread+0x134/0x13c
      [<ffffff8008084750>] ret_from_fork+0x10/0x18
      Code: 910003fd 2a0403e6 eb0400ff 54000060 (38646845)
      
      Looking at the code I see that drm_encoder_init() is called from the DPU
      code with 'DRM_MODE_CONNECTOR_DSI' passed in as the 'encoder_type'
      argument (follow from _dpu_kms_initialize_dsi()). That corresponds to
      the integer 16. That is then indexed into drm_encoder_enum_list in
      drm_encoder_init() to look up the name of the encoder. If you're still
      following along, that's an encoder not a connector! We really want to
      use DRM_MODE_ENCODER_DSI (integer 6) instead of DRM_MODE_CONNECTOR_DSI
      here, or we'll go out of bounds of the encoder array. Pass the right
      thing and everything is fine.
      
      Cc: Jeykumar Sankaran <jsanka@codeaurora.org>
      Cc: Jordan Crouse <jcrouse@codeaurora.org>
      Cc: Sean Paul <seanpaul@chromium.org>
      Fixes: 25fdd593 (drm/msm: Add SDM845 DPU support)
      Tested-by: default avatarSai Prakash Ranjan <saiprakash.ranjan@codeaurora.org>
      Reviewed-by: default avatarJeykumar Sankaran <jsanka@codeaurora.org>
      Signed-off-by: default avatarStephen Boyd <swboyd@chromium.org>
      Signed-off-by: default avatarSean Paul <seanpaul@chromium.org>
      Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
      2c043eef
    • Sean Paul's avatar
      drm/msm: Don't fail bind if nothing connected to dsi · 9888495a
      Sean Paul authored
      If there is no bridge or panel connected to a dsi node, don't fail the
      entire msm bind. Just ignore the dsi block and move on.
      
      Cc: Doug Anderson <dianders@chromium.org>
      Reviewed-by: default avatarAbhinav Kumar <abhinavk@codeaurora.org>
      Signed-off-by: default avatarSean Paul <seanpaul@chromium.org>
      Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
      9888495a
    • Sean Paul's avatar
      drm/msm: dsi: Return errors whan dt parsing fails · feb085ec
      Sean Paul authored
      If dt parsing fails, we should return an error instead of pretending
      everything completed successfully.
      
      Cc: Doug Anderson <dianders@chromium.org>
      Reviewed-by: default avatarAbhinav Kumar <abhinavk@codeaurora.org>
      Signed-off-by: default avatarSean Paul <seanpaul@chromium.org>
      Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
      feb085ec
    • Sean Paul's avatar
      drm/msm: dsi: Initialize msm_dsi->id to -1 · aea24171
      Sean Paul authored
      Currently msm_dsi->id is initialized to 0 during kzalloc. If bind fails
      for a secondary dsi device before its id can be properly set (such as
      during dt parsing), the id will point to the primary dsi device, causing
      its reference to be removed from dsi_manager's global (msm_dsim_glb)
      array.
      
      This patch initializes the id to -1 and checks for negative in the
      manager cleanup.
      
      Cc: Doug Anderson <dianders@chromium.org>
      Reviewed-by: default avatarAbhinav Kumar <abhinavk@codeaurora.org>
      Signed-off-by: default avatarSean Paul <seanpaul@chromium.org>
      Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
      aea24171
  2. 27 Sep, 2018 35 commits