VisionFive2 Linux kernel

StarFive Tech Linux Kernel for VisionFive (JH7110) boards (mirror)

More than 9999 Commits   32 Branches   54 Tags
b24413180f560 (Greg Kroah-Hartman     2017-11-01 15:07:57 +0100   1) // SPDX-License-Identifier: GPL-2.0
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700   2) /*
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700   3)  * Backlight code for via-pmu
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700   4)  *
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700   5)  * Copyright (C) 1998 Paul Mackerras and Fabio Riccardi.
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700   6)  * Copyright (C) 2001-2002 Benjamin Herrenschmidt
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700   7)  * Copyright (C) 2006      Michael Hanselmann <linux-kernel@hansmi.ch>
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700   8)  *
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700   9)  */
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700  10) 
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700  11) #include <asm/ptrace.h>
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700  12) #include <linux/adb.h>
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700  13) #include <linux/pmu.h>
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700  14) #include <asm/backlight.h>
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700  15) #include <asm/prom.h>
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700  16) 
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700  17) #define MAX_PMU_LEVEL 0xFF
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700  18) 
acc2472ed33fc (Lionel Debroux         2010-11-16 14:14:02 +0100  19) static const struct backlight_ops pmu_backlight_data;
4efd587bf9f9a (David Woodhouse        2006-09-29 01:58:37 -0700  20) static DEFINE_SPINLOCK(pmu_backlight_lock);
fa19d63488bd1 (Benjamin Herrenschmidt 2008-03-03 17:27:46 +1100  21) static int sleeping, uses_pmu_bl;
d565dd3b0824b (Benjamin Herrenschmidt 2006-08-31 21:27:49 -0700  22) static u8 bl_curve[FB_BACKLIGHT_LEVELS];
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700  23) 
d565dd3b0824b (Benjamin Herrenschmidt 2006-08-31 21:27:49 -0700  24) static void pmu_backlight_init_curve(u8 off, u8 min, u8 max)
d565dd3b0824b (Benjamin Herrenschmidt 2006-08-31 21:27:49 -0700  25) {
0094f2cdcfb6f (Benjamin Herrenschmidt 2007-12-20 15:00:21 +1100  26) 	int i, flat, count, range = (max - min);
d565dd3b0824b (Benjamin Herrenschmidt 2006-08-31 21:27:49 -0700  27) 
d565dd3b0824b (Benjamin Herrenschmidt 2006-08-31 21:27:49 -0700  28) 	bl_curve[0] = off;
d565dd3b0824b (Benjamin Herrenschmidt 2006-08-31 21:27:49 -0700  29) 
d565dd3b0824b (Benjamin Herrenschmidt 2006-08-31 21:27:49 -0700  30) 	for (flat = 1; flat < (FB_BACKLIGHT_LEVELS / 16); ++flat)
d565dd3b0824b (Benjamin Herrenschmidt 2006-08-31 21:27:49 -0700  31) 		bl_curve[flat] = min;
d565dd3b0824b (Benjamin Herrenschmidt 2006-08-31 21:27:49 -0700  32) 
d565dd3b0824b (Benjamin Herrenschmidt 2006-08-31 21:27:49 -0700  33) 	count = FB_BACKLIGHT_LEVELS * 15 / 16;
d565dd3b0824b (Benjamin Herrenschmidt 2006-08-31 21:27:49 -0700  34) 	for (i = 0; i < count; ++i)
d565dd3b0824b (Benjamin Herrenschmidt 2006-08-31 21:27:49 -0700  35) 		bl_curve[flat + i] = min + (range * (i + 1) / count);
d565dd3b0824b (Benjamin Herrenschmidt 2006-08-31 21:27:49 -0700  36) }
d565dd3b0824b (Benjamin Herrenschmidt 2006-08-31 21:27:49 -0700  37) 
d565dd3b0824b (Benjamin Herrenschmidt 2006-08-31 21:27:49 -0700  38) static int pmu_backlight_curve_lookup(int value)
d565dd3b0824b (Benjamin Herrenschmidt 2006-08-31 21:27:49 -0700  39) {
d565dd3b0824b (Benjamin Herrenschmidt 2006-08-31 21:27:49 -0700  40) 	int level = (FB_BACKLIGHT_LEVELS - 1);
d565dd3b0824b (Benjamin Herrenschmidt 2006-08-31 21:27:49 -0700  41) 	int i, max = 0;
d565dd3b0824b (Benjamin Herrenschmidt 2006-08-31 21:27:49 -0700  42) 
d565dd3b0824b (Benjamin Herrenschmidt 2006-08-31 21:27:49 -0700  43) 	/* Look for biggest value */
d565dd3b0824b (Benjamin Herrenschmidt 2006-08-31 21:27:49 -0700  44) 	for (i = 0; i < FB_BACKLIGHT_LEVELS; i++)
d565dd3b0824b (Benjamin Herrenschmidt 2006-08-31 21:27:49 -0700  45) 		max = max((int)bl_curve[i], max);
d565dd3b0824b (Benjamin Herrenschmidt 2006-08-31 21:27:49 -0700  46) 
d565dd3b0824b (Benjamin Herrenschmidt 2006-08-31 21:27:49 -0700  47) 	/* Look for nearest value */
d565dd3b0824b (Benjamin Herrenschmidt 2006-08-31 21:27:49 -0700  48) 	for (i = 0; i < FB_BACKLIGHT_LEVELS; i++) {
d565dd3b0824b (Benjamin Herrenschmidt 2006-08-31 21:27:49 -0700  49) 		int diff = abs(bl_curve[i] - value);
d565dd3b0824b (Benjamin Herrenschmidt 2006-08-31 21:27:49 -0700  50) 		if (diff < max) {
d565dd3b0824b (Benjamin Herrenschmidt 2006-08-31 21:27:49 -0700  51) 			max = diff;
d565dd3b0824b (Benjamin Herrenschmidt 2006-08-31 21:27:49 -0700  52) 			level = i;
d565dd3b0824b (Benjamin Herrenschmidt 2006-08-31 21:27:49 -0700  53) 		}
d565dd3b0824b (Benjamin Herrenschmidt 2006-08-31 21:27:49 -0700  54) 	}
d565dd3b0824b (Benjamin Herrenschmidt 2006-08-31 21:27:49 -0700  55) 	return level;
d565dd3b0824b (Benjamin Herrenschmidt 2006-08-31 21:27:49 -0700  56) }
d565dd3b0824b (Benjamin Herrenschmidt 2006-08-31 21:27:49 -0700  57) 
d565dd3b0824b (Benjamin Herrenschmidt 2006-08-31 21:27:49 -0700  58) static int pmu_backlight_get_level_brightness(int level)
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700  59) {
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700  60) 	int pmulevel;
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700  61) 
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700  62) 	/* Get and convert the value */
d565dd3b0824b (Benjamin Herrenschmidt 2006-08-31 21:27:49 -0700  63) 	pmulevel = bl_curve[level] * FB_BACKLIGHT_MAX / MAX_PMU_LEVEL;
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700  64) 	if (pmulevel < 0)
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700  65) 		pmulevel = 0;
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700  66) 	else if (pmulevel > MAX_PMU_LEVEL)
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700  67) 		pmulevel = MAX_PMU_LEVEL;
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700  68) 
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700  69) 	return pmulevel;
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700  70) }
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700  71) 
0094f2cdcfb6f (Benjamin Herrenschmidt 2007-12-20 15:00:21 +1100  72) static int __pmu_backlight_update_status(struct backlight_device *bd)
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700  73) {
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700  74) 	struct adb_request req;
599a52d126293 (Richard Purdie         2007-02-10 23:07:48 +0000  75) 	int level = bd->props.brightness;
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700  76) 
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700  77) 
599a52d126293 (Richard Purdie         2007-02-10 23:07:48 +0000  78) 	if (bd->props.power != FB_BLANK_UNBLANK ||
599a52d126293 (Richard Purdie         2007-02-10 23:07:48 +0000  79) 	    bd->props.fb_blank != FB_BLANK_UNBLANK)
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700  80) 		level = 0;
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700  81) 
4b755999d6e0c (Michael Hanselmann     2006-07-30 03:04:19 -0700  82) 	if (level > 0) {
d565dd3b0824b (Benjamin Herrenschmidt 2006-08-31 21:27:49 -0700  83) 		int pmulevel = pmu_backlight_get_level_brightness(level);
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700  84) 
4b755999d6e0c (Michael Hanselmann     2006-07-30 03:04:19 -0700  85) 		pmu_request(&req, NULL, 2, PMU_BACKLIGHT_BRIGHT, pmulevel);
4b755999d6e0c (Michael Hanselmann     2006-07-30 03:04:19 -0700  86) 		pmu_wait_complete(&req);
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700  87) 
4b755999d6e0c (Michael Hanselmann     2006-07-30 03:04:19 -0700  88) 		pmu_request(&req, NULL, 2, PMU_POWER_CTRL,
4b755999d6e0c (Michael Hanselmann     2006-07-30 03:04:19 -0700  89) 			PMU_POW_BACKLIGHT | PMU_POW_ON);
4b755999d6e0c (Michael Hanselmann     2006-07-30 03:04:19 -0700  90) 		pmu_wait_complete(&req);
4b755999d6e0c (Michael Hanselmann     2006-07-30 03:04:19 -0700  91) 	} else {
4b755999d6e0c (Michael Hanselmann     2006-07-30 03:04:19 -0700  92) 		pmu_request(&req, NULL, 2, PMU_POWER_CTRL,
4b755999d6e0c (Michael Hanselmann     2006-07-30 03:04:19 -0700  93) 			PMU_POW_BACKLIGHT | PMU_POW_OFF);
4b755999d6e0c (Michael Hanselmann     2006-07-30 03:04:19 -0700  94) 		pmu_wait_complete(&req);
4b755999d6e0c (Michael Hanselmann     2006-07-30 03:04:19 -0700  95) 	}
4b755999d6e0c (Michael Hanselmann     2006-07-30 03:04:19 -0700  96) 
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700  97) 	return 0;
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700  98) }
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700  99) 
0094f2cdcfb6f (Benjamin Herrenschmidt 2007-12-20 15:00:21 +1100 100) static int pmu_backlight_update_status(struct backlight_device *bd)
0094f2cdcfb6f (Benjamin Herrenschmidt 2007-12-20 15:00:21 +1100 101) {
0094f2cdcfb6f (Benjamin Herrenschmidt 2007-12-20 15:00:21 +1100 102) 	unsigned long flags;
0094f2cdcfb6f (Benjamin Herrenschmidt 2007-12-20 15:00:21 +1100 103) 	int rc = 0;
0094f2cdcfb6f (Benjamin Herrenschmidt 2007-12-20 15:00:21 +1100 104) 
0094f2cdcfb6f (Benjamin Herrenschmidt 2007-12-20 15:00:21 +1100 105) 	spin_lock_irqsave(&pmu_backlight_lock, flags);
0094f2cdcfb6f (Benjamin Herrenschmidt 2007-12-20 15:00:21 +1100 106) 	/* Don't update brightness when sleeping */
0094f2cdcfb6f (Benjamin Herrenschmidt 2007-12-20 15:00:21 +1100 107) 	if (!sleeping)
0094f2cdcfb6f (Benjamin Herrenschmidt 2007-12-20 15:00:21 +1100 108) 		rc = __pmu_backlight_update_status(bd);
0094f2cdcfb6f (Benjamin Herrenschmidt 2007-12-20 15:00:21 +1100 109) 	spin_unlock_irqrestore(&pmu_backlight_lock, flags);
0094f2cdcfb6f (Benjamin Herrenschmidt 2007-12-20 15:00:21 +1100 110) 	return rc;
0094f2cdcfb6f (Benjamin Herrenschmidt 2007-12-20 15:00:21 +1100 111) }
0094f2cdcfb6f (Benjamin Herrenschmidt 2007-12-20 15:00:21 +1100 112) 
0094f2cdcfb6f (Benjamin Herrenschmidt 2007-12-20 15:00:21 +1100 113) 
acc2472ed33fc (Lionel Debroux         2010-11-16 14:14:02 +0100 114) static const struct backlight_ops pmu_backlight_data = {
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700 115) 	.update_status	= pmu_backlight_update_status,
599a52d126293 (Richard Purdie         2007-02-10 23:07:48 +0000 116) 
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700 117) };
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700 118) 
4b755999d6e0c (Michael Hanselmann     2006-07-30 03:04:19 -0700 119) #ifdef CONFIG_PM
d565dd3b0824b (Benjamin Herrenschmidt 2006-08-31 21:27:49 -0700 120) void pmu_backlight_set_sleep(int sleep)
4b755999d6e0c (Michael Hanselmann     2006-07-30 03:04:19 -0700 121) {
4b755999d6e0c (Michael Hanselmann     2006-07-30 03:04:19 -0700 122) 	unsigned long flags;
4b755999d6e0c (Michael Hanselmann     2006-07-30 03:04:19 -0700 123) 
4b755999d6e0c (Michael Hanselmann     2006-07-30 03:04:19 -0700 124) 	spin_lock_irqsave(&pmu_backlight_lock, flags);
d565dd3b0824b (Benjamin Herrenschmidt 2006-08-31 21:27:49 -0700 125) 	sleeping = sleep;
fa19d63488bd1 (Benjamin Herrenschmidt 2008-03-03 17:27:46 +1100 126) 	if (pmac_backlight && uses_pmu_bl) {
0094f2cdcfb6f (Benjamin Herrenschmidt 2007-12-20 15:00:21 +1100 127) 		if (sleep) {
0094f2cdcfb6f (Benjamin Herrenschmidt 2007-12-20 15:00:21 +1100 128) 			struct adb_request req;
0094f2cdcfb6f (Benjamin Herrenschmidt 2007-12-20 15:00:21 +1100 129) 
0094f2cdcfb6f (Benjamin Herrenschmidt 2007-12-20 15:00:21 +1100 130) 			pmu_request(&req, NULL, 2, PMU_POWER_CTRL,
0094f2cdcfb6f (Benjamin Herrenschmidt 2007-12-20 15:00:21 +1100 131) 				    PMU_POW_BACKLIGHT | PMU_POW_OFF);
0094f2cdcfb6f (Benjamin Herrenschmidt 2007-12-20 15:00:21 +1100 132) 			pmu_wait_complete(&req);
0094f2cdcfb6f (Benjamin Herrenschmidt 2007-12-20 15:00:21 +1100 133) 		} else
0094f2cdcfb6f (Benjamin Herrenschmidt 2007-12-20 15:00:21 +1100 134) 			__pmu_backlight_update_status(pmac_backlight);
0094f2cdcfb6f (Benjamin Herrenschmidt 2007-12-20 15:00:21 +1100 135) 	}
4b755999d6e0c (Michael Hanselmann     2006-07-30 03:04:19 -0700 136) 	spin_unlock_irqrestore(&pmu_backlight_lock, flags);
4b755999d6e0c (Michael Hanselmann     2006-07-30 03:04:19 -0700 137) }
d565dd3b0824b (Benjamin Herrenschmidt 2006-08-31 21:27:49 -0700 138) #endif /* CONFIG_PM */
4b755999d6e0c (Michael Hanselmann     2006-07-30 03:04:19 -0700 139) 
00f7b29f6e9b8 (Mathieu Malaterre      2017-12-26 15:12:41 +0100 140) void __init pmu_backlight_init(void)
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700 141) {
a19a6ee6cad2b (Matthew Garrett        2010-02-17 16:39:44 -0500 142) 	struct backlight_properties props;
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700 143) 	struct backlight_device *bd;
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700 144) 	char name[10];
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700 145) 	int level, autosave;
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700 146) 
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700 147) 	/* Special case for the old PowerBook since I can't test on it */
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700 148) 	autosave =
71a157e8edca5 (Grant Likely           2010-02-01 21:34:14 -0700 149) 		of_machine_is_compatible("AAPL,3400/2400") ||
71a157e8edca5 (Grant Likely           2010-02-01 21:34:14 -0700 150) 		of_machine_is_compatible("AAPL,3500");
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700 151) 
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700 152) 	if (!autosave &&
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700 153) 	    !pmac_has_backlight_type("pmu") &&
71a157e8edca5 (Grant Likely           2010-02-01 21:34:14 -0700 154) 	    !of_machine_is_compatible("AAPL,PowerBook1998") &&
71a157e8edca5 (Grant Likely           2010-02-01 21:34:14 -0700 155) 	    !of_machine_is_compatible("PowerBook1,1"))
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700 156) 		return;
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700 157) 
d565dd3b0824b (Benjamin Herrenschmidt 2006-08-31 21:27:49 -0700 158) 	snprintf(name, sizeof(name), "pmubl");
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700 159) 
a19a6ee6cad2b (Matthew Garrett        2010-02-17 16:39:44 -0500 160) 	memset(&props, 0, sizeof(struct backlight_properties));
bb7ca747f8d62 (Matthew Garrett        2011-03-22 16:30:21 -0700 161) 	props.type = BACKLIGHT_PLATFORM;
a19a6ee6cad2b (Matthew Garrett        2010-02-17 16:39:44 -0500 162) 	props.max_brightness = FB_BACKLIGHT_LEVELS - 1;
a19a6ee6cad2b (Matthew Garrett        2010-02-17 16:39:44 -0500 163) 	bd = backlight_device_register(name, NULL, NULL, &pmu_backlight_data,
a19a6ee6cad2b (Matthew Garrett        2010-02-17 16:39:44 -0500 164) 				       &props);
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700 165) 	if (IS_ERR(bd)) {
0094f2cdcfb6f (Benjamin Herrenschmidt 2007-12-20 15:00:21 +1100 166) 		printk(KERN_ERR "PMU Backlight registration failed\n");
0094f2cdcfb6f (Benjamin Herrenschmidt 2007-12-20 15:00:21 +1100 167) 		return;
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700 168) 	}
fa19d63488bd1 (Benjamin Herrenschmidt 2008-03-03 17:27:46 +1100 169) 	uses_pmu_bl = 1;
d565dd3b0824b (Benjamin Herrenschmidt 2006-08-31 21:27:49 -0700 170) 	pmu_backlight_init_curve(0x7F, 0x46, 0x0E);
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700 171) 
599a52d126293 (Richard Purdie         2007-02-10 23:07:48 +0000 172) 	level = bd->props.max_brightness;
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700 173) 
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700 174) 	if (autosave) {
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700 175) 		/* read autosaved value if available */
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700 176) 		struct adb_request req;
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700 177) 		pmu_request(&req, NULL, 2, 0xd9, 0);
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700 178) 		pmu_wait_complete(&req);
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700 179) 
d565dd3b0824b (Benjamin Herrenschmidt 2006-08-31 21:27:49 -0700 180) 		level = pmu_backlight_curve_lookup(
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700 181) 				(req.reply[0] >> 4) *
599a52d126293 (Richard Purdie         2007-02-10 23:07:48 +0000 182) 				bd->props.max_brightness / 15);
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700 183) 	}
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700 184) 
599a52d126293 (Richard Purdie         2007-02-10 23:07:48 +0000 185) 	bd->props.brightness = level;
599a52d126293 (Richard Purdie         2007-02-10 23:07:48 +0000 186) 	bd->props.power = FB_BLANK_UNBLANK;
28ee086d5b36a (Richard Purdie         2007-02-08 22:25:09 +0000 187) 	backlight_update_status(bd);
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700 188) 
0094f2cdcfb6f (Benjamin Herrenschmidt 2007-12-20 15:00:21 +1100 189) 	printk(KERN_INFO "PMU Backlight initialized (%s)\n", name);
5474c120aafe7 (Michael Hanselmann     2006-06-25 05:47:08 -0700 190) }