aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Oberritter <obi@linuxtv.org>2005-09-09 16:02:30 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2005-09-09 16:57:38 -0400
commitcfbfce1566f11c0dbad8a16173f0448b0c78cecb (patch)
treecd090616b3a13c130b72238f92390761bda71e39
parent4ff4ac1beae58a2fea7ec2ad43d6c3b60d90ec61 (diff)
[PATCH] dvb: frontend: stv0299: pass i2c bus to pll callback
Pass a pointer to the i2c bus to the pll callbacks (stv0299 only). It was not possible to tell which i2c bus should be used if an adapter has multiple frontends on multiple i2c buses. Signed-off-by: Andreas Oberritter <obi@linuxtv.org> Signed-off-by: Johannes Stezenbach <js@linuxtv.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r--drivers/media/dvb/b2c2/flexcop-fe-tuner.c5
-rw-r--r--drivers/media/dvb/frontends/stv0299.c6
-rw-r--r--drivers/media/dvb/frontends/stv0299.h4
-rw-r--r--drivers/media/dvb/ttpci/av7110.c10
-rw-r--r--drivers/media/dvb/ttpci/budget-av.c4
-rw-r--r--drivers/media/dvb/ttpci/budget-ci.c9
-rw-r--r--drivers/media/dvb/ttpci/budget-patch.c5
-rw-r--r--drivers/media/dvb/ttpci/budget.c5
-rw-r--r--drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c4
9 files changed, 23 insertions, 29 deletions
diff --git a/drivers/media/dvb/b2c2/flexcop-fe-tuner.c b/drivers/media/dvb/b2c2/flexcop-fe-tuner.c
index 0410cc96a48e..a36bec3a2bea 100644
--- a/drivers/media/dvb/b2c2/flexcop-fe-tuner.c
+++ b/drivers/media/dvb/b2c2/flexcop-fe-tuner.c
@@ -164,12 +164,11 @@ static int samsung_tbmu24112_set_symbol_rate(struct dvb_frontend* fe, u32 srate,
164 return 0; 164 return 0;
165} 165}
166 166
167static int samsung_tbmu24112_pll_set(struct dvb_frontend* fe, struct dvb_frontend_parameters* params) 167static int samsung_tbmu24112_pll_set(struct dvb_frontend* fe, struct i2c_adapter *i2c, struct dvb_frontend_parameters* params)
168{ 168{
169 u8 buf[4]; 169 u8 buf[4];
170 u32 div; 170 u32 div;
171 struct i2c_msg msg = { .addr = 0x61, .flags = 0, .buf = buf, .len = sizeof(buf) }; 171 struct i2c_msg msg = { .addr = 0x61, .flags = 0, .buf = buf, .len = sizeof(buf) };
172 struct flexcop_device *fc = fe->dvb->priv;
173 172
174 div = params->frequency / 125; 173 div = params->frequency / 125;
175 174
@@ -180,7 +179,7 @@ static int samsung_tbmu24112_pll_set(struct dvb_frontend* fe, struct dvb_fronten
180 179
181 if (params->frequency < 1500000) buf[3] |= 0x10; 180 if (params->frequency < 1500000) buf[3] |= 0x10;
182 181
183 if (i2c_transfer(&fc->i2c_adap, &msg, 1) != 1) 182 if (i2c_transfer(i2c, &msg, 1) != 1)
184 return -EIO; 183 return -EIO;
185 return 0; 184 return 0;
186} 185}
diff --git a/drivers/media/dvb/frontends/stv0299.c b/drivers/media/dvb/frontends/stv0299.c
index cfa3928bb487..db66d417df38 100644
--- a/drivers/media/dvb/frontends/stv0299.c
+++ b/drivers/media/dvb/frontends/stv0299.c
@@ -481,7 +481,7 @@ static int stv0299_init (struct dvb_frontend* fe)
481 481
482 if (state->config->pll_init) { 482 if (state->config->pll_init) {
483 stv0299_writeregI(state, 0x05, 0xb5); /* enable i2c repeater on stv0299 */ 483 stv0299_writeregI(state, 0x05, 0xb5); /* enable i2c repeater on stv0299 */
484 state->config->pll_init(fe); 484 state->config->pll_init(fe, state->i2c);
485 stv0299_writeregI(state, 0x05, 0x35); /* disable i2c repeater on stv0299 */ 485 stv0299_writeregI(state, 0x05, 0x35); /* disable i2c repeater on stv0299 */
486 } 486 }
487 487
@@ -603,7 +603,7 @@ static int stv0299_set_frontend(struct dvb_frontend* fe, struct dvb_frontend_par
603 } else { 603 } else {
604 /* A "normal" tune is requested */ 604 /* A "normal" tune is requested */
605 stv0299_writeregI(state, 0x05, 0xb5); /* enable i2c repeater on stv0299 */ 605 stv0299_writeregI(state, 0x05, 0xb5); /* enable i2c repeater on stv0299 */
606 state->config->pll_set(fe, p); 606 state->config->pll_set(fe, state->i2c, p);
607 stv0299_writeregI(state, 0x05, 0x35); /* disable i2c repeater on stv0299 */ 607 stv0299_writeregI(state, 0x05, 0x35); /* disable i2c repeater on stv0299 */
608 608
609 stv0299_writeregI(state, 0x32, 0x80); 609 stv0299_writeregI(state, 0x32, 0x80);
@@ -615,7 +615,7 @@ static int stv0299_set_frontend(struct dvb_frontend* fe, struct dvb_frontend_par
615 } 615 }
616 } else { 616 } else {
617 stv0299_writeregI(state, 0x05, 0xb5); /* enable i2c repeater on stv0299 */ 617 stv0299_writeregI(state, 0x05, 0xb5); /* enable i2c repeater on stv0299 */
618 state->config->pll_set(fe, p); 618 state->config->pll_set(fe, state->i2c, p);
619 stv0299_writeregI(state, 0x05, 0x35); /* disable i2c repeater on stv0299 */ 619 stv0299_writeregI(state, 0x05, 0x35); /* disable i2c repeater on stv0299 */
620 620
621 stv0299_set_FEC (state, p->u.qpsk.fec_inner); 621 stv0299_set_FEC (state, p->u.qpsk.fec_inner);
diff --git a/drivers/media/dvb/frontends/stv0299.h b/drivers/media/dvb/frontends/stv0299.h
index 79457a80a11f..d0c4484861e1 100644
--- a/drivers/media/dvb/frontends/stv0299.h
+++ b/drivers/media/dvb/frontends/stv0299.h
@@ -92,8 +92,8 @@ struct stv0299_config
92 int (*set_symbol_rate)(struct dvb_frontend* fe, u32 srate, u32 ratio); 92 int (*set_symbol_rate)(struct dvb_frontend* fe, u32 srate, u32 ratio);
93 93
94 /* PLL maintenance */ 94 /* PLL maintenance */
95 int (*pll_init)(struct dvb_frontend* fe); 95 int (*pll_init)(struct dvb_frontend *fe, struct i2c_adapter *i2c);
96 int (*pll_set)(struct dvb_frontend* fe, struct dvb_frontend_parameters* params); 96 int (*pll_set)(struct dvb_frontend *fe, struct i2c_adapter *i2c, struct dvb_frontend_parameters *params);
97}; 97};
98 98
99extern int stv0299_writereg (struct dvb_frontend* fe, u8 reg, u8 data); 99extern int stv0299_writereg (struct dvb_frontend* fe, u8 reg, u8 data);
diff --git a/drivers/media/dvb/ttpci/av7110.c b/drivers/media/dvb/ttpci/av7110.c
index e4c6e87f6c5d..c91cf8958b38 100644
--- a/drivers/media/dvb/ttpci/av7110.c
+++ b/drivers/media/dvb/ttpci/av7110.c
@@ -1668,9 +1668,8 @@ static int alps_bsru6_set_symbol_rate(struct dvb_frontend* fe, u32 srate, u32 ra
1668 return 0; 1668 return 0;
1669} 1669}
1670 1670
1671static int alps_bsru6_pll_set(struct dvb_frontend* fe, struct dvb_frontend_parameters* params) 1671static int alps_bsru6_pll_set(struct dvb_frontend* fe, struct i2c_adapter *i2c, struct dvb_frontend_parameters* params)
1672{ 1672{
1673 struct av7110* av7110 = (struct av7110*) fe->dvb->priv;
1674 int ret; 1673 int ret;
1675 u8 data[4]; 1674 u8 data[4];
1676 u32 div; 1675 u32 div;
@@ -1687,7 +1686,7 @@ static int alps_bsru6_pll_set(struct dvb_frontend* fe, struct dvb_frontend_param
1687 1686
1688 if (params->frequency > 1530000) data[3] = 0xc0; 1687 if (params->frequency > 1530000) data[3] = 0xc0;
1689 1688
1690 ret = i2c_transfer(&av7110->i2c_adap, &msg, 1); 1689 ret = i2c_transfer(i2c, &msg, 1);
1691 if (ret != 1) 1690 if (ret != 1)
1692 return -EIO; 1691 return -EIO;
1693 return 0; 1692 return 0;
@@ -1751,9 +1750,8 @@ static u8 alps_bsbe1_inittab[] = {
1751 0xff, 0xff 1750 0xff, 0xff
1752}; 1751};
1753 1752
1754static int alps_bsbe1_pll_set(struct dvb_frontend* fe, struct dvb_frontend_parameters* params) 1753static int alps_bsbe1_pll_set(struct dvb_frontend* fe, struct i2c_adapter *i2c, struct dvb_frontend_parameters* params)
1755{ 1754{
1756 struct av7110* av7110 = (struct av7110*) fe->dvb->priv;
1757 int ret; 1755 int ret;
1758 u8 data[4]; 1756 u8 data[4];
1759 u32 div; 1757 u32 div;
@@ -1768,7 +1766,7 @@ static int alps_bsbe1_pll_set(struct dvb_frontend* fe, struct dvb_frontend_param
1768 data[2] = 0x80 | ((div & 0x18000) >> 10) | 4; 1766 data[2] = 0x80 | ((div & 0x18000) >> 10) | 4;
1769 data[3] = (params->frequency > 1530000) ? 0xE0 : 0xE4; 1767 data[3] = (params->frequency > 1530000) ? 0xE0 : 0xE4;
1770 1768
1771 ret = i2c_transfer(&av7110->i2c_adap, &msg, 1); 1769 ret = i2c_transfer(i2c, &msg, 1);
1772 return (ret != 1) ? -EIO : 0; 1770 return (ret != 1) ? -EIO : 0;
1773} 1771}
1774 1772
diff --git a/drivers/media/dvb/ttpci/budget-av.c b/drivers/media/dvb/ttpci/budget-av.c
index 9746d2bb916f..311be50b2fce 100644
--- a/drivers/media/dvb/ttpci/budget-av.c
+++ b/drivers/media/dvb/ttpci/budget-av.c
@@ -453,9 +453,9 @@ static int philips_su1278_ty_ci_set_symbol_rate(struct dvb_frontend *fe, u32 sra
453} 453}
454 454
455static int philips_su1278_ty_ci_pll_set(struct dvb_frontend *fe, 455static int philips_su1278_ty_ci_pll_set(struct dvb_frontend *fe,
456 struct i2c_adapter *i2c,
456 struct dvb_frontend_parameters *params) 457 struct dvb_frontend_parameters *params)
457{ 458{
458 struct budget_av *budget_av = (struct budget_av *) fe->dvb->priv;
459 u32 div; 459 u32 div;
460 u8 buf[4]; 460 u8 buf[4];
461 struct i2c_msg msg = {.addr = 0x61,.flags = 0,.buf = buf,.len = sizeof(buf) }; 461 struct i2c_msg msg = {.addr = 0x61,.flags = 0,.buf = buf,.len = sizeof(buf) };
@@ -481,7 +481,7 @@ static int philips_su1278_ty_ci_pll_set(struct dvb_frontend *fe,
481 else if (params->frequency < 2150000) 481 else if (params->frequency < 2150000)
482 buf[3] |= 0xC0; 482 buf[3] |= 0xC0;
483 483
484 if (i2c_transfer(&budget_av->budget.i2c_adap, &msg, 1) != 1) 484 if (i2c_transfer(i2c, &msg, 1) != 1)
485 return -EIO; 485 return -EIO;
486 return 0; 486 return 0;
487} 487}
diff --git a/drivers/media/dvb/ttpci/budget-ci.c b/drivers/media/dvb/ttpci/budget-ci.c
index a1267054bc01..88f27a532163 100644
--- a/drivers/media/dvb/ttpci/budget-ci.c
+++ b/drivers/media/dvb/ttpci/budget-ci.c
@@ -548,9 +548,8 @@ static int alps_bsru6_set_symbol_rate(struct dvb_frontend *fe, u32 srate, u32 ra
548 return 0; 548 return 0;
549} 549}
550 550
551static int alps_bsru6_pll_set(struct dvb_frontend *fe, struct dvb_frontend_parameters *params) 551static int alps_bsru6_pll_set(struct dvb_frontend *fe, struct i2c_adapter *i2c, struct dvb_frontend_parameters *params)
552{ 552{
553 struct budget_ci *budget_ci = (struct budget_ci *) fe->dvb->priv;
554 u8 buf[4]; 553 u8 buf[4];
555 u32 div; 554 u32 div;
556 struct i2c_msg msg = {.addr = 0x61,.flags = 0,.buf = buf,.len = sizeof(buf) }; 555 struct i2c_msg msg = {.addr = 0x61,.flags = 0,.buf = buf,.len = sizeof(buf) };
@@ -567,7 +566,7 @@ static int alps_bsru6_pll_set(struct dvb_frontend *fe, struct dvb_frontend_param
567 if (params->frequency > 1530000) 566 if (params->frequency > 1530000)
568 buf[3] = 0xc0; 567 buf[3] = 0xc0;
569 568
570 if (i2c_transfer(&budget_ci->budget.i2c_adap, &msg, 1) != 1) 569 if (i2c_transfer(i2c, &msg, 1) != 1)
571 return -EIO; 570 return -EIO;
572 return 0; 571 return 0;
573} 572}
@@ -669,9 +668,9 @@ static int philips_su1278_tt_set_symbol_rate(struct dvb_frontend *fe, u32 srate,
669} 668}
670 669
671static int philips_su1278_tt_pll_set(struct dvb_frontend *fe, 670static int philips_su1278_tt_pll_set(struct dvb_frontend *fe,
671 struct i2c_adapter *i2c,
672 struct dvb_frontend_parameters *params) 672 struct dvb_frontend_parameters *params)
673{ 673{
674 struct budget_ci *budget_ci = (struct budget_ci *) fe->dvb->priv;
675 u32 div; 674 u32 div;
676 u8 buf[4]; 675 u8 buf[4];
677 struct i2c_msg msg = {.addr = 0x60,.flags = 0,.buf = buf,.len = sizeof(buf) }; 676 struct i2c_msg msg = {.addr = 0x60,.flags = 0,.buf = buf,.len = sizeof(buf) };
@@ -697,7 +696,7 @@ static int philips_su1278_tt_pll_set(struct dvb_frontend *fe,
697 else if (params->frequency < 2150000) 696 else if (params->frequency < 2150000)
698 buf[3] |= 0xC0; 697 buf[3] |= 0xC0;
699 698
700 if (i2c_transfer(&budget_ci->budget.i2c_adap, &msg, 1) != 1) 699 if (i2c_transfer(i2c, &msg, 1) != 1)
701 return -EIO; 700 return -EIO;
702 return 0; 701 return 0;
703} 702}
diff --git a/drivers/media/dvb/ttpci/budget-patch.c b/drivers/media/dvb/ttpci/budget-patch.c
index 8142e26b47f5..b1f21ef0e3b3 100644
--- a/drivers/media/dvb/ttpci/budget-patch.c
+++ b/drivers/media/dvb/ttpci/budget-patch.c
@@ -353,9 +353,8 @@ static int alps_bsru6_set_symbol_rate(struct dvb_frontend* fe, u32 srate, u32 ra
353 return 0; 353 return 0;
354} 354}
355 355
356static int alps_bsru6_pll_set(struct dvb_frontend* fe, struct dvb_frontend_parameters* params) 356static int alps_bsru6_pll_set(struct dvb_frontend* fe, struct i2c_adapter *i2c, struct dvb_frontend_parameters* params)
357{ 357{
358 struct budget_patch* budget = (struct budget_patch*) fe->dvb->priv;
359 u8 data[4]; 358 u8 data[4];
360 u32 div; 359 u32 div;
361 struct i2c_msg msg = { .addr = 0x61, .flags = 0, .buf = data, .len = sizeof(data) }; 360 struct i2c_msg msg = { .addr = 0x61, .flags = 0, .buf = data, .len = sizeof(data) };
@@ -370,7 +369,7 @@ static int alps_bsru6_pll_set(struct dvb_frontend* fe, struct dvb_frontend_param
370 369
371 if (params->frequency > 1530000) data[3] = 0xc0; 370 if (params->frequency > 1530000) data[3] = 0xc0;
372 371
373 if (i2c_transfer (&budget->i2c_adap, &msg, 1) != 1) return -EIO; 372 if (i2c_transfer(i2c, &msg, 1) != 1) return -EIO;
374 return 0; 373 return 0;
375} 374}
376 375
diff --git a/drivers/media/dvb/ttpci/budget.c b/drivers/media/dvb/ttpci/budget.c
index 9961917e8a7f..5552ef501996 100644
--- a/drivers/media/dvb/ttpci/budget.c
+++ b/drivers/media/dvb/ttpci/budget.c
@@ -332,9 +332,8 @@ static int alps_bsru6_set_symbol_rate(struct dvb_frontend* fe, u32 srate, u32 ra
332 return 0; 332 return 0;
333} 333}
334 334
335static int alps_bsru6_pll_set(struct dvb_frontend* fe, struct dvb_frontend_parameters* params) 335static int alps_bsru6_pll_set(struct dvb_frontend* fe, struct i2c_adapter *i2c, struct dvb_frontend_parameters* params)
336{ 336{
337 struct budget* budget = (struct budget*) fe->dvb->priv;
338 u8 data[4]; 337 u8 data[4];
339 u32 div; 338 u32 div;
340 struct i2c_msg msg = { .addr = 0x61, .flags = 0, .buf = data, .len = sizeof(data) }; 339 struct i2c_msg msg = { .addr = 0x61, .flags = 0, .buf = data, .len = sizeof(data) };
@@ -349,7 +348,7 @@ static int alps_bsru6_pll_set(struct dvb_frontend* fe, struct dvb_frontend_param
349 348
350 if (params->frequency > 1530000) data[3] = 0xc0; 349 if (params->frequency > 1530000) data[3] = 0xc0;
351 350
352 if (i2c_transfer (&budget->i2c_adap, &msg, 1) != 1) return -EIO; 351 if (i2c_transfer(i2c, &msg, 1) != 1) return -EIO;
353 return 0; 352 return 0;
354} 353}
355 354
diff --git a/drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c b/drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c
index 7daf7b1598a0..c1acd4bb3499 100644
--- a/drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c
+++ b/drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c
@@ -1299,7 +1299,7 @@ static int alps_stv0299_set_symbol_rate(struct dvb_frontend *fe, u32 srate, u32
1299 return 0; 1299 return 0;
1300} 1300}
1301 1301
1302static int philips_tsa5059_pll_set(struct dvb_frontend *fe, struct dvb_frontend_parameters *params) 1302static int philips_tsa5059_pll_set(struct dvb_frontend *fe, struct i2c_adapter *i2c, struct dvb_frontend_parameters *params)
1303{ 1303{
1304 struct ttusb* ttusb = (struct ttusb*) fe->dvb->priv; 1304 struct ttusb* ttusb = (struct ttusb*) fe->dvb->priv;
1305 u8 buf[4]; 1305 u8 buf[4];
@@ -1322,7 +1322,7 @@ static int philips_tsa5059_pll_set(struct dvb_frontend *fe, struct dvb_frontend_
1322 if (ttusb->revision == TTUSB_REV_2_2) 1322 if (ttusb->revision == TTUSB_REV_2_2)
1323 buf[3] |= 0x20; 1323 buf[3] |= 0x20;
1324 1324
1325 if (i2c_transfer(&ttusb->i2c_adap, &msg, 1) != 1) 1325 if (i2c_transfer(i2c, &msg, 1) != 1)
1326 return -EIO; 1326 return -EIO;
1327 1327
1328 return 0; 1328 return 0;