diff options
author | Lad, Prabhakar <prabhakar.lad@ti.com> | 2012-11-20 05:30:36 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2012-12-21 11:18:50 -0500 |
commit | caff80c35f923806b7e5ef312dce41663b5e99b9 (patch) | |
tree | a7dc2f10963df469808b7a52fd90276701d644f5 /arch/arm/mach-davinci/dm644x.c | |
parent | 5a89fac7e90dd75b9783914fa351069d20fd8c54 (diff) |
[media] davinci: vpbe: pass different platform names to handle different ip's
The vpbe driver can handle different platforms DM644X, DM36X and
DM355. To differentiate between this platforms venc_type/vpbe_type
was passed as part of platform data which was incorrect. The correct
way to differentiate to handle this case is by passing different
platform names.
This patch creates platform_device_id[] array supporting different
platforms and assigns id_table to the platform driver, and finally
in the probe gets the actual device by using platform_get_device_id()
and gets the appropriate driver data for that platform.
Taking this approach will also make the DT transition easier.
Signed-off-by: Lad, Prabhakar <prabhakar.lad@ti.com>
Signed-off-by: Manjunath Hadli <manjunath.hadli@ti.com>
Acked-by: Sekhar Nori <nsekhar@ti.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'arch/arm/mach-davinci/dm644x.c')
-rw-r--r-- | arch/arm/mach-davinci/dm644x.c | 10 |
1 files changed, 2 insertions, 8 deletions
diff --git a/arch/arm/mach-davinci/dm644x.c b/arch/arm/mach-davinci/dm644x.c index 14e9947bad6e..0849d5768d99 100644 --- a/arch/arm/mach-davinci/dm644x.c +++ b/arch/arm/mach-davinci/dm644x.c | |||
@@ -669,19 +669,14 @@ static struct resource dm644x_osd_resources[] = { | |||
669 | }, | 669 | }, |
670 | }; | 670 | }; |
671 | 671 | ||
672 | static struct osd_platform_data dm644x_osd_data = { | ||
673 | .vpbe_type = VPBE_VERSION_1, | ||
674 | }; | ||
675 | |||
676 | static struct platform_device dm644x_osd_dev = { | 672 | static struct platform_device dm644x_osd_dev = { |
677 | .name = VPBE_OSD_SUBDEV_NAME, | 673 | .name = DM644X_VPBE_OSD_SUBDEV_NAME, |
678 | .id = -1, | 674 | .id = -1, |
679 | .num_resources = ARRAY_SIZE(dm644x_osd_resources), | 675 | .num_resources = ARRAY_SIZE(dm644x_osd_resources), |
680 | .resource = dm644x_osd_resources, | 676 | .resource = dm644x_osd_resources, |
681 | .dev = { | 677 | .dev = { |
682 | .dma_mask = &dm644x_video_dma_mask, | 678 | .dma_mask = &dm644x_video_dma_mask, |
683 | .coherent_dma_mask = DMA_BIT_MASK(32), | 679 | .coherent_dma_mask = DMA_BIT_MASK(32), |
684 | .platform_data = &dm644x_osd_data, | ||
685 | }, | 680 | }, |
686 | }; | 681 | }; |
687 | 682 | ||
@@ -751,12 +746,11 @@ static struct platform_device dm644x_vpbe_display = { | |||
751 | }; | 746 | }; |
752 | 747 | ||
753 | static struct venc_platform_data dm644x_venc_pdata = { | 748 | static struct venc_platform_data dm644x_venc_pdata = { |
754 | .venc_type = VPBE_VERSION_1, | ||
755 | .setup_clock = dm644x_venc_setup_clock, | 749 | .setup_clock = dm644x_venc_setup_clock, |
756 | }; | 750 | }; |
757 | 751 | ||
758 | static struct platform_device dm644x_venc_dev = { | 752 | static struct platform_device dm644x_venc_dev = { |
759 | .name = VPBE_VENC_SUBDEV_NAME, | 753 | .name = DM644X_VPBE_VENC_SUBDEV_NAME, |
760 | .id = -1, | 754 | .id = -1, |
761 | .num_resources = ARRAY_SIZE(dm644x_venc_resources), | 755 | .num_resources = ARRAY_SIZE(dm644x_venc_resources), |
762 | .resource = dm644x_venc_resources, | 756 | .resource = dm644x_venc_resources, |