ark1668e_carback.h 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. #ifndef __ARK_CARBACK_H__
  2. #define __ARK_CARBACK_H__
  3. #define MKTAG(a,b,c,d) ((a) | ((b) << 8) | ((c) << 16) | ((unsigned)(d) << 24))
  4. //#define ARK_CARBACK_DBG
  5. #ifdef ARK_CARBACK_DBG
  6. #define CARBACK_DBGPRTK(...) printk(KERN_ALERT __VA_ARGS__)
  7. #else
  8. #define CARBACK_DBGPRTK(...)
  9. #endif
  10. #define SCREEN_WIDTH 800
  11. #define SCREEN_HEIGHT 480
  12. #define TRACK_FRAME_NUM 2
  13. struct carback_context {
  14. int gpio_id;
  15. struct device *dev;
  16. struct gpio_desc *detect;
  17. void __iomem *sys_base;
  18. void __iomem *uart_base;
  19. unsigned char carback_status;
  20. int carback_changed;
  21. int app_ready;
  22. int app_enter_done;
  23. int app_exit_done;
  24. int screen_width;
  25. int screen_height;
  26. int carback_signal;
  27. int carback_count;
  28. int track_setting;
  29. int track_data_status;
  30. int track_frame_delay;
  31. wait_queue_head_t carback_waiq;
  32. wait_queue_head_t app_enter_waiq;
  33. wait_queue_head_t app_exit_waiq;
  34. struct work_struct track_work;
  35. struct workqueue_struct *track_queue;
  36. struct timer_list track_timer;
  37. struct timer_list carback_filter_timer;
  38. struct work_struct carback_work;
  39. struct workqueue_struct *carback_queue;
  40. struct fasync_struct *async_queue_cb;
  41. unsigned int track_data_phyaddr;
  42. unsigned int track_data_virtaddr;
  43. unsigned int track_display_phyaddr;
  44. unsigned int track_display_virtaddr;
  45. unsigned int tdisplay_virtaddr[TRACK_FRAME_NUM];
  46. unsigned int tdisplay_phyaddr[TRACK_FRAME_NUM];
  47. unsigned int track_display_size;
  48. void (*parse_mcu_data)(unsigned char *buf,unsigned char size);
  49. void (*get_wheel_angle)(unsigned char ch);
  50. void (*get_radar_info)(unsigned char ch);
  51. void (*send_mcu_carback)(bool en);
  52. int track_disp_width;
  53. int track_disp_height;
  54. int track_disp_xpos;
  55. int track_disp_ypos;
  56. int layer_status;
  57. int buffer_num;
  58. int buffer_index;
  59. void *ptrack_param;
  60. unsigned int file_type;
  61. void *pmradar_param;
  62. spinlock_t spin_lock;
  63. int itu656_init;
  64. };
  65. struct ark_carback {
  66. int irq;
  67. int debounce_detect;
  68. struct platform_device *pdev;
  69. const char *driver_name;
  70. const char *name;
  71. int major;
  72. int minor_start;
  73. int minor_num;
  74. int num;
  75. int mirror_config;
  76. int dynamic_track_config;
  77. struct cdev cdev;
  78. struct class *carback_class;
  79. struct device *carback_device;
  80. struct carback_context context;
  81. };
  82. enum ui_scaler_type_id {
  83. UI_SCALER_NONE,//normal mode: no caler ,cannt set posx posy
  84. UI_POSITION_CVBS,//no scaler, can set posx posy throught arkdata.ini
  85. UI_SCALER_VGA, //scaler mode, can set posx posy throught arkdata.ini
  86. UI_SCALER_CVBS, //scaler mode, can set posx posy throught arkdata.ini
  87. UI_SCALER_END,
  88. };
  89. enum itu656_mirror{
  90. MIRROR_NO = 0,
  91. MIRROR_LEVEL,
  92. MIRROR_VERTICAL,
  93. MIRROR_LEVEL_VERTICAL,
  94. MIRROR_END,
  95. };
  96. /*************************************************************************
  97. * Ioctl command definition
  98. *************************************************************************/
  99. #define CARBACK_IOCTL_BASE 0x9A
  100. #define CARBACK_IOCTL_SET_APP_READY _IO(CARBACK_IOCTL_BASE, 0)
  101. #define CARBACK_IOCTL_APP_ENTER_DONE _IO(CARBACK_IOCTL_BASE, 1)
  102. #define CARBACK_IOCTL_APP_EXIT_DONE _IO(CARBACK_IOCTL_BASE, 2)
  103. #define CARBACK_IOCTL_GET_STATUS _IOR(CARBACK_IOCTL_BASE, 3, int)
  104. #define CARBACK_IOCTL_DETECT_SIGNAL _IOR(CARBACK_IOCTL_BASE, 4, int)
  105. #define CARBACK_IOCTL_GET_HASTRACK _IOR(CARBACK_IOCTL_BASE, 5, int)
  106. #define CARBACK_IOCTL_STRACK_INIT _IO(CARBACK_IOCTL_BASE, 6)
  107. #define CARBACK_IOCTL_STRACK_START _IO(CARBACK_IOCTL_BASE, 7)
  108. #define CARBACK_IOCTL_STRACK_STOP _IO(CARBACK_IOCTL_BASE, 8)
  109. #define CARBACK_IOCTL_SET_STRACKID _IOW(CARBACK_IOCTL_BASE, 9, int)
  110. #define CARBACK_IOCTL_STRACK_SHOW _IO(CARBACK_IOCTL_BASE, 10)
  111. #define CARBACK_IOCTL_STRACK_CLOSE _IO(CARBACK_IOCTL_BASE, 11)
  112. #define CARBACK_IOCTL_STRACK_SETTING _IOW(CARBACK_IOCTL_BASE, 12, int)
  113. #define CARBACK_IOCTL_STRACK_FRAME_RATE _IOW(CARBACK_IOCTL_BASE, 13, int)
  114. #define CARBACK_IOCTL_STRACK_SET_PARAM _IOW(CARBACK_IOCTL_BASE, 14, int)
  115. #define CARBACK_IOCTL_STRACK_GET_PARAM _IOW(CARBACK_IOCTL_BASE, 15, int)
  116. #define CARBACK_IOCTL_STRACK_GET_FILETYPE _IOW(CARBACK_IOCTL_BASE, 16, int)
  117. #define CARBACK_IOCTL_STRACK_GET_IDENTITY _IOW(CARBACK_IOCTL_BASE, 17, int)
  118. #define CARBACK_IOCTL_MRADAR_SET_PARAM _IOW(CARBACK_IOCTL_BASE, 18, int)
  119. #define CARBACK_IOCTL_MRADAR_GET_PARAM _IOW(CARBACK_IOCTL_BASE, 19, int)
  120. #define CARBACK_IOCTL_MRADAR_SET_ID _IOW(CARBACK_IOCTL_BASE, 20, int)
  121. #define CARBACK_IOCTL_GET_DATA_STATUS _IOW(CARBACK_IOCTL_BASE, 21, int)
  122. extern int ark_track_display_init(int width,int height);
  123. extern int ark_track_set_display_addr(unsigned int addr);
  124. extern int ark_track_alpha_blend(void);
  125. extern int ark_track_get_screen_info(int* width,int* height);
  126. #endif