forked from Minki/linux
ebb6c22e80
This patch add support for IR (infra-red) remote controllers. Further commits are needed in order to enable the activation of the IR components. Signed-off-by: Uri Shkolnik <uris@siano-ms.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
94 lines
2.5 KiB
C
94 lines
2.5 KiB
C
/****************************************************************
|
|
|
|
Siano Mobile Silicon, Inc.
|
|
MDTV receiver kernel modules.
|
|
Copyright (C) 2006-2009, Uri Shkolnik
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 2 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
****************************************************************/
|
|
|
|
#ifndef __SMS_IR_H__
|
|
#define __SMS_IR_H__
|
|
|
|
#include <linux/input.h>
|
|
|
|
#define IR_DEV_NAME_MAX_LEN 23 /* "SMS IR kbd type nn\0" */
|
|
#define IR_KEYBOARD_LAYOUT_SIZE 64
|
|
#define IR_DEFAULT_TIMEOUT 100
|
|
|
|
enum ir_kb_type {
|
|
SMS_IR_KB_DEFAULT_TV,
|
|
SMS_IR_KB_HCW_SILVER
|
|
};
|
|
|
|
enum rc5_keyboard_address {
|
|
KEYBOARD_ADDRESS_TV1 = 0,
|
|
KEYBOARD_ADDRESS_TV2 = 1,
|
|
KEYBOARD_ADDRESS_TELETEXT = 2,
|
|
KEYBOARD_ADDRESS_VIDEO = 3,
|
|
KEYBOARD_ADDRESS_LV1 = 4,
|
|
KEYBOARD_ADDRESS_VCR1 = 5,
|
|
KEYBOARD_ADDRESS_VCR2 = 6,
|
|
KEYBOARD_ADDRESS_EXPERIMENTAL = 7,
|
|
KEYBOARD_ADDRESS_SAT1 = 8,
|
|
KEYBOARD_ADDRESS_CAMERA = 9,
|
|
KEYBOARD_ADDRESS_SAT2 = 10,
|
|
KEYBOARD_ADDRESS_CDV = 12,
|
|
KEYBOARD_ADDRESS_CAMCORDER = 13,
|
|
KEYBOARD_ADDRESS_PRE_AMP = 16,
|
|
KEYBOARD_ADDRESS_TUNER = 17,
|
|
KEYBOARD_ADDRESS_RECORDER1 = 18,
|
|
KEYBOARD_ADDRESS_PRE_AMP1 = 19,
|
|
KEYBOARD_ADDRESS_CD_PLAYER = 20,
|
|
KEYBOARD_ADDRESS_PHONO = 21,
|
|
KEYBOARD_ADDRESS_SATA = 22,
|
|
KEYBOARD_ADDRESS_RECORDER2 = 23,
|
|
KEYBOARD_ADDRESS_CDR = 26,
|
|
KEYBOARD_ADDRESS_LIGHTING = 29,
|
|
KEYBOARD_ADDRESS_LIGHTING1 = 30, /* KEYBOARD_ADDRESS_HCW_SILVER */
|
|
KEYBOARD_ADDRESS_PHONE = 31,
|
|
KEYBOARD_ADDRESS_NOT_RC5 = 0xFFFF
|
|
};
|
|
|
|
enum ir_protocol {
|
|
IR_RC5,
|
|
IR_RCMM
|
|
};
|
|
|
|
struct keyboard_layout_map_t {
|
|
enum ir_protocol ir_protocol;
|
|
enum rc5_keyboard_address rc5_kbd_address;
|
|
u16 keyboard_layout_map[IR_KEYBOARD_LAYOUT_SIZE];
|
|
};
|
|
|
|
struct smscore_device_t;
|
|
|
|
struct ir_t {
|
|
struct input_dev *input_dev;
|
|
enum ir_kb_type ir_kb_type;
|
|
char name[IR_DEV_NAME_MAX_LEN+1];
|
|
u16 *keyboard_layout_map;
|
|
u32 timeout;
|
|
u32 controller;
|
|
};
|
|
|
|
int sms_ir_init(struct smscore_device_t *coredev);
|
|
void sms_ir_exit(struct smscore_device_t *coredev);
|
|
void sms_ir_event(struct smscore_device_t *coredev,
|
|
const char *buf, int len);
|
|
|
|
#endif /* __SMS_IR_H__ */
|
|
|