drm/i915: Use a DRM-managed action to release the PCI bridge device
As we start supporting multiple uncore structures in future patches, the MMIO cleanup (which may also get called mid-init if there's a failure) will become more complicated. Moving to DRM-managed actions will help keep things simple. Signed-off-by: Matt Roper <matthew.d.roper@intel.com> Reviewed-by: Radhakrishna Sripada <radhakrishna.sripada@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20220906234934.3655440-8-matthew.d.roper@intel.com Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
This commit is contained in:
parent
4ecd56fdad
commit
6438452de4
@ -105,6 +105,12 @@ static const char irst_name[] = "INT3392";
|
||||
|
||||
static const struct drm_driver i915_drm_driver;
|
||||
|
||||
static void i915_release_bridge_dev(struct drm_device *dev,
|
||||
void *bridge)
|
||||
{
|
||||
pci_dev_put(bridge);
|
||||
}
|
||||
|
||||
static int i915_get_bridge_dev(struct drm_i915_private *dev_priv)
|
||||
{
|
||||
int domain = pci_domain_nr(to_pci_dev(dev_priv->drm.dev)->bus);
|
||||
@ -115,7 +121,9 @@ static int i915_get_bridge_dev(struct drm_i915_private *dev_priv)
|
||||
drm_err(&dev_priv->drm, "bridge device not found\n");
|
||||
return -EIO;
|
||||
}
|
||||
return 0;
|
||||
|
||||
return drmm_add_action_or_reset(&dev_priv->drm, i915_release_bridge_dev,
|
||||
dev_priv->bridge_dev);
|
||||
}
|
||||
|
||||
/* Allocate space for the MCH regs if needed, return nonzero on error */
|
||||
@ -452,7 +460,6 @@ static int i915_driver_mmio_probe(struct drm_i915_private *dev_priv)
|
||||
err_uncore:
|
||||
intel_teardown_mchbar(dev_priv);
|
||||
intel_uncore_fini_mmio(&dev_priv->uncore);
|
||||
pci_dev_put(dev_priv->bridge_dev);
|
||||
|
||||
return ret;
|
||||
}
|
||||
@ -465,7 +472,6 @@ static void i915_driver_mmio_release(struct drm_i915_private *dev_priv)
|
||||
{
|
||||
intel_teardown_mchbar(dev_priv);
|
||||
intel_uncore_fini_mmio(&dev_priv->uncore);
|
||||
pci_dev_put(dev_priv->bridge_dev);
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user