Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 65760
b: refs/heads/master
c: 8267761
h: refs/heads/master
v: v3
  • Loading branch information
Hans Verkuil authored and Mauro Carvalho Chehab committed Oct 10, 2007
1 parent 0e7bf2c commit 1993112
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 18 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: e17a06badaedba89fad989eed409661c89a22e04
refs/heads/master: 8267761881d6bb91c168ba4d629b778cf106c485
22 changes: 10 additions & 12 deletions trunk/drivers/media/video/cx25840/cx25840-audio.c
Original file line number Diff line number Diff line change
Expand Up @@ -157,13 +157,12 @@ void cx25840_audio_set_path(struct i2c_client *client)
{
struct cx25840_state *state = i2c_get_clientdata(client);

/* assert soft reset */
cx25840_and_or(client, 0x810, ~0x1, 0x01);

/* stop microcontroller */
cx25840_and_or(client, 0x803, ~0x10, 0);

/* assert soft reset */
if (!state->is_cx25836)
cx25840_and_or(client, 0x810, ~0x1, 0x01);

/* Mute everything to prevent the PFFT! */
cx25840_write(client, 0x8d3, 0x1f);

Expand All @@ -181,15 +180,14 @@ void cx25840_audio_set_path(struct i2c_client *client)

set_audclk_freq(client, state->audclk_freq);

/* deassert soft reset */
if (!state->is_cx25836)
cx25840_and_or(client, 0x810, ~0x1, 0x00);

if (state->aud_input != CX25840_AUDIO_SERIAL) {
/* When the microcontroller detects the
* audio format, it will unmute the lines */
cx25840_and_or(client, 0x803, ~0x10, 0x10);
}

/* deassert soft reset */
cx25840_and_or(client, 0x810, ~0x1, 0x00);
}

static int get_volume(struct i2c_client *client)
Expand Down Expand Up @@ -330,18 +328,18 @@ int cx25840_audio(struct i2c_client *client, unsigned int cmd, void *arg)

switch (cmd) {
case VIDIOC_INT_AUDIO_CLOCK_FREQ:
if (!state->is_cx25836)
cx25840_and_or(client, 0x810, ~0x1, 1);
if (state->aud_input != CX25840_AUDIO_SERIAL) {
cx25840_and_or(client, 0x803, ~0x10, 0);
cx25840_write(client, 0x8d3, 0x1f);
}
if (!state->is_cx25836)
cx25840_and_or(client, 0x810, ~0x1, 1);
retval = set_audclk_freq(client, *(u32 *)arg);
if (!state->is_cx25836)
cx25840_and_or(client, 0x810, ~0x1, 0);
if (state->aud_input != CX25840_AUDIO_SERIAL) {
cx25840_and_or(client, 0x803, ~0x10, 0x10);
}
if (!state->is_cx25836)
cx25840_and_or(client, 0x810, ~0x1, 0);
return retval;

case VIDIOC_G_CTRL:
Expand Down
7 changes: 2 additions & 5 deletions trunk/drivers/media/video/cx25840/cx25840-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -250,6 +250,7 @@ static void input_change(struct i2c_client *client)
}
cx25840_and_or(client, 0x401, ~0x60, 0);
cx25840_and_or(client, 0x401, ~0x60, 0x60);
cx25840_and_or(client, 0x810, ~0x01, 1);

if (state->radio) {
cx25840_write(client, 0x808, 0xf9);
Expand Down Expand Up @@ -284,11 +285,7 @@ static void input_change(struct i2c_client *client)
cx25840_write(client, 0x80b, 0x10);
}

if (cx25840_read(client, 0x803) & 0x10) {
/* restart audio decoder microcontroller */
cx25840_and_or(client, 0x803, ~0x10, 0x00);
cx25840_and_or(client, 0x803, ~0x10, 0x10);
}
cx25840_and_or(client, 0x810, ~0x01, 0);
}

static int set_input(struct i2c_client *client, enum cx25840_video_input vid_input,
Expand Down

0 comments on commit 1993112

Please sign in to comment.