diff options
| -rw-r--r-- | drivers/video/omap2/vrfb.c | 16 | ||||
| -rw-r--r-- | include/video/omapvrfb.h | 2 |
2 files changed, 18 insertions, 0 deletions
diff --git a/drivers/video/omap2/vrfb.c b/drivers/video/omap2/vrfb.c index e4a0450a39a1..5d8fdac3b800 100644 --- a/drivers/video/omap2/vrfb.c +++ b/drivers/video/omap2/vrfb.c | |||
| @@ -77,6 +77,8 @@ static void __iomem *vrfb_base; | |||
| 77 | static int num_ctxs; | 77 | static int num_ctxs; |
| 78 | static struct vrfb_ctx *ctxs; | 78 | static struct vrfb_ctx *ctxs; |
| 79 | 79 | ||
| 80 | static bool vrfb_loaded; | ||
| 81 | |||
| 80 | static void omap2_sms_write_rot_control(u32 val, unsigned ctx) | 82 | static void omap2_sms_write_rot_control(u32 val, unsigned ctx) |
| 81 | { | 83 | { |
| 82 | __raw_writel(val, vrfb_base + SMS_ROT_CONTROL(ctx)); | 84 | __raw_writel(val, vrfb_base + SMS_ROT_CONTROL(ctx)); |
| @@ -336,6 +338,12 @@ out: | |||
| 336 | } | 338 | } |
| 337 | EXPORT_SYMBOL(omap_vrfb_request_ctx); | 339 | EXPORT_SYMBOL(omap_vrfb_request_ctx); |
| 338 | 340 | ||
| 341 | bool omap_vrfb_supported(void) | ||
| 342 | { | ||
| 343 | return vrfb_loaded; | ||
| 344 | } | ||
| 345 | EXPORT_SYMBOL(omap_vrfb_supported); | ||
| 346 | |||
| 339 | static int __init vrfb_probe(struct platform_device *pdev) | 347 | static int __init vrfb_probe(struct platform_device *pdev) |
| 340 | { | 348 | { |
| 341 | struct resource *mem; | 349 | struct resource *mem; |
| @@ -375,11 +383,19 @@ static int __init vrfb_probe(struct platform_device *pdev) | |||
| 375 | ctxs[i].base = mem->start; | 383 | ctxs[i].base = mem->start; |
| 376 | } | 384 | } |
| 377 | 385 | ||
| 386 | vrfb_loaded = true; | ||
| 387 | |||
| 378 | return 0; | 388 | return 0; |
| 379 | } | 389 | } |
| 380 | 390 | ||
| 391 | static void __exit vrfb_remove(struct platform_device *pdev) | ||
| 392 | { | ||
| 393 | vrfb_loaded = false; | ||
| 394 | } | ||
| 395 | |||
| 381 | static struct platform_driver vrfb_driver = { | 396 | static struct platform_driver vrfb_driver = { |
| 382 | .driver.name = "omapvrfb", | 397 | .driver.name = "omapvrfb", |
| 398 | .remove = __exit_p(vrfb_remove), | ||
| 383 | }; | 399 | }; |
| 384 | 400 | ||
| 385 | static int __init vrfb_init(void) | 401 | static int __init vrfb_init(void) |
diff --git a/include/video/omapvrfb.h b/include/video/omapvrfb.h index 3792bdea2f6d..bb0bd89f8bc6 100644 --- a/include/video/omapvrfb.h +++ b/include/video/omapvrfb.h | |||
| @@ -36,6 +36,7 @@ struct vrfb { | |||
| 36 | }; | 36 | }; |
| 37 | 37 | ||
| 38 | #ifdef CONFIG_OMAP2_VRFB | 38 | #ifdef CONFIG_OMAP2_VRFB |
| 39 | extern bool omap_vrfb_supported(void); | ||
| 39 | extern int omap_vrfb_request_ctx(struct vrfb *vrfb); | 40 | extern int omap_vrfb_request_ctx(struct vrfb *vrfb); |
| 40 | extern void omap_vrfb_release_ctx(struct vrfb *vrfb); | 41 | extern void omap_vrfb_release_ctx(struct vrfb *vrfb); |
| 41 | extern void omap_vrfb_adjust_size(u16 *width, u16 *height, | 42 | extern void omap_vrfb_adjust_size(u16 *width, u16 *height, |
| @@ -49,6 +50,7 @@ extern int omap_vrfb_map_angle(struct vrfb *vrfb, u16 height, u8 rot); | |||
| 49 | extern void omap_vrfb_restore_context(void); | 50 | extern void omap_vrfb_restore_context(void); |
| 50 | 51 | ||
| 51 | #else | 52 | #else |
| 53 | static inline bool omap_vrfb_supported(void) { return false; } | ||
| 52 | static inline int omap_vrfb_request_ctx(struct vrfb *vrfb) { return 0; } | 54 | static inline int omap_vrfb_request_ctx(struct vrfb *vrfb) { return 0; } |
| 53 | static inline void omap_vrfb_release_ctx(struct vrfb *vrfb) {} | 55 | static inline void omap_vrfb_release_ctx(struct vrfb *vrfb) {} |
| 54 | static inline void omap_vrfb_adjust_size(u16 *width, u16 *height, | 56 | static inline void omap_vrfb_adjust_size(u16 *width, u16 *height, |
