V4L/DVB (13750): [Mantis] GPIO_CONTROL: Cache a given GPIO Bit Setup for a given event

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_common.h b/drivers/media/dvb/mantis/mantis_common.h
index 0aa4001..75f0773 100644
--- a/drivers/media/dvb/mantis/mantis_common.h
+++ b/drivers/media/dvb/mantis/mantis_common.h
@@ -137,7 +137,7 @@
 	u32			sub_device_id;
 
 	 /*	A12 A13 A14		*/
-	int			gpio_status;
+	u32			gpio_status;
 
 	struct mantis_ca	*mantis_ca;
 };
diff --git a/drivers/media/dvb/mantis/mantis_core.c b/drivers/media/dvb/mantis/mantis_core.c
index b94d051..3fd3b08 100644
--- a/drivers/media/dvb/mantis/mantis_core.c
+++ b/drivers/media/dvb/mantis/mantis_core.c
@@ -185,16 +185,15 @@
 // Turn the given bit on or off.
 void gpio_set_bits(struct mantis_pci *mantis, u32 bitpos, u8 value)
 {
-	u32 currVal, newVal;
+	u32 cur;
 
-	currVal = mmread(MANTIS_GPIF_ADDR);
-
+	cur = mmread(MANTIS_GPIF_ADDR);
 	if (value)
-		newVal = currVal | (1 << bitpos);
+		mantis->gpio_status = cur | (1 << bitpos);
 	else
-		newVal = currVal & (~(1 << bitpos));
+		mantis->gpio_status = cur & (~(1 << bitpos));
 
-	mmwrite(newVal, MANTIS_GPIF_ADDR);
+	mmwrite(mantis->gpio_status, MANTIS_GPIF_ADDR);
 	mmwrite(0x00, MANTIS_GPIF_DOUT);
 	udelay(100);
 }