1. 13 Sep, 2023 4 commits
  2. 11 Sep, 2023 10 commits
  3. 10 Sep, 2023 2 commits
  4. 09 Sep, 2023 7 commits
  5. 08 Sep, 2023 4 commits
  6. 07 Sep, 2023 5 commits
  7. 06 Sep, 2023 4 commits
  8. 05 Sep, 2023 4 commits
    • Tomi Valkeinen's avatar
      drm/bridge: lt8912b: Add missing drm_bridge_attach call · f45acf7a
      Tomi Valkeinen authored
      The driver does not call drm_bridge_attach(), which causes the next
      bridge to not be added to the bridge chain. This causes the pipeline
      init to fail when DRM_BRIDGE_ATTACH_NO_CONNECTOR is used.
      
      Add the call to drm_bridge_attach().
      
      Fixes: 30e2ae94 ("drm/bridge: Introduce LT8912B DSI to HDMI bridge")
      Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ideasonboard.com>
      Reviewed-by: default avatarRobert Foss <rfoss@kernel.org>
      Signed-off-by: default avatarRobert Foss <rfoss@kernel.org>
      Link: https://patchwork.freedesktop.org/patch/msgid/20230804-lt8912b-v1-4-c542692c6a2f@ideasonboard.com
      f45acf7a
    • Tomi Valkeinen's avatar
      drm/bridge: lt8912b: Manually disable HPD only if it was enabled · 6985c5ef
      Tomi Valkeinen authored
      lt8912b only calls drm_bridge_hpd_enable() if it creates a connector and
      the next bridge has DRM_BRIDGE_OP_HPD set. However, when calling
      drm_bridge_hpd_disable() it misses checking if a connector was created,
      calling drm_bridge_hpd_disable() even if HPD was never enabled. I don't
      see any issues caused by this wrong call, though.
      
      Add the check to avoid wrongly calling drm_bridge_hpd_disable().
      
      Fixes: 3b0a01a6 ("drm/bridge: lt8912b: Add hot plug detection")
      Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ideasonboard.com>
      Tested-by: default avatarMarcel Ziswiler <marcel.ziswiler@toradex.com>
      Reviewed-by: default avatarRobert Foss <rfoss@kernel.org>
      Signed-off-by: default avatarRobert Foss <rfoss@kernel.org>
      Link: https://patchwork.freedesktop.org/patch/msgid/20230804-lt8912b-v1-3-c542692c6a2f@ideasonboard.com
      6985c5ef
    • Tomi Valkeinen's avatar
      drm/bridge: lt8912b: Fix crash on bridge detach · 44283993
      Tomi Valkeinen authored
      The lt8912b driver, in its bridge detach function, calls
      drm_connector_unregister() and drm_connector_cleanup().
      
      drm_connector_unregister() should be called only for connectors
      explicitly registered with drm_connector_register(), which is not the
      case in lt8912b.
      
      The driver's drm_connector_funcs.destroy hook is set to
      drm_connector_cleanup().
      
      Thus the driver should not call either drm_connector_unregister() nor
      drm_connector_cleanup() in its lt8912_bridge_detach(), as they cause a
      crash on bridge detach:
      
      Unable to handle kernel NULL pointer dereference at virtual address 0000000000000000
      Mem abort info:
        ESR = 0x0000000096000006
        EC = 0x25: DABT (current EL), IL = 32 bits
        SET = 0, FnV = 0
        EA = 0, S1PTW = 0
        FSC = 0x06: level 2 translation fault
      Data abort info:
        ISV = 0, ISS = 0x00000006, ISS2 = 0x00000000
        CM = 0, WnR = 0, TnD = 0, TagAccess = 0
        GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0
      user pgtable: 4k pages, 48-bit VAs, pgdp=00000000858f3000
      [0000000000000000] pgd=0800000085918003, p4d=0800000085918003, pud=0800000085431003, pmd=0000000000000000
      Internal error: Oops: 0000000096000006 [#1] PREEMPT SMP
      Modules linked in: tidss(-) display_connector lontium_lt8912b tc358768 panel_lvds panel_simple drm_dma_helper drm_kms_helper drm drm_panel_orientation_quirks
      CPU: 3 PID: 462 Comm: rmmod Tainted: G        W          6.5.0-rc2+ #2
      Hardware name: Toradex Verdin AM62 on Verdin Development Board (DT)
      pstate: 80000005 (Nzcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
      pc : drm_connector_cleanup+0x78/0x2d4 [drm]
      lr : lt8912_bridge_detach+0x54/0x6c [lontium_lt8912b]
      sp : ffff800082ed3a90
      x29: ffff800082ed3a90 x28: ffff0000040c1940 x27: 0000000000000000
      x26: 0000000000000000 x25: dead000000000122 x24: dead000000000122
      x23: dead000000000100 x22: ffff000003fb6388 x21: 0000000000000000
      x20: 0000000000000000 x19: ffff000003fb6260 x18: fffffffffffe56e8
      x17: 0000000000000000 x16: 0010000000000000 x15: 0000000000000038
      x14: 0000000000000000 x13: ffff800081914b48 x12: 000000000000040e
      x11: 000000000000015a x10: ffff80008196ebb8 x9 : ffff800081914b48
      x8 : 00000000ffffefff x7 : ffff0000040c1940 x6 : ffff80007aa649d0
      x5 : 0000000000000000 x4 : 0000000000000001 x3 : ffff80008159e008
      x2 : 0000000000000000 x1 : 0000000000000000 x0 : 0000000000000000
      Call trace:
       drm_connector_cleanup+0x78/0x2d4 [drm]
       lt8912_bridge_detach+0x54/0x6c [lontium_lt8912b]
       drm_bridge_detach+0x44/0x84 [drm]
       drm_encoder_cleanup+0x40/0xb8 [drm]
       drmm_encoder_alloc_release+0x1c/0x30 [drm]
       drm_managed_release+0xac/0x148 [drm]
       drm_dev_put.part.0+0x88/0xb8 [drm]
       devm_drm_dev_init_release+0x14/0x24 [drm]
       devm_action_release+0x14/0x20
       release_nodes+0x5c/0x90
       devres_release_all+0x8c/0xe0
       device_unbind_cleanup+0x18/0x68
       device_release_driver_internal+0x208/0x23c
       driver_detach+0x4c/0x94
       bus_remove_driver+0x70/0xf4
       driver_unregister+0x30/0x60
       platform_driver_unregister+0x14/0x20
       tidss_platform_driver_exit+0x18/0xb2c [tidss]
       __arm64_sys_delete_module+0x1a0/0x2b4
       invoke_syscall+0x48/0x110
       el0_svc_common.constprop.0+0x60/0x10c
       do_el0_svc_compat+0x1c/0x40
       el0_svc_compat+0x40/0xac
       el0t_32_sync_handler+0xb0/0x138
       el0t_32_sync+0x194/0x198
      Code: 9104a276 f2fbd5b7 aa0203e1 91008af8 (f85c0420)
      
      Fixes: 30e2ae94 ("drm/bridge: Introduce LT8912B DSI to HDMI bridge")
      Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ideasonboard.com>
      Reviewed-by: default avatarRobert Foss <rfoss@kernel.org>
      Signed-off-by: default avatarRobert Foss <rfoss@kernel.org>
      Link: https://patchwork.freedesktop.org/patch/msgid/20230804-lt8912b-v1-2-c542692c6a2f@ideasonboard.com
      44283993
    • Tomi Valkeinen's avatar
      drm/bridge: lt8912b: Fix bridge_detach · 941882a0
      Tomi Valkeinen authored
      The driver calls lt8912_bridge_detach() from its lt8912_remove()
      function. As the DRM core detaches bridges automatically, this leads to
      calling lt8912_bridge_detach() twice. The code probably has tried to
      manage the double-call with the 'is_attached' variable, but the driver
      never sets the variable to false, so its of no help.
      
      Fix the issue by dropping the call to lt8912_bridge_detach() from
      lt8912_remove(), as the DRM core will handle the detach call for us,
      and also drop the useless is_attached field.
      
      Fixes: 30e2ae94 ("drm/bridge: Introduce LT8912B DSI to HDMI bridge")
      Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ideasonboard.com>
      Reviewed-by: default avatarRobert Foss <rfoss@kernel.org>
      Signed-off-by: default avatarRobert Foss <rfoss@kernel.org>
      Link: https://patchwork.freedesktop.org/patch/msgid/20230804-lt8912b-v1-1-c542692c6a2f@ideasonboard.com
      941882a0