Commit 2c93e7b7 authored by Jani Nikula's avatar Jani Nikula

drm/i915: add initial runtime info into device info

Add initial runtime info that we can copy to runtime info at i915
creation time. This lets us define the initial values for runtime info
statically while making it possible to change them runtime. This will be
the new home for the current "const" device info members that are
modified runtime anyway.
Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
Reviewed-by: default avatarMaarten Lankhort <maarten.lankhorst@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/a77c6db2da20d401f47a0a5e87356b9b3f6292df.1660910433.git.jani.nikula@intel.com
parent c7d3c844
...@@ -814,6 +814,7 @@ i915_driver_create(struct pci_dev *pdev, const struct pci_device_id *ent) ...@@ -814,6 +814,7 @@ i915_driver_create(struct pci_dev *pdev, const struct pci_device_id *ent)
const struct intel_device_info *match_info = const struct intel_device_info *match_info =
(struct intel_device_info *)ent->driver_data; (struct intel_device_info *)ent->driver_data;
struct intel_device_info *device_info; struct intel_device_info *device_info;
struct intel_runtime_info *runtime;
struct drm_i915_private *i915; struct drm_i915_private *i915;
i915 = devm_drm_dev_alloc(&pdev->dev, &i915_drm_driver, i915 = devm_drm_dev_alloc(&pdev->dev, &i915_drm_driver,
...@@ -829,7 +830,11 @@ i915_driver_create(struct pci_dev *pdev, const struct pci_device_id *ent) ...@@ -829,7 +830,11 @@ i915_driver_create(struct pci_dev *pdev, const struct pci_device_id *ent)
/* Setup the write-once "constant" device info */ /* Setup the write-once "constant" device info */
device_info = mkwrite_device_info(i915); device_info = mkwrite_device_info(i915);
memcpy(device_info, match_info, sizeof(*device_info)); memcpy(device_info, match_info, sizeof(*device_info));
RUNTIME_INFO(i915)->device_id = pdev->device;
/* Initialize initial runtime info from static const data and pdev. */
runtime = RUNTIME_INFO(i915);
memcpy(runtime, &INTEL_INFO(i915)->__runtime, sizeof(*runtime));
runtime->device_id = pdev->device;
return i915; return i915;
} }
......
...@@ -202,6 +202,27 @@ struct ip_version { ...@@ -202,6 +202,27 @@ struct ip_version {
u8 rel; u8 rel;
}; };
struct intel_runtime_info {
/*
* Platform mask is used for optimizing or-ed IS_PLATFORM calls into
* single runtime conditionals, and also to provide groundwork for
* future per platform, or per SKU build optimizations.
*
* Array can be extended when necessary if the corresponding
* BUILD_BUG_ON is hit.
*/
u32 platform_mask[2];
u16 device_id;
u8 num_sprites[I915_MAX_PIPES];
u8 num_scalers[I915_MAX_PIPES];
u32 rawclk_freq;
struct intel_step_info step;
};
struct intel_device_info { struct intel_device_info {
struct ip_version graphics; struct ip_version graphics;
struct ip_version media; struct ip_version media;
...@@ -258,27 +279,11 @@ struct intel_device_info { ...@@ -258,27 +279,11 @@ struct intel_device_info {
u32 gamma_lut_tests; u32 gamma_lut_tests;
} color; } color;
} display; } display;
};
struct intel_runtime_info {
/* /*
* Platform mask is used for optimizing or-ed IS_PLATFORM calls into * Initial runtime info. Do not access outside of i915_driver_create().
* into single runtime conditionals, and also to provide groundwork
* for future per platform, or per SKU build optimizations.
*
* Array can be extended when necessary if the corresponding
* BUILD_BUG_ON is hit.
*/ */
u32 platform_mask[2]; const struct intel_runtime_info __runtime;
u16 device_id;
u8 num_sprites[I915_MAX_PIPES];
u8 num_scalers[I915_MAX_PIPES];
u32 rawclk_freq;
struct intel_step_info step;
}; };
struct intel_driver_caps { struct intel_driver_caps {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment