[media] Add support Sony CXD2854ER demodulator

CXD2854ER is identical to CXD2841ER except ISDB-T/S added.
New method 'cxd2841er_attach_i' is added
xtal frequency now configurable. Available options:
20.5MHz, 24MHz, 41MHz

Signed-off-by: Abylay Ospan <aospan@netup.ru>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
This commit is contained in:
Abylay Ospan 2016-03-22 19:20:34 -03:00 коммит произвёл Mauro Carvalho Chehab
Родитель 2dc1ed4edb
Коммит 83808c23e5
3 изменённых файлов: 740 добавлений и 86 удалений

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -25,8 +25,15 @@
#include <linux/kconfig.h> #include <linux/kconfig.h>
#include <linux/dvb/frontend.h> #include <linux/dvb/frontend.h>
enum cxd2841er_xtal {
SONY_XTAL_20500, /* 20.5 MHz */
SONY_XTAL_24000, /* 24 MHz */
SONY_XTAL_41000 /* 41 MHz */
};
struct cxd2841er_config { struct cxd2841er_config {
u8 i2c_addr; u8 i2c_addr;
enum cxd2841er_xtal xtal;
}; };
#if IS_REACHABLE(CONFIG_DVB_CXD2841ER) #if IS_REACHABLE(CONFIG_DVB_CXD2841ER)
@ -38,28 +45,38 @@ extern struct dvb_frontend *cxd2841er_attach_t(struct cxd2841er_config *cfg,
extern struct dvb_frontend *cxd2841er_attach_c(struct cxd2841er_config *cfg, extern struct dvb_frontend *cxd2841er_attach_c(struct cxd2841er_config *cfg,
struct i2c_adapter *i2c); struct i2c_adapter *i2c);
extern struct dvb_frontend *cxd2841er_attach_i(struct cxd2841er_config *cfg,
struct i2c_adapter *i2c);
#else #else
static inline struct dvb_frontend *cxd2841er_attach_s( static inline struct dvb_frontend *cxd2841er_attach_s(
struct cxd2841er_config *cfg, struct cxd2841er_config *cfg,
struct i2c_adapter *i2c) struct i2c_adapter *i2c)
{ {
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); pr_warn("%s: driver disabled by Kconfig\n", __func__);
return NULL; return NULL;
} }
static inline struct dvb_frontend *cxd2841er_attach_t( static inline struct dvb_frontend *cxd2841er_attach_t(
struct cxd2841er_config *cfg, struct i2c_adapter *i2c) struct cxd2841er_config *cfg, struct i2c_adapter *i2c)
{ {
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); pr_warn("%s: driver disabled by Kconfig\n", __func__);
return NULL; return NULL;
} }
static inline struct dvb_frontend *cxd2841er_attach_c( static inline struct dvb_frontend *cxd2841er_attach_c(
struct cxd2841er_config *cfg, struct i2c_adapter *i2c) struct cxd2841er_config *cfg, struct i2c_adapter *i2c)
{ {
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); pr_warn("%s: driver disabled by Kconfig\n", __func__);
return NULL; return NULL;
} }
static inline struct dvb_frontend *cxd2841er_attach_i(
struct cxd2841er_config *cfg, struct i2c_adapter *i2c)
{
pr_warn("%s: driver disabled by Kconfig\n", __func__);
return NULL;
}
#endif #endif
#endif #endif

Просмотреть файл

@ -26,6 +26,7 @@
#define I2C_SLVT 1 #define I2C_SLVT 1
#define CXD2841ER_CHIP_ID 0xa7 #define CXD2841ER_CHIP_ID 0xa7
#define CXD2854ER_CHIP_ID 0xc1
#define CXD2841ER_DVBS_POLLING_INVL 10 #define CXD2841ER_DVBS_POLLING_INVL 10