RE: [PATCH 7/10 - v2] DM355 platform changes for vpfe capture driver

2009-06-15 Thread Karicheri, Muralidharan
Hans,

Please see my response below.

 +/* { plus irq  }, */
  /* { I2C_BOARD_INFO(tlv320aic3x, 0x1b), }, */

Huh? What's this? I only know the tlv320aic23b and that's an audio driver.

[MK] Thanks to David for answering this.
 -/* { I2C_BOARD_INFO(tvp5146, 0x5d), }, */
  };

  static void __init evm_init_i2c(void)
 @@ -178,6 +191,57 @@ static struct platform_device dm355evm_dm9000 = {
  .num_resources  = ARRAY_SIZE(dm355evm_dm9000_rsrc),
  };

 +#define TVP514X_STD_ALL (V4L2_STD_NTSC | V4L2_STD_PAL)
 +/* Inputs available at the TVP5146 */
 +static struct v4l2_input tvp5146_inputs[] = {
 +{
 +.index = 0,
 +.name = COMPOSITE,

Please, don't use all-caps. Just use Composite and S-Video.

[MK] Ok
 +.type = V4L2_INPUT_TYPE_CAMERA,
 +.std = TVP514X_STD_ALL,
 +},
 +{
 +.index = 1,
 +.name = SVIDEO,
 +.type = V4L2_INPUT_TYPE_CAMERA,
 +.std = TVP514X_STD_ALL,
 +},
 +};
 +
 +/*
 + * this is the route info for connecting each input to decoder
 + * ouput that goes to vpfe. There is a one to one correspondence
 + * with tvp5146_inputs
 + */
 +static struct v4l2_routing tvp5146_routes[] = {

As mentioned elsewhere: v4l2_routing will disappear, so please don't use it.

[MK] Will change.
 +{
 +.input = INPUT_CVBS_VI2B,
 +.output = OUTPUT_10BIT_422_EMBEDDED_SYNC,
 +},
 +{
 +.input = INPUT_SVIDEO_VI2C_VI1C,
 +.output = OUTPUT_10BIT_422_EMBEDDED_SYNC,
 +},
 +};
 +
 +static struct vpfe_subdev_info vpfe_sub_devs[] = {
 +{
 +.name = tvp5146,
 +.grp_id = 0,
 +.num_inputs = ARRAY_SIZE(tvp5146_inputs),
 +.inputs = tvp5146_inputs,
 +.routes = tvp5146_routes,
 +.can_route = 1,
 +}
 +};

A general remark: currently you link your inputs directly to a subdev. This
approach has two disadvantages:

1) It doesn't work if there are no subdevs at all (e.g. because everything
goes through an fpga).

[MK] Not sure what you mean here. If there is an FPGA, there should be 
something to make a selection between FPGA vs the rest of the decoders. FPGA 
will have an input and there should be some way it reports the detected 
standard etc. So why can't it be implemented by a sub device (may be less 
configuration since most of the logic is in FPGA).  
2) It fixes the reported order of the inputs to the order of the subdevs.

[MK]Is that an issue? I don't see why.
I think it is better to have a separate array of input descriptions that
refer to a subdev when an input is associated with that subdev. 
[MK] Are suggesting an link from input array entry into sub device entry input 
index? How do you translate the input from application to a sub device or FPGA 
input? What if there are two composite inputs on two different sub devices?

flexible that way, and I actually think that the vpfe driver will be
simplified as well.
[MK], Not sure at this point.

Murali
m-karich...@ti.com
___
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source


Re: [PATCH 7/10 - v2] DM355 platform changes for vpfe capture driver

2009-06-15 Thread Hans Verkuil
On Tuesday 16 June 2009 00:24:34 Karicheri, Muralidharan wrote:
 Hans,

 Please see my response below.

snip

 A general remark: currently you link your inputs directly to a subdev.
  This approach has two disadvantages:
 
 1) It doesn't work if there are no subdevs at all (e.g. because
  everything goes through an fpga).

 [MK] Not sure what you mean here. If there is an FPGA, there should be
 something to make a selection between FPGA vs the rest of the decoders.
 FPGA will have an input and there should be some way it reports the
 detected standard etc. So why can't it be implemented by a sub device
 (may be less configuration since most of the logic is in FPGA).

