ir-common.h 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. /*
  2. * some common functions to handle infrared remote protocol decoding for
  3. * drivers which have not yet been (or can't be) converted to use the
  4. * regular protocol decoders...
  5. *
  6. * (c) 2003 Gerd Knorr <kraxel@bytesex.org> [SuSE Labs]
  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. #ifndef _IR_COMMON
  23. #define _IR_COMMON
  24. #include <linux/input.h>
  25. #include <linux/workqueue.h>
  26. #include <linux/interrupt.h>
  27. #include <media/ir-core.h>
  28. #define RC5_START(x) (((x)>>12)&3)
  29. #define RC5_TOGGLE(x) (((x)>>11)&1)
  30. #define RC5_ADDR(x) (((x)>>6)&31)
  31. #define RC5_INSTR(x) ((x)&63)
  32. /* this was saa7134_ir and bttv_ir, moved here for
  33. * rc5 decoding. */
  34. struct card_ir {
  35. struct rc_dev *dev;
  36. char name[32];
  37. char phys[32];
  38. int users;
  39. u32 running:1;
  40. /* Usual gpio signalling */
  41. u32 mask_keycode;
  42. u32 mask_keydown;
  43. u32 mask_keyup;
  44. u32 polling;
  45. u32 last_gpio;
  46. int shift_by;
  47. int start; // What should RC5_START() be
  48. int addr; // What RC5_ADDR() should be.
  49. int rc5_remote_gap;
  50. struct work_struct work;
  51. struct timer_list timer;
  52. /* RC5 gpio */
  53. u32 rc5_gpio;
  54. struct timer_list timer_end; /* timer_end for code completion */
  55. u32 last_bit; /* last raw bit seen */
  56. u32 code; /* raw code under construction */
  57. struct timeval base_time; /* time of last seen code */
  58. int active; /* building raw code */
  59. /* NEC decoding */
  60. u32 nec_gpio;
  61. struct tasklet_struct tlet;
  62. /* IR core raw decoding */
  63. u32 raw_decode;
  64. };
  65. /* Routines from ir-functions.c */
  66. void ir_rc5_timer_end(unsigned long data);
  67. #endif