V4L/DVB (12730): Add conexant cx25821 driver
[safe/jmp/linux-2.6] / drivers / staging / cx25821 / cx25821-cards.c
1 /*\r
2  *  Driver for the Conexant CX25821 PCIe bridge\r
3  *\r
4  *  Copyright (C) 2009 Conexant Systems Inc. \r
5  *  Authors  <shu.lin@conexant.com>, <hiep.huynh@conexant.com>\r
6  *      Based on Steven Toth <stoth@linuxtv.org> cx23885 driver\r
7  *\r
8  *  This program is free software; you can redistribute it and/or modify\r
9  *  it under the terms of the GNU General Public License as published by\r
10  *  the Free Software Foundation; either version 2 of the License, or\r
11  *  (at your option) any later version.\r
12  *\r
13  *  This program is distributed in the hope that it will be useful,\r
14  *  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
15  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
16  *\r
17  *  GNU General Public License for more details.\r
18  *\r
19  *  You should have received a copy of the GNU General Public License\r
20  *  along with this program; if not, write to the Free Software\r
21  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.\r
22  */\r
23 \r
24 #include <linux/init.h>
25 #include <linux/module.h>
26 #include <linux/pci.h>
27 #include <linux/delay.h>
28 #include <media/cx25840.h>
29
30 #include "cx25821.h"
31 #include "tuner-xc2028.h"
32
33 // board config info                                                  
34
35 struct cx25821_board cx25821_boards[] = {
36         [UNKNOWN_BOARD] = {
37                 .name           = "UNKNOWN/GENERIC",
38                 // Ensure safe default for unknown boards 
39                 .clk_freq       = 0,
40         },
41
42         [CX25821_BOARD] = {
43                 .name               = "CX25821",
44                 .portb              = CX25821_RAW,
45                 .portc              = CX25821_264,\r
46         .input[0].type  = CX25821_VMUX_COMPOSITE,
47         },      
48
49 };
50
51 const unsigned int cx25821_bcount = ARRAY_SIZE(cx25821_boards);
52
53 struct cx25821_subid cx25821_subids[]={
54     {
55                 .subvendor = 0x14f1,
56                 .subdevice = 0x0920,
57                 .card      = CX25821_BOARD,
58     },
59 };
60
61
62 void cx25821_card_setup(struct cx25821_dev *dev)
63 {
64         static u8 eeprom[256];
65
66         if (dev->i2c_bus[0].i2c_rc == 0) 
67         {
68                 dev->i2c_bus[0].i2c_client.addr = 0xa0 >> 1;
69                 tveeprom_read(&dev->i2c_bus[0].i2c_client, eeprom, sizeof(eeprom));
70         }
71 }
72