aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorManu Abraham <abraham.manu@gmail.com>2007-10-08 17:51:54 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2008-12-29 14:53:18 -0500
commitae9902da96b4d2d82707706c7fbc93a8e501dde8 (patch)
tree6de6c61a449db3847f676120bc18d8d441febf2e
parente0ee77acb1b849ce0ad729aff2427d3dc07ee5d1 (diff)
V4L/DVB (9417): DVB_ATTACH for STB0899, STB6100, TDA8261
Signed-off-by: Manu Abraham <manu@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r--drivers/media/dvb/frontends/stb0899_drv.h17
-rw-r--r--drivers/media/dvb/frontends/stb6100.h20
-rw-r--r--drivers/media/dvb/frontends/tda8261.h14
-rw-r--r--drivers/media/dvb/ttpci/budget-av.c4
-rw-r--r--drivers/media/dvb/ttpci/budget-ci.c15
5 files changed, 55 insertions, 15 deletions
diff --git a/drivers/media/dvb/frontends/stb0899_drv.h b/drivers/media/dvb/frontends/stb0899_drv.h
index 8cb320643f8e..1e28114febf3 100644
--- a/drivers/media/dvb/frontends/stb0899_drv.h
+++ b/drivers/media/dvb/frontends/stb0899_drv.h
@@ -97,6 +97,21 @@ struct stb0899_config {
97 int (*tuner_set_rfsiggain)(struct dvb_frontend *fe, u32 rf_gain); 97 int (*tuner_set_rfsiggain)(struct dvb_frontend *fe, u32 rf_gain);
98}; 98};
99 99
100extern struct dvb_frontend *stb0899_attach(struct stb0899_config *config, struct i2c_adapter *i2c); 100#if defined(CONFIG_DVB_STB0899) || (defined(CONFIG_DVB_STB0899_MODULE) && defined(MODULE))
101
102extern struct dvb_frontend *stb0899_attach(struct stb0899_config *config,
103 struct i2c_adapter *i2c);
104
105#else
106
107static inline struct dvb_frontend *stb0899_attach(struct stb0899_config *config,
108 struct i2c_adapter *i2c)
109{
110 printk(KERN_WARNING "%s: Driver disabled by Kconfig\n", __func__);
111 return NULL;
112}
113
114#endif //CONFIG_DVB_STB0899
115
101 116
102#endif 117#endif
diff --git a/drivers/media/dvb/frontends/stb6100.h b/drivers/media/dvb/frontends/stb6100.h
index 771914a8a1cc..395d056599a6 100644
--- a/drivers/media/dvb/frontends/stb6100.h
+++ b/drivers/media/dvb/frontends/stb6100.h
@@ -94,8 +94,22 @@ struct stb6100_state {
94 u32 reference; 94 u32 reference;
95}; 95};
96 96
97struct dvb_frontend *stb6100_attach(struct dvb_frontend *fe, 97#if defined(CONFIG_DVB_STB6100) || (defined(CONFIG_DVB_STB6100_MODULE) && defined(MODULE))
98 struct stb6100_config* config, 98
99 struct i2c_adapter *i2c); 99extern struct dvb_frontend *stb6100_attach(struct dvb_frontend *fe,
100 struct stb6100_config *config,
101 struct i2c_adapter *i2c);
102
103#else
104
105static inline struct dvb_frontend *stb6100_attach(struct dvb_frontend *fe,
106 struct stb6100_config *config,
107 struct i2c_adapter *i2c)
108{
109 printk(KERN_WARNING "%s: Driver disabled by Kconfig\n", __func__);
110 return NULL;
111}
112
113#endif //CONFIG_DVB_STB6100
100 114
101#endif 115#endif
diff --git a/drivers/media/dvb/frontends/tda8261.h b/drivers/media/dvb/frontends/tda8261.h
index 1381d8e22a83..a1814d39f63d 100644
--- a/drivers/media/dvb/frontends/tda8261.h
+++ b/drivers/media/dvb/frontends/tda8261.h
@@ -15,8 +15,22 @@ struct tda8261_config {
15 enum tda8261_step step_size; 15 enum tda8261_step step_size;
16}; 16};
17 17
18#if defined(CONFIG_DVB_TDA8261) || (defined(CONFIG_DVB_TDA8261_MODULE) && defined(MODULE))
19
18extern struct dvb_frontend *tda8261_attach(struct dvb_frontend *fe, 20extern struct dvb_frontend *tda8261_attach(struct dvb_frontend *fe,
19 const struct tda8261_config *config, 21 const struct tda8261_config *config,
20 struct i2c_adapter *i2c); 22 struct i2c_adapter *i2c);
21 23
24#else
25
26static inline struct dvb_frontend *tda8261_attach(struct dvb_frontend *fe,
27 const struct tda8261_config *config,
28 struct i2c_adapter *i2c)
29{
30 printk(KERN_WARNING "%s: Driver disabled by Kconfig\n", __func__);
31 return NULL;
32}
33
34#endif //CONFIG_DVB_TDA8261
35
22#endif// __TDA8261_H 36#endif// __TDA8261_H
diff --git a/drivers/media/dvb/ttpci/budget-av.c b/drivers/media/dvb/ttpci/budget-av.c
index ae28b0e7ab8d..ec31895c0729 100644
--- a/drivers/media/dvb/ttpci/budget-av.c
+++ b/drivers/media/dvb/ttpci/budget-av.c
@@ -1603,8 +1603,8 @@ static void frontend_init(struct budget_av *budget_av)
1603 case SUBID_DVBS2_KNC1: 1603 case SUBID_DVBS2_KNC1:
1604 case SUBID_DVBS2_KNC1_OEM: 1604 case SUBID_DVBS2_KNC1_OEM:
1605 budget_av->reinitialise_demod = 1; 1605 budget_av->reinitialise_demod = 1;
1606 if ((fe = stb0899_attach(&knc1_dvbs2_config, &budget_av->budget.i2c_adap))) 1606 if ((fe = dvb_attach(stb0899_attach, &knc1_dvbs2_config, &budget_av->budget.i2c_adap)))
1607 tda8261_attach(fe, &sd1878c_config, &budget_av->budget.i2c_adap); 1607 dvb_attach(tda8261_attach, fe, &sd1878c_config, &budget_av->budget.i2c_adap);
1608 1608
1609 break; 1609 break;
1610 case SUBID_DVBS_CINERGY1200: 1610 case SUBID_DVBS_CINERGY1200:
diff --git a/drivers/media/dvb/ttpci/budget-ci.c b/drivers/media/dvb/ttpci/budget-ci.c
index 169acfae54d2..6b77b123f75c 100644
--- a/drivers/media/dvb/ttpci/budget-ci.c
+++ b/drivers/media/dvb/ttpci/budget-ci.c
@@ -1768,20 +1768,17 @@ static void frontend_init(struct budget_ci *budget_ci)
1768 break; 1768 break;
1769 1769
1770 case 0x1019: // TT S2-3200 PCI 1770 case 0x1019: // TT S2-3200 PCI
1771 budget_ci->budget.dvb_frontend = stb0899_attach(&tt3200_config, &budget_ci->budget.i2c_adap); 1771 budget_ci->budget.dvb_frontend = dvb_attach(stb0899_attach, &tt3200_config, &budget_ci->budget.i2c_adap);
1772 if (budget_ci->budget.dvb_frontend) { 1772 if (budget_ci->budget.dvb_frontend) {
1773 if (stb6100_attach(budget_ci->budget.dvb_frontend, &tt3200_stb6100_config, &budget_ci->budget.i2c_adap)) { 1773 if (dvb_attach(stb6100_attach, budget_ci->budget.dvb_frontend, &tt3200_stb6100_config, &budget_ci->budget.i2c_adap)) {
1774 if (!lnbp21_attach(budget_ci->budget.dvb_frontend, &budget_ci->budget.i2c_adap, 0, 0)) { 1774 if (!dvb_attach(lnbp21_attach, budget_ci->budget.dvb_frontend, &budget_ci->budget.i2c_adap, 0, 0)) {
1775 printk("%s: No LNBP21 found!\n", __FUNCTION__); 1775 printk("%s: No LNBP21 found!\n", __FUNCTION__);
1776 if (budget_ci->budget.dvb_frontend->ops.tuner_ops.release) 1776 dvb_frontend_detach(budget_ci->budget.dvb_frontend);
1777 budget_ci->budget.dvb_frontend->ops.tuner_ops.release(budget_ci->budget.dvb_frontend);
1778 if (budget_ci->budget.dvb_frontend->ops.release)
1779 budget_ci->budget.dvb_frontend->ops.release(budget_ci->budget.dvb_frontend);
1780 budget_ci->budget.dvb_frontend = NULL; 1777 budget_ci->budget.dvb_frontend = NULL;
1781 } 1778 }
1782 } else { 1779 } else {
1783 if (budget_ci->budget.dvb_frontend->ops.release) 1780 dvb_frontend_detach(budget_ci->budget.dvb_frontend);
1784 budget_ci->budget.dvb_frontend->ops.release(budget_ci->budget.dvb_frontend); 1781 budget_ci->budget.dvb_frontend = NULL;
1785 } 1782 }
1786 } 1783 }
1787 break; 1784 break;