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