From patchwork Mon Jan 18 07:03:29 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Franklin Meng X-Patchwork-Id: 73629 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter.kernel.org (8.14.3/8.14.2) with ESMTP id o0I73Yqp025975 for ; Mon, 18 Jan 2010 07:03:34 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752075Ab0ARHDb (ORCPT ); Mon, 18 Jan 2010 02:03:31 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1752088Ab0ARHDb (ORCPT ); Mon, 18 Jan 2010 02:03:31 -0500 Received: from web32701.mail.mud.yahoo.com ([68.142.207.245]:37530 "HELO web32701.mail.mud.yahoo.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with SMTP id S1751715Ab0ARHDa convert rfc822-to-8bit (ORCPT ); Mon, 18 Jan 2010 02:03:30 -0500 Received: (qmail 9301 invoked by uid 60001); 18 Jan 2010 07:03:29 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s1024; t=1263798209; bh=N0klJdMFwYXtEQ1ym+HPoV6WN0UWPgajKoIBfBsselg=; h=Message-ID:X-YMail-OSG:Received:X-Mailer:Date:From:Subject:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding; b=fgVo/l0+A1KtcnJokHtnQxm61SEkqEqCG19mNu0gfGlo5UGyDpyU4l+ZgoJ9kWKlWBPp9C4bgYA7Y4mlACFPxdDxrC11Sp1lciiX70JTt7t72emve5KgtLPps21teIpOsJlRjkKwEbiVqfgePM+tmvAYrANaDPKdeH7Pj3yQ+Zc= DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.com; h=Message-ID:X-YMail-OSG:Received:X-Mailer:Date:From:Subject:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding; b=3Qqc+Tr+qb32uyP2JsyGjIzZ7fRJMrrSvDaF84Z/ZQHm5RbasCiWtLQmhCZIQ8Yzek0nasTrofCitU5t6qWI3f6CxnoTxSCuzkqL4QDsILOq3cspmcG6gIXdG2A74qTr0KijTwmvejy6q8vhaccGLJJMzQCgJxVeDDBJ2dI+1lc=; Message-ID: <647298.8638.qm@web32701.mail.mud.yahoo.com> X-YMail-OSG: TCxTaLEVM1l0scaQHDpFISNSbDI46wOjapBEYGeRlPDh7i8dQ2D0uq2_PTXpaIdT9oyYtGY4mbHJ7IyTzWrnO417oNg0LWwJw_Fx0smY.Z4ZTNNanbdSv.gNsZYXQD_JL7f0kl6Kfirv8Tc4S4_x55G2BFpR7bZE_zqZfSB_T0QCULcrA5o6yw6eEa5A4fExTQNlBThpvS27REGHmPWk9BNhWs2o.TBY1kpA5a3DIU3B4G9UHZbPe4GsALEWgIHQZhYzRIpMkprYpVafXQ.472Gk4Nc85IbsivVwTCOZno.V15dynvURHfwylE1nVAZy_pnIsTkfcd_zNRQ4eGSNfraa23Q4mWaZRQfeFxUaCg-- Received: from [71.110.50.19] by web32701.mail.mud.yahoo.com via HTTP; Sun, 17 Jan 2010 23:03:29 PST X-Mailer: YahooMailClassic/9.0.20 YahooMailWebService/0.8.100.260964 Date: Sun, 17 Jan 2010 23:03:29 -0800 (PST) From: Franklin Meng Subject: [Patch 1/3] Kworld 315U To: linux-media@vger.kernel.org Cc: " Mauro Carvalho ChehabDevin Heitmueller " , Douglas Schilling Landgraf MIME-Version: 1.0 Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org diff -r b6b82258cf5e linux/drivers/media/video/saa7115.c                              --- a/linux/drivers/media/video/saa7115.c       Thu Dec 31 19:14:54 2009 -0200        +++ b/linux/drivers/media/video/saa7115.c       Sun Jan 17 22:54:21 2010 -0800        @@ -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,