Skip to content
  • Boris Brezillon's avatar
    drm/panthor: Add the FW logical block · 12138080
    Boris Brezillon authored
    
    
    Contains everything that's FW related, that includes the code dealing
    with the microcontroller unit (MCU) that's running the FW, and anything
    related to allocating memory shared between the FW and the CPU.
    
    A few global FW events are processed in the IRQ handler, the rest is
    forwarded to the scheduler, since scheduling is the primary reason for
    the FW existence, and also the main source of FW <-> kernel
    interactions.
    
    v4:
    - Add a MODULE_FIRMWARE() entry for gen 10.8
    - Fix a wrong return ERR_PTR() in panthor_fw_load_section_entry()
    - Fix typos
    - Add Steve's R-b
    
    v3:
    - Make the FW path more future-proof (Liviu)
    - Use one waitqueue for all FW events
    - Simplify propagation of FW events to the scheduler logic
    - Drop the panthor_fw_mem abstraction and use panthor_kernel_bo instead
    - Account for the panthor_vm changes
    - Replace magic number with 0x7fffffff with ~0 to better signify that
      it's the maximum permitted value.
    - More accurate rounding when computing the firmware timeout.
    - Add a 'sub iterator' helper function. This also adds a check that a
      firmware entry doesn't overflow the firmware image.
    - Drop __packed from FW structures, natural alignment is good enough.
    - Other minor code improvements.
    
    Co-developed-by: default avatarSteven Price <steven.price@arm.com>
    Signed-off-by: default avatarSteven Price <steven.price@arm.com>
    Signed-off-by: default avatarBoris Brezillon <boris.brezillon@collabora.com>
    Reviewed-by: default avatarSteven Price <steven.price@arm.com>
    12138080