@@ -1338,6 +1338,59 @@ Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
    return 0;                                   Â
}Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
                                          Â
+static int saa711x_s_power(struct v4l2_subdev *sd, int val)Â Â Â Â Â Â Â Â Â Â Â Â Â
+{Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
+Â Â Â Â Â struct saa711x_state *state = to_state(sd);Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
+Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
+Â Â Â Â Â if(val > 1 || val < 0)Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
+Â Â Â Â Â Â Â Â Â return -EINVAL;Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
+Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
+     /* There really isn't a way to put the chip into power saving         Â
+         other than by pulling CE to ground so all we do is return       Â
+         out of this function                        Â
+Â Â Â Â Â */Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
+Â Â Â Â Â if(val == 0)Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
+Â Â Â Â Â Â Â Â Â return 0;Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
+Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
+     /* When enabling the chip again we need to reinitialize the          Â
+         all the values                           Â
+Â Â Â Â Â */Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
+Â Â Â Â Â state->input = -1;Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
+Â Â Â Â Â state->output = SAA7115_IPORT_ON;Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
+Â Â Â Â Â state->enable = 1;Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
+Â Â Â Â Â state->radio = 0;Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
+Â Â Â Â Â state->bright = 128;Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
+Â Â Â Â Â state->contrast = 64;Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
+Â Â Â Â Â state->hue = 0;Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
+Â Â Â Â Â state->sat = 64;Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
+Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
+Â Â Â Â Â state->audclk_freq = 48000;Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
+Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
+Â Â Â Â Â v4l2_dbg(1, debug, sd, "writing init values s_power\n");Â Â Â Â Â Â Â Â Â Â Â
+Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
+Â Â Â Â Â /* init to 60hz/48khz */Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
+Â Â Â Â Â state->crystal_freq = SAA7115_FREQ_24_576_MHZ;Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
+Â Â Â Â Â switch (state->ident) {Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
+Â Â Â Â Â case V4L2_IDENT_SAA7111:Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
+Â Â Â Â Â Â Â Â Â saa711x_writeregs(sd, saa7111_init);Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
+Â Â Â Â Â Â Â Â Â break;Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
+Â Â Â Â Â case V4L2_IDENT_SAA7113:Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
+Â Â Â Â Â Â Â Â Â saa711x_writeregs(sd, saa7113_init);
+Â Â Â Â Â Â Â Â Â break;
+Â Â Â Â Â default:
+Â Â Â Â Â Â Â Â Â state->crystal_freq = SAA7115_FREQ_32_11_MHZ;
+Â Â Â Â Â Â Â Â Â saa711x_writeregs(sd, saa7115_init_auto_input);
+Â Â Â Â Â }
+Â Â Â Â Â if (state->ident != V4L2_IDENT_SAA7111)
+Â Â Â Â Â Â Â Â Â saa711x_writeregs(sd, saa7115_init_misc);
+Â Â Â Â Â saa711x_set_v4lstd(sd, V4L2_STD_NTSC);
+
+Â Â Â Â Â v4l2_dbg(1, debug, sd, "status: (1E) 0x%02x, (1F) 0x%02x\n",
+Â Â Â Â Â Â Â Â Â saa711x_read(sd, R_1E_STATUS_BYTE_1_VD_DEC),
+Â Â Â Â Â Â Â Â Â saa711x_read(sd, R_1F_STATUS_BYTE_2_VD_DEC));
+Â Â Â Â Â return 0;
+}
+
static int saa711x_reset(struct v4l2_subdev *sd, u32 val)
{
    v4l2_dbg(1, debug, sd, "decoder RESET\n");
@@ -1513,6 +1566,7 @@
    .s_std = saa711x_s_std,
    .reset = saa711x_reset,
    .s_gpio = saa711x_s_gpio,
+Â Â Â Â Â .s_power = saa711x_s_power,
#ifdef CONFIG_VIDEO_ADV_DEBUG
    .g_register = saa711x_g_register,
    .s_register = saa711x_s_register,