Hopefully my previous reply explains what I meant. I wasn't clear here 
either.

 2) It fixes the reported order of the inputs to the order of the
  subdevs.

 [MK]Is that an issue? I don't see why.

It's a minor issue. But applications typically enumerate inputs to present a 
list to the user which inputs there are. And if there are a lot then it can 
be useful to have them in a specific order. Either to group the inputs 
based on some criterium or to reflect the labeling on the box. It's a 
nice-to-have, I admit.

 I think it is better to have a separate array of input descriptions that
 refer to a subdev when an input is associated with that subdev.

 [MK] Are suggesting an link from input array entry into sub device entry
 input index?

Yes.

 How do you translate the input from application to a sub 
 device or FPGA input? What if there are two composite inputs on two
 different sub devices?

A Composite 1 input would point to subdev 1 and the Composite 2 input 
would point to subdev 2. Or do you mean something else? (I'm not sure I 
entirely understand your question)


 flexible that way, and I actually think that the vpfe driver will be
 simplified as well.

 [MK], Not sure at this point.

The advantage is that the ENUMINPUT and S/G_INPUT functions can do a simple 
lookup in the input array and immediately find the subdev index. Rather 
than iterating over all subdevs and counting the number of inputs in order 
to find which input belongs to which subdev.

This is probably a stronger argument than my others are :-)

Regards,

Hans


 Murali
 m-karich...@ti.com
 --
 To unsubscribe from this list: send the line unsubscribe linux-media in
 the body of a message to majord...@vger.kernel.org
 More majordomo info at  http://vger.kernel.org/majordomo-info.html



-- 
Hans Verkuil - video4linux developer - sponsored by TANDBERG Telecom

___
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source


Re: [PATCH 7/10 - v2] DM355 platform changes for vpfe capture driver

2009-06-14 Thread Hans Verkuil
On Thursday 11 June 2009 19:00:46 m-kariche...@ti.com wrote:
 From: Muralidharan Karicheri a0868...@gt516km11.gt.design.ti.com
 
 DM355 platform and board setup
 
 This has platform and board setup changes to support vpfe capture
 driver for DM355 EVMs.
 
 Added registration of vpss platform driver based on last review
 
 Reviewed By Hans Verkuil.
 Reviewed By Laurent Pinchart.
 
 Signed-off-by: Muralidharan Karicheri m-kariche...@ti.com
 ---
 Applies to Davinci GIT Tree
 
  arch/arm/mach-davinci/board-dm355-evm.c|   72 +++-
  arch/arm/mach-davinci/dm355.c  |   83 
 
  arch/arm/mach-davinci/include/mach/dm355.h |2 +
  arch/arm/mach-davinci/include/mach/mux.h   |9 +++
  4 files changed, 163 insertions(+), 3 deletions(-)
 
 diff --git a/arch/arm/mach-davinci/board-dm355-evm.c 
 b/arch/arm/mach-davinci/board-dm355-evm.c
 index 5ac2f56..cf87e21 100644
 --- a/arch/arm/mach-davinci/board-dm355-evm.c
 +++ b/arch/arm/mach-davinci/board-dm355-evm.c
 @@ -20,6 +20,8 @@
  #include linux/io.h
  #include linux/gpio.h
  #include linux/clk.h
 +#include linux/videodev2.h
 +#include media/tvp514x.h
  #include linux/spi/spi.h
  #include linux/spi/eeprom.h
  
 @@ -134,12 +136,23 @@ static void dm355evm_mmcsd_gpios(unsigned gpio)
   dm355evm_mmc_gpios = gpio;
  }
  
 +#define TVP5146_I2C_ADDR 0x5D
 +static struct tvp514x_platform_data tvp5146_pdata = {
 + .clk_polarity = 0,
 + .hs_polarity = 1,
 + .vs_polarity = 1
 +};
 +
  static struct i2c_board_info dm355evm_i2c_info[] = {
 - { I2C_BOARD_INFO(dm355evm_msp, 0x25),
 + {   I2C_BOARD_INFO(dm355evm_msp, 0x25),
   .platform_data = dm355evm_mmcsd_gpios,
 - /* plus irq */ },
 + },
 + {
 + I2C_BOARD_INFO(tvp5146, TVP5146_I2C_ADDR),
 + .platform_data = tvp5146_pdata,
 + },
 + /* { plus irq  }, */
   /* { I2C_BOARD_INFO(tlv320aic3x, 0x1b), }, */

Huh? What's this? I only know the tlv320aic23b and that's an audio driver.

 - /* { I2C_BOARD_INFO(tvp5146, 0x5d), }, */
  };
  
  static void __init evm_init_i2c(void)
 @@ -178,6 +191,57 @@ static struct platform_device dm355evm_dm9000 = {
   .num_resources  = ARRAY_SIZE(dm355evm_dm9000_rsrc),
  };
  
 +#define TVP514X_STD_ALL  (V4L2_STD_NTSC | V4L2_STD_PAL)
 +/* Inputs available at the TVP5146 */
 +static struct v4l2_input tvp5146_inputs[] = {
 + {
 + .index = 0,
 + .name = COMPOSITE,

Please, don't use all-caps. Just use Composite and S-Video. 

 + .type = V4L2_INPUT_TYPE_CAMERA,
 + .std = TVP514X_STD_ALL,
 + },
 + {
 + .index = 1,
 + .name = SVIDEO,
 + .type = V4L2_INPUT_TYPE_CAMERA,
 + .std = TVP514X_STD_ALL,
 + },
 +};
 +
 +/*
 + * this is the route info for connecting each input to decoder
 + * ouput that goes to vpfe. There is a one to one correspondence
 + * with tvp5146_inputs
 + */
 +static struct v4l2_routing tvp5146_routes[] = {

As mentioned elsewhere: v4l2_routing will disappear, so please don't use it.

 + {
 + .input = INPUT_CVBS_VI2B,
 + .output = OUTPUT_10BIT_422_EMBEDDED_SYNC,
 + },
 + {
 + .input = INPUT_SVIDEO_VI2C_VI1C,
 + .output = OUTPUT_10BIT_422_EMBEDDED_SYNC,
 + },
 +};
 +
 +static struct vpfe_subdev_info vpfe_sub_devs[] = {
 + {
 + .name = tvp5146,
 + .grp_id = 0,
 + .num_inputs = ARRAY_SIZE(tvp5146_inputs),
 + .inputs = tvp5146_inputs,
 + .routes = tvp5146_routes,
 + .can_route = 1,
 + }
 +};

