Linux-libre 2.6.34.11-gnu1
[librecmc/linux-libre.git] / drivers / media / dvb / siano / smsir.h
1 /****************************************************************
2
3 Siano Mobile Silicon, Inc.
4 MDTV receiver kernel modules.
5 Copyright (C) 2006-2009, Uri Shkolnik
6
7 This program is free software: you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the 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,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along 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
31 enum ir_kb_type {
32         SMS_IR_KB_DEFAULT_TV,
33         SMS_IR_KB_HCW_SILVER
34 };
35
36 enum 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
65 enum ir_protocol {
66         IR_RC5,
67         IR_RCMM
68 };
69
70 struct 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
76 struct smscore_device_t;
77
78 struct 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
87 int sms_ir_init(struct smscore_device_t *coredev);
88 void sms_ir_exit(struct smscore_device_t *coredev);
89 void sms_ir_event(struct smscore_device_t *coredev,
90                         const char *buf, int len);
91
92 #endif /* __SMS_IR_H__ */
93