diff options
Diffstat (limited to 'drivers/video/backlight')
-rw-r--r-- | drivers/video/backlight/backlight.c | 79 | ||||
-rw-r--r-- | drivers/video/backlight/corgi_bl.c | 16 | ||||
-rw-r--r-- | drivers/video/backlight/hp680_bl.c | 14 | ||||
-rw-r--r-- | drivers/video/backlight/lcd.c | 67 | ||||
-rw-r--r-- | drivers/video/backlight/locomolcd.c | 12 | ||||
-rw-r--r-- | drivers/video/backlight/progear_bl.c | 16 |
6 files changed, 89 insertions, 115 deletions
diff --git a/drivers/video/backlight/backlight.c b/drivers/video/backlight/backlight.c index 822a373d3346..c65e81ff3578 100644 --- a/drivers/video/backlight/backlight.c +++ b/drivers/video/backlight/backlight.c | |||
@@ -35,14 +35,14 @@ static int fb_notifier_callback(struct notifier_block *self, | |||
35 | return 0; | 35 | return 0; |
36 | 36 | ||
37 | bd = container_of(self, struct backlight_device, fb_notif); | 37 | bd = container_of(self, struct backlight_device, fb_notif); |
38 | mutex_lock(&bd->props_lock); | 38 | mutex_lock(&bd->ops_lock); |
39 | if (bd->props) | 39 | if (bd->ops) |
40 | if (!bd->props->check_fb || | 40 | if (!bd->ops->check_fb || |
41 | bd->props->check_fb(evdata->info)) { | 41 | bd->ops->check_fb(evdata->info)) { |
42 | bd->props->fb_blank = *(int *)evdata->data; | 42 | bd->props.fb_blank = *(int *)evdata->data; |
43 | backlight_update_status(bd); | 43 | backlight_update_status(bd); |
44 | } | 44 | } |
45 | mutex_unlock(&bd->props_lock); | 45 | mutex_unlock(&bd->ops_lock); |
46 | return 0; | 46 | return 0; |
47 | } | 47 | } |
48 | 48 | ||
@@ -71,15 +71,9 @@ static inline void backlight_unregister_fb(struct backlight_device *bd) | |||
71 | 71 | ||
72 | static ssize_t backlight_show_power(struct class_device *cdev, char *buf) | 72 | static ssize_t backlight_show_power(struct class_device *cdev, char *buf) |
73 | { | 73 | { |
74 | int rc = -ENXIO; | ||
75 | struct backlight_device *bd = to_backlight_device(cdev); | 74 | struct backlight_device *bd = to_backlight_device(cdev); |
76 | 75 | ||
77 | mutex_lock(&bd->props_lock); | 76 | return sprintf(buf, "%d\n", bd->props.power); |
78 | if (bd->props) | ||
79 | rc = sprintf(buf, "%d\n", bd->props->power); | ||
80 | mutex_unlock(&bd->props_lock); | ||
81 | |||
82 | return rc; | ||
83 | } | 77 | } |
84 | 78 | ||
85 | static ssize_t backlight_store_power(struct class_device *cdev, const char *buf, size_t count) | 79 | static ssize_t backlight_store_power(struct class_device *cdev, const char *buf, size_t count) |
@@ -95,29 +89,23 @@ static ssize_t backlight_store_power(struct class_device *cdev, const char *buf, | |||
95 | if (size != count) | 89 | if (size != count) |
96 | return -EINVAL; | 90 | return -EINVAL; |
97 | 91 | ||
98 | mutex_lock(&bd->props_lock); | 92 | mutex_lock(&bd->ops_lock); |
99 | if (bd->props) { | 93 | if (bd->ops) { |
100 | pr_debug("backlight: set power to %d\n", power); | 94 | pr_debug("backlight: set power to %d\n", power); |
101 | bd->props->power = power; | 95 | bd->props.power = power; |
102 | backlight_update_status(bd); | 96 | backlight_update_status(bd); |
103 | rc = count; | 97 | rc = count; |
104 | } | 98 | } |
105 | mutex_unlock(&bd->props_lock); | 99 | mutex_unlock(&bd->ops_lock); |
106 | 100 | ||
107 | return rc; | 101 | return rc; |
108 | } | 102 | } |
109 | 103 | ||
110 | static ssize_t backlight_show_brightness(struct class_device *cdev, char *buf) | 104 | static ssize_t backlight_show_brightness(struct class_device *cdev, char *buf) |
111 | { | 105 | { |
112 | int rc = -ENXIO; | ||
113 | struct backlight_device *bd = to_backlight_device(cdev); | 106 | struct backlight_device *bd = to_backlight_device(cdev); |
114 | 107 | ||
115 | mutex_lock(&bd->props_lock); | 108 | return sprintf(buf, "%d\n", bd->props.brightness); |
116 | if (bd->props) | ||
117 | rc = sprintf(buf, "%d\n", bd->props->brightness); | ||
118 | mutex_unlock(&bd->props_lock); | ||
119 | |||
120 | return rc; | ||
121 | } | 109 | } |
122 | 110 | ||
123 | static ssize_t backlight_store_brightness(struct class_device *cdev, const char *buf, size_t count) | 111 | static ssize_t backlight_store_brightness(struct class_device *cdev, const char *buf, size_t count) |
@@ -133,34 +121,28 @@ static ssize_t backlight_store_brightness(struct class_device *cdev, const char | |||
133 | if (size != count) | 121 | if (size != count) |
134 | return -EINVAL; | 122 | return -EINVAL; |
135 | 123 | ||
136 | mutex_lock(&bd->props_lock); | 124 | mutex_lock(&bd->ops_lock); |
137 | if (bd->props) { | 125 | if (bd->ops) { |
138 | if (brightness > bd->props->max_brightness) | 126 | if (brightness > bd->props.max_brightness) |
139 | rc = -EINVAL; | 127 | rc = -EINVAL; |
140 | else { | 128 | else { |
141 | pr_debug("backlight: set brightness to %d\n", | 129 | pr_debug("backlight: set brightness to %d\n", |
142 | brightness); | 130 | brightness); |
143 | bd->props->brightness = brightness; | 131 | bd->props.brightness = brightness; |
144 | backlight_update_status(bd); | 132 | backlight_update_status(bd); |
145 | rc = count; | 133 | rc = count; |
146 | } | 134 | } |
147 | } | 135 | } |
148 | mutex_unlock(&bd->props_lock); | 136 | mutex_unlock(&bd->ops_lock); |
149 | 137 | ||
150 | return rc; | 138 | return rc; |
151 | } | 139 | } |
152 | 140 | ||
153 | static ssize_t backlight_show_max_brightness(struct class_device *cdev, char *buf) | 141 | static ssize_t backlight_show_max_brightness(struct class_device *cdev, char *buf) |
154 | { | 142 | { |
155 | int rc = -ENXIO; | ||
156 | struct backlight_device *bd = to_backlight_device(cdev); | 143 | struct backlight_device *bd = to_backlight_device(cdev); |
157 | 144 | ||
158 | mutex_lock(&bd->props_lock); | 145 | return sprintf(buf, "%d\n", bd->props.max_brightness); |
159 | if (bd->props) | ||
160 | rc = sprintf(buf, "%d\n", bd->props->max_brightness); | ||
161 | mutex_unlock(&bd->props_lock); | ||
162 | |||
163 | return rc; | ||
164 | } | 146 | } |
165 | 147 | ||
166 | static ssize_t backlight_show_actual_brightness(struct class_device *cdev, | 148 | static ssize_t backlight_show_actual_brightness(struct class_device *cdev, |
@@ -169,10 +151,10 @@ static ssize_t backlight_show_actual_brightness(struct class_device *cdev, | |||
169 | int rc = -ENXIO; | 151 | int rc = -ENXIO; |
170 | struct backlight_device *bd = to_backlight_device(cdev); | 152 | struct backlight_device *bd = to_backlight_device(cdev); |
171 | 153 | ||
172 | mutex_lock(&bd->props_lock); | 154 | mutex_lock(&bd->ops_lock); |
173 | if (bd->props && bd->props->get_brightness) | 155 | if (bd->ops && bd->ops->get_brightness) |
174 | rc = sprintf(buf, "%d\n", bd->props->get_brightness(bd)); | 156 | rc = sprintf(buf, "%d\n", bd->ops->get_brightness(bd)); |
175 | mutex_unlock(&bd->props_lock); | 157 | mutex_unlock(&bd->ops_lock); |
176 | 158 | ||
177 | return rc; | 159 | return rc; |
178 | } | 160 | } |
@@ -211,7 +193,7 @@ static const struct class_device_attribute bl_class_device_attributes[] = { | |||
211 | * respective framebuffer device). | 193 | * respective framebuffer device). |
212 | * @devdata: an optional pointer to be stored in the class_device. The | 194 | * @devdata: an optional pointer to be stored in the class_device. The |
213 | * methods may retrieve it by using class_get_devdata(&bd->class_dev). | 195 | * methods may retrieve it by using class_get_devdata(&bd->class_dev). |
214 | * @bp: the backlight properties structure. | 196 | * @ops: the backlight operations structure. |
215 | * | 197 | * |
216 | * Creates and registers new backlight class_device. Returns either an | 198 | * Creates and registers new backlight class_device. Returns either an |
217 | * ERR_PTR() or a pointer to the newly allocated device. | 199 | * ERR_PTR() or a pointer to the newly allocated device. |
@@ -219,21 +201,20 @@ static const struct class_device_attribute bl_class_device_attributes[] = { | |||
219 | struct backlight_device *backlight_device_register(const char *name, | 201 | struct backlight_device *backlight_device_register(const char *name, |
220 | struct device *dev, | 202 | struct device *dev, |
221 | void *devdata, | 203 | void *devdata, |
222 | struct backlight_properties *bp) | 204 | struct backlight_ops *ops) |
223 | { | 205 | { |
224 | int i, rc; | 206 | int i, rc; |
225 | struct backlight_device *new_bd; | 207 | struct backlight_device *new_bd; |
226 | 208 | ||
227 | pr_debug("backlight_device_alloc: name=%s\n", name); | 209 | pr_debug("backlight_device_alloc: name=%s\n", name); |
228 | 210 | ||
229 | new_bd = kmalloc(sizeof(struct backlight_device), GFP_KERNEL); | 211 | new_bd = kzalloc(sizeof(struct backlight_device), GFP_KERNEL); |
230 | if (!new_bd) | 212 | if (!new_bd) |
231 | return ERR_PTR(-ENOMEM); | 213 | return ERR_PTR(-ENOMEM); |
232 | 214 | ||
233 | mutex_init(&new_bd->update_lock); | 215 | mutex_init(&new_bd->update_lock); |
234 | mutex_init(&new_bd->props_lock); | 216 | mutex_init(&new_bd->ops_lock); |
235 | new_bd->props = bp; | 217 | new_bd->ops = ops; |
236 | memset(&new_bd->class_dev, 0, sizeof(new_bd->class_dev)); | ||
237 | new_bd->class_dev.class = &backlight_class; | 218 | new_bd->class_dev.class = &backlight_class; |
238 | new_bd->class_dev.dev = dev; | 219 | new_bd->class_dev.dev = dev; |
239 | strlcpy(new_bd->class_dev.class_id, name, KOBJ_NAME_LEN); | 220 | strlcpy(new_bd->class_dev.class_id, name, KOBJ_NAME_LEN); |
@@ -302,9 +283,9 @@ void backlight_device_unregister(struct backlight_device *bd) | |||
302 | class_device_remove_file(&bd->class_dev, | 283 | class_device_remove_file(&bd->class_dev, |
303 | &bl_class_device_attributes[i]); | 284 | &bl_class_device_attributes[i]); |
304 | 285 | ||
305 | mutex_lock(&bd->props_lock); | 286 | mutex_lock(&bd->ops_lock); |
306 | bd->props = NULL; | 287 | bd->ops = NULL; |
307 | mutex_unlock(&bd->props_lock); | 288 | mutex_unlock(&bd->ops_lock); |
308 | 289 | ||
309 | backlight_unregister_fb(bd); | 290 | backlight_unregister_fb(bd); |
310 | 291 | ||
diff --git a/drivers/video/backlight/corgi_bl.c b/drivers/video/backlight/corgi_bl.c index c1eba0e8a1b0..05f36811ac95 100644 --- a/drivers/video/backlight/corgi_bl.c +++ b/drivers/video/backlight/corgi_bl.c | |||
@@ -34,11 +34,11 @@ static unsigned long corgibl_flags; | |||
34 | static int corgibl_send_intensity(struct backlight_device *bd) | 34 | static int corgibl_send_intensity(struct backlight_device *bd) |
35 | { | 35 | { |
36 | void (*corgi_kick_batt)(void); | 36 | void (*corgi_kick_batt)(void); |
37 | int intensity = bd->props->brightness; | 37 | int intensity = bd->props.brightness; |
38 | 38 | ||
39 | if (bd->props->power != FB_BLANK_UNBLANK) | 39 | if (bd->props.power != FB_BLANK_UNBLANK) |
40 | intensity = 0; | 40 | intensity = 0; |
41 | if (bd->props->fb_blank != FB_BLANK_UNBLANK) | 41 | if (bd->props.fb_blank != FB_BLANK_UNBLANK) |
42 | intensity = 0; | 42 | intensity = 0; |
43 | if (corgibl_flags & CORGIBL_SUSPENDED) | 43 | if (corgibl_flags & CORGIBL_SUSPENDED) |
44 | intensity = 0; | 44 | intensity = 0; |
@@ -103,7 +103,7 @@ void corgibl_limit_intensity(int limit) | |||
103 | EXPORT_SYMBOL(corgibl_limit_intensity); | 103 | EXPORT_SYMBOL(corgibl_limit_intensity); |
104 | 104 | ||
105 | 105 | ||
106 | static struct backlight_properties corgibl_data = { | 106 | static struct backlight_ops corgibl_ops = { |
107 | .get_brightness = corgibl_get_intensity, | 107 | .get_brightness = corgibl_get_intensity, |
108 | .update_status = corgibl_send_intensity, | 108 | .update_status = corgibl_send_intensity, |
109 | }; | 109 | }; |
@@ -113,19 +113,19 @@ static int corgibl_probe(struct platform_device *pdev) | |||
113 | struct corgibl_machinfo *machinfo = pdev->dev.platform_data; | 113 | struct corgibl_machinfo *machinfo = pdev->dev.platform_data; |
114 | 114 | ||
115 | bl_machinfo = machinfo; | 115 | bl_machinfo = machinfo; |
116 | corgibl_data.max_brightness = machinfo->max_intensity; | ||
117 | if (!machinfo->limit_mask) | 116 | if (!machinfo->limit_mask) |
118 | machinfo->limit_mask = -1; | 117 | machinfo->limit_mask = -1; |
119 | 118 | ||
120 | corgi_backlight_device = backlight_device_register ("corgi-bl", | 119 | corgi_backlight_device = backlight_device_register ("corgi-bl", |
121 | &pdev->dev, NULL, &corgibl_data); | 120 | &pdev->dev, NULL, &corgibl_ops); |
122 | if (IS_ERR (corgi_backlight_device)) | 121 | if (IS_ERR (corgi_backlight_device)) |
123 | return PTR_ERR (corgi_backlight_device); | 122 | return PTR_ERR (corgi_backlight_device); |
124 | 123 | ||
125 | platform_set_drvdata(pdev, corgi_backlight_device); | 124 | platform_set_drvdata(pdev, corgi_backlight_device); |
126 | 125 | ||
127 | corgibl_data.power = FB_BLANK_UNBLANK; | 126 | corgi_backlight_device->props.max_brightness = machinfo->max_intensity; |
128 | corgibl_data.brightness = machinfo->default_intensity; | 127 | corgi_backlight_device->props.power = FB_BLANK_UNBLANK; |
128 | corgi_backlight_device->props.brightness = machinfo->default_intensity; | ||
129 | corgibl_send_intensity(corgi_backlight_device); | 129 | corgibl_send_intensity(corgi_backlight_device); |
130 | 130 | ||
131 | printk("Corgi Backlight Driver Initialized.\n"); | 131 | printk("Corgi Backlight Driver Initialized.\n"); |
diff --git a/drivers/video/backlight/hp680_bl.c b/drivers/video/backlight/hp680_bl.c index e7444c8f289d..0899fccbd570 100644 --- a/drivers/video/backlight/hp680_bl.c +++ b/drivers/video/backlight/hp680_bl.c | |||
@@ -33,11 +33,11 @@ static void hp680bl_send_intensity(struct backlight_device *bd) | |||
33 | { | 33 | { |
34 | unsigned long flags; | 34 | unsigned long flags; |
35 | u16 v; | 35 | u16 v; |
36 | int intensity = bd->props->brightness; | 36 | int intensity = bd->props.brightness; |
37 | 37 | ||
38 | if (bd->props->power != FB_BLANK_UNBLANK) | 38 | if (bd->props.power != FB_BLANK_UNBLANK) |
39 | intensity = 0; | 39 | intensity = 0; |
40 | if (bd->props->fb_blank != FB_BLANK_UNBLANK) | 40 | if (bd->props.fb_blank != FB_BLANK_UNBLANK) |
41 | intensity = 0; | 41 | intensity = 0; |
42 | if (hp680bl_suspended) | 42 | if (hp680bl_suspended) |
43 | intensity = 0; | 43 | intensity = 0; |
@@ -98,8 +98,7 @@ static int hp680bl_get_intensity(struct backlight_device *bd) | |||
98 | return current_intensity; | 98 | return current_intensity; |
99 | } | 99 | } |
100 | 100 | ||
101 | static struct backlight_properties hp680bl_data = { | 101 | static struct backlight_ops hp680bl_ops = { |
102 | .max_brightness = HP680_MAX_INTENSITY, | ||
103 | .get_brightness = hp680bl_get_intensity, | 102 | .get_brightness = hp680bl_get_intensity, |
104 | .update_status = hp680bl_set_intensity, | 103 | .update_status = hp680bl_set_intensity, |
105 | }; | 104 | }; |
@@ -109,13 +108,14 @@ static int __init hp680bl_probe(struct platform_device *pdev) | |||
109 | struct backlight_device *bd; | 108 | struct backlight_device *bd; |
110 | 109 | ||
111 | bd = backlight_device_register ("hp680-bl", &pdev->dev, NULL, | 110 | bd = backlight_device_register ("hp680-bl", &pdev->dev, NULL, |
112 | &hp680bl_data); | 111 | &hp680bl_ops); |
113 | if (IS_ERR(bd)) | 112 | if (IS_ERR(bd)) |
114 | return PTR_ERR(bd); | 113 | return PTR_ERR(bd); |
115 | 114 | ||
116 | platform_set_drvdata(pdev, bd); | 115 | platform_set_drvdata(pdev, bd); |
117 | 116 | ||
118 | bd->props->brightness = HP680_DEFAULT_INTENSITY; | 117 | bd->props.max_brightness = HP680_MAX_INTENSITY; |
118 | bd->props.brightness = HP680_DEFAULT_INTENSITY; | ||
119 | hp680bl_send_intensity(bd); | 119 | hp680bl_send_intensity(bd); |
120 | 120 | ||
121 | return 0; | 121 | return 0; |
diff --git a/drivers/video/backlight/lcd.c b/drivers/video/backlight/lcd.c index 430ba018a896..6ef8f0a7a137 100644 --- a/drivers/video/backlight/lcd.c +++ b/drivers/video/backlight/lcd.c | |||
@@ -31,11 +31,11 @@ static int fb_notifier_callback(struct notifier_block *self, | |||
31 | return 0; | 31 | return 0; |
32 | 32 | ||
33 | ld = container_of(self, struct lcd_device, fb_notif); | 33 | ld = container_of(self, struct lcd_device, fb_notif); |
34 | mutex_lock(&ld->props_lock); | 34 | mutex_lock(&ld->ops_lock); |
35 | if (ld->props) | 35 | if (ld->ops) |
36 | if (!ld->props->check_fb || ld->props->check_fb(evdata->info)) | 36 | if (!ld->ops->check_fb || ld->ops->check_fb(evdata->info)) |
37 | ld->props->set_power(ld, *(int *)evdata->data); | 37 | ld->ops->set_power(ld, *(int *)evdata->data); |
38 | mutex_unlock(&ld->props_lock); | 38 | mutex_unlock(&ld->ops_lock); |
39 | return 0; | 39 | return 0; |
40 | } | 40 | } |
41 | 41 | ||
@@ -66,12 +66,12 @@ static ssize_t lcd_show_power(struct class_device *cdev, char *buf) | |||
66 | int rc; | 66 | int rc; |
67 | struct lcd_device *ld = to_lcd_device(cdev); | 67 | struct lcd_device *ld = to_lcd_device(cdev); |
68 | 68 | ||
69 | mutex_lock(&ld->props_lock); | 69 | mutex_lock(&ld->ops_lock); |
70 | if (ld->props && ld->props->get_power) | 70 | if (ld->ops && ld->ops->get_power) |
71 | rc = sprintf(buf, "%d\n", ld->props->get_power(ld)); | 71 | rc = sprintf(buf, "%d\n", ld->ops->get_power(ld)); |
72 | else | 72 | else |
73 | rc = -ENXIO; | 73 | rc = -ENXIO; |
74 | mutex_unlock(&ld->props_lock); | 74 | mutex_unlock(&ld->ops_lock); |
75 | 75 | ||
76 | return rc; | 76 | return rc; |
77 | } | 77 | } |
@@ -89,13 +89,13 @@ static ssize_t lcd_store_power(struct class_device *cdev, const char *buf, size_ | |||
89 | if (size != count) | 89 | if (size != count) |
90 | return -EINVAL; | 90 | return -EINVAL; |
91 | 91 | ||
92 | mutex_lock(&ld->props_lock); | 92 | mutex_lock(&ld->ops_lock); |
93 | if (ld->props && ld->props->set_power) { | 93 | if (ld->ops && ld->ops->set_power) { |
94 | pr_debug("lcd: set power to %d\n", power); | 94 | pr_debug("lcd: set power to %d\n", power); |
95 | ld->props->set_power(ld, power); | 95 | ld->ops->set_power(ld, power); |
96 | rc = count; | 96 | rc = count; |
97 | } | 97 | } |
98 | mutex_unlock(&ld->props_lock); | 98 | mutex_unlock(&ld->ops_lock); |
99 | 99 | ||
100 | return rc; | 100 | return rc; |
101 | } | 101 | } |
@@ -105,10 +105,10 @@ static ssize_t lcd_show_contrast(struct class_device *cdev, char *buf) | |||
105 | int rc = -ENXIO; | 105 | int rc = -ENXIO; |
106 | struct lcd_device *ld = to_lcd_device(cdev); | 106 | struct lcd_device *ld = to_lcd_device(cdev); |
107 | 107 | ||
108 | mutex_lock(&ld->props_lock); | 108 | mutex_lock(&ld->ops_lock); |
109 | if (ld->props && ld->props->get_contrast) | 109 | if (ld->ops && ld->ops->get_contrast) |
110 | rc = sprintf(buf, "%d\n", ld->props->get_contrast(ld)); | 110 | rc = sprintf(buf, "%d\n", ld->ops->get_contrast(ld)); |
111 | mutex_unlock(&ld->props_lock); | 111 | mutex_unlock(&ld->ops_lock); |
112 | 112 | ||
113 | return rc; | 113 | return rc; |
114 | } | 114 | } |
@@ -126,28 +126,22 @@ static ssize_t lcd_store_contrast(struct class_device *cdev, const char *buf, si | |||
126 | if (size != count) | 126 | if (size != count) |
127 | return -EINVAL; | 127 | return -EINVAL; |
128 | 128 | ||
129 | mutex_lock(&ld->props_lock); | 129 | mutex_lock(&ld->ops_lock); |
130 | if (ld->props && ld->props->set_contrast) { | 130 | if (ld->ops && ld->ops->set_contrast) { |
131 | pr_debug("lcd: set contrast to %d\n", contrast); | 131 | pr_debug("lcd: set contrast to %d\n", contrast); |
132 | ld->props->set_contrast(ld, contrast); | 132 | ld->ops->set_contrast(ld, contrast); |
133 | rc = count; | 133 | rc = count; |
134 | } | 134 | } |
135 | mutex_unlock(&ld->props_lock); | 135 | mutex_unlock(&ld->ops_lock); |
136 | 136 | ||
137 | return rc; | 137 | return rc; |
138 | } | 138 | } |
139 | 139 | ||
140 | static ssize_t lcd_show_max_contrast(struct class_device *cdev, char *buf) | 140 | static ssize_t lcd_show_max_contrast(struct class_device *cdev, char *buf) |
141 | { | 141 | { |
142 | int rc = -ENXIO; | ||
143 | struct lcd_device *ld = to_lcd_device(cdev); | 142 | struct lcd_device *ld = to_lcd_device(cdev); |
144 | 143 | ||
145 | mutex_lock(&ld->props_lock); | 144 | return sprintf(buf, "%d\n", ld->props.max_contrast); |
146 | if (ld->props) | ||
147 | rc = sprintf(buf, "%d\n", ld->props->max_contrast); | ||
148 | mutex_unlock(&ld->props_lock); | ||
149 | |||
150 | return rc; | ||
151 | } | 145 | } |
152 | 146 | ||
153 | static void lcd_class_release(struct class_device *dev) | 147 | static void lcd_class_release(struct class_device *dev) |
@@ -180,27 +174,26 @@ static const struct class_device_attribute lcd_class_device_attributes[] = { | |||
180 | * respective framebuffer device). | 174 | * respective framebuffer device). |
181 | * @devdata: an optional pointer to be stored in the class_device. The | 175 | * @devdata: an optional pointer to be stored in the class_device. The |
182 | * methods may retrieve it by using class_get_devdata(ld->class_dev). | 176 | * methods may retrieve it by using class_get_devdata(ld->class_dev). |
183 | * @lp: the lcd properties structure. | 177 | * @ops: the lcd operations structure. |
184 | * | 178 | * |
185 | * Creates and registers a new lcd class_device. Returns either an ERR_PTR() | 179 | * Creates and registers a new lcd class_device. Returns either an ERR_PTR() |
186 | * or a pointer to the newly allocated device. | 180 | * or a pointer to the newly allocated device. |
187 | */ | 181 | */ |
188 | struct lcd_device *lcd_device_register(const char *name, void *devdata, | 182 | struct lcd_device *lcd_device_register(const char *name, void *devdata, |
189 | struct lcd_properties *lp) | 183 | struct lcd_ops *ops) |
190 | { | 184 | { |
191 | int i, rc; | 185 | int i, rc; |
192 | struct lcd_device *new_ld; | 186 | struct lcd_device *new_ld; |
193 | 187 | ||
194 | pr_debug("lcd_device_register: name=%s\n", name); | 188 | pr_debug("lcd_device_register: name=%s\n", name); |
195 | 189 | ||
196 | new_ld = kmalloc(sizeof(struct lcd_device), GFP_KERNEL); | 190 | new_ld = kzalloc(sizeof(struct lcd_device), GFP_KERNEL); |
197 | if (!new_ld) | 191 | if (!new_ld) |
198 | return ERR_PTR(-ENOMEM); | 192 | return ERR_PTR(-ENOMEM); |
199 | 193 | ||
200 | mutex_init(&new_ld->props_lock); | 194 | mutex_init(&new_ld->ops_lock); |
201 | mutex_init(&new_ld->update_lock); | 195 | mutex_init(&new_ld->update_lock); |
202 | new_ld->props = lp; | 196 | new_ld->ops = ops; |
203 | memset(&new_ld->class_dev, 0, sizeof(new_ld->class_dev)); | ||
204 | new_ld->class_dev.class = &lcd_class; | 197 | new_ld->class_dev.class = &lcd_class; |
205 | strlcpy(new_ld->class_dev.class_id, name, KOBJ_NAME_LEN); | 198 | strlcpy(new_ld->class_dev.class_id, name, KOBJ_NAME_LEN); |
206 | class_set_devdata(&new_ld->class_dev, devdata); | 199 | class_set_devdata(&new_ld->class_dev, devdata); |
@@ -253,9 +246,9 @@ void lcd_device_unregister(struct lcd_device *ld) | |||
253 | class_device_remove_file(&ld->class_dev, | 246 | class_device_remove_file(&ld->class_dev, |
254 | &lcd_class_device_attributes[i]); | 247 | &lcd_class_device_attributes[i]); |
255 | 248 | ||
256 | mutex_lock(&ld->props_lock); | 249 | mutex_lock(&ld->ops_lock); |
257 | ld->props = NULL; | 250 | ld->ops = NULL; |
258 | mutex_unlock(&ld->props_lock); | 251 | mutex_unlock(&ld->ops_lock); |
259 | lcd_unregister_fb(ld); | 252 | lcd_unregister_fb(ld); |
260 | class_device_unregister(&ld->class_dev); | 253 | class_device_unregister(&ld->class_dev); |
261 | } | 254 | } |
diff --git a/drivers/video/backlight/locomolcd.c b/drivers/video/backlight/locomolcd.c index 3c5abbf0d042..d1312477813e 100644 --- a/drivers/video/backlight/locomolcd.c +++ b/drivers/video/backlight/locomolcd.c | |||
@@ -112,11 +112,11 @@ static int current_intensity; | |||
112 | 112 | ||
113 | static int locomolcd_set_intensity(struct backlight_device *bd) | 113 | static int locomolcd_set_intensity(struct backlight_device *bd) |
114 | { | 114 | { |
115 | int intensity = bd->props->brightness; | 115 | int intensity = bd->props.brightness; |
116 | 116 | ||
117 | if (bd->props->power != FB_BLANK_UNBLANK) | 117 | if (bd->props.power != FB_BLANK_UNBLANK) |
118 | intensity = 0; | 118 | intensity = 0; |
119 | if (bd->props->fb_blank != FB_BLANK_UNBLANK) | 119 | if (bd->props.fb_blank != FB_BLANK_UNBLANK) |
120 | intensity = 0; | 120 | intensity = 0; |
121 | if (locomolcd_flags & LOCOMOLCD_SUSPENDED) | 121 | if (locomolcd_flags & LOCOMOLCD_SUSPENDED) |
122 | intensity = 0; | 122 | intensity = 0; |
@@ -141,10 +141,9 @@ static int locomolcd_get_intensity(struct backlight_device *bd) | |||
141 | return current_intensity; | 141 | return current_intensity; |
142 | } | 142 | } |
143 | 143 | ||
144 | static struct backlight_properties locomobl_data = { | 144 | static struct backlight_ops locomobl_data = { |
145 | .get_brightness = locomolcd_get_intensity, | 145 | .get_brightness = locomolcd_get_intensity, |
146 | .update_status = locomolcd_set_intensity, | 146 | .update_status = locomolcd_set_intensity, |
147 | .max_brightness = 4, | ||
148 | }; | 147 | }; |
149 | 148 | ||
150 | #ifdef CONFIG_PM | 149 | #ifdef CONFIG_PM |
@@ -189,7 +188,8 @@ static int locomolcd_probe(struct locomo_dev *ldev) | |||
189 | return PTR_ERR (locomolcd_bl_device); | 188 | return PTR_ERR (locomolcd_bl_device); |
190 | 189 | ||
191 | /* Set up frontlight so that screen is readable */ | 190 | /* Set up frontlight so that screen is readable */ |
192 | locomobl_data.brightness = 2; | 191 | locomolcd_bl_device->props.max_brightness = 4, |
192 | locomolcd_bl_device->props.brightness = 2; | ||
193 | locomolcd_set_intensity(locomolcd_bl_device); | 193 | locomolcd_set_intensity(locomolcd_bl_device); |
194 | 194 | ||
195 | return 0; | 195 | return 0; |
diff --git a/drivers/video/backlight/progear_bl.c b/drivers/video/backlight/progear_bl.c index 42d6acd96c1a..702269357861 100644 --- a/drivers/video/backlight/progear_bl.c +++ b/drivers/video/backlight/progear_bl.c | |||
@@ -35,11 +35,11 @@ static struct pci_dev *sb_dev = NULL; | |||
35 | 35 | ||
36 | static int progearbl_set_intensity(struct backlight_device *bd) | 36 | static int progearbl_set_intensity(struct backlight_device *bd) |
37 | { | 37 | { |
38 | int intensity = bd->props->brightness; | 38 | int intensity = bd->props.brightness; |
39 | 39 | ||
40 | if (bd->props->power != FB_BLANK_UNBLANK) | 40 | if (bd->props.power != FB_BLANK_UNBLANK) |
41 | intensity = 0; | 41 | intensity = 0; |
42 | if (bd->props->fb_blank != FB_BLANK_UNBLANK) | 42 | if (bd->props.fb_blank != FB_BLANK_UNBLANK) |
43 | intensity = 0; | 43 | intensity = 0; |
44 | 44 | ||
45 | pci_write_config_byte(pmu_dev, PMU_LPCR, intensity + HW_LEVEL_MIN); | 45 | pci_write_config_byte(pmu_dev, PMU_LPCR, intensity + HW_LEVEL_MIN); |
@@ -55,7 +55,7 @@ static int progearbl_get_intensity(struct backlight_device *bd) | |||
55 | return intensity - HW_LEVEL_MIN; | 55 | return intensity - HW_LEVEL_MIN; |
56 | } | 56 | } |
57 | 57 | ||
58 | static struct backlight_properties progearbl_data = { | 58 | static struct backlight_ops progearbl_ops = { |
59 | .get_brightness = progearbl_get_intensity, | 59 | .get_brightness = progearbl_get_intensity, |
60 | .update_status = progearbl_set_intensity, | 60 | .update_status = progearbl_set_intensity, |
61 | }; | 61 | }; |
@@ -84,15 +84,15 @@ static int progearbl_probe(struct platform_device *pdev) | |||
84 | 84 | ||
85 | progear_backlight_device = backlight_device_register("progear-bl", | 85 | progear_backlight_device = backlight_device_register("progear-bl", |
86 | &pdev->dev, NULL, | 86 | &pdev->dev, NULL, |
87 | &progearbl_data); | 87 | &progearbl_ops); |
88 | if (IS_ERR(progear_backlight_device)) | 88 | if (IS_ERR(progear_backlight_device)) |
89 | return PTR_ERR(progear_backlight_device); | 89 | return PTR_ERR(progear_backlight_device); |
90 | 90 | ||
91 | platform_set_drvdata(pdev, progear_backlight_device); | 91 | platform_set_drvdata(pdev, progear_backlight_device); |
92 | 92 | ||
93 | progearbl_data.power = FB_BLANK_UNBLANK; | 93 | progear_backlight_device->props.power = FB_BLANK_UNBLANK; |
94 | progearbl_data.brightness = HW_LEVEL_MAX - HW_LEVEL_MIN; | 94 | progear_backlight_device->props.brightness = HW_LEVEL_MAX - HW_LEVEL_MIN; |
95 | progearbl_data.max_brightness = HW_LEVEL_MAX - HW_LEVEL_MIN; | 95 | progear_backlight_device->props.max_brightness = HW_LEVEL_MAX - HW_LEVEL_MIN; |
96 | progearbl_set_intensity(progear_backlight_device); | 96 | progearbl_set_intensity(progear_backlight_device); |
97 | 97 | ||
98 | return 0; | 98 | return 0; |