smsir.h 2.5 KB

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