[PATCH] media: davinci: vpif: display: separate out subdev from output
From: Lad, Prabhakar prabhakar@ti.com vpif_display relied on a 1-1 mapping of output and subdev. This is not necessarily the case. Separate the two. So there is a list of subdevs and a list of outputs. Each output refers to a subdev and has routing information. An output does not have to have a subdev. The initial output for each channel is set to the fist output. Currently missing is support for associating multiple subdevs with an output. Signed-off-by: Lad, Prabhakar prabhakar@ti.com Signed-off-by: Manjunath Hadli manjunath.ha...@ti.com Cc: Hans Verkuil hans.verk...@cisco.com --- This patch is dependent on the patch series from Hans (http://www.mail-archive.com/linux-media@vger.kernel.org/msg52270.html) arch/arm/mach-davinci/board-da850-evm.c | 29 +- arch/arm/mach-davinci/board-dm646x-evm.c | 39 ++- drivers/media/platform/davinci/vpif_display.c | 138 - include/media/davinci/vpif_types.h| 20 +++- 4 files changed, 185 insertions(+), 41 deletions(-) diff --git a/arch/arm/mach-davinci/board-da850-evm.c b/arch/arm/mach-davinci/board-da850-evm.c index 3081ea4..23a7012 100644 --- a/arch/arm/mach-davinci/board-da850-evm.c +++ b/arch/arm/mach-davinci/board-da850-evm.c @@ -46,6 +46,7 @@ #include mach/spi.h #include media/tvp514x.h +#include media/adv7343.h #define DA850_EVM_PHY_ID davinci_mdio-0:00 #define DA850_LCD_PWR_PIN GPIO_TO_PIN(2, 8) @@ -1257,16 +1258,34 @@ static struct vpif_subdev_info da850_vpif_subdev[] = { }, }; -static const char const *vpif_output[] = { - Composite, - S-Video, +static const struct vpif_output da850_ch0_outputs[] = { + { + .output = { + .index = 0, + .name = Composite, + .type = V4L2_OUTPUT_TYPE_ANALOG, + }, + .subdev_name = adv7343, + .output_route = ADV7343_COMPOSITE_ID, + }, + { + .output = { + .index = 1, + .name = S-Video, + .type = V4L2_OUTPUT_TYPE_ANALOG, + }, + .subdev_name = adv7343, + .output_route = ADV7343_SVIDEO_ID, + }, }; static struct vpif_display_config da850_vpif_display_config = { .subdevinfo = da850_vpif_subdev, .subdev_count = ARRAY_SIZE(da850_vpif_subdev), - .output = vpif_output, - .output_count = ARRAY_SIZE(vpif_output), + .chan_config[0] = { + .outputs = da850_ch0_outputs, + .output_count = ARRAY_SIZE(da850_ch0_outputs), + }, .card_name= DA850/OMAP-L138 Video Display, }; diff --git a/arch/arm/mach-davinci/board-dm646x-evm.c b/arch/arm/mach-davinci/board-dm646x-evm.c index ad249c7..c206768 100644 --- a/arch/arm/mach-davinci/board-dm646x-evm.c +++ b/arch/arm/mach-davinci/board-dm646x-evm.c @@ -26,6 +26,7 @@ #include linux/i2c/pcf857x.h #include media/tvp514x.h +#include media/adv7343.h #include linux/mtd/mtd.h #include linux/mtd/nand.h @@ -496,18 +497,44 @@ static struct vpif_subdev_info dm646x_vpif_subdev[] = { }, }; -static const char *output[] = { - Composite, - Component, - S-Video, +static const struct vpif_output dm6467_ch0_outputs[] = { + { + .output = { + .index = 0, + .name = Composite, + .type = V4L2_OUTPUT_TYPE_ANALOG, + }, + .subdev_name = adv7343, + .output_route = ADV7343_COMPOSITE_ID, + }, + { + .output = { + .index = 1, + .name = Component, + .type = V4L2_OUTPUT_TYPE_ANALOG, + }, + .subdev_name = adv7343, + .output_route = ADV7343_COMPONENT_ID, + }, + { + .output = { + .index = 2, + .name = S-Video, + .type = V4L2_OUTPUT_TYPE_ANALOG, + }, + .subdev_name = adv7343, + .output_route = ADV7343_SVIDEO_ID, + }, }; static struct vpif_display_config dm646x_vpif_display_config = { .set_clock = set_vpif_clock, .subdevinfo = dm646x_vpif_subdev, .subdev_count = ARRAY_SIZE(dm646x_vpif_subdev), - .output = output, - .output_count = ARRAY_SIZE(output), + .chan_config[0] = { + .outputs = dm6467_ch0_outputs, + .output_count = ARRAY_SIZE(dm6467_ch0_outputs), + }, .card_name = DM646x EVM, }; diff --git a/drivers/media/platform/davinci/vpif_display.c b/drivers/media/platform/davinci/vpif_display.c index 8d1ce09..b218f3a 100644 --- a/drivers/media/platform/davinci/vpif_display.c +++
Re: [PATCH] media: davinci: vpif: display: separate out subdev from output
On Mon September 24 2012 12:02:26 Prabhakar wrote: From: Lad, Prabhakar prabhakar@ti.com vpif_display relied on a 1-1 mapping of output and subdev. This is not necessarily the case. Separate the two. So there is a list of subdevs and a list of outputs. Each output refers to a subdev and has routing information. An output does not have to have a subdev. The initial output for each channel is set to the fist output. Currently missing is support for associating multiple subdevs with an output. Signed-off-by: Lad, Prabhakar prabhakar@ti.com Signed-off-by: Manjunath Hadli manjunath.ha...@ti.com Cc: Hans Verkuil hans.verk...@cisco.com --- This patch is dependent on the patch series from Hans (http://www.mail-archive.com/linux-media@vger.kernel.org/msg52270.html) arch/arm/mach-davinci/board-da850-evm.c | 29 +- arch/arm/mach-davinci/board-dm646x-evm.c | 39 ++- drivers/media/platform/davinci/vpif_display.c | 138 - include/media/davinci/vpif_types.h| 20 +++- 4 files changed, 185 insertions(+), 41 deletions(-) diff --git a/arch/arm/mach-davinci/board-da850-evm.c b/arch/arm/mach-davinci/board-da850-evm.c index 3081ea4..23a7012 100644 --- a/arch/arm/mach-davinci/board-da850-evm.c +++ b/arch/arm/mach-davinci/board-da850-evm.c @@ -46,6 +46,7 @@ #include mach/spi.h #include media/tvp514x.h +#include media/adv7343.h #define DA850_EVM_PHY_ID davinci_mdio-0:00 #define DA850_LCD_PWR_PINGPIO_TO_PIN(2, 8) @@ -1257,16 +1258,34 @@ static struct vpif_subdev_info da850_vpif_subdev[] = { }, }; -static const char const *vpif_output[] = { - Composite, - S-Video, +static const struct vpif_output da850_ch0_outputs[] = { + { + .output = { + .index = 0, + .name = Composite, + .type = V4L2_OUTPUT_TYPE_ANALOG, + }, + .subdev_name = adv7343, + .output_route = ADV7343_COMPOSITE_ID, + }, + { + .output = { + .index = 1, + .name = S-Video, + .type = V4L2_OUTPUT_TYPE_ANALOG, + }, + .subdev_name = adv7343, + .output_route = ADV7343_SVIDEO_ID, + }, }; static struct vpif_display_config da850_vpif_display_config = { .subdevinfo = da850_vpif_subdev, .subdev_count = ARRAY_SIZE(da850_vpif_subdev), - .output = vpif_output, - .output_count = ARRAY_SIZE(vpif_output), + .chan_config[0] = { + .outputs = da850_ch0_outputs, + .output_count = ARRAY_SIZE(da850_ch0_outputs), + }, .card_name= DA850/OMAP-L138 Video Display, }; diff --git a/arch/arm/mach-davinci/board-dm646x-evm.c b/arch/arm/mach-davinci/board-dm646x-evm.c index ad249c7..c206768 100644 --- a/arch/arm/mach-davinci/board-dm646x-evm.c +++ b/arch/arm/mach-davinci/board-dm646x-evm.c @@ -26,6 +26,7 @@ #include linux/i2c/pcf857x.h #include media/tvp514x.h +#include media/adv7343.h #include linux/mtd/mtd.h #include linux/mtd/nand.h @@ -496,18 +497,44 @@ static struct vpif_subdev_info dm646x_vpif_subdev[] = { }, }; -static const char *output[] = { - Composite, - Component, - S-Video, +static const struct vpif_output dm6467_ch0_outputs[] = { + { + .output = { + .index = 0, + .name = Composite, + .type = V4L2_OUTPUT_TYPE_ANALOG, + }, + .subdev_name = adv7343, + .output_route = ADV7343_COMPOSITE_ID, + }, + { + .output = { + .index = 1, + .name = Component, + .type = V4L2_OUTPUT_TYPE_ANALOG, + }, + .subdev_name = adv7343, + .output_route = ADV7343_COMPONENT_ID, + }, + { + .output = { + .index = 2, + .name = S-Video, + .type = V4L2_OUTPUT_TYPE_ANALOG, + }, + .subdev_name = adv7343, + .output_route = ADV7343_SVIDEO_ID, + }, }; static struct vpif_display_config dm646x_vpif_display_config = { .set_clock = set_vpif_clock, .subdevinfo = dm646x_vpif_subdev, .subdev_count = ARRAY_SIZE(dm646x_vpif_subdev), - .output = output, - .output_count = ARRAY_SIZE(output), + .chan_config[0] = { + .outputs = dm6467_ch0_outputs, + .output_count = ARRAY_SIZE(dm6467_ch0_outputs), + }, .card_name = DM646x EVM, }; diff --git a/drivers/media/platform/davinci/vpif_display.c b/drivers/media/platform/davinci/vpif_display.c index 8d1ce09..b218f3a 100644 ---
Re: [PATCH] media: davinci: vpif: display: separate out subdev from output
Hi Hans, Thanks for the review. On Mon, Sep 24, 2012 at 3:39 PM, Hans Verkuil hverk...@xs4all.nl wrote: On Mon September 24 2012 12:02:26 Prabhakar wrote: From: Lad, Prabhakar prabhakar@ti.com vpif_display relied on a 1-1 mapping of output and subdev. This is not necessarily the case. Separate the two. So there is a list of subdevs and a list of outputs. Each output refers to a subdev and has routing information. An output does not have to have a subdev. The initial output for each channel is set to the fist output. Currently missing is support for associating multiple subdevs with an output. Signed-off-by: Lad, Prabhakar prabhakar@ti.com Signed-off-by: Manjunath Hadli manjunath.ha...@ti.com Cc: Hans Verkuil hans.verk...@cisco.com --- This patch is dependent on the patch series from Hans (http://www.mail-archive.com/linux-media@vger.kernel.org/msg52270.html) arch/arm/mach-davinci/board-da850-evm.c | 29 +- arch/arm/mach-davinci/board-dm646x-evm.c | 39 ++- drivers/media/platform/davinci/vpif_display.c | 138 - include/media/davinci/vpif_types.h| 20 +++- 4 files changed, 185 insertions(+), 41 deletions(-) diff --git a/arch/arm/mach-davinci/board-da850-evm.c b/arch/arm/mach-davinci/board-da850-evm.c index 3081ea4..23a7012 100644 --- a/arch/arm/mach-davinci/board-da850-evm.c +++ b/arch/arm/mach-davinci/board-da850-evm.c @@ -46,6 +46,7 @@ #include mach/spi.h #include media/tvp514x.h +#include media/adv7343.h #define DA850_EVM_PHY_ID davinci_mdio-0:00 #define DA850_LCD_PWR_PINGPIO_TO_PIN(2, 8) @@ -1257,16 +1258,34 @@ static struct vpif_subdev_info da850_vpif_subdev[] = { }, }; -static const char const *vpif_output[] = { - Composite, - S-Video, +static const struct vpif_output da850_ch0_outputs[] = { + { + .output = { + .index = 0, + .name = Composite, + .type = V4L2_OUTPUT_TYPE_ANALOG, + }, + .subdev_name = adv7343, + .output_route = ADV7343_COMPOSITE_ID, + }, + { + .output = { + .index = 1, + .name = S-Video, + .type = V4L2_OUTPUT_TYPE_ANALOG, + }, + .subdev_name = adv7343, + .output_route = ADV7343_SVIDEO_ID, + }, }; static struct vpif_display_config da850_vpif_display_config = { .subdevinfo = da850_vpif_subdev, .subdev_count = ARRAY_SIZE(da850_vpif_subdev), - .output = vpif_output, - .output_count = ARRAY_SIZE(vpif_output), + .chan_config[0] = { + .outputs = da850_ch0_outputs, + .output_count = ARRAY_SIZE(da850_ch0_outputs), + }, .card_name= DA850/OMAP-L138 Video Display, }; diff --git a/arch/arm/mach-davinci/board-dm646x-evm.c b/arch/arm/mach-davinci/board-dm646x-evm.c index ad249c7..c206768 100644 --- a/arch/arm/mach-davinci/board-dm646x-evm.c +++ b/arch/arm/mach-davinci/board-dm646x-evm.c @@ -26,6 +26,7 @@ #include linux/i2c/pcf857x.h #include media/tvp514x.h +#include media/adv7343.h #include linux/mtd/mtd.h #include linux/mtd/nand.h @@ -496,18 +497,44 @@ static struct vpif_subdev_info dm646x_vpif_subdev[] = { }, }; -static const char *output[] = { - Composite, - Component, - S-Video, +static const struct vpif_output dm6467_ch0_outputs[] = { + { + .output = { + .index = 0, + .name = Composite, + .type = V4L2_OUTPUT_TYPE_ANALOG, + }, + .subdev_name = adv7343, + .output_route = ADV7343_COMPOSITE_ID, + }, + { + .output = { + .index = 1, + .name = Component, + .type = V4L2_OUTPUT_TYPE_ANALOG, + }, + .subdev_name = adv7343, + .output_route = ADV7343_COMPONENT_ID, + }, + { + .output = { + .index = 2, + .name = S-Video, + .type = V4L2_OUTPUT_TYPE_ANALOG, + }, + .subdev_name = adv7343, + .output_route = ADV7343_SVIDEO_ID, + }, }; static struct vpif_display_config dm646x_vpif_display_config = { .set_clock = set_vpif_clock, .subdevinfo = dm646x_vpif_subdev, .subdev_count = ARRAY_SIZE(dm646x_vpif_subdev), - .output = output, - .output_count = ARRAY_SIZE(output), + .chan_config[0] = { + .outputs = dm6467_ch0_outputs, + .output_count = ARRAY_SIZE(dm6467_ch0_outputs), + }, .card_name = DM646x EVM, }; diff --git a/drivers/media/platform/davinci/vpif_display.c