diff mbox

[4/4] ARM: davinci: add pdata-quirks for da850-evm vpif display

Message ID 1487269285-6948-5-git-send-email-bgolaszewski@baylibre.com (mailing list archive)
State New, archived
Headers show

Commit Message

Bartosz Golaszewski Feb. 16, 2017, 6:21 p.m. UTC
Similarly to vpif capture: we need to register the vpif display driver
and the corresponding adv7343 encoder in pdata-quirks as the DT
support is not complete - there isn't currently a way to define the
output_routing in the V4L2 drivers (c.f. s_routing) via DT.

Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Reviewed-by: Kevin Hilman <khilman@baylibre.com>
---
 arch/arm/mach-davinci/pdata-quirks.c | 69 +++++++++++++++++++++++++++++++++++-
 1 file changed, 68 insertions(+), 1 deletion(-)

Comments

Sekhar Nori Feb. 17, 2017, 1:15 p.m. UTC | #1
On Thursday 16 February 2017 11:51 PM, Bartosz Golaszewski wrote:
> Similarly to vpif capture: we need to register the vpif display driver
> and the corresponding adv7343 encoder in pdata-quirks as the DT
> support is not complete - there isn't currently a way to define the
> output_routing in the V4L2 drivers (c.f. s_routing) via DT.
> 
> Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
> Reviewed-by: Kevin Hilman <khilman@baylibre.com>
> ---
>  arch/arm/mach-davinci/pdata-quirks.c | 69 +++++++++++++++++++++++++++++++++++-
>  1 file changed, 68 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/arm/mach-davinci/pdata-quirks.c b/arch/arm/mach-davinci/pdata-quirks.c
> index 3ca773f..c659c76 100644
> --- a/arch/arm/mach-davinci/pdata-quirks.c
> +++ b/arch/arm/mach-davinci/pdata-quirks.c

