e0f0b37a3e
Define a list of valid "firmware types" for each combination of BASE, DTV and SCODEs. By masking the appropriate firmware bits off we can just use one "type" for the firmware searching and also flag when we are looking for a BASE, DTV or SCODE type firmware. This makes it much easier to track if we need to change device modes or flash an individual firmware part. Add a structure to remember what firmware properties we have. This contains the currently loaded/wanted base firmware (type), video std (id), video std requested (std_req), scode file and number in use. Incorporate said structure into the tuner private data. When checking whether the current firmware needs to be reloaded, first figure out exactly what "type" of firmware we want (base, std and scode), and then proceed to load the appropriate matching base, std-specific and scode records iff there are any changes required. This removes guesswork from the process because we no longer need to individually code a check for every tuning parameter's interactions. Signed-off-by: Chris Pascoe <c.pascoe@itee.uq.edu.au> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
51 lines
1.1 KiB
C
51 lines
1.1 KiB
C
/* tuner-xc2028
|
|
*
|
|
* Copyright (c) 2007 Mauro Carvalho Chehab (mchehab@infradead.org)
|
|
* This code is placed under the terms of the GNU General Public License v2
|
|
*/
|
|
|
|
#ifndef __TUNER_XC2028_H__
|
|
#define __TUNER_XC2028_H__
|
|
|
|
#include "dvb_frontend.h"
|
|
|
|
#define XC2028_DEFAULT_FIRMWARE "xc3028-v27.fw"
|
|
|
|
enum xc2028_firm_type {
|
|
XC2028_FIRM_NORMAL,
|
|
XC2028_FIRM_MTS,
|
|
};
|
|
|
|
struct xc2028_ctrl {
|
|
enum xc2028_firm_type type;
|
|
char *fname;
|
|
int max_len;
|
|
int d2633:1;
|
|
unsigned int scode_table;
|
|
};
|
|
|
|
struct xc2028_config {
|
|
struct i2c_adapter *i2c_adap;
|
|
u8 i2c_addr;
|
|
void *video_dev;
|
|
int (*callback) (void *dev, int command, int arg);
|
|
};
|
|
|
|
/* xc2028 commands for callback */
|
|
#define XC2028_TUNER_RESET 0
|
|
#define XC2028_RESET_CLK 1
|
|
|
|
#if defined(CONFIG_TUNER_XC2028) || (defined(CONFIG_TUNER_XC2028_MODULE) && defined(MODULE))
|
|
void *xc2028_attach(struct dvb_frontend *fe, struct xc2028_config *cfg);
|
|
#else
|
|
void *xc2028_attach(struct dvb_frontend *fe,
|
|
struct xc2028_config *cfg)
|
|
{
|
|
printk(KERN_INFO "%s: not probed - driver disabled by Kconfig\n",
|
|
__FUNCTION__);
|
|
return -EINVAL;
|
|
}
|
|
#endif
|
|
|
|
#endif /* __TUNER_XC2028_H__ */
|