Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 166973e5 authored by Alan Cox's avatar Alan Cox Committed by Linus Torvalds
Browse files

gma500: move the ASLE enable



Otherwise we end up getting the masks wrong, can get events before we
are doing power control and other ungood things.  Again this is a
regression fix where the ordering of handling was disturbed by other
work, and the user experience on some boxes is a blank screen.

Signed-off-by: default avatarAlan Cox <alan@linux.intel.com>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent f507598b
Loading
Loading
Loading
Loading
+3 −5
Original line number Diff line number Diff line
@@ -144,6 +144,8 @@ struct opregion_asle {

#define ASLE_CBLV_VALID         (1<<31)

static struct psb_intel_opregion *system_opregion;

static u32 asle_set_backlight(struct drm_device *dev, u32 bclp)
{
	struct drm_psb_private *dev_priv = dev->dev_private;
@@ -205,7 +207,7 @@ void psb_intel_opregion_enable_asle(struct drm_device *dev)
	struct drm_psb_private *dev_priv = dev->dev_private;
	struct opregion_asle *asle = dev_priv->opregion.asle;

	if (asle) {
	if (asle && system_opregion ) {
		/* Don't do this on Medfield or other non PC like devices, they
		   use the bit for something different altogether */
		psb_enable_pipestat(dev_priv, 0, PIPE_LEGACY_BLC_EVENT_ENABLE);
@@ -221,7 +223,6 @@ void psb_intel_opregion_enable_asle(struct drm_device *dev)
#define ACPI_EV_LID            (1<<1)
#define ACPI_EV_DOCK           (1<<2)

static struct psb_intel_opregion *system_opregion;

static int psb_intel_opregion_video_event(struct notifier_block *nb,
					  unsigned long val, void *data)
@@ -266,9 +267,6 @@ void psb_intel_opregion_init(struct drm_device *dev)
		system_opregion = opregion;
		register_acpi_notifier(&psb_intel_opregion_notifier);
	}

	if (opregion->asle)
		psb_intel_opregion_enable_asle(dev);
}

void psb_intel_opregion_fini(struct drm_device *dev)
+5 −0
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ extern void psb_intel_opregion_asle_intr(struct drm_device *dev);
extern void psb_intel_opregion_init(struct drm_device *dev);
extern void psb_intel_opregion_fini(struct drm_device *dev);
extern int psb_intel_opregion_setup(struct drm_device *dev);
extern void psb_intel_opregion_enable_asle(struct drm_device *dev);

#else

@@ -46,4 +47,8 @@ extern inline int psb_intel_opregion_setup(struct drm_device *dev)
{
	return 0;
}

extern inline void psb_intel_opregion_enable_asle(struct drm_device *dev)
{
}
#endif
+1 −0
Original line number Diff line number Diff line
@@ -374,6 +374,7 @@ static int psb_driver_load(struct drm_device *dev, unsigned long chipset)

	if (ret)
		return ret;
	psb_intel_opregion_enable_asle(dev);
#if 0
	/*enable runtime pm at last*/
	pm_runtime_enable(&dev->pdev->dev);