mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Hans Verkuil <hverkuil@xs4all.nl>
To: "Lad, Prabhakar" <prabhakar.csengg@gmail.com>
Cc: LMML <linux-media@vger.kernel.org>,
	LKML <linux-kernel@vger.kernel.org>,
	Mauro Carvalho Chehab <mchehab@infradead.org>,
	Hans Verkuil <hans.verkuil@cisco.com>,
	Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
	"Lad, Prabhakar" <prabhakar.lad@ti.com>
Subject: Re: [PATCH] media: adv7343: accept configuration through platform data
Date: Mon, 21 Jan 2013 11:01:10 +0100	[thread overview]
Message-ID: <201301211101.10562.hverkuil@xs4all.nl> (raw)
In-Reply-To: <1358236853-2467-1-git-send-email-prabhakar.lad@ti.com>

On Tue January 15 2013 09:00:53 Lad, Prabhakar wrote:
> The current code was implemented with some default configurations,
> this default configuration works on board and doesn't work on other.
> 
> This patch accepts the configuration through platform data and configures
> the encoder depending on the data set.

Just one small comment...

> 
> Signed-off-by: Lad, Prabhakar <prabhakar.lad@ti.com>
> ---
>  drivers/media/i2c/adv7343.c |   36 +++++++++++++++++++++++++++++++-----
>  include/media/adv7343.h     |   32 ++++++++++++++++++++++++++++++++
>  2 files changed, 63 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/media/i2c/adv7343.c b/drivers/media/i2c/adv7343.c
> index 2b5aa67..a058058 100644
> --- a/drivers/media/i2c/adv7343.c
> +++ b/drivers/media/i2c/adv7343.c
> @@ -43,6 +43,7 @@ MODULE_PARM_DESC(debug, "Debug level 0-1");
>  struct adv7343_state {
>  	struct v4l2_subdev sd;
>  	struct v4l2_ctrl_handler hdl;
> +	const struct adv7343_platform_data *pdata;
>  	u8 reg00;
>  	u8 reg01;
>  	u8 reg02;
> @@ -215,12 +216,23 @@ static int adv7343_setoutput(struct v4l2_subdev *sd, u32 output_type)
>  	/* Enable Appropriate DAC */
>  	val = state->reg00 & 0x03;
>  
> -	if (output_type == ADV7343_COMPOSITE_ID)
> -		val |= ADV7343_COMPOSITE_POWER_VALUE;
> -	else if (output_type == ADV7343_COMPONENT_ID)
> -		val |= ADV7343_COMPONENT_POWER_VALUE;
> +	/* configure default configuration */
> +	if (!state->pdata)
> +		if (output_type == ADV7343_COMPOSITE_ID)
> +			val |= ADV7343_COMPOSITE_POWER_VALUE;
> +		else if (output_type == ADV7343_COMPONENT_ID)
> +			val |= ADV7343_COMPONENT_POWER_VALUE;
> +		else
> +			val |= ADV7343_SVIDEO_POWER_VALUE;
>  	else
> -		val |= ADV7343_SVIDEO_POWER_VALUE;
> +		val = state->pdata->mode_config.sleep_mode << 0 |
> +		      state->pdata->mode_config.pll_control << 1 |
> +		      state->pdata->mode_config.dac_3 << 2 |
> +		      state->pdata->mode_config.dac_2 << 3 |
> +		      state->pdata->mode_config.dac_1 << 4 |
> +		      state->pdata->mode_config.dac_6 << 5 |
> +		      state->pdata->mode_config.dac_5 << 6 |
> +		      state->pdata->mode_config.dac_4 << 7;
>  
>  	err = adv7343_write(sd, ADV7343_POWER_MODE_REG, val);
>  	if (err < 0)
> @@ -238,6 +250,17 @@ static int adv7343_setoutput(struct v4l2_subdev *sd, u32 output_type)
>  
>  	/* configure SD DAC Output 2 and SD DAC Output 1 bit to zero */
>  	val = state->reg82 & (SD_DAC_1_DI & SD_DAC_2_DI);
> +
> +	if (state->pdata && state->pdata->sd_config.sd_dac_out1)
> +		val = val | (state->pdata->sd_config.sd_dac_out1 << 1);
> +	else if (state->pdata && !state->pdata->sd_config.sd_dac_out1)
> +		val = val & ~(state->pdata->sd_config.sd_dac_out1 << 1);
> +
> +	if (state->pdata && state->pdata->sd_config.sd_dac_out2)
> +		val = val | (state->pdata->sd_config.sd_dac_out2 << 2);
> +	else if (state->pdata && !state->pdata->sd_config.sd_dac_out2)
> +		val = val & ~(state->pdata->sd_config.sd_dac_out2 << 2);
> +
>  	err = adv7343_write(sd, ADV7343_SD_MODE_REG2, val);
>  	if (err < 0)
>  		goto setoutput_exit;
> @@ -401,6 +424,9 @@ static int adv7343_probe(struct i2c_client *client,
>  	if (state == NULL)
>  		return -ENOMEM;
>  
> +	/* Copy board specific information here */
> +	state->pdata = client->dev.platform_data;
> +
>  	state->reg00	= 0x80;
>  	state->reg01	= 0x00;
>  	state->reg02	= 0x20;
> diff --git a/include/media/adv7343.h b/include/media/adv7343.h
> index d6f8a4e..8086e46 100644
> --- a/include/media/adv7343.h
> +++ b/include/media/adv7343.h
> @@ -20,4 +20,36 @@
>  #define ADV7343_COMPONENT_ID	(1)
>  #define ADV7343_SVIDEO_ID	(2)
>  
> +struct adv7343_power_mode {
> +	bool sleep_mode;
> +	bool pll_control;
> +	bool dac_1;
> +	bool dac_2;
> +	bool dac_3;
> +	bool dac_4;
> +	bool dac_5;
> +	bool dac_6;
> +};

Can you add a short description for struct adv7343_power_mode? It's
sufficient to point to the relevant section in the datasheet (add a url
or something like that).

Regards,

	Hans

> +
> +/**
> + * struct adv7343_sd_config - SD Only Output Configuration.
> + * @sd_dac_out1: Configure SD DAC Output 1.
> + * @sd_dac_out2: Configure SD DAC Output 2.
> + */
> +struct adv7343_sd_config {
> +	/* SD only Output Configuration */
> +	bool sd_dac_out1;
> +	bool sd_dac_out2;
> +};
> +
> +/**
> + * struct adv7343_platform_data - Platform data values and access functions.
> + * @mode_config: Configuration for power mode.
> + * @sd_config: SD Only Configuration.
> + */
> +struct adv7343_platform_data {
> +	struct adv7343_power_mode mode_config;
> +	struct adv7343_sd_config sd_config;
> +};
> +
>  #endif				/* End of #ifndef ADV7343_H */
> 

  reply	other threads:[~2013-01-21 10:11 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-15  8:00 Lad, Prabhakar
2013-01-21 10:01 ` Hans Verkuil [this message]
2013-01-21 10:22   ` Prabhakar Lad

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201301211101.10562.hverkuil@xs4all.nl \
    --to=hverkuil@xs4all.nl \
    --cc=hans.verkuil@cisco.com \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=mchehab@infradead.org \
    --cc=prabhakar.csengg@gmail.com \
    --cc=prabhakar.lad@ti.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®