Commit 68bca4b0 authored by Jani Nikula's avatar Jani Nikula Committed by Daniel Vetter

drm/i915: manage opregion asle driver readiness properly

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: default avatarJani Nikula <jani.nikula@intel.com>
Reviewed-by: default avatarDamien Lespiau <damien.lespiau@intel.com>
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
parent f599cc29
...@@ -110,6 +110,10 @@ struct opregion_asle { ...@@ -110,6 +110,10 @@ struct opregion_asle {
u8 rsvd[102]; u8 rsvd[102];
} __attribute__((packed)); } __attribute__((packed));
/* Driver readiness indicator */
#define ASLE_ARDY_READY (1 << 0)
#define ASLE_ARDY_NOT_READY (0 << 0)
/* ASLE irq request bits */ /* ASLE irq request bits */
#define ASLE_SET_ALS_ILLUM (1 << 0) #define ASLE_SET_ALS_ILLUM (1 << 0)
#define ASLE_SET_BACKLIGHT (1 << 1) #define ASLE_SET_BACKLIGHT (1 << 1)
...@@ -236,9 +240,6 @@ void intel_opregion_enable_asle(struct drm_device *dev) ...@@ -236,9 +240,6 @@ void intel_opregion_enable_asle(struct drm_device *dev)
if (asle) { if (asle) {
if (IS_MOBILE(dev)) if (IS_MOBILE(dev))
intel_enable_asle(dev); intel_enable_asle(dev);
iowrite32(ASLE_TCHE_BLC_EN, &asle->tche);
iowrite32(1, &asle->ardy);
} }
} }
...@@ -425,8 +426,12 @@ void intel_opregion_init(struct drm_device *dev) ...@@ -425,8 +426,12 @@ void intel_opregion_init(struct drm_device *dev)
register_acpi_notifier(&intel_opregion_notifier); register_acpi_notifier(&intel_opregion_notifier);
} }
if (opregion->asle) if (opregion->asle) {
intel_opregion_enable_asle(dev); 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) void intel_opregion_fini(struct drm_device *dev)
...@@ -437,6 +442,9 @@ void intel_opregion_fini(struct drm_device *dev) ...@@ -437,6 +442,9 @@ void intel_opregion_fini(struct drm_device *dev)
if (!opregion->header) if (!opregion->header)
return; return;
if (opregion->asle)
iowrite32(ASLE_ARDY_NOT_READY, &opregion->asle->ardy);
if (opregion->acpi) { if (opregion->acpi) {
iowrite32(0, &opregion->acpi->drdy); iowrite32(0, &opregion->acpi->drdy);
...@@ -499,6 +507,8 @@ int intel_opregion_setup(struct drm_device *dev) ...@@ -499,6 +507,8 @@ int intel_opregion_setup(struct drm_device *dev)
if (mboxes & MBOX_ASLE) { if (mboxes & MBOX_ASLE) {
DRM_DEBUG_DRIVER("ASLE supported\n"); DRM_DEBUG_DRIVER("ASLE supported\n");
opregion->asle = base + OPREGION_ASLE_OFFSET; opregion->asle = base + OPREGION_ASLE_OFFSET;
iowrite32(ASLE_ARDY_NOT_READY, &opregion->asle->ardy);
} }
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment