Skip to content

Commit

Permalink
drm/i915: manage opregion asle driver readiness properly
Browse files Browse the repository at this point in the history
Only set ASLE driver readiness (ARDY) and technology enabled indicator
(TCHE) once per opregion init. There should be no need to do that at irq
postinstall time. Also clear driver readiness at fini.

While at it, add defines for driver readiness.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Reviewed-by: Damien Lespiau <damien.lespiau@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
  • Loading branch information
Jani Nikula authored and Daniel Vetter committed Apr 30, 2013
1 parent f599cc2 commit 68bca4b
Showing 1 changed file with 14 additions and 4 deletions.
18 changes: 14 additions & 4 deletions drivers/gpu/drm/i915/intel_opregion.c
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,10 @@ struct opregion_asle {
u8 rsvd[102];
} __attribute__((packed));

/* Driver readiness indicator */
#define ASLE_ARDY_READY (1 << 0)
#define ASLE_ARDY_NOT_READY (0 << 0)

/* ASLE irq request bits */
#define ASLE_SET_ALS_ILLUM (1 << 0)
#define ASLE_SET_BACKLIGHT (1 << 1)
Expand Down Expand Up @@ -236,9 +240,6 @@ void intel_opregion_enable_asle(struct drm_device *dev)
if (asle) {
if (IS_MOBILE(dev))
intel_enable_asle(dev);

iowrite32(ASLE_TCHE_BLC_EN, &asle->tche);
iowrite32(1, &asle->ardy);
}
}

Expand Down Expand Up @@ -425,8 +426,12 @@ void intel_opregion_init(struct drm_device *dev)
register_acpi_notifier(&intel_opregion_notifier);
}

if (opregion->asle)
if (opregion->asle) {
intel_opregion_enable_asle(dev);

iowrite32(ASLE_TCHE_BLC_EN, &opregion->asle->tche);
iowrite32(ASLE_ARDY_READY, &opregion->asle->ardy);
}
}

void intel_opregion_fini(struct drm_device *dev)
Expand All @@ -437,6 +442,9 @@ void intel_opregion_fini(struct drm_device *dev)
if (!opregion->header)
return;

if (opregion->asle)
iowrite32(ASLE_ARDY_NOT_READY, &opregion->asle->ardy);

if (opregion->acpi) {
iowrite32(0, &opregion->acpi->drdy);

Expand Down Expand Up @@ -499,6 +507,8 @@ int intel_opregion_setup(struct drm_device *dev)
if (mboxes & MBOX_ASLE) {
DRM_DEBUG_DRIVER("ASLE supported\n");
opregion->asle = base + OPREGION_ASLE_OFFSET;

iowrite32(ASLE_ARDY_NOT_READY, &opregion->asle->ardy);
}

return 0;
Expand Down

0 comments on commit 68bca4b

Please sign in to comment.