Commit 90f944a3 authored by Uri Shkolnik's avatar Uri Shkolnik Committed by Mauro Carvalho Chehab

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: default avatarUri Shkolnik <uris@siano-ms.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 3b2d18ef
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) += sms1xxx.o
obj-$(CONFIG_DVB_SIANO_SMS1XXX) += smsusb.o obj-$(CONFIG_DVB_SIANO_SMS1XXX) += smsusb.o
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
*/ */
#include "sms-cards.h" #include "sms-cards.h"
#include "smsir.h"
static int sms_dbg; static int sms_dbg;
module_param_named(cards_dbg, sms_dbg, int, 0644); module_param_named(cards_dbg, sms_dbg, int, 0644);
......
...@@ -22,6 +22,7 @@ ...@@ -22,6 +22,7 @@
#include <linux/usb.h> #include <linux/usb.h>
#include "smscoreapi.h" #include "smscoreapi.h"
#include "smsir.h"
#define SMS_BOARD_UNKNOWN 0 #define SMS_BOARD_UNKNOWN 0
#define SMS1XXX_BOARD_SIANO_STELLAR 1 #define SMS1XXX_BOARD_SIANO_STELLAR 1
...@@ -72,6 +73,7 @@ struct sms_board { ...@@ -72,6 +73,7 @@ struct sms_board {
enum sms_device_type_st type; enum sms_device_type_st type;
char *name, *fw[DEVICE_MODE_MAX]; char *name, *fw[DEVICE_MODE_MAX];
struct sms_board_gpio_cfg board_cfg; struct sms_board_gpio_cfg board_cfg;
enum ir_kb_type ir_kb_type;
/* gpios */ /* gpios */
int led_power, led_hi, led_lo, lna_ctrl, rf_switch; int led_power, led_hi, led_lo, lna_ctrl, rf_switch;
...@@ -79,6 +81,8 @@ struct sms_board { ...@@ -79,6 +81,8 @@ struct sms_board {
struct sms_board *sms_get_board(int id); struct sms_board *sms_get_board(int id);
extern struct smscore_device_t *coredev;
int sms_board_setup(struct smscore_device_t *coredev); int sms_board_setup(struct smscore_device_t *coredev);
#define SMS_LED_OFF 0 #define SMS_LED_OFF 0
......
...@@ -34,6 +34,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. ...@@ -34,6 +34,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include <asm/page.h> #include <asm/page.h>
#include "smsir.h"
#define kmutex_init(_p_) mutex_init(_p_) #define kmutex_init(_p_) mutex_init(_p_)
#define kmutex_lock(_p_) mutex_lock(_p_) #define kmutex_lock(_p_) mutex_lock(_p_)
...@@ -167,7 +168,7 @@ struct smscore_device_t { ...@@ -167,7 +168,7 @@ struct smscore_device_t {
u32 fw_buf_size; u32 fw_buf_size;
/* Infrared (IR) */ /* Infrared (IR) */
/* struct ir_t ir; */ struct ir_t ir;
int led_state; int led_state;
}; };
......
...@@ -99,7 +99,7 @@ static void sms_ir_rc5_event(struct smscore_device_t *coredev, ...@@ -99,7 +99,7 @@ static void sms_ir_rc5_event(struct smscore_device_t *coredev,
bool toggle_changed; bool toggle_changed;
u16 keycode; 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); addr, cmd, toggle);
toggle_changed = ir_toggle != toggle; toggle_changed = ir_toggle != toggle;
...@@ -118,7 +118,7 @@ static void sms_ir_rc5_event(struct smscore_device_t *coredev, ...@@ -118,7 +118,7 @@ static void sms_ir_rc5_event(struct smscore_device_t *coredev,
(keycode != KEY_VOLUMEUP && keycode != KEY_VOLUMEDOWN)) (keycode != KEY_VOLUMEUP && keycode != KEY_VOLUMEDOWN))
return; /* accept only repeated volume, reject other keys */ 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_report_key(coredev->ir.input_dev, keycode, 1);
input_sync(coredev->ir.input_dev); input_sync(coredev->ir.input_dev);
...@@ -147,7 +147,7 @@ static u32 ir_rc5_decode(unsigned int code) ...@@ -147,7 +147,7 @@ static u32 ir_rc5_decode(unsigned int code)
break; break;
case 3: case 3:
/* dprintk(1, "ir-common: ir_rc5_decode(%x) bad code\n", org_code);*/ /* dprintk(1, "ir-common: ir_rc5_decode(%x) bad code\n", org_code);*/
sms_info("bad code"); sms_log("bad code");
return 0; return 0;
} }
} }
...@@ -175,7 +175,7 @@ static void sms_rc5_parse_word(struct smscore_device_t *coredev) ...@@ -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_PUSH_BIT(rc5_word, (ir_word>>i)&1, j)
rc5_word = ir_rc5_decode(rc5_word); 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, sms_ir_rc5_event(coredev,
RC5_TOGGLE(rc5_word), RC5_TOGGLE(rc5_word),
...@@ -210,11 +210,11 @@ static void sms_rc5_accumulate_bits(struct smscore_device_t *coredev, ...@@ -210,11 +210,11 @@ static void sms_rc5_accumulate_bits(struct smscore_device_t *coredev,
if (ir_pos == RC5_WORD_LEN) if (ir_pos == RC5_WORD_LEN)
sms_rc5_parse_word(coredev); sms_rc5_parse_word(coredev);
else if (ir_pos) /* timeout within a word */ 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_pos = 0;
ir_word = 0; ir_word = 0;
/* sms_info("timeout %d", time); */ /* sms_log("timeout %d", time); */
break; break;
} }
/* The time is within the range of this number of bits */ /* 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) ...@@ -236,7 +236,7 @@ void sms_ir_event(struct smscore_device_t *coredev, const char *buf, int len)
int count = len>>2; int count = len>>2;
samples = (s32 *)buf; 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++) for (i = 0; i < count; i++)
if (ir_protocol == IR_RC5) if (ir_protocol == IR_RC5)
...@@ -248,7 +248,7 @@ int sms_ir_init(struct smscore_device_t *coredev) ...@@ -248,7 +248,7 @@ int sms_ir_init(struct smscore_device_t *coredev)
{ {
struct input_dev *input_dev; struct input_dev *input_dev;
sms_info("Allocating input device"); sms_log("Allocating input device");
input_dev = input_allocate_device(); input_dev = input_allocate_device();
if (!input_dev) { if (!input_dev) {
sms_err("Not enough memory"); sms_err("Not enough memory");
...@@ -261,11 +261,11 @@ int sms_ir_init(struct smscore_device_t *coredev) ...@@ -261,11 +261,11 @@ int sms_ir_init(struct smscore_device_t *coredev)
coredev->ir.keyboard_layout_map = coredev->ir.keyboard_layout_map =
keyboard_layout_maps[coredev->ir.ir_kb_type]. keyboard_layout_maps[coredev->ir.ir_kb_type].
keyboard_layout_map; 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.controller = 0; /* Todo: vega/nova SPI number */
coredev->ir.timeout = IR_DEFAULT_TIMEOUT; 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); coredev->ir.controller, coredev->ir.timeout);
snprintf(coredev->ir.name, snprintf(coredev->ir.name,
...@@ -280,7 +280,7 @@ int sms_ir_init(struct smscore_device_t *coredev) ...@@ -280,7 +280,7 @@ int sms_ir_init(struct smscore_device_t *coredev)
input_dev->evbit[0] = BIT_MASK(EV_KEY); input_dev->evbit[0] = BIT_MASK(EV_KEY);
input_dev->keybit[BIT_WORD(BTN_0)] = BIT_MASK(BTN_0); 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)) { if (input_register_device(input_dev)) {
sms_err("Failed to register device"); sms_err("Failed to register device");
...@@ -296,6 +296,6 @@ void sms_ir_exit(struct smscore_device_t *coredev) ...@@ -296,6 +296,6 @@ void sms_ir_exit(struct smscore_device_t *coredev)
if (coredev->ir.input_dev) if (coredev->ir.input_dev)
input_unregister_device(coredev->ir.input_dev); input_unregister_device(coredev->ir.input_dev);
sms_info(""); sms_log("");
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment