smsir.h revision ebb6c22e80ccb2889b9c459df36d686d223911f5
1/****************************************************************
2
3Siano Mobile Silicon, Inc.
4MDTV receiver kernel modules.
5Copyright (C) 2006-2009, Uri Shkolnik
6
7This program is free software: you can redistribute it and/or modify
8it under the terms of the GNU General Public License as published by
9the Free Software Foundation, either version 2 of the License, or
10(at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13but WITHOUT ANY WARRANTY; without even the implied warranty of
14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15GNU General Public License for more details.
16
17You should have received a copy of the GNU General Public License
18along with this program.  If not, see <http://www.gnu.org/licenses/>.
19
20****************************************************************/
21
22#ifndef __SMS_IR_H__
23#define __SMS_IR_H__
24
25#include <linux/input.h>
26
27#define IR_DEV_NAME_MAX_LEN		23 /* "SMS IR kbd type nn\0" */
28#define IR_KEYBOARD_LAYOUT_SIZE	64
29#define IR_DEFAULT_TIMEOUT		100
30
31enum ir_kb_type {
32	SMS_IR_KB_DEFAULT_TV,
33	SMS_IR_KB_HCW_SILVER
34};
35
36enum rc5_keyboard_address {
37	KEYBOARD_ADDRESS_TV1 = 0,
38	KEYBOARD_ADDRESS_TV2 = 1,
39	KEYBOARD_ADDRESS_TELETEXT = 2,
40	KEYBOARD_ADDRESS_VIDEO = 3,
41	KEYBOARD_ADDRESS_LV1 = 4,
42	KEYBOARD_ADDRESS_VCR1 = 5,
43	KEYBOARD_ADDRESS_VCR2 = 6,
44	KEYBOARD_ADDRESS_EXPERIMENTAL = 7,
45	KEYBOARD_ADDRESS_SAT1 = 8,
46	KEYBOARD_ADDRESS_CAMERA = 9,
47	KEYBOARD_ADDRESS_SAT2 = 10,
48	KEYBOARD_ADDRESS_CDV = 12,
49	KEYBOARD_ADDRESS_CAMCORDER = 13,
50	KEYBOARD_ADDRESS_PRE_AMP = 16,
51	KEYBOARD_ADDRESS_TUNER = 17,
52	KEYBOARD_ADDRESS_RECORDER1 = 18,
53	KEYBOARD_ADDRESS_PRE_AMP1 = 19,
54	KEYBOARD_ADDRESS_CD_PLAYER = 20,
55	KEYBOARD_ADDRESS_PHONO = 21,
56	KEYBOARD_ADDRESS_SATA = 22,
57	KEYBOARD_ADDRESS_RECORDER2 = 23,
58	KEYBOARD_ADDRESS_CDR = 26,
59	KEYBOARD_ADDRESS_LIGHTING = 29,
60	KEYBOARD_ADDRESS_LIGHTING1 = 30, /* KEYBOARD_ADDRESS_HCW_SILVER */
61	KEYBOARD_ADDRESS_PHONE = 31,
62	KEYBOARD_ADDRESS_NOT_RC5 = 0xFFFF
63};
64
65enum ir_protocol {
66	IR_RC5,
67	IR_RCMM
68};
69
70struct keyboard_layout_map_t {
71	enum ir_protocol ir_protocol;
72	enum rc5_keyboard_address rc5_kbd_address;
73	u16 keyboard_layout_map[IR_KEYBOARD_LAYOUT_SIZE];
74};
75
76struct smscore_device_t;
77
78struct ir_t {
79	struct input_dev *input_dev;
80	enum ir_kb_type ir_kb_type;
81	char name[IR_DEV_NAME_MAX_LEN+1];
82	u16 *keyboard_layout_map;
83	u32 timeout;
84	u32 controller;
85};
86
87int sms_ir_init(struct smscore_device_t *coredev);
88void sms_ir_exit(struct smscore_device_t *coredev);
89void sms_ir_event(struct smscore_device_t *coredev,
90			const char *buf, int len);
91
92#endif /* __SMS_IR_H__ */
93
94