Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 357462
b: refs/heads/master
c: 0b302d8
h: refs/heads/master
v: v3
  • Loading branch information
Lad, Prabhakar authored and Mauro Carvalho Chehab committed Feb 5, 2013
1 parent d0fe151 commit 4920e79
Show file tree
Hide file tree
Showing 3 changed files with 84 additions and 6 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: ed57256f6fe8882cf6dde8d99f5fac5fd84c5a2d
refs/heads/master: 0b302d88534f0811c5f49bfba7aa46c4e1e032b7
36 changes: 31 additions & 5 deletions trunk/drivers/media/i2c/adv7343.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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)
Expand All @@ -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;
Expand Down Expand Up @@ -402,6 +425,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;
Expand Down
52 changes: 52 additions & 0 deletions trunk/include/media/adv7343.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,56 @@
#define ADV7343_COMPONENT_ID (1)
#define ADV7343_SVIDEO_ID (2)

/**
* adv7343_power_mode - power mode configuration.
* @sleep_mode: on enable the current consumption is reduced to micro ampere
* level. All DACs and the internal PLL circuit are disabled.
* Registers can be read from and written in sleep mode.
* @pll_control: PLL and oversampling control. This control allows internal
* PLL 1 circuit to be powered down and the oversampling to be
* switched off.
* @dac_1: power on/off DAC 1.
* @dac_2: power on/off DAC 2.
* @dac_3: power on/off DAC 3.
* @dac_4: power on/off DAC 4.
* @dac_5: power on/off DAC 5.
* @dac_6: power on/off DAC 6.
*
* Power mode register (Register 0x0), for more info refer REGISTER MAP ACCESS
* section of datasheet[1], table 17 page no 30.
*
* [1] http://www.analog.com/static/imported-files/data_sheets/ADV7342_7343.pdf
*/
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;
};

/**
* 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 */

0 comments on commit 4920e79

Please sign in to comment.