aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIgor M. Liplianin <liplianin@me.by>2012-05-11 10:45:42 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2012-05-20 10:09:26 -0400
commit7b134e85b1d9eaf91c5b05bf9832c2d18b747072 (patch)
treeeacfbc7d97a8ff9166e2f7dbccf31d5c63540167
parent6b363f9f97af10767e72a04c2a5cabfc32133cc4 (diff)
[media] cx23885: TeVii s471 card support
The card is similar to TeVii s470, but has different LNB power control. Signed-off-by: Igor M. Liplianin <liplianin@me.by> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r--drivers/media/dvb/frontends/ds3000.c5
-rw-r--r--drivers/media/video/cx23885/cx23885-cards.c9
-rw-r--r--drivers/media/video/cx23885/cx23885-core.c7
-rw-r--r--drivers/media/video/cx23885/cx23885-dvb.c7
-rw-r--r--drivers/media/video/cx23885/cx23885.h1
5 files changed, 28 insertions, 1 deletions
diff --git a/drivers/media/dvb/frontends/ds3000.c b/drivers/media/dvb/frontends/ds3000.c
index af65d013db11..4c8ac2657c4a 100644
--- a/drivers/media/dvb/frontends/ds3000.c
+++ b/drivers/media/dvb/frontends/ds3000.c
@@ -1114,7 +1114,10 @@ static int ds3000_set_frontend(struct dvb_frontend *fe)
1114 ds3000_writereg(state, 1114 ds3000_writereg(state,
1115 ds3000_dvbs2_init_tab[i], 1115 ds3000_dvbs2_init_tab[i],
1116 ds3000_dvbs2_init_tab[i + 1]); 1116 ds3000_dvbs2_init_tab[i + 1]);
1117 ds3000_writereg(state, 0xfe, 0x98); 1117 if (c->symbol_rate >= 30000000)
1118 ds3000_writereg(state, 0xfe, 0x54);
1119 else
1120 ds3000_writereg(state, 0xfe, 0x98);
1118 break; 1121 break;
1119 default: 1122 default:
1120 return 1; 1123 return 1;
diff --git a/drivers/media/video/cx23885/cx23885-cards.c b/drivers/media/video/cx23885/cx23885-cards.c
index 19b5499d2624..13739e002a63 100644
--- a/drivers/media/video/cx23885/cx23885-cards.c
+++ b/drivers/media/video/cx23885/cx23885-cards.c
@@ -497,6 +497,10 @@ struct cx23885_board cx23885_boards[] = {
497 .name = "TerraTec Cinergy T PCIe Dual", 497 .name = "TerraTec Cinergy T PCIe Dual",
498 .portb = CX23885_MPEG_DVB, 498 .portb = CX23885_MPEG_DVB,
499 .portc = CX23885_MPEG_DVB, 499 .portc = CX23885_MPEG_DVB,
500 },
501 [CX23885_BOARD_TEVII_S471] = {
502 .name = "TeVii S471",
503 .portb = CX23885_MPEG_DVB,
500 } 504 }
501}; 505};
502const unsigned int cx23885_bcount = ARRAY_SIZE(cx23885_boards); 506const unsigned int cx23885_bcount = ARRAY_SIZE(cx23885_boards);
@@ -705,6 +709,10 @@ struct cx23885_subid cx23885_subids[] = {
705 .subvendor = 0x153b, 709 .subvendor = 0x153b,
706 .subdevice = 0x117e, 710 .subdevice = 0x117e,
707 .card = CX23885_BOARD_TERRATEC_CINERGY_T_PCIE_DUAL, 711 .card = CX23885_BOARD_TERRATEC_CINERGY_T_PCIE_DUAL,
712 }, {
713 .subvendor = 0xd471,
714 .subdevice = 0x9022,
715 .card = CX23885_BOARD_TEVII_S471,
708 }, 716 },
709}; 717};
710const unsigned int cx23885_idcount = ARRAY_SIZE(cx23885_subids); 718const unsigned int cx23885_idcount = ARRAY_SIZE(cx23885_subids);
@@ -1460,6 +1468,7 @@ void cx23885_card_setup(struct cx23885_dev *dev)
1460 ts1->src_sel_val = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO; 1468 ts1->src_sel_val = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO;
1461 break; 1469 break;
1462 case CX23885_BOARD_TEVII_S470: 1470 case CX23885_BOARD_TEVII_S470:
1471 case CX23885_BOARD_TEVII_S471:
1463 case CX23885_BOARD_DVBWORLD_2005: 1472 case CX23885_BOARD_DVBWORLD_2005:
1464 ts1->gen_ctrl_val = 0x5; /* Parallel */ 1473 ts1->gen_ctrl_val = 0x5; /* Parallel */
1465 ts1->ts_clk_en_val = 0x1; /* Enable TS_CLK */ 1474 ts1->ts_clk_en_val = 0x1; /* Enable TS_CLK */
diff --git a/drivers/media/video/cx23885/cx23885-core.c b/drivers/media/video/cx23885/cx23885-core.c
index 6ad227029a0f..697728f09430 100644
--- a/drivers/media/video/cx23885/cx23885-core.c
+++ b/drivers/media/video/cx23885/cx23885-core.c
@@ -1046,6 +1046,13 @@ static int cx23885_dev_setup(struct cx23885_dev *dev)
1046 if (cx23885_boards[dev->board].ci_type > 0) 1046 if (cx23885_boards[dev->board].ci_type > 0)
1047 cx_clear(RDR_RDRCTL1, 1 << 8); 1047 cx_clear(RDR_RDRCTL1, 1 << 8);
1048 1048
1049 switch (dev->board) {
1050 case CX23885_BOARD_TEVII_S470:
1051 case CX23885_BOARD_TEVII_S471:
1052 cx_clear(RDR_RDRCTL1, 1 << 8);
1053 break;
1054 }
1055
1049 return 0; 1056 return 0;
1050} 1057}
1051 1058
diff --git a/drivers/media/video/cx23885/cx23885-dvb.c b/drivers/media/video/cx23885/cx23885-dvb.c
index 6835eb1fc093..a80a92c47455 100644
--- a/drivers/media/video/cx23885/cx23885-dvb.c
+++ b/drivers/media/video/cx23885/cx23885-dvb.c
@@ -1173,6 +1173,13 @@ static int dvb_register(struct cx23885_tsport *port)
1173 break; 1173 break;
1174 } 1174 }
1175 break; 1175 break;
1176 case CX23885_BOARD_TEVII_S471:
1177 i2c_bus = &dev->i2c_bus[1];
1178
1179 fe0->dvb.frontend = dvb_attach(ds3000_attach,
1180 &tevii_ds3000_config,
1181 &i2c_bus->i2c_adap);
1182 break;
1176 default: 1183 default:
1177 printk(KERN_INFO "%s: The frontend of your DVB/ATSC card " 1184 printk(KERN_INFO "%s: The frontend of your DVB/ATSC card "
1178 " isn't supported yet\n", 1185 " isn't supported yet\n",
diff --git a/drivers/media/video/cx23885/cx23885.h b/drivers/media/video/cx23885/cx23885.h
index f020f0568df4..d884784a1c85 100644
--- a/drivers/media/video/cx23885/cx23885.h
+++ b/drivers/media/video/cx23885/cx23885.h
@@ -89,6 +89,7 @@
89#define CX23885_BOARD_MPX885 32 89#define CX23885_BOARD_MPX885 32
90#define CX23885_BOARD_MYGICA_X8507 33 90#define CX23885_BOARD_MYGICA_X8507 33
91#define CX23885_BOARD_TERRATEC_CINERGY_T_PCIE_DUAL 34 91#define CX23885_BOARD_TERRATEC_CINERGY_T_PCIE_DUAL 34
92#define CX23885_BOARD_TEVII_S471 35
92 93
93#define GPIO_0 0x00000001 94#define GPIO_0 0x00000001
94#define GPIO_1 0x00000002 95#define GPIO_1 0x00000002