sii8240_rcp.h 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260
  1. /*
  2. * Copyright (C) 2012 Samsung Electronics
  3. *
  4. * Author: Dharam Kumar <dharam.kr@samsung.com>
  5. *
  6. * Date: 3:00 PM, 31st May,2012
  7. *
  8. * This program is free software; you can redistribute it and/or modify
  9. * it under the terms of the GNU General Public License as published by
  10. * the Free Software Foundation; either version 2 of the License, or
  11. * (at your option) any later version.
  12. *
  13. * This program is distributed in the hope that it will be useful,
  14. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  16. * GNU General Public License for more details.
  17. *
  18. * You should have received a copy of the GNU General Public License
  19. * along with this program; if not, write to the Free Software
  20. * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  21. *
  22. */
  23. #ifndef __SII8240_RCP_H__
  24. #define __SII8240_RCP_H__
  25. #include <linux/input.h>
  26. /* RCPE sub-commands */
  27. enum rcpe_key_status_code {
  28. /* Dont use it as the key will be ACKed using RCPK command */
  29. RCPE_KEY_NO_ERROR = 0x00,
  30. /* Key-code was either invalid,not-supoorted or not-recognized by
  31. * receiving device */
  32. RCPE_KEY_INVALID = 0x01,
  33. /* Receiving device busy,received key-code discarded,sender may try
  34. * again */
  35. RCPE_KEY_RESPONDER_BUSY = 0x02,
  36. };
  37. /* RAP sub-commands */
  38. enum rap_action_code {
  39. RAP_POLL = 0x00,
  40. RAP_CONTENT_ON = 0x10,
  41. RAP_CONTENT_OFF = 0x11,
  42. };
  43. enum rapk_status_code {
  44. RAPK_NO_ERROR = 0x00,
  45. RAPK_UNRECOGNIZED = 0x01,
  46. RAPK_UNSUPPORTED = 0x02,
  47. RAPK_RESPONDER_BUSY = 0x03,
  48. };
  49. #define LOG_DEV_DISPLAY (1<<0)
  50. #define LOG_DEV_VIDEO (1<<1)
  51. #define LOG_DEV_AUDIO (1<<2)
  52. #define LOG_DEV_MEDIA (1<<3)
  53. #define LOG_DEV_TUNER (1<<4)
  54. #define LOG_DEV_RECORD (1<<5)
  55. #define LOG_DEV_SPEAKER (1<<6)
  56. #define LOG_DEV_GUI (1<<7)
  57. #define LOG_DEV_NONE 0
  58. #define LOG_DEV_ALL 0xFF
  59. /* @log_dev_type: type of logical device which should support/handle this
  60. * key;each MHL device will have its logical device type stored in one of the
  61. * capability registers */
  62. struct rcp_keymap {
  63. u16 key_code;
  64. u8 log_dev_type; /* Logical device type */
  65. };
  66. static const struct rcp_keymap sii8240_rcp_keymap[] = {
  67. { KEY_ENTER, LOG_DEV_GUI },
  68. { KEY_UP, LOG_DEV_GUI },
  69. { KEY_DOWN, LOG_DEV_GUI },
  70. { KEY_LEFT, LOG_DEV_GUI },
  71. { KEY_RIGHT, LOG_DEV_GUI },
  72. /* TODO:Could not find Keys like RIGHTUP, RIGHTDOWN, LEFTUP,LEFTDOWN
  73. * in <linux/input.h>,should not be these keys added to the input header
  74. * file ? */
  75. { KEY_UNKNOWN, LOG_DEV_NONE }, /* right-up */
  76. { KEY_UNKNOWN, LOG_DEV_NONE }, /* right-down */
  77. { KEY_UNKNOWN, LOG_DEV_NONE }, /* left-up */
  78. { KEY_UNKNOWN, LOG_DEV_NONE }, /* left-down */
  79. { KEY_MENU, LOG_DEV_GUI },
  80. { KEY_SETUP, LOG_DEV_NONE }, /* setup */
  81. { KEY_UNKNOWN, LOG_DEV_NONE }, /* contents */
  82. { KEY_FAVORITES, LOG_DEV_NONE },
  83. { KEY_BACK, LOG_DEV_GUI },
  84. { KEY_RESERVED, LOG_DEV_NONE }, /* 0x0e */
  85. { KEY_RESERVED, LOG_DEV_NONE },
  86. { KEY_RESERVED, LOG_DEV_NONE },
  87. { KEY_RESERVED, LOG_DEV_NONE },
  88. { KEY_RESERVED, LOG_DEV_NONE },
  89. { KEY_RESERVED, LOG_DEV_NONE },
  90. { KEY_RESERVED, LOG_DEV_NONE },
  91. { KEY_RESERVED, LOG_DEV_NONE },
  92. { KEY_RESERVED, LOG_DEV_NONE },
  93. { KEY_RESERVED, LOG_DEV_NONE },
  94. { KEY_RESERVED, LOG_DEV_NONE },
  95. { KEY_RESERVED, LOG_DEV_NONE },
  96. { KEY_RESERVED, LOG_DEV_NONE },
  97. { KEY_RESERVED, LOG_DEV_NONE },
  98. { KEY_RESERVED, LOG_DEV_NONE },
  99. { KEY_RESERVED, LOG_DEV_NONE },
  100. { KEY_RESERVED, LOG_DEV_NONE },
  101. { KEY_RESERVED, LOG_DEV_NONE }, /* 0x1F */
  102. { KEY_NUMERIC_0, LOG_DEV_VIDEO | LOG_DEV_AUDIO | LOG_DEV_MEDIA |
  103. LOG_DEV_TUNER | LOG_DEV_ALL},
  104. { KEY_NUMERIC_1, LOG_DEV_VIDEO | LOG_DEV_AUDIO | LOG_DEV_MEDIA |
  105. LOG_DEV_TUNER | LOG_DEV_ALL},
  106. { KEY_NUMERIC_2, LOG_DEV_VIDEO | LOG_DEV_AUDIO | LOG_DEV_MEDIA |
  107. LOG_DEV_TUNER | LOG_DEV_ALL},
  108. { KEY_NUMERIC_3, LOG_DEV_VIDEO | LOG_DEV_AUDIO | LOG_DEV_MEDIA |
  109. LOG_DEV_TUNER | LOG_DEV_ALL},
  110. { KEY_NUMERIC_4, LOG_DEV_VIDEO | LOG_DEV_AUDIO | LOG_DEV_MEDIA |
  111. LOG_DEV_TUNER | LOG_DEV_ALL},
  112. { KEY_NUMERIC_5, LOG_DEV_VIDEO | LOG_DEV_AUDIO | LOG_DEV_MEDIA |
  113. LOG_DEV_TUNER | LOG_DEV_ALL},
  114. { KEY_NUMERIC_6, LOG_DEV_VIDEO | LOG_DEV_AUDIO | LOG_DEV_MEDIA |
  115. LOG_DEV_TUNER | LOG_DEV_ALL},
  116. { KEY_NUMERIC_7, LOG_DEV_VIDEO | LOG_DEV_AUDIO | LOG_DEV_MEDIA |
  117. LOG_DEV_TUNER | LOG_DEV_ALL},
  118. { KEY_NUMERIC_8, LOG_DEV_VIDEO | LOG_DEV_AUDIO | LOG_DEV_MEDIA |
  119. LOG_DEV_TUNER | LOG_DEV_ALL},
  120. { KEY_NUMERIC_9, LOG_DEV_VIDEO | LOG_DEV_AUDIO | LOG_DEV_MEDIA |
  121. LOG_DEV_TUNER | LOG_DEV_ALL},
  122. { KEY_DOT, LOG_DEV_NONE },
  123. { KEY_ENTER, LOG_DEV_VIDEO | LOG_DEV_AUDIO | LOG_DEV_MEDIA |
  124. LOG_DEV_TUNER | LOG_DEV_ALL},
  125. { KEY_CLEAR, LOG_DEV_VIDEO | LOG_DEV_AUDIO | LOG_DEV_MEDIA |
  126. LOG_DEV_TUNER | LOG_DEV_ALL},
  127. { KEY_RESERVED, LOG_DEV_NONE }, /* 0x2D */
  128. { KEY_RESERVED, LOG_DEV_NONE },
  129. { KEY_RESERVED, LOG_DEV_NONE }, /* 0x2F */
  130. { KEY_CHANNELUP, LOG_DEV_TUNER }, /* channel up */
  131. { KEY_CHANNELDOWN, LOG_DEV_TUNER }, /* channel down */
  132. /* TODO:Not sure, what is the correct key code for 'previous channel' */
  133. { KEY_PREVIOUS, LOG_DEV_TUNER }, /* previous channel */
  134. { KEY_UNKNOWN, LOG_DEV_AUDIO }, /* sound select */
  135. { KEY_UNKNOWN, LOG_DEV_NONE }, /* input select */
  136. { KEY_INFO, LOG_DEV_NONE }, /* show information */
  137. { KEY_HELP, LOG_DEV_NONE }, /* help */
  138. { KEY_PAGEUP, LOG_DEV_NONE }, /* page up */
  139. { KEY_PAGEDOWN, LOG_DEV_NONE }, /* page down */
  140. { KEY_RESERVED, LOG_DEV_NONE }, /* 0x39 */
  141. { KEY_RESERVED, LOG_DEV_NONE},
  142. { KEY_RESERVED, LOG_DEV_NONE},
  143. { KEY_RESERVED, LOG_DEV_NONE},
  144. { KEY_RESERVED, LOG_DEV_NONE},
  145. { KEY_RESERVED, LOG_DEV_NONE},
  146. { KEY_RESERVED, LOG_DEV_NONE }, /* 0x3F */
  147. { KEY_RESERVED, LOG_DEV_NONE }, /* 0x40 */
  148. { KEY_VOLUMEUP, LOG_DEV_RECORD }, /* volume up */
  149. { KEY_VOLUMEDOWN, LOG_DEV_RECORD }, /* volume down */
  150. { KEY_MUTE, LOG_DEV_RECORD }, /* mute */
  151. { KEY_PLAY, LOG_DEV_VIDEO | LOG_DEV_AUDIO | LOG_DEV_ALL},
  152. { KEY_STOP, LOG_DEV_VIDEO | LOG_DEV_AUDIO |
  153. LOG_DEV_RECORD | LOG_DEV_ALL},
  154. { KEY_PAUSECD, LOG_DEV_VIDEO | LOG_DEV_AUDIO |
  155. LOG_DEV_RECORD | LOG_DEV_ALL},
  156. { KEY_RECORD, LOG_DEV_RECORD }, /* record */
  157. { KEY_REWIND, LOG_DEV_VIDEO | LOG_DEV_AUDIO | LOG_DEV_ALL},
  158. { KEY_FASTFORWARD, LOG_DEV_VIDEO | LOG_DEV_AUDIO | LOG_DEV_ALL},
  159. { KEY_EJECTCD, LOG_DEV_MEDIA }, /* eject */
  160. { KEY_NEXTSONG, LOG_DEV_VIDEO | LOG_DEV_AUDIO | LOG_DEV_MEDIA |
  161. LOG_DEV_ALL},
  162. { KEY_PREVIOUSSONG, LOG_DEV_VIDEO | LOG_DEV_AUDIO | LOG_DEV_MEDIA |
  163. LOG_DEV_ALL},
  164. { KEY_RESERVED, LOG_DEV_NONE }, /* 0x4D */
  165. { KEY_RESERVED, LOG_DEV_NONE },
  166. { KEY_RESERVED, LOG_DEV_NONE }, /* 0x4F */
  167. { KEY_ANGLE, LOG_DEV_NONE }, /* angle */
  168. /* TODO: there is no key in <linux/input.h>,corresponding to SUBPICTURE
  169. * should we add such keys to <linux/input.h> ?? */
  170. { KEY_UNKNOWN, LOG_DEV_NONE }, /* subpicture */
  171. { KEY_RESERVED, LOG_DEV_NONE }, /* 0x52 */
  172. { KEY_RESERVED, LOG_DEV_NONE },
  173. { KEY_RESERVED, LOG_DEV_NONE },
  174. { KEY_RESERVED, LOG_DEV_NONE },
  175. { KEY_RESERVED, LOG_DEV_NONE },
  176. { KEY_RESERVED, LOG_DEV_NONE },
  177. { KEY_RESERVED, LOG_DEV_NONE },
  178. { KEY_RESERVED, LOG_DEV_NONE },
  179. { KEY_RESERVED, LOG_DEV_NONE },
  180. { KEY_RESERVED, LOG_DEV_NONE },
  181. { KEY_RESERVED, LOG_DEV_NONE },
  182. { KEY_RESERVED, LOG_DEV_NONE },
  183. { KEY_RESERVED, LOG_DEV_NONE },
  184. { KEY_RESERVED, LOG_DEV_NONE }, /* 0x5F */
  185. { KEY_PLAY, LOG_DEV_VIDEO | LOG_DEV_AUDIO },
  186. { KEY_PAUSE, LOG_DEV_VIDEO | LOG_DEV_AUDIO },
  187. { KEY_RECORD, LOG_DEV_RECORD }, /* record_function */
  188. { KEY_UNKNOWN, LOG_DEV_RECORD },/* pause_record_function */
  189. { KEY_STOP, LOG_DEV_VIDEO | LOG_DEV_AUDIO |
  190. LOG_DEV_RECORD },
  191. { KEY_UNKNOWN, LOG_DEV_SPEAKER }, /* mute_function */
  192. { KEY_UNKNOWN, LOG_DEV_SPEAKER },/* restore_volume_function */
  193. { KEY_UNKNOWN, LOG_DEV_NONE }, /* tune_function */
  194. { KEY_UNKNOWN, LOG_DEV_NONE },/* select_media_function */
  195. { KEY_RESERVED, LOG_DEV_NONE }, /* 0x69 */
  196. { KEY_RESERVED, LOG_DEV_NONE },
  197. { KEY_RESERVED, LOG_DEV_NONE },
  198. { KEY_RESERVED, LOG_DEV_NONE },
  199. { KEY_RESERVED, LOG_DEV_NONE },
  200. { KEY_RESERVED, LOG_DEV_NONE },
  201. { KEY_RESERVED, LOG_DEV_NONE },
  202. { KEY_RESERVED, LOG_DEV_NONE }, /* 0x70 */
  203. { KEY_F1, LOG_DEV_NONE }, /* F1 */
  204. { KEY_F2, LOG_DEV_NONE }, /* F2 */
  205. { KEY_F3, LOG_DEV_NONE }, /* F3 */
  206. { KEY_F4, LOG_DEV_NONE }, /* F4 */
  207. { KEY_F5, LOG_DEV_NONE }, /* F5 */
  208. { KEY_RESERVED, LOG_DEV_NONE }, /* 0x76 */
  209. { KEY_RESERVED, LOG_DEV_NONE },
  210. { KEY_RESERVED, LOG_DEV_NONE },
  211. { KEY_RESERVED, LOG_DEV_NONE },
  212. { KEY_RESERVED, LOG_DEV_NONE },
  213. { KEY_RESERVED, LOG_DEV_NONE },
  214. { KEY_RESERVED, LOG_DEV_NONE },
  215. { KEY_RESERVED, LOG_DEV_NONE }, /* 0x7D */
  216. { KEY_VENDOR, LOG_DEV_NONE },
  217. { KEY_RESERVED, LOG_DEV_NONE }, /* 0x7F */
  218. };
  219. #define SII8240_RCP_NUM_KEYS ARRAY_SIZE(sii8240_rcp_keymap)
  220. #endif