This commit was manufactured by cvs2svn to create branch 'vserver'.
[linux-2.6.git] / drivers / media / dvb / frontends / lg_h06xf.h
1 /*
2  *  lg_h06xf.h - ATSC Tuner support for LG TDVS-H06xF
3  *
4  *  This program is free software; you can redistribute it and/or modify
5  *  it under the terms of the GNU General Public License as published by
6  *  the Free Software Foundation; either version 2 of the License, or
7  *  (at your option) any later version.
8  *
9  *  This program is distributed in the hope that it will be useful,
10  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  *  GNU General Public License for more details.
13  *
14  *  You should have received a copy of the GNU General Public License
15  *  along with this program; if not, write to the Free Software
16  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17  */
18
19 #ifndef _LG_H06XF_H_
20 #define _LG_H06XF_H_
21 #include "dvb-pll.h"
22
23 static int lg_h06xf_pll_set(struct dvb_frontend* fe, struct i2c_adapter* i2c_adap,
24                      struct dvb_frontend_parameters* params)
25 {
26         u8 buf[4];
27         struct i2c_msg msg = { .addr = 0x61, .flags = 0,
28                                .buf = buf, .len = sizeof(buf) };
29         int err;
30
31         dvb_pll_configure(&dvb_pll_lg_tdvs_h06xf, buf, params->frequency, 0);
32         if (fe->ops.i2c_gate_ctrl)
33                 fe->ops.i2c_gate_ctrl(fe, 1);
34         if ((err = i2c_transfer(i2c_adap, &msg, 1)) != 1) {
35                 printk(KERN_WARNING "lg_h06xf: %s error "
36                         "(addr %02x <- %02x, err = %i)\n",
37                         __FUNCTION__, buf[0], buf[1], err);
38                 if (err < 0)
39                         return err;
40                 else
41                         return -EREMOTEIO;
42         }
43
44         /* Set the Auxiliary Byte. */
45         buf[0] = buf[2];
46         buf[0] &= ~0x20;
47         buf[0] |= 0x18;
48         buf[1] = 0x50;
49         msg.len = 2;
50         if (fe->ops.i2c_gate_ctrl)
51                 fe->ops.i2c_gate_ctrl(fe, 1);
52         if ((err = i2c_transfer(i2c_adap, &msg, 1)) != 1) {
53                 printk(KERN_WARNING "lg_h06xf: %s error "
54                         "(addr %02x <- %02x, err = %i)\n",
55                         __FUNCTION__, buf[0], buf[1], err);
56                 if (err < 0)
57                         return err;
58                 else
59                         return -EREMOTEIO;
60         }
61
62         return 0;
63 }
64 #endif