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