From 90f944a38c4eb8432b6381fd0b9789f1f4600786 Mon Sep 17 00:00:00 2001
From: Uri Shkolnik <uris@siano-ms.com>
Date: Thu, 14 May 2009 16:32:12 -0300
Subject: V4L/DVB (11815): Siano: bind infra-red component

Add the infra-red to the makefile and declare
the assignment in the cards components.

[mchehab@redhat.com: Fixed a few trivial merge conflicts]
Signed-off-by: Uri Shkolnik <uris@siano-ms.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
---
 drivers/media/dvb/siano/Makefile     |  2 +-
 drivers/media/dvb/siano/sms-cards.c  |  1 +
 drivers/media/dvb/siano/sms-cards.h  |  4 ++++
 drivers/media/dvb/siano/smscoreapi.h |  3 ++-
 drivers/media/dvb/siano/smsir.c      | 24 ++++++++++++------------
 5 files changed, 20 insertions(+), 14 deletions(-)

(limited to 'drivers/media/dvb')

diff --git a/drivers/media/dvb/siano/Makefile b/drivers/media/dvb/siano/Makefile
index 6354a4718e5..c6644d90943 100644
--- a/drivers/media/dvb/siano/Makefile
+++ b/drivers/media/dvb/siano/Makefile
@@ -1,4 +1,4 @@
-sms1xxx-objs := smscoreapi.o sms-cards.o smsendian.o
+sms1xxx-objs := smscoreapi.o sms-cards.o smsendian.o smsir.o
 
 obj-$(CONFIG_DVB_SIANO_SMS1XXX) += sms1xxx.o
 obj-$(CONFIG_DVB_SIANO_SMS1XXX) += smsusb.o
diff --git a/drivers/media/dvb/siano/sms-cards.c b/drivers/media/dvb/siano/sms-cards.c
index 63e4d0ec658..c35ff1f3f37 100644
--- a/drivers/media/dvb/siano/sms-cards.c
+++ b/drivers/media/dvb/siano/sms-cards.c
@@ -18,6 +18,7 @@
  */
 
 #include "sms-cards.h"
+#include "smsir.h"
 
 static int sms_dbg;
 module_param_named(cards_dbg, sms_dbg, int, 0644);
diff --git a/drivers/media/dvb/siano/sms-cards.h b/drivers/media/dvb/siano/sms-cards.h
index 5bd4fb4d3a4..447481ab58b 100644
--- a/drivers/media/dvb/siano/sms-cards.h
+++ b/drivers/media/dvb/siano/sms-cards.h
@@ -22,6 +22,7 @@
 
 #include <linux/usb.h>
 #include "smscoreapi.h"
+#include "smsir.h"
 
 #define SMS_BOARD_UNKNOWN 0
 #define SMS1XXX_BOARD_SIANO_STELLAR 1
