drm/i915/dmc: allocate dmc structure dynamically
authorJani Nikula <jani.nikula@intel.com>
Wed, 1 Mar 2023 12:29:43 +0000 (14:29 +0200)
committerJani Nikula <jani.nikula@intel.com>
Mon, 6 Mar 2023 17:09:47 +0000 (19:09 +0200)
commite81a3c12b88ab685ce10482c3f6d5aa46f08a6fa
treef36cb5d8376121a70b96ca58ad4c8ede83dc74f9
parent1b28c1c789d0c11be213bb5d892f9a094ab8e201
drm/i915/dmc: allocate dmc structure dynamically

sizeof(struct intel_dmc) > 1024 bytes, allocated on all platforms as
part of struct drm_i915_private, whether they have DMC or not.

Allocate struct intel_dmc dynamically, and hide all the dmc details
behind an opaque pointer in intel_dmc.c.

Care must be taken to take into account all cases: DMC not supported on
the platform, DMC supported but not initialized, and DMC initialized but
not loaded. For the second case, we need to move the wakeref out of
struct intel_dmc.

v2:
- Rebase to kzalloc dmc after runtime pm get (Imre)

Cc: Imre Deak <imre.deak@intel.com>
Reviewed-by: Imre Deak <imre.deak@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230301122944.1298929-4-jani.nikula@intel.com
drivers/gpu/drm/i915/display/intel_display_core.h
drivers/gpu/drm/i915/display/intel_dmc.c
drivers/gpu/drm/i915/display/intel_dmc.h
drivers/gpu/drm/i915/display/intel_modeset_setup.c