> +#endif /* IS_ENABLED(CONFIG_VIDEO_DAVINCI_VPIF_CAPTURE) */
>  
> +#if IS_ENABLED(CONFIG_DA850_UI_SD_VIDEO_PORT)
> +static struct adv7343_platform_data adv7343_pdata = {
> +	.mode_config = {
> +		.dac = { 1, 1, 1 },
> +	},
> +	.sd_config = {
> +		.sd_dac_out = { 1 },
> +	},
> +};
> +
> +static struct vpif_subdev_info da850_vpif_subdev[] = {
> +	{
> +		.name = "adv7343",
> +		.board_info = {
> +			I2C_BOARD_INFO("adv7343", 0x2a),
> +			.platform_data = &adv7343_pdata,
> +		},
> +	},
> +};
> +
> +static const struct vpif_output da850_ch0_outputs[] = {
> +	{
> +		.output = {
> +			.index = 0,
> +			.name = "Composite",
> +			.type = V4L2_OUTPUT_TYPE_ANALOG,
> +			.capabilities = V4L2_OUT_CAP_STD,
> +			.std = V4L2_STD_ALL,
> +		},
> +		.subdev_name = "adv7343",
> +		.output_route = ADV7343_COMPOSITE_ID,
> +	},
> +	{
> +		.output = {
> +			.index = 1,
> +			.name = "S-Video",
> +			.type = V4L2_OUTPUT_TYPE_ANALOG,
> +			.capabilities = V4L2_OUT_CAP_STD,
> +			.std = V4L2_STD_ALL,
> +		},
> +		.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),
> +	.chan_config[0] = {
> +		.outputs = da850_ch0_outputs,
> +		.output_count = ARRAY_SIZE(da850_ch0_outputs),
> +	},
> +	.card_name    = "DA850/OMAP-L138 Video Display",
> +};
> +#endif /* defined(CONFIG_DA850_UI_SD_VIDEO_PORT) */
> +
> +#if IS_ENABLED(CONFIG_VIDEO_DAVINCI_VPIF_CAPTURE) || IS_ENABLED(CONFIG_DA850_UI_SD_VIDEO_PORT)
>  static void __init da850_vpif_legacy_init(void)
>  {
>  	int ret;
> @@ -119,8 +178,16 @@ static void __init da850_vpif_legacy_init(void)
>  	if (ret)
>  		pr_warn("%s: VPIF capture setup failed: %d\n",
>  			__func__, ret);
> +
> +	/* LCDK doesn't support VPIF display */
> +	if (of_machine_is_compatible("ti,da850-evm")) {
> +		ret = da850_register_vpif_display(&da850_vpif_display_config);

This fails to build when CONFIG_DA850_UI_SD_VIDEO_PORT is switched off.
Probably means you need separate functions for registering capture and
display parts.

I haven't reviewed rest of the patchset yet. Just noticed these while
applying them for some testing. You may want to wait sometime before
sending the next version.

Thanks,
Sekhar
Bartosz Golaszewski Feb. 17, 2017, 1:34 p.m. UTC | #2
2017-02-17 14:15 GMT+01:00 Sekhar Nori <nsekhar@ti.com>:
> On Thursday 16 February 2017 11:51 PM, Bartosz Golaszewski wrote:
>> Similarly to vpif capture: we need to register the vpif display driver
>> and the corresponding adv7343 encoder in pdata-quirks as the DT
>> support is not complete - there isn't currently a way to define the
>> output_routing in the V4L2 drivers (c.f. s_routing) via DT.
>>
>> Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
>> Reviewed-by: Kevin Hilman <khilman@baylibre.com>
>> ---
>>  arch/arm/mach-davinci/pdata-quirks.c | 69 +++++++++++++++++++++++++++++++++++-
>>  1 file changed, 68 insertions(+), 1 deletion(-)
>>
>> diff --git a/arch/arm/mach-davinci/pdata-quirks.c b/arch/arm/mach-davinci/pdata-quirks.c
>> index 3ca773f..c659c76 100644
>> --- a/arch/arm/mach-davinci/pdata-quirks.c
>> +++ b/arch/arm/mach-davinci/pdata-quirks.c
>
>> +#endif /* IS_ENABLED(CONFIG_VIDEO_DAVINCI_VPIF_CAPTURE) */
>>
>> +#if IS_ENABLED(CONFIG_DA850_UI_SD_VIDEO_PORT)
>> +static struct adv7343_platform_data adv7343_pdata = {
>> +     .mode_config = {
>> +             .dac = { 1, 1, 1 },
>> +     },
>> +     .sd_config = {
>> +             .sd_dac_out = { 1 },
>> +     },
>> +};
>> +
>> +static struct vpif_subdev_info da850_vpif_subdev[] = {
>> +     {
>> +             .name = "adv7343",
>> +             .board_info = {
>> +                     I2C_BOARD_INFO("adv7343", 0x2a),
>> +                     .platform_data = &adv7343_pdata,
>> +             },
>> +     },
>> +};
>> +
>> +static const struct vpif_output da850_ch0_outputs[] = {
>> +     {
>> +             .output = {
>> +                     .index = 0,
>> +                     .name = "Composite",
>> +                     .type = V4L2_OUTPUT_TYPE_ANALOG,
>> +                     .capabilities = V4L2_OUT_CAP_STD,
>> +                     .std = V4L2_STD_ALL,
>> +             },
>> +             .subdev_name = "adv7343",
>> +             .output_route = ADV7343_COMPOSITE_ID,
>> +     },
>> +     {
>> +             .output = {
>> +                     .index = 1,
>> +                     .name = "S-Video",
>> +                     .type = V4L2_OUTPUT_TYPE_ANALOG,
>> +                     .capabilities = V4L2_OUT_CAP_STD,
>> +                     .std = V4L2_STD_ALL,
>> +             },
>> +             .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),
>> +     .chan_config[0] = {
>> +             .outputs = da850_ch0_outputs,
>> +             .output_count = ARRAY_SIZE(da850_ch0_outputs),
>> +     },
>> +     .card_name    = "DA850/OMAP-L138 Video Display",
>> +};
>> +#endif /* defined(CONFIG_DA850_UI_SD_VIDEO_PORT) */
>> +
>> +#if IS_ENABLED(CONFIG_VIDEO_DAVINCI_VPIF_CAPTURE) || IS_ENABLED(CONFIG_DA850_UI_SD_VIDEO_PORT)
>>  static void __init da850_vpif_legacy_init(void)
>>  {
>>       int ret;
>> @@ -119,8 +178,16 @@ static void __init da850_vpif_legacy_init(void)
>>       if (ret)
>>               pr_warn("%s: VPIF capture setup failed: %d\n",
>>                       __func__, ret);
>> +
>> +     /* LCDK doesn't support VPIF display */
>> +     if (of_machine_is_compatible("ti,da850-evm")) {
>> +             ret = da850_register_vpif_display(&da850_vpif_display_config);
>
> This fails to build when CONFIG_DA850_UI_SD_VIDEO_PORT is switched off.
> Probably means you need separate functions for registering capture and
> display parts.
>
> I haven't reviewed rest of the patchset yet. Just noticed these while
> applying them for some testing. You may want to wait sometime before
> sending the next version.
>
> Thanks,
> Sekhar
>

Eek! My bad, didn't test different configs with that.

Thanks,
Bartosz
kernel test robot Feb. 18, 2017, 2:14 p.m. UTC | #3
Hi Bartosz,

[auto build test ERROR on arm-soc/for-next]
[also build test ERROR on next-20170217]
[cannot apply to v4.10-rc8]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Bartosz-Golaszewski/ARM-davinci-vpif-capture-display-support/20170217-044437
base:   https://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc.git for-next
config: arm-davinci_all_defconfig (attached as .config)
compiler: arm-linux-gnueabi-gcc (Debian 6.1.1-9) 6.1.1 20160705
reproduce:
        wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        make.cross ARCH=arm 

All errors (new ones prefixed by >>):

   arch/arm/mach-davinci/pdata-quirks.c: In function 'da850_vpif_legacy_init':
>> arch/arm/mach-davinci/pdata-quirks.c:184:38: error: 'da850_vpif_display_config' undeclared (first use in this function)
      ret = da850_register_vpif_display(&da850_vpif_display_config);
                                         ^~~~~~~~~~~~~~~~~~~~~~~~~
   arch/arm/mach-davinci/pdata-quirks.c:184:38: note: each undeclared identifier is reported only once for each function it appears in

vim +/da850_vpif_display_config +184 arch/arm/mach-davinci/pdata-quirks.c

   178		if (ret)
   179			pr_warn("%s: VPIF capture setup failed: %d\n",
   180				__func__, ret);
   181	
   182		/* LCDK doesn't support VPIF display */
   183		if (of_machine_is_compatible("ti,da850-evm")) {
 > 184			ret = da850_register_vpif_display(&da850_vpif_display_config);
   185			if (ret)
   186				pr_warn("%s: VPIF display setup failed: %d\n",
   187					__func__, ret);

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
diff mbox

Patch

diff --git a/arch/arm/mach-davinci/pdata-quirks.c b/arch/arm/mach-davinci/pdata-quirks.c
index 3ca773f..c659c76 100644
--- a/arch/arm/mach-davinci/pdata-quirks.c
+++ b/arch/arm/mach-davinci/pdata-quirks.c
@@ -11,6 +11,7 @@ 
 #include <linux/of_platform.h>
 
 #include <media/i2c/tvp514x.h>
+#include <media/i2c/adv7343.h>
 
 #include <mach/common.h>
 #include <mach/da8xx.h>
@@ -106,7 +107,65 @@  static struct vpif_capture_config da850_vpif_capture_config = {
 	},
 	.card_name = "DA850/OMAP-L138 Video Capture",
 };
+#endif /* IS_ENABLED(CONFIG_VIDEO_DAVINCI_VPIF_CAPTURE) */
 
+#if IS_ENABLED(CONFIG_DA850_UI_SD_VIDEO_PORT)
+static struct adv7343_platform_data adv7343_pdata = {
+	.mode_config = {
+		.dac = { 1, 1, 1 },
+	},
+	.sd_config = {
+		.sd_dac_out = { 1 },
+	},
+};
+
+static struct vpif_subdev_info da850_vpif_subdev[] = {
+	{
+		.name = "adv7343",
+		.board_info = {
+			I2C_BOARD_INFO("adv7343", 0x2a),
+			.platform_data = &adv7343_pdata,
+		},
+	},
+};
+
+static const struct vpif_output da850_ch0_outputs[] = {
+	{
+		.output = {
+			.index = 0,
+			.name = "Composite",
+			.type = V4L2_OUTPUT_TYPE_ANALOG,
+			.capabilities = V4L2_OUT_CAP_STD,
+			.std = V4L2_STD_ALL,
+		},
+		.subdev_name = "adv7343",
+		.output_route = ADV7343_COMPOSITE_ID,
+	},
+	{
+		.output = {
+			.index = 1,
+			.name = "S-Video",
+			.type = V4L2_OUTPUT_TYPE_ANALOG,
+			.capabilities = V4L2_OUT_CAP_STD,
+			.std = V4L2_STD_ALL,
+		},
+		.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),
+	.chan_config[0] = {
+		.outputs = da850_ch0_outputs,
+		.output_count = ARRAY_SIZE(da850_ch0_outputs),
+	},
+	.card_name    = "DA850/OMAP-L138 Video Display",
+};
+#endif /* defined(CONFIG_DA850_UI_SD_VIDEO_PORT) */
+
+#if IS_ENABLED(CONFIG_VIDEO_DAVINCI_VPIF_CAPTURE) || IS_ENABLED(CONFIG_DA850_UI_SD_VIDEO_PORT)
 static void __init da850_vpif_legacy_init(void)
 {
 	int ret;
@@ -119,8 +178,16 @@  static void __init da850_vpif_legacy_init(void)
 	if (ret)
 		pr_warn("%s: VPIF capture setup failed: %d\n",
 			__func__, ret);
+
+	/* LCDK doesn't support VPIF display */
+	if (of_machine_is_compatible("ti,da850-evm")) {
+		ret = da850_register_vpif_display(&da850_vpif_display_config);
+		if (ret)
+			pr_warn("%s: VPIF display setup failed: %d\n",
+				__func__, ret);
+	}
 }
-#endif
+#endif /* IS_ENABLED(CONFIG_VIDEO_DAVINCI_VPIF_CAPTURE) || IS_ENABLED(CONFIG_DA850_UI_SD_VIDEO_PORT) */
 
 static void pdata_quirks_check(struct pdata_init *quirks)
 {