summaryrefslogtreecommitdiff
path: root/linux/drivers
diff options
context:
space:
mode:
authorSteven Toth <stoth@kernellabs.com>2009-07-20 14:40:31 -0400
committerSteven Toth <stoth@kernellabs.com>2009-07-20 14:40:31 -0400
commit988cd25daffa554b51e3f0d5858cb1727f8a9c09 (patch)
tree48e61e6a9febbaccb1e4dd05f64c947c31ee86de /linux/drivers
parent7991d8e7d32620e4b6f0fd92a78e4a090b4a09ee (diff)
downloadmediapointer-dvb-s2-988cd25daffa554b51e3f0d5858cb1727f8a9c09.tar.gz
mediapointer-dvb-s2-988cd25daffa554b51e3f0d5858cb1727f8a9c09.tar.bz2
cx23885: Modify hardware revision detection for newer silicon
From: Steven Toth <stoth@kernellabs.com> cx23885: Modify hardware revision detection for newer silicon Priority: normal Signed-off-by: Steven Toth <stoth@kernellabs.com>
Diffstat (limited to 'linux/drivers')
-rw-r--r--linux/drivers/media/video/cx23885/cx23885-core.c22
-rw-r--r--linux/drivers/media/video/cx23885/cx23885.h1
2 files changed, 20 insertions, 3 deletions
diff --git a/linux/drivers/media/video/cx23885/cx23885-core.c b/linux/drivers/media/video/cx23885/cx23885-core.c
index 351210e5c..4854d54f1 100644
--- a/linux/drivers/media/video/cx23885/cx23885-core.c
+++ b/linux/drivers/media/video/cx23885/cx23885-core.c
@@ -714,12 +714,26 @@ static void cx23885_dev_checkrevision(struct cx23885_dev *dev)
dev->hwrevision = 0xa1;
break;
case 0x02:
- /* CX23885-13Z */
+ /* CX23885-13Z/14Z */
dev->hwrevision = 0xb0;
break;
case 0x03:
- /* CX23888-22Z */
- dev->hwrevision = 0xc0;
+ if (dev->pci->device == 0x8880) {
+ /* CX23888-21Z/22Z */
+ dev->hwrevision = 0xc0;
+ } else {
+ /* CX23885-14Z */
+ dev->hwrevision = 0xa4;
+ }
+ break;
+ case 0x04:
+ if (dev->pci->device == 0x8880) {
+ /* CX23888-31Z */
+ dev->hwrevision = 0xd0;
+ } else {
+ /* CX23885-15Z, CX23888-31Z */
+ dev->hwrevision = 0xa5;
+ }
break;
case 0x0e:
/* CX23887-15Z */
@@ -757,6 +771,7 @@ static int cx23885_dev_setup(struct cx23885_dev *dev)
/* Configure the internal memory */
if (dev->pci->device == 0x8880) {
+ /* Could be 887 or 888, assume a default */
dev->bridge = CX23885_BRIDGE_887;
/* Apply a sensible clock frequency for the PCIe bridge */
dev->clk_freq = 25000000;
@@ -1259,6 +1274,7 @@ static int cx23885_start_dma(struct cx23885_tsport *port,
switch (dev->bridge) {
case CX23885_BRIDGE_885:
case CX23885_BRIDGE_887:
+ case CX23885_BRIDGE_888:
/* enable irqs */
dprintk(1, "%s() enabling TS int's and DMA\n", __func__);
cx_set(port->reg_ts_int_msk, port->ts_int_msk_val);
diff --git a/linux/drivers/media/video/cx23885/cx23885.h b/linux/drivers/media/video/cx23885/cx23885.h
index f71277845..6ddabc263 100644
--- a/linux/drivers/media/video/cx23885/cx23885.h
+++ b/linux/drivers/media/video/cx23885/cx23885.h
@@ -340,6 +340,7 @@ struct cx23885_dev {
CX23885_BRIDGE_UNDEFINED = 0,
CX23885_BRIDGE_885 = 885,
CX23885_BRIDGE_887 = 887,
+ CX23885_BRIDGE_888 = 888,
} bridge;
/* Analog video */