A general remark: currently you link your inputs directly to a subdev. This
approach has two disadvantages:

1) It doesn't work if there are no subdevs at all (e.g. because everything
goes through an fpga).

2) It fixes the reported order of the inputs to the order of the subdevs.

I think it is better to have a separate array of input descriptions that
refer to a subdev when an input is associated with that subdev. It's more
flexible that way, and I actually think that the vpfe driver will be
simplified as well.

 +
 +static struct vpfe_config vpfe_cfg = {
 + .num_subdevs = ARRAY_SIZE(vpfe_sub_devs),
 + .sub_devs = vpfe_sub_devs,
 + .card_name = DM355 EVM,
 + .ccdc = DM355 CCDC,
 +};
 +
  static struct platform_device *davinci_evm_devices[] __initdata = {
   dm355evm_dm9000,
   davinci_nand_device,
 @@ -189,6 +253,8 @@ static struct davinci_uart_config uart_config __initdata 
 = {
  
  static void __init dm355_evm_map_io(void)
  {
 + /* setup input configuration for VPFE input devices */
 + dm355_set_vpfe_config(vpfe_cfg);
   dm355_init();
  }
  
 diff --git a/arch/arm/mach-davinci/dm355.c b/arch/arm/mach-davinci/dm355.c
 index 9baeed3..3263af8 100644
 --- a/arch/arm/mach-davinci/dm355.c
 +++ b/arch/arm/mach-davinci/dm355.c
 @@ -481,6 +481,14 @@ 

Re: [PATCH 7/10 - v2] DM355 platform changes for vpfe capture driver

2009-06-11 Thread David Brownell
On Thursday 11 June 2009, m-kariche...@ti.com wrote:
 +   I2C_BOARD_INFO(tvp5146, TVP5146_I2C_ADDR),

Minor nit:  just use 0x5d instead of defining TVP5146_I2C_ADDR.
Fix in a v3, iff you make one.


___
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source