drm/xe/display: move xe->display initialization to xe_display_probe()

The future goal is to have intel_display_device_probe() create struct
intel_display. As the first step, postpone xe->display initialization
right before that call. This is the same location as in i915.

There's a subtle functional change here: xe->display will now be
initialized only if xe->info.probe_display.

The xe_display_create() function becomes empty, and can be removed. Move
its documentation to xe_display_probe()

Reviewed-by: Matthew Auld <matthew.auld@intel.com>
Link: https://lore.kernel.org/r/6c3075739d84cecea258d686c3ef38455a61191c.1747397638.git.jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
This commit is contained in:
Jani Nikula 2025-05-16 15:16:58 +03:00
parent ed23224b3f
commit 1e2803e565
3 changed files with 14 additions and 27 deletions

View File

@ -83,25 +83,6 @@ static void unset_display_features(struct xe_device *xe)
xe->drm.driver_features &= ~(DRIVER_MODESET | DRIVER_ATOMIC);
}
/**
* xe_display_create - create display struct
* @xe: XE device instance
*
* Initialize all fields used by the display part.
*
* TODO: once everything can be inside a single struct, make the struct opaque
* to the rest of xe and return it to be xe->display.
*
* Returns: 0 on success
*/
int xe_display_create(struct xe_device *xe)
{
/* TODO: Allocate display dynamically. */
xe->display = &xe->__display;
return 0;
}
static void xe_display_fini_early(void *arg)
{
struct xe_device *xe = arg;
@ -524,6 +505,17 @@ static void display_device_remove(struct drm_device *dev, void *arg)
intel_display_device_remove(display);
}
/**
* xe_display_probe - probe display and create display struct
* @xe: XE device instance
*
* Initialize all fields used by the display part.
*
* TODO: once everything can be inside a single struct, make the struct opaque
* to the rest of xe and return it to be xe->display.
*
* Returns: 0 on success
*/
int xe_display_probe(struct xe_device *xe)
{
struct pci_dev *pdev = to_pci_dev(xe->drm.dev);
@ -533,6 +525,9 @@ int xe_display_probe(struct xe_device *xe)
if (!xe->info.probe_display)
goto no_display;
/* TODO: Allocate display dynamically. */
xe->display = &xe->__display;
display = intel_display_device_probe(pdev);
err = drmm_add_action_or_reset(&xe->drm, display_device_remove, display);

View File

@ -15,8 +15,6 @@ struct drm_driver;
bool xe_display_driver_probe_defer(struct pci_dev *pdev);
void xe_display_driver_set_hooks(struct drm_driver *driver);
int xe_display_create(struct xe_device *xe);
int xe_display_probe(struct xe_device *xe);
int xe_display_init_early(struct xe_device *xe);
@ -46,8 +44,6 @@ static inline int xe_display_driver_probe_defer(struct pci_dev *pdev) { return 0
static inline void xe_display_driver_set_hooks(struct drm_driver *driver) { }
static inline void xe_display_driver_remove(struct xe_device *xe) {}
static inline int xe_display_create(struct xe_device *xe) { return 0; }
static inline int xe_display_probe(struct xe_device *xe) { return 0; }
static inline int xe_display_init_early(struct xe_device *xe) { return 0; }

View File

@ -493,10 +493,6 @@ struct xe_device *xe_device_create(struct pci_dev *pdev,
if (err)
goto err;
err = xe_display_create(xe);
if (WARN_ON(err))
goto err;
return xe;
err: