Commit b21fb579 authored by Alan Cox's avatar Alan Cox Committed by Greg Kroah-Hartman
Browse files

gma500: tidy up the opregion and lid code



This is leaking an io mapping and also referencing stuff directly that
should not be directly accessed. Sort it out

Signed-off-by: default avatarAlan Cox <alan@linux.intel.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 3835ce2e
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -321,7 +321,7 @@ static void cdv_get_core_freq(struct drm_device *dev)
static int cdv_chip_setup(struct drm_device *dev)
{
	cdv_get_core_freq(dev);
	psb_intel_opregion_init(dev);
	intel_opregion_init(dev);
	psb_intel_init_bios(dev);
	return 0;
}
+1 −1
Original line number Diff line number Diff line
@@ -322,7 +322,7 @@ static void psb_get_core_freq(struct drm_device *dev)
static int psb_chip_setup(struct drm_device *dev)
{
	psb_get_core_freq(dev);
	psb_intel_opregion_init(dev);
	intel_opregion_init(dev);
	psb_intel_init_bios(dev);
	return 0;
}
+1 −0
Original line number Diff line number Diff line
@@ -245,6 +245,7 @@ static int psb_driver_unload(struct drm_device *dev)

	if (dev_priv) {
		psb_lid_timer_takedown(dev_priv);
		intel_opregion_exit(dev);

		psb_do_takedown(dev);

+3 −2
Original line number Diff line number Diff line
@@ -727,9 +727,10 @@ extern int mdfld_enable_te(struct drm_device *dev, int pipe);
extern void mdfld_disable_te(struct drm_device *dev, int pipe);

/*
 * psb_opregion.c
 * intel_opregion.c
 */
extern int psb_intel_opregion_init(struct drm_device *dev);
extern int intel_opregion_init(struct drm_device *dev);
extern int intel_opregion_exit(struct drm_device *dev);

/*
 * framebuffer.c
+11 −3
Original line number Diff line number Diff line
@@ -47,10 +47,9 @@ struct opregion_acpi {
	/*FIXME: add it later*/
} __packed;

int psb_intel_opregion_init(struct drm_device *dev)
int intel_opregion_init(struct drm_device *dev)
{
	struct drm_psb_private *dev_priv = dev->dev_private;
	/*struct psb_intel_opregion * opregion = &dev_priv->opregion;*/
	u32 opregion_phy;
	void *base;
	u32 *lid_state;
@@ -68,6 +67,15 @@ int psb_intel_opregion_init(struct drm_device *dev)
	lid_state = base + 0x01ac;

	dev_priv->lid_state = lid_state;
	dev_priv->lid_last_state = *lid_state;
	dev_priv->lid_last_state = readl(lid_state);
	return 0;
}

int intel_opregion_exit(struct drm_device *dev)
{
	struct drm_psb_private *dev_priv = dev->dev_private;
	if (dev_priv->lid_state)
		iounmap(dev_priv->lid_state);
	return 0;
}
	
 No newline at end of file
Loading