@@ -72,6 +73,7 @@ struct sms_board {
 	enum sms_device_type_st type;
 	char *name, *fw[DEVICE_MODE_MAX];
 	struct sms_board_gpio_cfg board_cfg;
+	enum ir_kb_type ir_kb_type;
 
 	/* gpios */
 	int led_power, led_hi, led_lo, lna_ctrl, rf_switch;
@@ -79,6 +81,8 @@ struct sms_board {
 
 struct sms_board *sms_get_board(int id);
 
+extern struct smscore_device_t *coredev;
+
 int sms_board_setup(struct smscore_device_t *coredev);
 
 #define SMS_LED_OFF 0
diff --git a/drivers/media/dvb/siano/smscoreapi.h b/drivers/media/dvb/siano/smscoreapi.h
index 942baaec897..6e23c5f6808 100644
--- a/drivers/media/dvb/siano/smscoreapi.h
+++ b/drivers/media/dvb/siano/smscoreapi.h
@@ -34,6 +34,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 #include <asm/page.h>
 
+#include "smsir.h"
 
 #define kmutex_init(_p_) mutex_init(_p_)
 #define kmutex_lock(_p_) mutex_lock(_p_)
@@ -167,7 +168,7 @@ struct smscore_device_t {
 	u32 fw_buf_size;
 
 	/* Infrared (IR) */
-	/* struct ir_t ir; */
+	struct ir_t ir;
 
 	int led_state;
 };
diff --git a/drivers/media/dvb/siano/smsir.c b/drivers/media/dvb/siano/smsir.c
index a5f302c58fd..e3d776feeac 100644
--- a/drivers/media/dvb/siano/smsir.c
+++ b/drivers/media/dvb/siano/smsir.c
@@ -99,7 +99,7 @@ static void sms_ir_rc5_event(struct smscore_device_t *coredev,
 	bool toggle_changed;
 	u16 keycode;
 
-	sms_info("IR RC5 word: address %d, command %d, toggle %d",
+	sms_log("IR RC5 word: address %d, command %d, toggle %d",
 				addr, cmd, toggle);
 
 	toggle_changed = ir_toggle != toggle;
@@ -118,7 +118,7 @@ static void sms_ir_rc5_event(struct smscore_device_t *coredev,
 			(keycode != KEY_VOLUMEUP && keycode != KEY_VOLUMEDOWN))
 		return; /* accept only repeated volume, reject other keys */
 
-	sms_info("kernel input keycode (from ir) %d", keycode);
+	sms_log("kernel input keycode (from ir) %d", keycode);
 	input_report_key(coredev->ir.input_dev, keycode, 1);
 	input_sync(coredev->ir.input_dev);
 
@@ -147,7 +147,7 @@ static u32 ir_rc5_decode(unsigned int code)
 			break;
 		case 3:
 /*	dprintk(1, "ir-common: ir_rc5_decode(%x) bad code\n", org_code);*/
-			sms_info("bad code");
+			sms_log("bad code");
 			return 0;
 		}
 	}
@@ -175,7 +175,7 @@ static void sms_rc5_parse_word(struct smscore_device_t *coredev)
 		RC5_PUSH_BIT(rc5_word, (ir_word>>i)&1, j)
 
 	rc5_word = ir_rc5_decode(rc5_word);
-	/* sms_info("temp = 0x%x, rc5_code = 0x%x", ir_word, rc5_word); */
+	/* sms_log("temp = 0x%x, rc5_code = 0x%x", ir_word, rc5_word); */
 
 	sms_ir_rc5_event(coredev,
 				RC5_TOGGLE(rc5_word),
@@ -210,11 +210,11 @@ static void sms_rc5_accumulate_bits(struct smscore_device_t *coredev,
 			if (ir_pos == RC5_WORD_LEN)
 				sms_rc5_parse_word(coredev);
 			else if (ir_pos) /* timeout within a word */
-				sms_info("IR error parsing a word");
+				sms_log("IR error parsing a word");
 
 			ir_pos = 0;
 			ir_word = 0;
-			/* sms_info("timeout %d", time); */
+			/* sms_log("timeout %d", time); */
 			break;
 		}
 		/* The time is within the range of this number of bits */
@@ -236,7 +236,7 @@ void sms_ir_event(struct smscore_device_t *coredev, const char *buf, int len)
 	int count = len>>2;
 
 	samples = (s32 *)buf;
-/*	sms_info("IR buffer received, length = %d", count);*/
+/*	sms_log("IR buffer received, length = %d", count);*/
 
 	for (i = 0; i < count; i++)
 		if (ir_protocol == IR_RC5)
@@ -248,7 +248,7 @@ int sms_ir_init(struct smscore_device_t *coredev)
 {
 	struct input_dev *input_dev;
 
-	sms_info("Allocating input device");
+	sms_log("Allocating input device");
 	input_dev = input_allocate_device();
 	if (!input_dev)	{
 		sms_err("Not enough memory");
@@ -261,11 +261,11 @@ int sms_ir_init(struct smscore_device_t *coredev)
 	coredev->ir.keyboard_layout_map =
 		keyboard_layout_maps[coredev->ir.ir_kb_type].
 				keyboard_layout_map;
-	sms_info("IR remote keyboard type is %d", coredev->ir.ir_kb_type);
+	sms_log("IR remote keyboard type is %d", coredev->ir.ir_kb_type);
 
 	coredev->ir.controller = 0;	/* Todo: vega/nova SPI number */
 	coredev->ir.timeout = IR_DEFAULT_TIMEOUT;
-	sms_info("IR port %d, timeout %d ms",
+	sms_log("IR port %d, timeout %d ms",
 			coredev->ir.controller, coredev->ir.timeout);
 
 	snprintf(coredev->ir.name,
@@ -280,7 +280,7 @@ int sms_ir_init(struct smscore_device_t *coredev)
 	input_dev->evbit[0] = BIT_MASK(EV_KEY);
 	input_dev->keybit[BIT_WORD(BTN_0)] = BIT_MASK(BTN_0);
 
-	sms_info("Input device (IR) %s is set for key events", input_dev->name);
+	sms_log("Input device (IR) %s is set for key events", input_dev->name);
 
 	if (input_register_device(input_dev)) {
 		sms_err("Failed to register device");
@@ -296,6 +296,6 @@ void sms_ir_exit(struct smscore_device_t *coredev)
 	if (coredev->ir.input_dev)
 		input_unregister_device(coredev->ir.input_dev);
 
-	sms_info("");
+	sms_log("");
 }
 
-- 
cgit v1.2.3-70-g09d2