|
@@ -37,7 +37,9 @@ static int pmac_backlight_set_legacy_queued;
|
|
|
*/
|
|
|
static atomic_t kernel_backlight_disabled = ATOMIC_INIT(0);
|
|
|
|
|
|
-/* Protect the pmac_backlight variable */
|
|
|
+/* Protect the pmac_backlight variable below.
|
|
|
+ You should hold this lock when using the pmac_backlight pointer to
|
|
|
+ prevent its potential removal. */
|
|
|
DEFINE_MUTEX(pmac_backlight_mutex);
|
|
|
|
|
|
/* Main backlight storage
|
|
@@ -49,9 +51,6 @@ DEFINE_MUTEX(pmac_backlight_mutex);
|
|
|
* internal display, it doesn't matter. Other backlight drivers can be used
|
|
|
* independently.
|
|
|
*
|
|
|
- * Lock ordering:
|
|
|
- * pmac_backlight_mutex (global, main backlight)
|
|
|
- * pmac_backlight->sem (backlight class)
|
|
|
*/
|
|
|
struct backlight_device *pmac_backlight;
|
|
|
|
|
@@ -104,7 +103,6 @@ static void pmac_backlight_key_worker(struct work_struct *work)
|
|
|
struct backlight_properties *props;
|
|
|
int brightness;
|
|
|
|
|
|
- down(&pmac_backlight->sem);
|
|
|
props = pmac_backlight->props;
|
|
|
|
|
|
brightness = props->brightness +
|
|
@@ -117,9 +115,7 @@ static void pmac_backlight_key_worker(struct work_struct *work)
|
|
|
brightness = props->max_brightness;
|
|
|
|
|
|
props->brightness = brightness;
|
|
|
- props->update_status(pmac_backlight);
|
|
|
-
|
|
|
- up(&pmac_backlight->sem);
|
|
|
+ backlight_update_status(pmac_backlight);
|
|
|
}
|
|
|
mutex_unlock(&pmac_backlight_mutex);
|
|
|
}
|
|
@@ -145,7 +141,6 @@ static int __pmac_backlight_set_legacy_brightness(int brightness)
|
|
|
if (pmac_backlight) {
|
|
|
struct backlight_properties *props;
|
|
|
|
|
|
- down(&pmac_backlight->sem);
|
|
|
props = pmac_backlight->props;
|
|
|
props->brightness = brightness *
|
|
|
(props->max_brightness + 1) /
|
|
@@ -156,8 +151,7 @@ static int __pmac_backlight_set_legacy_brightness(int brightness)
|
|
|
else if (props->brightness < 0)
|
|
|
props->brightness = 0;
|
|
|
|
|
|
- props->update_status(pmac_backlight);
|
|
|
- up(&pmac_backlight->sem);
|
|
|
+ backlight_update_status(pmac_backlight);
|
|
|
|
|
|
error = 0;
|
|
|
}
|
|
@@ -196,14 +190,11 @@ int pmac_backlight_get_legacy_brightness()
|
|
|
if (pmac_backlight) {
|
|
|
struct backlight_properties *props;
|
|
|
|
|
|
- down(&pmac_backlight->sem);
|
|
|
props = pmac_backlight->props;
|
|
|
|
|
|
result = props->brightness *
|
|
|
(OLD_BACKLIGHT_MAX + 1) /
|
|
|
(props->max_brightness + 1);
|
|
|
-
|
|
|
- up(&pmac_backlight->sem);
|
|
|
}
|
|
|
mutex_unlock(&pmac_backlight_mutex);
|
|
|
|