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__ */
 | |
| 
 |