| /* |
| * |
| * |
| * Copyright (C) 2005 Mike Isely <isely@pobox.com> |
| * |
| * 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 |
| * |
| * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| * |
| */ |
| #ifndef __PVRUSB2_DEVATTR_H |
| #define __PVRUSB2_DEVATTR_H |
| |
| #include <linux/mod_devicetable.h> |
| #include <linux/videodev2.h> |
| #ifdef CONFIG_VIDEO_PVRUSB2_DVB |
| #include "pvrusb2-dvb.h" |
| #endif |
| |
| /* |
| |
| This header defines structures used to describe attributes of a device. |
| |
| */ |
| |
| |
| #define PVR2_CLIENT_ID_NULL 0 |
| #define PVR2_CLIENT_ID_MSP3400 1 |
| #define PVR2_CLIENT_ID_CX25840 2 |
| #define PVR2_CLIENT_ID_SAA7115 3 |
| #define PVR2_CLIENT_ID_TUNER 4 |
| #define PVR2_CLIENT_ID_CS53L32A 5 |
| #define PVR2_CLIENT_ID_WM8775 6 |
| #define PVR2_CLIENT_ID_DEMOD 7 |
| |
| struct pvr2_device_client_desc { |
| /* One ovr PVR2_CLIENT_ID_xxxx */ |
| unsigned char module_id; |
| |
| /* Null-terminated array of I2C addresses to try in order |
| initialize the module. It's safe to make this null terminated |
| since we're never going to encounter an i2c device with an |
| address of zero. If this is a null pointer or zero-length, |
| then no I2C addresses have been specified, in which case we'll |
| try some compiled in defaults for now. */ |
| unsigned char *i2c_address_list; |
| }; |
| |
| struct pvr2_device_client_table { |
| const struct pvr2_device_client_desc *lst; |
| unsigned char cnt; |
| }; |
| |
| |
| struct pvr2_string_table { |
| const char **lst; |
| unsigned int cnt; |
| }; |
| |
| #define PVR2_ROUTING_SCHEME_HAUPPAUGE 0 |
| #define PVR2_ROUTING_SCHEME_GOTVIEW 1 |
| #define PVR2_ROUTING_SCHEME_ONAIR 2 |
| #define PVR2_ROUTING_SCHEME_AV400 3 |
| |
| #define PVR2_DIGITAL_SCHEME_NONE 0 |
| #define PVR2_DIGITAL_SCHEME_HAUPPAUGE 1 |
| #define PVR2_DIGITAL_SCHEME_ONAIR 2 |
| |
| #define PVR2_LED_SCHEME_NONE 0 |
| #define PVR2_LED_SCHEME_HAUPPAUGE 1 |
| |
| #define PVR2_IR_SCHEME_NONE 0 |
| #define PVR2_IR_SCHEME_24XXX 1 /* FX2-controlled IR */ |
| #define PVR2_IR_SCHEME_ZILOG 2 /* HVR-1950 style (must be taken out of reset) */ |
| #define PVR2_IR_SCHEME_24XXX_MCE 3 /* 24xxx MCE device */ |
| #define PVR2_IR_SCHEME_29XXX 4 /* Original 29xxx device */ |
| |
| /* This describes a particular hardware type (except for the USB device ID |
| which must live in a separate structure due to environmental |
| constraints). See the top of pvrusb2-hdw.c for where this is |
| instantiated. */ |
| struct pvr2_device_desc { |
| /* Single line text description of hardware */ |
| const char *description; |
| |
| /* Single token identifier for hardware */ |
| const char *shortname; |
| |
| /* List of additional client modules we need to load */ |
| struct pvr2_string_table client_modules; |
| |
| /* List of defined client modules we need to load */ |
| struct pvr2_device_client_table client_table; |
| |
| /* List of FX2 firmware file names we should search; if empty then |
| FX2 firmware check / load is skipped and we assume the device |
| was initialized from internal ROM. */ |
| struct pvr2_string_table fx2_firmware; |
| |
| #ifdef CONFIG_VIDEO_PVRUSB2_DVB |
| /* callback functions to handle attachment of digital tuner & demod */ |
| const struct pvr2_dvb_props *dvb_props; |
| |
| #endif |
| /* Initial standard bits to use for this device, if not zero. |
| Anything set here is also implied as an available standard. |
| Note: This is ignored if overridden on the module load line via |
| the video_std module option. */ |
| v4l2_std_id default_std_mask; |
| |
| /* V4L tuner type ID to use with this device (only used if the |
| driver could not discover the type any other way). */ |
| int default_tuner_type; |
| |
| /* Signal routing scheme used by device, contains one of |
| PVR2_ROUTING_SCHEME_XXX. Schemes have to be defined as we |
| encounter them. This is an arbitrary integer scheme id; its |
| meaning is contained entirely within the driver and is |
| interpreted by logic which must send commands to the chip-level |
| drivers (search for things which touch this field). */ |
| unsigned char signal_routing_scheme; |
| |
| /* Indicates scheme for controlling device's LED (if any). The |
| driver will turn on the LED when streaming is underway. This |
| contains one of PVR2_LED_SCHEME_XXX. */ |
| unsigned char led_scheme; |
| |
| /* Control scheme to use if there is a digital tuner. This |
| contains one of PVR2_DIGITAL_SCHEME_XXX. This is an arbitrary |
| integer scheme id; its meaning is contained entirely within the |
| driver and is interpreted by logic which must control the |
| streaming pathway (search for things which touch this field). */ |
| unsigned char digital_control_scheme; |
| |
| /* If set, we don't bother trying to load cx23416 firmware. */ |
| unsigned int flag_skip_cx23416_firmware:1; |
| |
| /* If set, the encoder must be healthy in order for digital mode to |
| work (otherwise we assume that digital streaming will work even |
| if we fail to locate firmware for the encoder). If the device |
| doesn't support digital streaming then this flag has no |
| effect. */ |
| unsigned int flag_digital_requires_cx23416:1; |
| |
| /* Device has a hauppauge eeprom which we can interrogate. */ |
| unsigned int flag_has_hauppauge_rom:1; |
| |
| /* Device does not require a powerup command to be issued. */ |
| unsigned int flag_no_powerup:1; |
| |
| /* Device has a cx25840 - this enables special additional logic to |
| handle it. */ |
| unsigned int flag_has_cx25840:1; |
| |
| /* Device has a wm8775 - this enables special additional logic to |
| ensure that it is found. */ |
| unsigned int flag_has_wm8775:1; |
| |
| /* Indicate IR scheme of hardware. If not set, then it is assumed |
| that IR can work without any help from the driver. */ |
| unsigned int ir_scheme:3; |
| |
| /* These bits define which kinds of sources the device can handle. |
| Note: Digital tuner presence is inferred by the |
| digital_control_scheme enumeration. */ |
| unsigned int flag_has_fmradio:1; /* Has FM radio receiver */ |
| unsigned int flag_has_analogtuner:1; /* Has analog tuner */ |
| unsigned int flag_has_composite:1; /* Has composite input */ |
| unsigned int flag_has_svideo:1; /* Has s-video input */ |
| unsigned int flag_fx2_16kb:1; /* 16KB FX2 firmware OK here */ |
| |
| /* If this driver is considered experimental, i.e. not all aspects |
| are working correctly and/or it is untested, mark that fact |
| with this flag. */ |
| unsigned int flag_is_experimental:1; |
| }; |
| |
| extern struct usb_device_id pvr2_device_table[]; |
| |
| #endif /* __PVRUSB2_HDW_INTERNAL_H */ |