diff options
author | Senthilvadivu Guruswamy <svadivu@ti.com> | 2011-01-24 01:22:01 -0500 |
---|---|---|
committer | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2011-03-11 08:46:20 -0500 |
commit | 30ea50c9f5166a375b4dc0109d18a5d21bab5711 (patch) | |
tree | 604bc1862a890093950c7759b0085b146695802b | |
parent | 060b6d9cbab03f1379dbe00393ab26d6eb371ce2 (diff) |
OMAP2, 3: DSS2: VENC: create platform_driver, move init, exit to driver
Hwmod adaptation design requires each of the DSS HW IP to be a platform driver.
So a platform_driver for VENC is created and init exit methods are moved from core.c
to its driver probe,remove. pdev member has to be maintained by its own drivers.
Also, venc_vdda_dac reading is moved to venc.c.
VENC platform driver is registered from inside omap_dss_probe, in the order desired.
Signed-off-by: Senthilvadivu Guruswamy <svadivu@ti.com>
Signed-off-by: Sumit Semwal <sumit.semwal@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
-rw-r--r-- | arch/arm/mach-omap2/board-3430sdp.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-omap2/board-cm-t35.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-omap2/board-devkit8000.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-omap2/board-omap3beagle.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-omap2/board-omap3evm.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-omap2/board-omap3pandora.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-omap2/board-omap3stalker.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-omap2/board-rx51-peripherals.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-omap2/board-zoom-peripherals.c | 2 | ||||
-rw-r--r-- | drivers/video/omap2/dss/core.c | 28 | ||||
-rw-r--r-- | drivers/video/omap2/dss/dss.h | 9 | ||||
-rw-r--r-- | drivers/video/omap2/dss/venc.c | 116 |
12 files changed, 93 insertions, 78 deletions
diff --git a/arch/arm/mach-omap2/board-3430sdp.c b/arch/arm/mach-omap2/board-3430sdp.c index e018472861e6..652e7c38c62e 100644 --- a/arch/arm/mach-omap2/board-3430sdp.c +++ b/arch/arm/mach-omap2/board-3430sdp.c | |||
@@ -395,7 +395,7 @@ static struct regulator_consumer_supply sdp3430_vaux3_supplies[] = { | |||
395 | }; | 395 | }; |
396 | 396 | ||
397 | static struct regulator_consumer_supply sdp3430_vdda_dac_supplies[] = { | 397 | static struct regulator_consumer_supply sdp3430_vdda_dac_supplies[] = { |
398 | REGULATOR_SUPPLY("vdda_dac", "omapdss"), | 398 | REGULATOR_SUPPLY("vdda_dac", "omapdss_venc"), |
399 | }; | 399 | }; |
400 | 400 | ||
401 | /* VPLL2 for digital video outputs */ | 401 | /* VPLL2 for digital video outputs */ |
diff --git a/arch/arm/mach-omap2/board-cm-t35.c b/arch/arm/mach-omap2/board-cm-t35.c index 27bea540ccbb..e55fde0a720d 100644 --- a/arch/arm/mach-omap2/board-cm-t35.c +++ b/arch/arm/mach-omap2/board-cm-t35.c | |||
@@ -488,7 +488,7 @@ static struct regulator_consumer_supply cm_t35_vsim_supply = { | |||
488 | }; | 488 | }; |
489 | 489 | ||
490 | static struct regulator_consumer_supply cm_t35_vdac_supply = | 490 | static struct regulator_consumer_supply cm_t35_vdac_supply = |
491 | REGULATOR_SUPPLY("vdda_dac", "omapdss"); | 491 | REGULATOR_SUPPLY("vdda_dac", "omapdss_venc"); |
492 | 492 | ||
493 | static struct regulator_consumer_supply cm_t35_vdvi_supply = | 493 | static struct regulator_consumer_supply cm_t35_vdvi_supply = |
494 | REGULATOR_SUPPLY("vdvi", "omapdss"); | 494 | REGULATOR_SUPPLY("vdvi", "omapdss"); |
diff --git a/arch/arm/mach-omap2/board-devkit8000.c b/arch/arm/mach-omap2/board-devkit8000.c index 728f27c5bcb1..b64774b3d82c 100644 --- a/arch/arm/mach-omap2/board-devkit8000.c +++ b/arch/arm/mach-omap2/board-devkit8000.c | |||
@@ -196,7 +196,7 @@ static struct omap_dss_board_info devkit8000_dss_data = { | |||
196 | }; | 196 | }; |
197 | 197 | ||
198 | static struct regulator_consumer_supply devkit8000_vdda_dac_supply = | 198 | static struct regulator_consumer_supply devkit8000_vdda_dac_supply = |
199 | REGULATOR_SUPPLY("vdda_dac", "omapdss"); | 199 | REGULATOR_SUPPLY("vdda_dac", "omapdss_venc"); |
200 | 200 | ||
201 | static uint32_t board_keymap[] = { | 201 | static uint32_t board_keymap[] = { |
202 | KEY(0, 0, KEY_1), | 202 | KEY(0, 0, KEY_1), |
diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c index 20c5dbea8953..2fad38f9e683 100644 --- a/arch/arm/mach-omap2/board-omap3beagle.c +++ b/arch/arm/mach-omap2/board-omap3beagle.c | |||
@@ -232,7 +232,7 @@ static struct omap_dss_board_info beagle_dss_data = { | |||
232 | }; | 232 | }; |
233 | 233 | ||
234 | static struct regulator_consumer_supply beagle_vdac_supply = | 234 | static struct regulator_consumer_supply beagle_vdac_supply = |
235 | REGULATOR_SUPPLY("vdda_dac", "omapdss"); | 235 | REGULATOR_SUPPLY("vdda_dac", "omapdss_venc"); |
236 | 236 | ||
237 | static struct regulator_consumer_supply beagle_vdvi_supply = | 237 | static struct regulator_consumer_supply beagle_vdvi_supply = |
238 | REGULATOR_SUPPLY("vdds_dsi", "omapdss"); | 238 | REGULATOR_SUPPLY("vdds_dsi", "omapdss"); |
diff --git a/arch/arm/mach-omap2/board-omap3evm.c b/arch/arm/mach-omap2/board-omap3evm.c index b65848c59e1d..a6564b41b97a 100644 --- a/arch/arm/mach-omap2/board-omap3evm.c +++ b/arch/arm/mach-omap2/board-omap3evm.c | |||
@@ -542,7 +542,7 @@ static struct twl4030_codec_data omap3evm_codec_data = { | |||
542 | }; | 542 | }; |
543 | 543 | ||
544 | static struct regulator_consumer_supply omap3_evm_vdda_dac_supply = | 544 | static struct regulator_consumer_supply omap3_evm_vdda_dac_supply = |
545 | REGULATOR_SUPPLY("vdda_dac", "omapdss"); | 545 | REGULATOR_SUPPLY("vdda_dac", "omapdss_venc"); |
546 | 546 | ||
547 | /* VDAC for DSS driving S-Video */ | 547 | /* VDAC for DSS driving S-Video */ |
548 | static struct regulator_init_data omap3_evm_vdac = { | 548 | static struct regulator_init_data omap3_evm_vdac = { |
diff --git a/arch/arm/mach-omap2/board-omap3pandora.c b/arch/arm/mach-omap2/board-omap3pandora.c index 5386a8190ea1..37de418edd2a 100644 --- a/arch/arm/mach-omap2/board-omap3pandora.c +++ b/arch/arm/mach-omap2/board-omap3pandora.c | |||
@@ -342,7 +342,7 @@ static struct regulator_consumer_supply pandora_vmmc3_supply = | |||
342 | REGULATOR_SUPPLY("vmmc", "omap_hsmmc.2"); | 342 | REGULATOR_SUPPLY("vmmc", "omap_hsmmc.2"); |
343 | 343 | ||
344 | static struct regulator_consumer_supply pandora_vdda_dac_supply = | 344 | static struct regulator_consumer_supply pandora_vdda_dac_supply = |
345 | REGULATOR_SUPPLY("vdda_dac", "omapdss"); | 345 | REGULATOR_SUPPLY("vdda_dac", "omapdss_venc"); |
346 | 346 | ||
347 | static struct regulator_consumer_supply pandora_vdds_supplies[] = { | 347 | static struct regulator_consumer_supply pandora_vdds_supplies[] = { |
348 | REGULATOR_SUPPLY("vdds_sdi", "omapdss"), | 348 | REGULATOR_SUPPLY("vdds_sdi", "omapdss"), |
diff --git a/arch/arm/mach-omap2/board-omap3stalker.c b/arch/arm/mach-omap2/board-omap3stalker.c index 15ede8b49815..bd0eed858078 100644 --- a/arch/arm/mach-omap2/board-omap3stalker.c +++ b/arch/arm/mach-omap2/board-omap3stalker.c | |||
@@ -439,7 +439,7 @@ static struct twl4030_codec_data omap3stalker_codec_data = { | |||
439 | }; | 439 | }; |
440 | 440 | ||
441 | static struct regulator_consumer_supply omap3_stalker_vdda_dac_supply = | 441 | static struct regulator_consumer_supply omap3_stalker_vdda_dac_supply = |
442 | REGULATOR_SUPPLY("vdda_dac", "omapdss"); | 442 | REGULATOR_SUPPLY("vdda_dac", "omapdss_venc"); |
443 | 443 | ||
444 | /* VDAC for DSS driving S-Video */ | 444 | /* VDAC for DSS driving S-Video */ |
445 | static struct regulator_init_data omap3_stalker_vdac = { | 445 | static struct regulator_init_data omap3_stalker_vdac = { |
diff --git a/arch/arm/mach-omap2/board-rx51-peripherals.c b/arch/arm/mach-omap2/board-rx51-peripherals.c index 5f1900c532ec..bbcb6775a6a3 100644 --- a/arch/arm/mach-omap2/board-rx51-peripherals.c +++ b/arch/arm/mach-omap2/board-rx51-peripherals.c | |||
@@ -372,7 +372,7 @@ static struct regulator_consumer_supply rx51_vaux1_consumers[] = { | |||
372 | }; | 372 | }; |
373 | 373 | ||
374 | static struct regulator_consumer_supply rx51_vdac_supply[] = { | 374 | static struct regulator_consumer_supply rx51_vdac_supply[] = { |
375 | REGULATOR_SUPPLY("vdda_dac", "omapdss"), | 375 | REGULATOR_SUPPLY("vdda_dac", "omapdss_venc"), |
376 | }; | 376 | }; |
377 | 377 | ||
378 | static struct regulator_init_data rx51_vaux1 = { | 378 | static struct regulator_init_data rx51_vaux1 = { |
diff --git a/arch/arm/mach-omap2/board-zoom-peripherals.c b/arch/arm/mach-omap2/board-zoom-peripherals.c index 448ab60195d5..405400c4762b 100644 --- a/arch/arm/mach-omap2/board-zoom-peripherals.c +++ b/arch/arm/mach-omap2/board-zoom-peripherals.c | |||
@@ -230,7 +230,7 @@ static struct regulator_consumer_supply zoom_vpll2_supply = | |||
230 | REGULATOR_SUPPLY("vdds_dsi", "omapdss"); | 230 | REGULATOR_SUPPLY("vdds_dsi", "omapdss"); |
231 | 231 | ||
232 | static struct regulator_consumer_supply zoom_vdda_dac_supply = | 232 | static struct regulator_consumer_supply zoom_vdda_dac_supply = |
233 | REGULATOR_SUPPLY("vdda_dac", "omapdss"); | 233 | REGULATOR_SUPPLY("vdda_dac", "omapdss_venc"); |
234 | 234 | ||
235 | static struct regulator_init_data zoom_vpll2 = { | 235 | static struct regulator_init_data zoom_vpll2 = { |
236 | .constraints = { | 236 | .constraints = { |
diff --git a/drivers/video/omap2/dss/core.c b/drivers/video/omap2/dss/core.c index 8b7eab83e412..57c6303cb1cd 100644 --- a/drivers/video/omap2/dss/core.c +++ b/drivers/video/omap2/dss/core.c | |||
@@ -43,7 +43,6 @@ static struct { | |||
43 | 43 | ||
44 | struct regulator *vdds_dsi_reg; | 44 | struct regulator *vdds_dsi_reg; |
45 | struct regulator *vdds_sdi_reg; | 45 | struct regulator *vdds_sdi_reg; |
46 | struct regulator *vdda_dac_reg; | ||
47 | } core; | 46 | } core; |
48 | 47 | ||
49 | static char *def_disp_name; | 48 | static char *def_disp_name; |
@@ -85,20 +84,6 @@ struct regulator *dss_get_vdds_sdi(void) | |||
85 | return reg; | 84 | return reg; |
86 | } | 85 | } |
87 | 86 | ||
88 | struct regulator *dss_get_vdda_dac(void) | ||
89 | { | ||
90 | struct regulator *reg; | ||
91 | |||
92 | if (core.vdda_dac_reg != NULL) | ||
93 | return core.vdda_dac_reg; | ||
94 | |||
95 | reg = regulator_get(&core.pdev->dev, "vdda_dac"); | ||
96 | if (!IS_ERR(reg)) | ||
97 | core.vdda_dac_reg = reg; | ||
98 | |||
99 | return reg; | ||
100 | } | ||
101 | |||
102 | #if defined(CONFIG_DEBUG_FS) && defined(CONFIG_OMAP2_DSS_DEBUG_SUPPORT) | 87 | #if defined(CONFIG_DEBUG_FS) && defined(CONFIG_OMAP2_DSS_DEBUG_SUPPORT) |
103 | static int dss_debug_show(struct seq_file *s, void *unused) | 88 | static int dss_debug_show(struct seq_file *s, void *unused) |
104 | { | 89 | { |
@@ -219,9 +204,9 @@ static int omap_dss_probe(struct platform_device *pdev) | |||
219 | goto err_dispc; | 204 | goto err_dispc; |
220 | } | 205 | } |
221 | 206 | ||
222 | r = venc_init(pdev); | 207 | r = venc_init_platform_driver(); |
223 | if (r) { | 208 | if (r) { |
224 | DSSERR("Failed to initialize venc\n"); | 209 | DSSERR("Failed to initialize venc platform driver\n"); |
225 | goto err_venc; | 210 | goto err_venc; |
226 | } | 211 | } |
227 | 212 | ||
@@ -279,7 +264,7 @@ err_dsi: | |||
279 | if (cpu_is_omap34xx()) | 264 | if (cpu_is_omap34xx()) |
280 | sdi_exit(); | 265 | sdi_exit(); |
281 | err_sdi: | 266 | err_sdi: |
282 | venc_exit(); | 267 | venc_uninit_platform_driver(); |
283 | err_venc: | 268 | err_venc: |
284 | dispc_uninit_platform_driver(); | 269 | dispc_uninit_platform_driver(); |
285 | err_dispc: | 270 | err_dispc: |
@@ -300,7 +285,7 @@ static int omap_dss_remove(struct platform_device *pdev) | |||
300 | 285 | ||
301 | dss_uninitialize_debugfs(); | 286 | dss_uninitialize_debugfs(); |
302 | 287 | ||
303 | venc_exit(); | 288 | venc_uninit_platform_driver(); |
304 | dispc_uninit_platform_driver(); | 289 | dispc_uninit_platform_driver(); |
305 | dpi_exit(); | 290 | dpi_exit(); |
306 | rfbi_uninit_platform_driver(); | 291 | rfbi_uninit_platform_driver(); |
@@ -597,11 +582,6 @@ static void __exit omap_dss_exit(void) | |||
597 | core.vdds_sdi_reg = NULL; | 582 | core.vdds_sdi_reg = NULL; |
598 | } | 583 | } |
599 | 584 | ||
600 | if (core.vdda_dac_reg != NULL) { | ||
601 | regulator_put(core.vdda_dac_reg); | ||
602 | core.vdda_dac_reg = NULL; | ||
603 | } | ||
604 | |||
605 | platform_driver_unregister(&omap_dss_driver); | 585 | platform_driver_unregister(&omap_dss_driver); |
606 | 586 | ||
607 | omap_dss_bus_unregister(); | 587 | omap_dss_bus_unregister(); |
diff --git a/drivers/video/omap2/dss/dss.h b/drivers/video/omap2/dss/dss.h index f4835c85db90..931385185dc6 100644 --- a/drivers/video/omap2/dss/dss.h +++ b/drivers/video/omap2/dss/dss.h | |||
@@ -172,7 +172,6 @@ struct platform_device; | |||
172 | struct bus_type *dss_get_bus(void); | 172 | struct bus_type *dss_get_bus(void); |
173 | struct regulator *dss_get_vdds_dsi(void); | 173 | struct regulator *dss_get_vdds_dsi(void); |
174 | struct regulator *dss_get_vdds_sdi(void); | 174 | struct regulator *dss_get_vdds_sdi(void); |
175 | struct regulator *dss_get_vdda_dac(void); | ||
176 | 175 | ||
177 | /* display */ | 176 | /* display */ |
178 | int dss_suspend_all_devices(void); | 177 | int dss_suspend_all_devices(void); |
@@ -412,16 +411,16 @@ int dispc_get_clock_div(enum omap_channel channel, | |||
412 | 411 | ||
413 | /* VENC */ | 412 | /* VENC */ |
414 | #ifdef CONFIG_OMAP2_DSS_VENC | 413 | #ifdef CONFIG_OMAP2_DSS_VENC |
415 | int venc_init(struct platform_device *pdev); | 414 | int venc_init_platform_driver(void); |
416 | void venc_exit(void); | 415 | void venc_uninit_platform_driver(void); |
417 | void venc_dump_regs(struct seq_file *s); | 416 | void venc_dump_regs(struct seq_file *s); |
418 | int venc_init_display(struct omap_dss_device *display); | 417 | int venc_init_display(struct omap_dss_device *display); |
419 | #else | 418 | #else |
420 | static inline int venc_init(struct platform_device *pdev) | 419 | static inline int venc_init_platform_driver(void) |
421 | { | 420 | { |
422 | return 0; | 421 | return 0; |
423 | } | 422 | } |
424 | static inline void venc_exit(void) | 423 | static inline void venc_uninit_platform_driver(void) |
425 | { | 424 | { |
426 | } | 425 | } |
427 | #endif | 426 | #endif |
diff --git a/drivers/video/omap2/dss/venc.c b/drivers/video/omap2/dss/venc.c index eff35050e28a..765a4ac44ecd 100644 --- a/drivers/video/omap2/dss/venc.c +++ b/drivers/video/omap2/dss/venc.c | |||
@@ -289,6 +289,7 @@ const struct omap_video_timings omap_dss_ntsc_timings = { | |||
289 | EXPORT_SYMBOL(omap_dss_ntsc_timings); | 289 | EXPORT_SYMBOL(omap_dss_ntsc_timings); |
290 | 290 | ||
291 | static struct { | 291 | static struct { |
292 | struct platform_device *pdev; | ||
292 | void __iomem *base; | 293 | void __iomem *base; |
293 | struct mutex venc_lock; | 294 | struct mutex venc_lock; |
294 | u32 wss_data; | 295 | u32 wss_data; |
@@ -306,6 +307,17 @@ static inline u32 venc_read_reg(int idx) | |||
306 | return l; | 307 | return l; |
307 | } | 308 | } |
308 | 309 | ||
310 | static struct regulator *venc_get_vdda_dac(void) | ||
311 | { | ||
312 | struct regulator *reg; | ||
313 | |||
314 | reg = regulator_get(&venc.pdev->dev, "vdda_dac"); | ||
315 | if (!IS_ERR(reg)) | ||
316 | venc.vdda_dac_reg = reg; | ||
317 | |||
318 | return reg; | ||
319 | } | ||
320 | |||
309 | static void venc_write_config(const struct venc_config *config) | 321 | static void venc_write_config(const struct venc_config *config) |
310 | { | 322 | { |
311 | DSSDBG("write venc conf\n"); | 323 | DSSDBG("write venc conf\n"); |
@@ -641,46 +653,6 @@ static struct omap_dss_driver venc_driver = { | |||
641 | }; | 653 | }; |
642 | /* driver end */ | 654 | /* driver end */ |
643 | 655 | ||
644 | |||
645 | |||
646 | int venc_init(struct platform_device *pdev) | ||
647 | { | ||
648 | u8 rev_id; | ||
649 | |||
650 | mutex_init(&venc.venc_lock); | ||
651 | |||
652 | venc.wss_data = 0; | ||
653 | |||
654 | venc.base = ioremap(VENC_BASE, SZ_1K); | ||
655 | if (!venc.base) { | ||
656 | DSSERR("can't ioremap VENC\n"); | ||
657 | return -ENOMEM; | ||
658 | } | ||
659 | |||
660 | venc.vdda_dac_reg = dss_get_vdda_dac(); | ||
661 | if (IS_ERR(venc.vdda_dac_reg)) { | ||
662 | iounmap(venc.base); | ||
663 | DSSERR("can't get VDDA_DAC regulator\n"); | ||
664 | return PTR_ERR(venc.vdda_dac_reg); | ||
665 | } | ||
666 | |||
667 | venc_enable_clocks(1); | ||
668 | |||
669 | rev_id = (u8)(venc_read_reg(VENC_REV_ID) & 0xff); | ||
670 | printk(KERN_INFO "OMAP VENC rev %d\n", rev_id); | ||
671 | |||
672 | venc_enable_clocks(0); | ||
673 | |||
674 | return omap_dss_register_driver(&venc_driver); | ||
675 | } | ||
676 | |||
677 | void venc_exit(void) | ||
678 | { | ||
679 | omap_dss_unregister_driver(&venc_driver); | ||
680 | |||
681 | iounmap(venc.base); | ||
682 | } | ||
683 | |||
684 | int venc_init_display(struct omap_dss_device *dssdev) | 656 | int venc_init_display(struct omap_dss_device *dssdev) |
685 | { | 657 | { |
686 | DSSDBG("init_display\n"); | 658 | DSSDBG("init_display\n"); |
@@ -740,3 +712,67 @@ void venc_dump_regs(struct seq_file *s) | |||
740 | 712 | ||
741 | #undef DUMPREG | 713 | #undef DUMPREG |
742 | } | 714 | } |
715 | |||
716 | /* VENC HW IP initialisation */ | ||
717 | static int omap_venchw_probe(struct platform_device *pdev) | ||
718 | { | ||
719 | u8 rev_id; | ||
720 | venc.pdev = pdev; | ||
721 | |||
722 | mutex_init(&venc.venc_lock); | ||
723 | |||
724 | venc.wss_data = 0; | ||
725 | |||
726 | venc.base = ioremap(VENC_BASE, SZ_1K); | ||
727 | if (!venc.base) { | ||
728 | DSSERR("can't ioremap VENC\n"); | ||
729 | return -ENOMEM; | ||
730 | } | ||
731 | |||
732 | venc.vdda_dac_reg = venc_get_vdda_dac(); | ||
733 | if (IS_ERR(venc.vdda_dac_reg)) { | ||
734 | iounmap(venc.base); | ||
735 | DSSERR("can't get VDDA_DAC regulator\n"); | ||
736 | return PTR_ERR(venc.vdda_dac_reg); | ||
737 | } | ||
738 | |||
739 | venc_enable_clocks(1); | ||
740 | |||
741 | rev_id = (u8)(venc_read_reg(VENC_REV_ID) & 0xff); | ||
742 | printk(KERN_INFO "OMAP VENC rev %d\n", rev_id); | ||
743 | |||
744 | venc_enable_clocks(0); | ||
745 | |||
746 | return omap_dss_register_driver(&venc_driver); | ||
747 | } | ||
748 | |||
749 | static int omap_venchw_remove(struct platform_device *pdev) | ||
750 | { | ||
751 | if (venc.vdda_dac_reg != NULL) { | ||
752 | regulator_put(venc.vdda_dac_reg); | ||
753 | venc.vdda_dac_reg = NULL; | ||
754 | } | ||
755 | omap_dss_unregister_driver(&venc_driver); | ||
756 | |||
757 | iounmap(venc.base); | ||
758 | return 0; | ||
759 | } | ||
760 | |||
761 | static struct platform_driver omap_venchw_driver = { | ||
762 | .probe = omap_venchw_probe, | ||
763 | .remove = omap_venchw_remove, | ||
764 | .driver = { | ||
765 | .name = "omapdss_venc", | ||
766 | .owner = THIS_MODULE, | ||
767 | }, | ||
768 | }; | ||
769 | |||
770 | int venc_init_platform_driver(void) | ||
771 | { | ||
772 | return platform_driver_register(&omap_venchw_driver); | ||
773 | } | ||
774 | |||
775 | void venc_uninit_platform_driver(void) | ||
776 | { | ||
777 | return platform_driver_unregister(&omap_venchw_driver); | ||
778 | } | ||