drm/imagination: Add GPU ID parsing and firmware loading
authorSarah Walker <sarah.walker@imgtec.com>
Wed, 22 Nov 2023 16:34:31 +0000 (16:34 +0000)
committerMaxime Ripard <mripard@kernel.org>
Thu, 23 Nov 2023 08:01:46 +0000 (09:01 +0100)
commitf99f5f3ea7efd54ba0529c4f2d7c72712918a522
treeb11d3aa755d4b652c02b3386ed21c2e6eddefa80
parenta26f067feac1f6142c3ccbaeaee8f84078bca9d4
drm/imagination: Add GPU ID parsing and firmware loading

Read the GPU ID register at probe time and select the correct
features/quirks/enhancements. Use the GPU ID to form the firmware
file name and load the firmware.

The features/quirks/enhancements arrays are currently hardcoded in
the driver for the supported GPUs. We are looking at moving this
information to the firmware image.

Changes since v8:
- Corrected license identifiers

Changes since v7:
- Fix kerneldoc for pvr_device_info_set_enhancements()

Changes since v5:
- Add BRN 71242 to device info

Changes since v4:
- Retrieve device information from firmware header
- Pull forward firmware header parsing from FW infrastructure patch
- Use devm_add_action_or_reset to release firmware

Changes since v3:
- Use drm_dev_{enter,exit}

Co-developed-by: Frank Binns <frank.binns@imgtec.com>
Signed-off-by: Frank Binns <frank.binns@imgtec.com>
Co-developed-by: Matt Coster <matt.coster@imgtec.com>
Signed-off-by: Matt Coster <matt.coster@imgtec.com>
Co-developed-by: Donald Robson <donald.robson@imgtec.com>
Signed-off-by: Donald Robson <donald.robson@imgtec.com>
Signed-off-by: Sarah Walker <sarah.walker@imgtec.com>
Link: https://lore.kernel.org/r/1ff76f7a5b45c742279c78910f8491b8a5e7f6e6.1700668843.git.donald.robson@imgtec.com
Signed-off-by: Maxime Ripard <mripard@kernel.org>
drivers/gpu/drm/imagination/Makefile
drivers/gpu/drm/imagination/pvr_device.c
drivers/gpu/drm/imagination/pvr_device.h
drivers/gpu/drm/imagination/pvr_device_info.c [new file with mode: 0644]
drivers/gpu/drm/imagination/pvr_device_info.h [new file with mode: 0644]
drivers/gpu/drm/imagination/pvr_drv.c
drivers/gpu/drm/imagination/pvr_drv.h
drivers/gpu/drm/imagination/pvr_fw.c [new file with mode: 0644]
drivers/gpu/drm/imagination/pvr_fw.h [new file with mode: 0644]
drivers/gpu/drm/imagination/pvr_fw_info.h [new file with mode: 0644]