⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cx23885-cards.c

📁 trident tm5600的linux驱动
💻 C
📖 第 1 页 / 共 2 页
字号:
/* *  Driver for the Conexant CX23885 PCIe bridge * *  Copyright (c) 2006 Steven Toth <stoth@linuxtv.org> * *  This program is free software; you can redistribute it and/or modify *  it under the terms of the GNU General Public License as published by *  the Free Software Foundation; either version 2 of the License, or *  (at your option) any later version. * *  This program is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * *  GNU General Public License for more details. * *  You should have received a copy of the GNU General Public License *  along with this program; if not, write to the Free Software *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */#include <linux/init.h>#include <linux/module.h>#include <linux/pci.h>#include <linux/delay.h>#include <media/cx25840.h>#include "compat.h"#include "cx23885.h"#include "tuner-xc2028.h"/* ------------------------------------------------------------------ *//* board config info                                                  */struct cx23885_board cx23885_boards[] = {	[CX23885_BOARD_UNKNOWN] = {		.name		= "UNKNOWN/GENERIC",		/* Ensure safe default for unknown boards */		.clk_freq       = 0,		.input          = {{			.type   = CX23885_VMUX_COMPOSITE1,			.vmux   = 0,		}, {			.type   = CX23885_VMUX_COMPOSITE2,			.vmux   = 1,		}, {			.type   = CX23885_VMUX_COMPOSITE3,			.vmux   = 2,		}, {			.type   = CX23885_VMUX_COMPOSITE4,			.vmux   = 3,		} },	},	[CX23885_BOARD_HAUPPAUGE_HVR1800lp] = {		.name		= "Hauppauge WinTV-HVR1800lp",		.portc		= CX23885_MPEG_DVB,		.input          = {{			.type   = CX23885_VMUX_TELEVISION,			.vmux   = 0,			.gpio0  = 0xff00,		}, {			.type   = CX23885_VMUX_DEBUG,			.vmux   = 0,			.gpio0  = 0xff01,		}, {			.type   = CX23885_VMUX_COMPOSITE1,			.vmux   = 1,			.gpio0  = 0xff02,		}, {			.type   = CX23885_VMUX_SVIDEO,			.vmux   = 2,			.gpio0  = 0xff02,		} },	},	[CX23885_BOARD_HAUPPAUGE_HVR1800] = {		.name		= "Hauppauge WinTV-HVR1800",		.porta		= CX23885_ANALOG_VIDEO,		.portb		= CX23885_MPEG_ENCODER,		.portc		= CX23885_MPEG_DVB,		.tuner_type	= TUNER_PHILIPS_TDA8290,		.tuner_addr	= 0x42, /* 0x84 >> 1 */		.input          = {{			.type   = CX23885_VMUX_TELEVISION,			.vmux   =	CX25840_VIN7_CH3 |					CX25840_VIN5_CH2 |					CX25840_VIN2_CH1,			.gpio0  = 0,		}, {			.type   = CX23885_VMUX_COMPOSITE1,			.vmux   =	CX25840_VIN7_CH3 |					CX25840_VIN4_CH2 |					CX25840_VIN6_CH1,			.gpio0  = 0,		}, {			.type   = CX23885_VMUX_SVIDEO,			.vmux   =	CX25840_VIN7_CH3 |					CX25840_VIN4_CH2 |					CX25840_VIN8_CH1 |					CX25840_SVIDEO_ON,			.gpio0  = 0,		} },	},	[CX23885_BOARD_HAUPPAUGE_HVR1250] = {		.name		= "Hauppauge WinTV-HVR1250",		.portc		= CX23885_MPEG_DVB,		.input          = {{			.type   = CX23885_VMUX_TELEVISION,			.vmux   = 0,			.gpio0  = 0xff00,		}, {			.type   = CX23885_VMUX_DEBUG,			.vmux   = 0,			.gpio0  = 0xff01,		}, {			.type   = CX23885_VMUX_COMPOSITE1,			.vmux   = 1,			.gpio0  = 0xff02,		}, {			.type   = CX23885_VMUX_SVIDEO,			.vmux   = 2,			.gpio0  = 0xff02,		} },	},	[CX23885_BOARD_DVICO_FUSIONHDTV_5_EXP] = {		.name		= "DViCO FusionHDTV5 Express",		.portb		= CX23885_MPEG_DVB,	},	[CX23885_BOARD_HAUPPAUGE_HVR1500Q] = {		.name		= "Hauppauge WinTV-HVR1500Q",		.portc		= CX23885_MPEG_DVB,	},	[CX23885_BOARD_HAUPPAUGE_HVR1500] = {		.name		= "Hauppauge WinTV-HVR1500",		.portc		= CX23885_MPEG_DVB,	},	[CX23885_BOARD_HAUPPAUGE_HVR1200] = {		.name		= "Hauppauge WinTV-HVR1200",		.portc		= CX23885_MPEG_DVB,	},	[CX23885_BOARD_HAUPPAUGE_HVR1700] = {		.name		= "Hauppauge WinTV-HVR1700",		.portc		= CX23885_MPEG_DVB,	},	[CX23885_BOARD_HAUPPAUGE_HVR1400] = {		.name		= "Hauppauge WinTV-HVR1400",		.portc		= CX23885_MPEG_DVB,	},	[CX23885_BOARD_DVICO_FUSIONHDTV_7_DUAL_EXP] = {		.name		= "DViCO FusionHDTV7 Dual Express",		.portb		= CX23885_MPEG_DVB,		.portc		= CX23885_MPEG_DVB,	},	[CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP] = {		.name		= "DViCO FusionHDTV DVB-T Dual Express",		.portb		= CX23885_MPEG_DVB,		.portc		= CX23885_MPEG_DVB,	},	[CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H] = {		.name		= "Leadtek Winfast PxDVR3200 H",		.portc		= CX23885_MPEG_DVB,	},};const unsigned int cx23885_bcount = ARRAY_SIZE(cx23885_boards);/* ------------------------------------------------------------------ *//* PCI subsystem IDs                                                  */struct cx23885_subid cx23885_subids[] = {	{		.subvendor = 0x0070,		.subdevice = 0x3400,		.card      = CX23885_BOARD_UNKNOWN,	}, {		.subvendor = 0x0070,		.subdevice = 0x7600,		.card      = CX23885_BOARD_HAUPPAUGE_HVR1800lp,	}, {		.subvendor = 0x0070,		.subdevice = 0x7800,		.card      = CX23885_BOARD_HAUPPAUGE_HVR1800,	}, {		.subvendor = 0x0070,		.subdevice = 0x7801,		.card      = CX23885_BOARD_HAUPPAUGE_HVR1800,	}, {		.subvendor = 0x0070,		.subdevice = 0x7809,		.card      = CX23885_BOARD_HAUPPAUGE_HVR1800,	}, {		.subvendor = 0x0070,		.subdevice = 0x7911,		.card      = CX23885_BOARD_HAUPPAUGE_HVR1250,	}, {		.subvendor = 0x18ac,		.subdevice = 0xd500,		.card      = CX23885_BOARD_DVICO_FUSIONHDTV_5_EXP,	}, {		.subvendor = 0x0070,		.subdevice = 0x7790,		.card      = CX23885_BOARD_HAUPPAUGE_HVR1500Q,	}, {		.subvendor = 0x0070,		.subdevice = 0x7797,		.card      = CX23885_BOARD_HAUPPAUGE_HVR1500Q,	}, {		.subvendor = 0x0070,		.subdevice = 0x7710,		.card      = CX23885_BOARD_HAUPPAUGE_HVR1500,	}, {		.subvendor = 0x0070,		.subdevice = 0x7717,		.card      = CX23885_BOARD_HAUPPAUGE_HVR1500,	}, {		.subvendor = 0x0070,		.subdevice = 0x71d1,		.card      = CX23885_BOARD_HAUPPAUGE_HVR1200,	}, {		.subvendor = 0x0070,		.subdevice = 0x71d3,		.card      = CX23885_BOARD_HAUPPAUGE_HVR1200,	}, {		.subvendor = 0x0070,		.subdevice = 0x8101,		.card      = CX23885_BOARD_HAUPPAUGE_HVR1700,	}, {		.subvendor = 0x0070,		.subdevice = 0x8010,		.card      = CX23885_BOARD_HAUPPAUGE_HVR1400,	}, {		.subvendor = 0x18ac,		.subdevice = 0xd618,		.card      = CX23885_BOARD_DVICO_FUSIONHDTV_7_DUAL_EXP,	}, {		.subvendor = 0x18ac,		.subdevice = 0xdb78,		.card      = CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP,	}, {		.subvendor = 0x107d,		.subdevice = 0x6681,		.card      = CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H,	},};const unsigned int cx23885_idcount = ARRAY_SIZE(cx23885_subids);void cx23885_card_list(struct cx23885_dev *dev){	int i;	if (0 == dev->pci->subsystem_vendor &&	    0 == dev->pci->subsystem_device) {		printk(KERN_INFO			"%s: Board has no valid PCIe Subsystem ID and can't\n"		       "%s: be autodetected. Pass card=<n> insmod option\n"		       "%s: to workaround that. Redirect complaints to the\n"		       "%s: vendor of the TV card.  Best regards,\n"		       "%s:         -- tux\n",		       dev->name, dev->name, dev->name, dev->name, dev->name);	} else {		printk(KERN_INFO			"%s: Your board isn't known (yet) to the driver.\n"		       "%s: Try to pick one of the existing card configs via\n"		       "%s: card=<n> insmod option.  Updating to the latest\n"		       "%s: version might help as well.\n",		       dev->name, dev->name, dev->name, dev->name);	}	printk(KERN_INFO "%s: Here is a list of valid choices for the card=<n> insmod option:\n",	       dev->name);	for (i = 0; i < cx23885_bcount; i++)		printk(KERN_INFO "%s:    card=%d -> %s\n",		       dev->name, i, cx23885_boards[i].name);}static void hauppauge_eeprom(struct cx23885_dev *dev, u8 *eeprom_data){	struct tveeprom tv;	tveeprom_hauppauge_analog(&dev->i2c_bus[0].i2c_client, &tv,		eeprom_data);	/* Make sure we support the board model */	switch (tv.model) {	case 71009:		/* WinTV-HVR1200 (PCIe, Retail, full height)		 * DVB-T and basic analog */	case 71359:		/* WinTV-HVR1200 (PCIe, OEM, half height)		 * DVB-T and basic analog */	case 71439:		/* WinTV-HVR1200 (PCIe, OEM, half height)		 * DVB-T and basic analog */	case 71449:		/* WinTV-HVR1200 (PCIe, OEM, full height)		 * DVB-T and basic analog */	case 71939:		/* WinTV-HVR1200 (PCIe, OEM, half height)		 * DVB-T and basic analog */	case 71949:		/* WinTV-HVR1200 (PCIe, OEM, full height)		 * DVB-T and basic analog */	case 71959:		/* WinTV-HVR1200 (PCIe, OEM, full height)		 * DVB-T and basic analog */	case 71979:		/* WinTV-HVR1200 (PCIe, OEM, half height)		 * DVB-T and basic analog */	case 71999:		/* WinTV-HVR1200 (PCIe, OEM, full height)		 * DVB-T and basic analog */	case 76601:		/* WinTV-HVR1800lp (PCIe, Retail, No IR, Dual			channel ATSC and MPEG2 HW Encoder */	case 77001:		/* WinTV-HVR1500 (Express Card, OEM, No IR, ATSC			and Basic analog */	case 77011:		/* WinTV-HVR1500 (Express Card, Retail, No IR, ATSC			and Basic analog */	case 77041:		/* WinTV-HVR1500Q (Express Card, OEM, No IR, ATSC/QAM			and Basic analog */	case 77051:		/* WinTV-HVR1500Q (Express Card, Retail, No IR, ATSC/QAM			and Basic analog */	case 78011:		/* WinTV-HVR1800 (PCIe, Retail, 3.5mm in, IR, No FM,			Dual channel ATSC and MPEG2 HW Encoder */	case 78501:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -