[PATCH v2 0/6] drm/msm/dpu: rework irq handling

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Simplify IRQ handling. dpu_irq_map is a huge table consisting of all
possible IRQ entries (including a plenty of 'reserved' = not existing
IRQs). It is always used to lookup the interrupt index (in the table)
and then to use this index to lookup related interrupt register and
mask. For the long period of time these indices had 1:1 correspondence
to register/mask pairs. SC7280 introduced 'additional' IRQs removing
this correpondence.

Replace all IRQ lookup with stable irq indices, which correponds
directly to the register/bit pair. The irq indices are now fetched from
the hw catalog rather than being looked up using the hw block id and irq
type.

Changes since v1:
 - move IRQ indices to hw catalog rather than looking them up from the
   big dpu_irq_map table (as suggested by Bjorn).
 - add patch to squash irq enable/disable into
   dpu_core_irq_register_callback()/dpu_core_irq_unregister_callback()

Changes since RFC:
 - rebase on top of msm/msm-next to include SC7280 changes.


The following changes since commit f2f46b878777e0d3f885c7ddad48f477b4dea247:

  drm/msm/dp: initialize audio_comp when audio starts (2021-05-06 16:26:57 -0700)

are available in the Git repository at:

  https://git.linaro.org/people/dmitry.baryshkov/kernel.git dpu-irq-simplify-2

for you to fetch changes up to ec3d935f9a18aeb3ebf5482eba7133cec020e047:

  drm/msm/dpu: simplify IRQ enabling/disabling (2021-05-16 23:19:56 +0300)

----------------------------------------------------------------
Dmitry Baryshkov (6):
      drm/msm/dpu: merge dpu_hw_intr_get_interrupt_statuses into dpu_hw_intr_dispatch_irqs
      drm/msm/dpu: hw_intr: always call dpu_hw_intr_clear_intr_status_nolock
      drm/msm/dpu: define interrupt register names
      drm/msm/dpu: replace IRQ lookup with the data in hw catalog
      drm/msm/dpu: drop remains of old irq lookup subsystem
      drm/msm/dpu: simplify IRQ enabling/disabling

 drivers/gpu/drm/msm/disp/dpu1/dpu_core_irq.c       |  203 +--
 drivers/gpu/drm/msm/disp/dpu1/dpu_core_irq.h       |   43 -
 drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c        |   74 +-
 drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys.h   |    4 -
 .../gpu/drm/msm/disp/dpu1/dpu_encoder_phys_cmd.c   |   40 +-
 .../gpu/drm/msm/disp/dpu1/dpu_encoder_phys_vid.c   |   33 +-
 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c     |  202 ++-
 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h     |   14 +-
 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_interrupts.c  | 1450 ++------------------
 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_interrupts.h  |  112 +-
 drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h            |    2 -
 drivers/gpu/drm/msm/disp/dpu1/dpu_trace.h          |   36 +-
 12 files changed, 330 insertions(+), 1883 deletions(-)





[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux