V4L/DVB (13795): [Mantis/Hopper] Code overhaul, add Hopper devices into the PCI ID list

Signed-off-by: Manu Abraham <manu@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
diff --git a/drivers/media/dvb/mantis/mantis_i2c.c b/drivers/media/dvb/mantis/mantis_i2c.c
index 45d9e6b..ba55f0a 100644
--- a/drivers/media/dvb/mantis/mantis_i2c.c
+++ b/drivers/media/dvb/mantis/mantis_i2c.c
@@ -18,15 +18,20 @@
 	Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */
 
-#include <linux/module.h>
-#include <linux/moduleparam.h>
-#include <linux/init.h>
-#include <linux/delay.h>
 #include <asm/io.h>
 #include <linux/ioport.h>
-#include <asm/pgtable.h>
-#include <asm/page.h>
+#include <linux/pci.h>
+#include <linux/i2c.h>
+
+#include "dmxdev.h"
+#include "dvbdev.h"
+#include "dvb_demux.h"
+#include "dvb_frontend.h"
+#include "dvb_net.h"
+
 #include "mantis_common.h"
+#include "mantis_reg.h"
+#include "mantis_i2c.h"
 
 #define I2C_HW_B_MANTIS		0x1c
 
@@ -35,20 +40,21 @@
 	int rc = 0;
 	u32 timeout = 0;
 
-	if (wait_event_interruptible_timeout(mantis->i2c_wq,
-					     mantis->mantis_int_stat & MANTIS_INT_I2CDONE,
-					     msecs_to_jiffies(50)) == -ERESTARTSYS) {
+	if (wait_event_timeout(mantis->i2c_wq,
+			       mantis->mantis_int_stat & MANTIS_INT_I2CDONE,
+			       msecs_to_jiffies(50)) == -ERESTARTSYS) {
 
-		dprintk(verbose, MANTIS_DEBUG, 1, "Master !I2CDONE");
+		dprintk(MANTIS_DEBUG, 1, "Master !I2CDONE");
 		rc = -EREMOTEIO;
 	}
+
 	while (!(mantis->mantis_int_stat & MANTIS_INT_I2CRACK)) {
-		dprintk(verbose, MANTIS_DEBUG, 1, "Waiting for Slave RACK");
+		dprintk(MANTIS_DEBUG, 1, "Waiting for Slave RACK");
 		mantis->mantis_int_stat = mmread(MANTIS_INT_STAT);
 		msleep(5);
 		timeout++;
 		if (timeout > 500) {
-			dprintk(verbose, MANTIS_ERROR, 1, "Slave RACK Fail !");
+			dprintk(MANTIS_ERROR, 1, "Slave RACK Fail !");
 			rc = -EREMOTEIO;
 			break;
 		}
@@ -62,7 +68,7 @@
 {
 	u32 rxd, i;
 
-	dprintk(verbose, MANTIS_INFO, 0, "        %s:  Address=[0x%02x] <R>[ ",
+	dprintk(MANTIS_INFO, 0, "        %s:  Address=[0x%02x] <R>[ ",
 		__func__, msg->addr);
 
 	for (i = 0; i < msg->len; i++) {
@@ -77,14 +83,14 @@
 		mmwrite(MANTIS_INT_I2CDONE, MANTIS_INT_STAT);
 		mmwrite(rxd, MANTIS_I2CDATA_CTL);
 		if (mantis_ack_wait(mantis) != 0) {
-			dprintk(verbose, MANTIS_DEBUG, 1, "ACK failed<R>");
+			dprintk(MANTIS_DEBUG, 1, "ACK failed<R>");
 			return -EREMOTEIO;
 		}
 		rxd = mmread(MANTIS_I2CDATA_CTL);
 		msg->buf[i] = (u8)((rxd >> 8) & 0xFF);
-		dprintk(verbose, MANTIS_INFO, 0, "%02x ", msg->buf[i]);
+		dprintk(MANTIS_INFO, 0, "%02x ", msg->buf[i]);
 	}
-	dprintk(verbose, MANTIS_INFO, 0, "]\n");
+	dprintk(MANTIS_INFO, 0, "]\n");
 
 	return 0;
 }
@@ -94,11 +100,11 @@
 	int i;
 	u32 txd = 0;
 
-	dprintk(verbose, MANTIS_INFO, 0, "        %s: Address=[0x%02x] <W>[ ",
+	dprintk(MANTIS_INFO, 0, "        %s: Address=[0x%02x] <W>[ ",
 		__func__, msg->addr);
 
 	for (i = 0; i < msg->len; i++) {
-		dprintk(verbose, MANTIS_INFO, 0, "%02x ", msg->buf[i]);
+		dprintk(MANTIS_INFO, 0, "%02x ", msg->buf[i]);
 		txd = (msg->addr << 25) | (msg->buf[i] << 8)
 					| MANTIS_I2C_RATE_3
 					| MANTIS_I2C_STOP
@@ -110,11 +116,11 @@
 		mmwrite(MANTIS_INT_I2CDONE, MANTIS_INT_STAT);
 		mmwrite(txd, MANTIS_I2CDATA_CTL);
 		if (mantis_ack_wait(mantis) != 0) {
-			dprintk(verbose, MANTIS_DEBUG, 1, "ACK failed<W>");
+			dprintk(MANTIS_DEBUG, 1, "ACK failed<W>");
 			return -EREMOTEIO;
 		}
 	}
-	dprintk(verbose, MANTIS_INFO, 0, "]\n");
+	dprintk(MANTIS_INFO, 0, "]\n");
 
 	return 0;
 }
@@ -154,43 +160,46 @@
 	.functionality		= mantis_i2c_func,
 };
 
-static struct i2c_adapter mantis_i2c_adapter = {
-	.owner			= THIS_MODULE,
-	.name			= "Mantis I2C",
-	.id			= I2C_HW_B_MANTIS,
-	.class			= I2C_CLASS_TV_DIGITAL,
-	.algo			= &mantis_algo,
-};
-
 int __devinit mantis_i2c_init(struct mantis_pci *mantis)
 {
 	u32 intstat, intmask;
 	struct i2c_adapter *i2c_adapter = &mantis->adapter;
 	struct pci_dev *pdev		= mantis->pdev;
 
+	init_waitqueue_head(&mantis->i2c_wq);
 	mutex_init(&mantis->i2c_lock);
-	memcpy(i2c_adapter, &mantis_i2c_adapter, sizeof (mantis_i2c_adapter));
+	strncpy(i2c_adapter->name, "Mantis I2C", sizeof (i2c_adapter->name));
 	i2c_set_adapdata(i2c_adapter, mantis);
 
-	i2c_adapter->dev.parent = &pdev->dev;
+	i2c_adapter->owner	= THIS_MODULE;
+	i2c_adapter->class	= I2C_CLASS_TV_DIGITAL;
+	i2c_adapter->algo	= &mantis_algo;
+	i2c_adapter->algo_data	= NULL;
+	i2c_adapter->id		= I2C_HW_B_MANTIS;
+	i2c_adapter->timeout	= 500;
+	i2c_adapter->retries	= 3;
+	i2c_adapter->dev.parent	= &pdev->dev;
+
 	mantis->i2c_rc		= i2c_add_adapter(i2c_adapter);
 	if (mantis->i2c_rc < 0)
 		return mantis->i2c_rc;
 
-	dprintk(verbose, MANTIS_DEBUG, 1, "Initializing I2C ..");
+	dprintk(MANTIS_DEBUG, 1, "Initializing I2C ..");
 
 	intstat = mmread(MANTIS_INT_STAT);
 	intmask = mmread(MANTIS_INT_MASK);
 	mmwrite(intstat, MANTIS_INT_STAT);
 	mmwrite(intmask | MANTIS_INT_I2CDONE, MANTIS_INT_MASK);
 
-	dprintk(verbose, MANTIS_DEBUG, 1, "[0x%08x/%08x]", intstat, intmask);
+	dprintk(MANTIS_DEBUG, 1, "Status=<%02x> Mask=<%02x>", intstat, intmask);
 
 	return 0;
 }
+EXPORT_SYMBOL_GPL(mantis_i2c_init);
 
 int __devexit mantis_i2c_exit(struct mantis_pci *mantis)
 {
-	dprintk(verbose, MANTIS_DEBUG, 1, "Removing I2C adapter");
+	dprintk(MANTIS_DEBUG, 1, "Removing I2C adapter");
 	return i2c_del_adapter(&mantis->adapter);
 }
+EXPORT_SYMBOL_GPL(mantis_i2c_exit);