drm/i915: Add intel_bios_cleanup() function
Add an intel_bios_cleanup() function to act as counterpart of intel_bios_init() and move the cleanup of vbt related resources there, putting it in the same file as the allocation. Changed in v2: -While touching the code anyways, remove the unnecessary: if (dev_priv->vbt.child_dev) done before kfree(dev_priv->vbt.child_dev) Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Signed-off-by: Hans de Goede <hdegoede@redhat.com> Link: https://patchwork.freedesktop.org/patch/msgid/20180214082151.25015-1-hdegoede@redhat.com
This commit is contained in:
parent
5270d9c367
commit
785f076b3b
3 changed files with 17 additions and 13 deletions
|
@ -1448,19 +1448,7 @@ void i915_driver_unload(struct drm_device *dev)
|
||||||
|
|
||||||
intel_modeset_cleanup(dev);
|
intel_modeset_cleanup(dev);
|
||||||
|
|
||||||
/*
|
intel_bios_cleanup(dev_priv);
|
||||||
* free the memory space allocated for the child device
|
|
||||||
* config parsed from VBT
|
|
||||||
*/
|
|
||||||
if (dev_priv->vbt.child_dev && dev_priv->vbt.child_dev_num) {
|
|
||||||
kfree(dev_priv->vbt.child_dev);
|
|
||||||
dev_priv->vbt.child_dev = NULL;
|
|
||||||
dev_priv->vbt.child_dev_num = 0;
|
|
||||||
}
|
|
||||||
kfree(dev_priv->vbt.sdvo_lvds_vbt_mode);
|
|
||||||
dev_priv->vbt.sdvo_lvds_vbt_mode = NULL;
|
|
||||||
kfree(dev_priv->vbt.lfp_lvds_vbt_mode);
|
|
||||||
dev_priv->vbt.lfp_lvds_vbt_mode = NULL;
|
|
||||||
|
|
||||||
vga_switcheroo_unregister_client(pdev);
|
vga_switcheroo_unregister_client(pdev);
|
||||||
vga_client_register(pdev, NULL, NULL, NULL);
|
vga_client_register(pdev, NULL, NULL, NULL);
|
||||||
|
|
|
@ -3679,6 +3679,7 @@ extern void intel_i2c_reset(struct drm_i915_private *dev_priv);
|
||||||
|
|
||||||
/* intel_bios.c */
|
/* intel_bios.c */
|
||||||
void intel_bios_init(struct drm_i915_private *dev_priv);
|
void intel_bios_init(struct drm_i915_private *dev_priv);
|
||||||
|
void intel_bios_cleanup(struct drm_i915_private *dev_priv);
|
||||||
bool intel_bios_is_valid_vbt(const void *buf, size_t size);
|
bool intel_bios_is_valid_vbt(const void *buf, size_t size);
|
||||||
bool intel_bios_is_tv_present(struct drm_i915_private *dev_priv);
|
bool intel_bios_is_tv_present(struct drm_i915_private *dev_priv);
|
||||||
bool intel_bios_is_lvds_present(struct drm_i915_private *dev_priv, u8 *i2c_pin);
|
bool intel_bios_is_lvds_present(struct drm_i915_private *dev_priv, u8 *i2c_pin);
|
||||||
|
|
|
@ -1610,6 +1610,21 @@ out:
|
||||||
pci_unmap_rom(pdev, bios);
|
pci_unmap_rom(pdev, bios);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* intel_bios_cleanup - Free any resources allocated by intel_bios_init()
|
||||||
|
* @dev_priv: i915 device instance
|
||||||
|
*/
|
||||||
|
void intel_bios_cleanup(struct drm_i915_private *dev_priv)
|
||||||
|
{
|
||||||
|
kfree(dev_priv->vbt.child_dev);
|
||||||
|
dev_priv->vbt.child_dev = NULL;
|
||||||
|
dev_priv->vbt.child_dev_num = 0;
|
||||||
|
kfree(dev_priv->vbt.sdvo_lvds_vbt_mode);
|
||||||
|
dev_priv->vbt.sdvo_lvds_vbt_mode = NULL;
|
||||||
|
kfree(dev_priv->vbt.lfp_lvds_vbt_mode);
|
||||||
|
dev_priv->vbt.lfp_lvds_vbt_mode = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* intel_bios_is_tv_present - is integrated TV present in VBT
|
* intel_bios_is_tv_present - is integrated TV present in VBT
|
||||||
* @dev_priv: i915 device instance
|
* @dev_priv: i915 device instance
|
||||||
|
|
Loading…
Reference in a new issue