diff options
| -rw-r--r-- | drivers/video/fbmem.c | 16 | ||||
| -rw-r--r-- | drivers/video/fbsysfs.c | 163 | ||||
| -rw-r--r-- | include/linux/fb.h | 8 |
3 files changed, 103 insertions, 84 deletions
diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c index 93ffcdd95f50..e973a87fbb01 100644 --- a/drivers/video/fbmem.c +++ b/drivers/video/fbmem.c | |||
| @@ -1296,14 +1296,14 @@ register_framebuffer(struct fb_info *fb_info) | |||
| 1296 | break; | 1296 | break; |
| 1297 | fb_info->node = i; | 1297 | fb_info->node = i; |
| 1298 | 1298 | ||
| 1299 | fb_info->class_device = class_device_create(fb_class, NULL, MKDEV(FB_MAJOR, i), | 1299 | fb_info->dev = device_create(fb_class, fb_info->device, |
| 1300 | fb_info->device, "fb%d", i); | 1300 | MKDEV(FB_MAJOR, i), "fb%d", i); |
| 1301 | if (IS_ERR(fb_info->class_device)) { | 1301 | if (IS_ERR(fb_info->dev)) { |
| 1302 | /* Not fatal */ | 1302 | /* Not fatal */ |
| 1303 | printk(KERN_WARNING "Unable to create class_device for framebuffer %d; errno = %ld\n", i, PTR_ERR(fb_info->class_device)); | 1303 | printk(KERN_WARNING "Unable to create device for framebuffer %d; errno = %ld\n", i, PTR_ERR(fb_info->dev)); |
| 1304 | fb_info->class_device = NULL; | 1304 | fb_info->dev = NULL; |
| 1305 | } else | 1305 | } else |
| 1306 | fb_init_class_device(fb_info); | 1306 | fb_init_device(fb_info); |
| 1307 | 1307 | ||
| 1308 | if (fb_info->pixmap.addr == NULL) { | 1308 | if (fb_info->pixmap.addr == NULL) { |
| 1309 | fb_info->pixmap.addr = kmalloc(FBPIXMAPSIZE, GFP_KERNEL); | 1309 | fb_info->pixmap.addr = kmalloc(FBPIXMAPSIZE, GFP_KERNEL); |
| @@ -1356,8 +1356,8 @@ unregister_framebuffer(struct fb_info *fb_info) | |||
| 1356 | fb_destroy_modelist(&fb_info->modelist); | 1356 | fb_destroy_modelist(&fb_info->modelist); |
| 1357 | registered_fb[i]=NULL; | 1357 | registered_fb[i]=NULL; |
| 1358 | num_registered_fb--; | 1358 | num_registered_fb--; |
| 1359 | fb_cleanup_class_device(fb_info); | 1359 | fb_cleanup_device(fb_info); |
| 1360 | class_device_destroy(fb_class, MKDEV(FB_MAJOR, i)); | 1360 | device_destroy(fb_class, MKDEV(FB_MAJOR, i)); |
| 1361 | event.info = fb_info; | 1361 | event.info = fb_info; |
| 1362 | fb_notifier_call_chain(FB_EVENT_FB_UNREGISTERED, &event); | 1362 | fb_notifier_call_chain(FB_EVENT_FB_UNREGISTERED, &event); |
| 1363 | return 0; | 1363 | return 0; |
diff --git a/drivers/video/fbsysfs.c b/drivers/video/fbsysfs.c index d3a50417ed9a..323bdf6fc7d5 100644 --- a/drivers/video/fbsysfs.c +++ b/drivers/video/fbsysfs.c | |||
| @@ -73,7 +73,7 @@ EXPORT_SYMBOL(framebuffer_alloc); | |||
| 73 | * | 73 | * |
| 74 | * @info: frame buffer info structure | 74 | * @info: frame buffer info structure |
| 75 | * | 75 | * |
| 76 | * Drop the reference count of the class_device embedded in the | 76 | * Drop the reference count of the device embedded in the |
| 77 | * framebuffer info structure. | 77 | * framebuffer info structure. |
| 78 | * | 78 | * |
| 79 | */ | 79 | */ |
| @@ -120,10 +120,10 @@ static int mode_string(char *buf, unsigned int offset, | |||
| 120 | m, mode->xres, mode->yres, v, mode->refresh); | 120 | m, mode->xres, mode->yres, v, mode->refresh); |
| 121 | } | 121 | } |
| 122 | 122 | ||
| 123 | static ssize_t store_mode(struct class_device *class_device, const char * buf, | 123 | static ssize_t store_mode(struct device *device, struct device_attribute *attr, |
| 124 | size_t count) | 124 | const char *buf, size_t count) |
| 125 | { | 125 | { |
| 126 | struct fb_info *fb_info = class_get_devdata(class_device); | 126 | struct fb_info *fb_info = dev_get_drvdata(device); |
| 127 | char mstr[100]; | 127 | char mstr[100]; |
| 128 | struct fb_var_screeninfo var; | 128 | struct fb_var_screeninfo var; |
| 129 | struct fb_modelist *modelist; | 129 | struct fb_modelist *modelist; |
| @@ -151,9 +151,10 @@ static ssize_t store_mode(struct class_device *class_device, const char * buf, | |||
| 151 | return -EINVAL; | 151 | return -EINVAL; |
| 152 | } | 152 | } |
| 153 | 153 | ||
| 154 | static ssize_t show_mode(struct class_device *class_device, char *buf) | 154 | static ssize_t show_mode(struct device *device, struct device_attribute *attr, |
| 155 | char *buf) | ||
| 155 | { | 156 | { |
| 156 | struct fb_info *fb_info = class_get_devdata(class_device); | 157 | struct fb_info *fb_info = dev_get_drvdata(device); |
| 157 | 158 | ||
| 158 | if (!fb_info->mode) | 159 | if (!fb_info->mode) |
| 159 | return 0; | 160 | return 0; |
| @@ -161,10 +162,11 @@ static ssize_t show_mode(struct class_device *class_device, char *buf) | |||
| 161 | return mode_string(buf, 0, fb_info->mode); | 162 | return mode_string(buf, 0, fb_info->mode); |
| 162 | } | 163 | } |
| 163 | 164 | ||
| 164 | static ssize_t store_modes(struct class_device *class_device, const char * buf, | 165 | static ssize_t store_modes(struct device *device, |
| 165 | size_t count) | 166 | struct device_attribute *attr, |
| 167 | const char *buf, size_t count) | ||
| 166 | { | 168 | { |
| 167 | struct fb_info *fb_info = class_get_devdata(class_device); | 169 | struct fb_info *fb_info = dev_get_drvdata(device); |
| 168 | LIST_HEAD(old_list); | 170 | LIST_HEAD(old_list); |
| 169 | int i = count / sizeof(struct fb_videomode); | 171 | int i = count / sizeof(struct fb_videomode); |
| 170 | 172 | ||
| @@ -186,9 +188,10 @@ static ssize_t store_modes(struct class_device *class_device, const char * buf, | |||
| 186 | return 0; | 188 | return 0; |
| 187 | } | 189 | } |
| 188 | 190 | ||
| 189 | static ssize_t show_modes(struct class_device *class_device, char *buf) | 191 | static ssize_t show_modes(struct device *device, struct device_attribute *attr, |
| 192 | char *buf) | ||
| 190 | { | 193 | { |
| 191 | struct fb_info *fb_info = class_get_devdata(class_device); | 194 | struct fb_info *fb_info = dev_get_drvdata(device); |
| 192 | unsigned int i; | 195 | unsigned int i; |
| 193 | struct list_head *pos; | 196 | struct list_head *pos; |
| 194 | struct fb_modelist *modelist; | 197 | struct fb_modelist *modelist; |
| @@ -203,10 +206,10 @@ static ssize_t show_modes(struct class_device *class_device, char *buf) | |||
| 203 | return i; | 206 | return i; |
| 204 | } | 207 | } |
| 205 | 208 | ||
| 206 | static ssize_t store_bpp(struct class_device *class_device, const char * buf, | 209 | static ssize_t store_bpp(struct device *device, struct device_attribute *attr, |
| 207 | size_t count) | 210 | const char *buf, size_t count) |
| 208 | { | 211 | { |
| 209 | struct fb_info *fb_info = class_get_devdata(class_device); | 212 | struct fb_info *fb_info = dev_get_drvdata(device); |
| 210 | struct fb_var_screeninfo var; | 213 | struct fb_var_screeninfo var; |
| 211 | char ** last = NULL; | 214 | char ** last = NULL; |
| 212 | int err; | 215 | int err; |
| @@ -218,16 +221,18 @@ static ssize_t store_bpp(struct class_device *class_device, const char * buf, | |||
| 218 | return count; | 221 | return count; |
| 219 | } | 222 | } |
| 220 | 223 | ||
| 221 | static ssize_t show_bpp(struct class_device *class_device, char *buf) | 224 | static ssize_t show_bpp(struct device *device, struct device_attribute *attr, |
| 225 | char *buf) | ||
| 222 | { | 226 | { |
| 223 | struct fb_info *fb_info = class_get_devdata(class_device); | 227 | struct fb_info *fb_info = dev_get_drvdata(device); |
| 224 | return snprintf(buf, PAGE_SIZE, "%d\n", fb_info->var.bits_per_pixel); | 228 | return snprintf(buf, PAGE_SIZE, "%d\n", fb_info->var.bits_per_pixel); |
| 225 | } | 229 | } |
| 226 | 230 | ||
| 227 | static ssize_t store_rotate(struct class_device *class_device, const char *buf, | 231 | static ssize_t store_rotate(struct device *device, |
| 228 | size_t count) | 232 | struct device_attribute *attr, |
| 233 | const char *buf, size_t count) | ||
| 229 | { | 234 | { |
| 230 | struct fb_info *fb_info = class_get_devdata(class_device); | 235 | struct fb_info *fb_info = dev_get_drvdata(device); |
| 231 | struct fb_var_screeninfo var; | 236 | struct fb_var_screeninfo var; |
| 232 | char **last = NULL; | 237 | char **last = NULL; |
| 233 | int err; | 238 | int err; |
| @@ -242,17 +247,19 @@ static ssize_t store_rotate(struct class_device *class_device, const char *buf, | |||
| 242 | } | 247 | } |
| 243 | 248 | ||
| 244 | 249 | ||
| 245 | static ssize_t show_rotate(struct class_device *class_device, char *buf) | 250 | static ssize_t show_rotate(struct device *device, |
| 251 | struct device_attribute *attr, char *buf) | ||
| 246 | { | 252 | { |
| 247 | struct fb_info *fb_info = class_get_devdata(class_device); | 253 | struct fb_info *fb_info = dev_get_drvdata(device); |
| 248 | 254 | ||
| 249 | return snprintf(buf, PAGE_SIZE, "%d\n", fb_info->var.rotate); | 255 | return snprintf(buf, PAGE_SIZE, "%d\n", fb_info->var.rotate); |
| 250 | } | 256 | } |
| 251 | 257 | ||
| 252 | static ssize_t store_virtual(struct class_device *class_device, | 258 | static ssize_t store_virtual(struct device *device, |
| 253 | const char * buf, size_t count) | 259 | struct device_attribute *attr, |
| 260 | const char *buf, size_t count) | ||
| 254 | { | 261 | { |
| 255 | struct fb_info *fb_info = class_get_devdata(class_device); | 262 | struct fb_info *fb_info = dev_get_drvdata(device); |
| 256 | struct fb_var_screeninfo var; | 263 | struct fb_var_screeninfo var; |
| 257 | char *last = NULL; | 264 | char *last = NULL; |
| 258 | int err; | 265 | int err; |
| @@ -269,23 +276,26 @@ static ssize_t store_virtual(struct class_device *class_device, | |||
| 269 | return count; | 276 | return count; |
| 270 | } | 277 | } |
| 271 | 278 | ||
| 272 | static ssize_t show_virtual(struct class_device *class_device, char *buf) | 279 | static ssize_t show_virtual(struct device *device, |
| 280 | struct device_attribute *attr, char *buf) | ||
| 273 | { | 281 | { |
| 274 | struct fb_info *fb_info = class_get_devdata(class_device); | 282 | struct fb_info *fb_info = dev_get_drvdata(device); |
| 275 | return snprintf(buf, PAGE_SIZE, "%d,%d\n", fb_info->var.xres_virtual, | 283 | return snprintf(buf, PAGE_SIZE, "%d,%d\n", fb_info->var.xres_virtual, |
| 276 | fb_info->var.yres_virtual); | 284 | fb_info->var.yres_virtual); |
| 277 | } | 285 | } |
| 278 | 286 | ||
| 279 | static ssize_t show_stride(struct class_device *class_device, char *buf) | 287 | static ssize_t show_stride(struct device *device, |
| 288 | struct device_attribute *attr, char *buf) | ||
| 280 | { | 289 | { |
| 281 | struct fb_info *fb_info = class_get_devdata(class_device); | 290 | struct fb_info *fb_info = dev_get_drvdata(device); |
| 282 | return snprintf(buf, PAGE_SIZE, "%d\n", fb_info->fix.line_length); | 291 | return snprintf(buf, PAGE_SIZE, "%d\n", fb_info->fix.line_length); |
| 283 | } | 292 | } |
| 284 | 293 | ||
| 285 | static ssize_t store_blank(struct class_device *class_device, const char * buf, | 294 | static ssize_t store_blank(struct device *device, |
| 286 | size_t count) | 295 | struct device_attribute *attr, |
| 296 | const char *buf, size_t count) | ||
| 287 | { | 297 | { |
| 288 | struct fb_info *fb_info = class_get_devdata(class_device); | 298 | struct fb_info *fb_info = dev_get_drvdata(device); |
| 289 | char *last = NULL; | 299 | char *last = NULL; |
| 290 | int err; | 300 | int err; |
| 291 | 301 | ||
| @@ -299,42 +309,48 @@ static ssize_t store_blank(struct class_device *class_device, const char * buf, | |||
| 299 | return count; | 309 | return count; |
| 300 | } | 310 | } |
| 301 | 311 | ||
| 302 | static ssize_t show_blank(struct class_device *class_device, char *buf) | 312 | static ssize_t show_blank(struct device *device, |
| 313 | struct device_attribute *attr, char *buf) | ||
| 303 | { | 314 | { |
| 304 | // struct fb_info *fb_info = class_get_devdata(class_device); | 315 | // struct fb_info *fb_info = dev_get_drvdata(device); |
| 305 | return 0; | 316 | return 0; |
| 306 | } | 317 | } |
| 307 | 318 | ||
| 308 | static ssize_t store_console(struct class_device *class_device, | 319 | static ssize_t store_console(struct device *device, |
| 309 | const char * buf, size_t count) | 320 | struct device_attribute *attr, |
| 321 | const char *buf, size_t count) | ||
| 310 | { | 322 | { |
| 311 | // struct fb_info *fb_info = class_get_devdata(class_device); | 323 | // struct fb_info *fb_info = dev_get_drvdata(device); |
| 312 | return 0; | 324 | return 0; |
| 313 | } | 325 | } |
| 314 | 326 | ||
| 315 | static ssize_t show_console(struct class_device *class_device, char *buf) | 327 | static ssize_t show_console(struct device *device, |
| 328 | struct device_attribute *attr, char *buf) | ||
| 316 | { | 329 | { |
| 317 | // struct fb_info *fb_info = class_get_devdata(class_device); | 330 | // struct fb_info *fb_info = dev_get_drvdata(device); |
| 318 | return 0; | 331 | return 0; |
| 319 | } | 332 | } |
| 320 | 333 | ||
| 321 | static ssize_t store_cursor(struct class_device *class_device, | 334 | static ssize_t store_cursor(struct device *device, |
| 322 | const char * buf, size_t count) | 335 | struct device_attribute *attr, |
| 336 | const char *buf, size_t count) | ||
| 323 | { | 337 | { |
| 324 | // struct fb_info *fb_info = class_get_devdata(class_device); | 338 | // struct fb_info *fb_info = dev_get_drvdata(device); |
| 325 | return 0; | 339 | return 0; |
| 326 | } | 340 | } |
| 327 | 341 | ||
| 328 | static ssize_t show_cursor(struct class_device *class_device, char *buf) | 342 | static ssize_t show_cursor(struct device *device, |
| 343 | struct device_attribute *attr, char *buf) | ||
| 329 | { | 344 | { |
| 330 | // struct fb_info *fb_info = class_get_devdata(class_device); | 345 | // struct fb_info *fb_info = dev_get_drvdata(device); |
| 331 | return 0; | 346 | return 0; |
| 332 | } | 347 | } |
| 333 | 348 | ||
| 334 | static ssize_t store_pan(struct class_device *class_device, const char * buf, | 349 | static ssize_t store_pan(struct device *device, |
| 335 | size_t count) | 350 | struct device_attribute *attr, |
| 351 | const char *buf, size_t count) | ||
| 336 | { | 352 | { |
| 337 | struct fb_info *fb_info = class_get_devdata(class_device); | 353 | struct fb_info *fb_info = dev_get_drvdata(device); |
| 338 | struct fb_var_screeninfo var; | 354 | struct fb_var_screeninfo var; |
| 339 | char *last = NULL; | 355 | char *last = NULL; |
| 340 | int err; | 356 | int err; |
| @@ -355,24 +371,27 @@ static ssize_t store_pan(struct class_device *class_device, const char * buf, | |||
| 355 | return count; | 371 | return count; |
| 356 | } | 372 | } |
| 357 | 373 | ||
| 358 | static ssize_t show_pan(struct class_device *class_device, char *buf) | 374 | static ssize_t show_pan(struct device *device, |
| 375 | struct device_attribute *attr, char *buf) | ||
| 359 | { | 376 | { |
| 360 | struct fb_info *fb_info = class_get_devdata(class_device); | 377 | struct fb_info *fb_info = dev_get_drvdata(device); |
| 361 | return snprintf(buf, PAGE_SIZE, "%d,%d\n", fb_info->var.xoffset, | 378 | return snprintf(buf, PAGE_SIZE, "%d,%d\n", fb_info->var.xoffset, |
| 362 | fb_info->var.xoffset); | 379 | fb_info->var.xoffset); |
| 363 | } | 380 | } |
| 364 | 381 | ||
| 365 | static ssize_t show_name(struct class_device *class_device, char *buf) | 382 | static ssize_t show_name(struct device *device, |
| 383 | struct device_attribute *attr, char *buf) | ||
| 366 | { | 384 | { |
| 367 | struct fb_info *fb_info = class_get_devdata(class_device); | 385 | struct fb_info *fb_info = dev_get_drvdata(device); |
| 368 | 386 | ||
| 369 | return snprintf(buf, PAGE_SIZE, "%s\n", fb_info->fix.id); | 387 | return snprintf(buf, PAGE_SIZE, "%s\n", fb_info->fix.id); |
| 370 | } | 388 | } |
| 371 | 389 | ||
| 372 | static ssize_t store_fbstate(struct class_device *class_device, | 390 | static ssize_t store_fbstate(struct device *device, |
| 373 | const char *buf, size_t count) | 391 | struct device_attribute *attr, |
| 392 | const char *buf, size_t count) | ||
| 374 | { | 393 | { |
| 375 | struct fb_info *fb_info = class_get_devdata(class_device); | 394 | struct fb_info *fb_info = dev_get_drvdata(device); |
| 376 | u32 state; | 395 | u32 state; |
| 377 | char *last = NULL; | 396 | char *last = NULL; |
| 378 | 397 | ||
| @@ -385,17 +404,19 @@ static ssize_t store_fbstate(struct class_device *class_device, | |||
| 385 | return count; | 404 | return count; |
| 386 | } | 405 | } |
| 387 | 406 | ||
| 388 | static ssize_t show_fbstate(struct class_device *class_device, char *buf) | 407 | static ssize_t show_fbstate(struct device *device, |
| 408 | struct device_attribute *attr, char *buf) | ||
| 389 | { | 409 | { |
| 390 | struct fb_info *fb_info = class_get_devdata(class_device); | 410 | struct fb_info *fb_info = dev_get_drvdata(device); |
| 391 | return snprintf(buf, PAGE_SIZE, "%d\n", fb_info->state); | 411 | return snprintf(buf, PAGE_SIZE, "%d\n", fb_info->state); |
| 392 | } | 412 | } |
| 393 | 413 | ||
| 394 | #ifdef CONFIG_FB_BACKLIGHT | 414 | #ifdef CONFIG_FB_BACKLIGHT |
| 395 | static ssize_t store_bl_curve(struct class_device *class_device, | 415 | static ssize_t store_bl_curve(struct device *device, |
| 396 | const char *buf, size_t count) | 416 | struct device_attribute *attr, |
| 417 | const char *buf, size_t count) | ||
| 397 | { | 418 | { |
| 398 | struct fb_info *fb_info = class_get_devdata(class_device); | 419 | struct fb_info *fb_info = dev_get_drvdata(device); |
| 399 | u8 tmp_curve[FB_BACKLIGHT_LEVELS]; | 420 | u8 tmp_curve[FB_BACKLIGHT_LEVELS]; |
| 400 | unsigned int i; | 421 | unsigned int i; |
| 401 | 422 | ||
| @@ -432,9 +453,10 @@ static ssize_t store_bl_curve(struct class_device *class_device, | |||
| 432 | return count; | 453 | return count; |
| 433 | } | 454 | } |
| 434 | 455 | ||
| 435 | static ssize_t show_bl_curve(struct class_device *class_device, char *buf) | 456 | static ssize_t show_bl_curve(struct device *device, |
| 457 | struct device_attribute *attr, char *buf) | ||
| 436 | { | 458 | { |
| 437 | struct fb_info *fb_info = class_get_devdata(class_device); | 459 | struct fb_info *fb_info = dev_get_drvdata(device); |
| 438 | ssize_t len = 0; | 460 | ssize_t len = 0; |
| 439 | unsigned int i; | 461 | unsigned int i; |
| 440 | 462 | ||
| @@ -465,7 +487,7 @@ static ssize_t show_bl_curve(struct class_device *class_device, char *buf) | |||
| 465 | /* When cmap is added back in it should be a binary attribute | 487 | /* When cmap is added back in it should be a binary attribute |
| 466 | * not a text one. Consideration should also be given to converting | 488 | * not a text one. Consideration should also be given to converting |
| 467 | * fbdev to use configfs instead of sysfs */ | 489 | * fbdev to use configfs instead of sysfs */ |
| 468 | static struct class_device_attribute class_device_attrs[] = { | 490 | static struct device_attribute device_attrs[] = { |
| 469 | __ATTR(bits_per_pixel, S_IRUGO|S_IWUSR, show_bpp, store_bpp), | 491 | __ATTR(bits_per_pixel, S_IRUGO|S_IWUSR, show_bpp, store_bpp), |
| 470 | __ATTR(blank, S_IRUGO|S_IWUSR, show_blank, store_blank), | 492 | __ATTR(blank, S_IRUGO|S_IWUSR, show_blank, store_blank), |
| 471 | __ATTR(console, S_IRUGO|S_IWUSR, show_console, store_console), | 493 | __ATTR(console, S_IRUGO|S_IWUSR, show_console, store_console), |
| @@ -483,17 +505,16 @@ static struct class_device_attribute class_device_attrs[] = { | |||
| 483 | #endif | 505 | #endif |
| 484 | }; | 506 | }; |
| 485 | 507 | ||
| 486 | int fb_init_class_device(struct fb_info *fb_info) | 508 | int fb_init_device(struct fb_info *fb_info) |
| 487 | { | 509 | { |
| 488 | int i, error = 0; | 510 | int i, error = 0; |
| 489 | 511 | ||
| 490 | class_set_devdata(fb_info->class_device, fb_info); | 512 | dev_set_drvdata(fb_info->dev, fb_info); |
| 491 | 513 | ||
| 492 | fb_info->class_flag |= FB_SYSFS_FLAG_ATTR; | 514 | fb_info->class_flag |= FB_SYSFS_FLAG_ATTR; |
| 493 | 515 | ||
| 494 | for (i = 0; i < ARRAY_SIZE(class_device_attrs); i++) { | 516 | for (i = 0; i < ARRAY_SIZE(device_attrs); i++) { |
| 495 | error = class_device_create_file(fb_info->class_device, | 517 | error = device_create_file(fb_info->dev, &device_attrs[i]); |
| 496 | &class_device_attrs[i]); | ||
| 497 | 518 | ||
| 498 | if (error) | 519 | if (error) |
| 499 | break; | 520 | break; |
| @@ -501,22 +522,20 @@ int fb_init_class_device(struct fb_info *fb_info) | |||
| 501 | 522 | ||
| 502 | if (error) { | 523 | if (error) { |
| 503 | while (--i >= 0) | 524 | while (--i >= 0) |
| 504 | class_device_remove_file(fb_info->class_device, | 525 | device_remove_file(fb_info->dev, &device_attrs[i]); |
| 505 | &class_device_attrs[i]); | ||
| 506 | fb_info->class_flag &= ~FB_SYSFS_FLAG_ATTR; | 526 | fb_info->class_flag &= ~FB_SYSFS_FLAG_ATTR; |
| 507 | } | 527 | } |
| 508 | 528 | ||
| 509 | return 0; | 529 | return 0; |
| 510 | } | 530 | } |
| 511 | 531 | ||
| 512 | void fb_cleanup_class_device(struct fb_info *fb_info) | 532 | void fb_cleanup_device(struct fb_info *fb_info) |
| 513 | { | 533 | { |
| 514 | unsigned int i; | 534 | unsigned int i; |
| 515 | 535 | ||
| 516 | if (fb_info->class_flag & FB_SYSFS_FLAG_ATTR) { | 536 | if (fb_info->class_flag & FB_SYSFS_FLAG_ATTR) { |
| 517 | for (i = 0; i < ARRAY_SIZE(class_device_attrs); i++) | 537 | for (i = 0; i < ARRAY_SIZE(device_attrs); i++) |
| 518 | class_device_remove_file(fb_info->class_device, | 538 | device_remove_file(fb_info->dev, &device_attrs[i]); |
| 519 | &class_device_attrs[i]); | ||
| 520 | 539 | ||
| 521 | fb_info->class_flag &= ~FB_SYSFS_FLAG_ATTR; | 540 | fb_info->class_flag &= ~FB_SYSFS_FLAG_ATTR; |
| 522 | } | 541 | } |
diff --git a/include/linux/fb.h b/include/linux/fb.h index 3e69241e6a81..fa23e0671bb3 100644 --- a/include/linux/fb.h +++ b/include/linux/fb.h | |||
| @@ -774,8 +774,8 @@ struct fb_info { | |||
| 774 | #endif | 774 | #endif |
| 775 | 775 | ||
| 776 | struct fb_ops *fbops; | 776 | struct fb_ops *fbops; |
| 777 | struct device *device; | 777 | struct device *device; /* This is the parent */ |
| 778 | struct class_device *class_device; /* sysfs per device attrs */ | 778 | struct device *dev; /* This is this fb device */ |
| 779 | int class_flag; /* private sysfs flags */ | 779 | int class_flag; /* private sysfs flags */ |
| 780 | #ifdef CONFIG_FB_TILEBLITTING | 780 | #ifdef CONFIG_FB_TILEBLITTING |
| 781 | struct fb_tile_ops *tileops; /* Tile Blitting */ | 781 | struct fb_tile_ops *tileops; /* Tile Blitting */ |
| @@ -910,8 +910,8 @@ static inline void __fb_pad_aligned_buffer(u8 *dst, u32 d_pitch, | |||
| 910 | /* drivers/video/fbsysfs.c */ | 910 | /* drivers/video/fbsysfs.c */ |
| 911 | extern struct fb_info *framebuffer_alloc(size_t size, struct device *dev); | 911 | extern struct fb_info *framebuffer_alloc(size_t size, struct device *dev); |
| 912 | extern void framebuffer_release(struct fb_info *info); | 912 | extern void framebuffer_release(struct fb_info *info); |
| 913 | extern int fb_init_class_device(struct fb_info *fb_info); | 913 | extern int fb_init_device(struct fb_info *fb_info); |
| 914 | extern void fb_cleanup_class_device(struct fb_info *head); | 914 | extern void fb_cleanup_device(struct fb_info *head); |
| 915 | extern void fb_bl_default_curve(struct fb_info *fb_info, u8 off, u8 min, u8 max); | 915 | extern void fb_bl_default_curve(struct fb_info *fb_info, u8 off, u8 min, u8 max); |
| 916 | 916 | ||
| 917 | /* drivers/video/fbmon.c */ | 917 | /* drivers/video/fbmon.c */ |
