2007-11-26 01:53:12 -03:00
/*
*
*
* 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>
2007-12-02 23:51:34 -03:00
# include <linux/videodev2.h>
2008-03-16 02:12:12 -03:00
# ifdef CONFIG_VIDEO_PVRUSB2_DVB
2008-02-03 23:46:16 -03:00
# include "pvrusb2-dvb.h"
2008-03-16 02:12:12 -03:00
# endif
2007-11-26 01:53:12 -03:00
/*
This header defines structures used to describe attributes of a device .
*/
2009-03-07 00:14:13 -03:00
# define PVR2_CLIENT_ID_NULL 0
2009-03-06 23:42:20 -03:00
# define PVR2_CLIENT_ID_MSP3400 1
# define PVR2_CLIENT_ID_CX25840 2
# define PVR2_CLIENT_ID_SAA7115 3
# define PVR2_CLIENT_ID_TUNER 4
2009-03-07 02:02:32 -03:00
# define PVR2_CLIENT_ID_CS53L32A 5
2009-03-07 00:39:34 -03:00
# define PVR2_CLIENT_ID_WM8775 6
2009-03-14 14:09:04 -03:00
# define PVR2_CLIENT_ID_DEMOD 7
2009-03-06 23:42:20 -03:00
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 ;
} ;
2007-11-26 01:53:12 -03:00
struct pvr2_string_table {
const char * * lst ;
unsigned int cnt ;
} ;
2007-11-26 02:07:26 -03:00
# define PVR2_ROUTING_SCHEME_HAUPPAUGE 0
2007-11-26 02:14:23 -03:00
# define PVR2_ROUTING_SCHEME_GOTVIEW 1
2009-03-15 17:53:29 -03:00
# define PVR2_ROUTING_SCHEME_ONAIR 2
2009-05-09 18:00:23 -03:00
# define PVR2_ROUTING_SCHEME_AV400 3
2007-11-26 01:53:12 -03:00
2008-04-22 14:45:40 -03:00
# define PVR2_DIGITAL_SCHEME_NONE 0
# define PVR2_DIGITAL_SCHEME_HAUPPAUGE 1
# define PVR2_DIGITAL_SCHEME_ONAIR 2
2008-04-22 14:45:42 -03:00
# define PVR2_LED_SCHEME_NONE 0
# define PVR2_LED_SCHEME_HAUPPAUGE 1
2008-07-25 19:35:31 -03:00
# define PVR2_IR_SCHEME_NONE 0
2009-04-06 01:51:38 -03:00
# 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 */
2008-07-25 19:35:31 -03:00
2007-11-26 01:53:12 -03:00
/* 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 ;
2009-03-06 23:42:20 -03:00
/* List of defined client modules we need to load */
struct pvr2_device_client_table client_table ;
2007-11-26 01:53:12 -03:00
/* 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 ;
2008-03-28 05:43:45 -03:00
# ifdef CONFIG_VIDEO_PVRUSB2_DVB
2008-02-03 23:46:16 -03:00
/* callback functions to handle attachment of digital tuner & demod */
2009-03-07 02:08:58 -03:00
const struct pvr2_dvb_props * dvb_props ;
2008-02-03 23:46:16 -03:00
2008-03-28 05:43:45 -03:00
# endif
2008-04-22 14:45:42 -03:00
/* 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 ;
2007-11-26 02:07:26 -03:00
/* 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 ) . */
2008-04-22 14:45:42 -03:00
unsigned char signal_routing_scheme ;
2007-11-26 02:07:26 -03:00
2008-04-22 14:45:42 -03:00
/* 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 . */
2008-04-22 14:45:42 -03:00
unsigned char led_scheme ;
2008-04-22 14:45:42 -03:00
2008-04-22 14:45:40 -03:00
/* 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 ) . */
2008-04-22 14:45:42 -03:00
unsigned char digital_control_scheme ;
2007-12-02 23:51:34 -03:00
2007-11-26 01:53:12 -03:00
/* If set, we don't bother trying to load cx23416 firmware. */
2008-04-25 02:19:44 -03:00
unsigned int flag_skip_cx23416_firmware : 1 ;
2007-11-26 01:53:12 -03:00
2008-04-03 04:51:19 -03:00
/* 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 . */
2008-04-25 02:19:44 -03:00
unsigned int flag_digital_requires_cx23416 : 1 ;
2008-04-03 04:51:19 -03:00
2007-11-26 02:04:11 -03:00
/* Device has a hauppauge eeprom which we can interrogate. */
2008-04-25 02:19:44 -03:00
unsigned int flag_has_hauppauge_rom : 1 ;
2007-11-26 02:04:11 -03:00
2007-11-26 01:53:12 -03:00
/* Device does not require a powerup command to be issued. */
2008-04-25 02:19:44 -03:00
unsigned int flag_no_powerup : 1 ;
2007-11-26 01:53:12 -03:00
/* Device has a cx25840 - this enables special additional logic to
handle it . */
2008-04-25 02:19:44 -03:00
unsigned int flag_has_cx25840 : 1 ;
2007-11-26 01:53:12 -03:00
/* Device has a wm8775 - this enables special additional logic to
ensure that it is found . */
2008-04-25 02:19:44 -03:00
unsigned int flag_has_wm8775 : 1 ;
2007-11-26 02:09:42 -03:00
2009-04-06 01:51:38 -03:00
/* 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 ;
2008-04-22 14:45:36 -03:00
2008-04-22 14:45:40 -03:00
/* These bits define which kinds of sources the device can handle.
Note : Digital tuner presence is inferred by the
digital_control_scheme enumeration . */
2008-04-25 02:19:44 -03:00
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 */
2009-11-25 02:49:21 -03:00
unsigned int flag_fx2_16kb : 1 ; /* 16KB FX2 firmware OK here */
2010-05-15 00:13:35 -03:00
/* 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 ;
2007-11-26 01:53:12 -03:00
} ;
extern struct usb_device_id pvr2_device_table [ ] ;
# endif /* __PVRUSB2_HDW_INTERNAL_H */
/*
Stuff for Emacs to see , in order to encourage consistent editing style :
* * * Local Variables : * * *
* * * mode : c * * *
* * * fill - column : 75 * * *
* * * tab - width : 8 * * *
* * * c - basic - offset : 8 * * *
* * * End : * * *
*/