brom_interface.h 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. #ifndef _BROM_INTERFACE_H_
  2. #define _BROM_INTERFACE_H_
  3. #include <stdarg.h>
  4. #include <stddef.h>
  5. #include <sys/types.h>
  6. typedef enum
  7. {
  8. BOOT_TYPE_NULL = 0,
  9. BOOT_TYPE_SNOR,
  10. BOOT_TYPE_SNAND,
  11. BOOT_TYPE_SDMMC,
  12. BOOT_TYPE_UART,
  13. BOOT_TYPE_USB,
  14. BOOT_TYPE_POWERON,
  15. BOOT_TYPE_EFUSE,
  16. BOOT_TYPE_MAX,
  17. } boot_type_e;
  18. #define BROM_API_ADDR 0x188
  19. typedef struct
  20. {
  21. //for boot
  22. unsigned int (*p_mbrc_brec_data_check)(unsigned char* buf, unsigned char digital_sign); /* УÑ麯Êý*/
  23. unsigned int (*p_brom_nor_read)(unsigned int, unsigned int, unsigned char*); /* spi nor read º¯Êý*/
  24. unsigned int (*p_brom_snand_read) (unsigned int, unsigned int, unsigned char*); /* spi nand read º¯Êý*/
  25. unsigned int (*p_brom_card_read)(unsigned int,unsigned int,unsigned char*); /* card read º¯Êý*/
  26. void (*p_brom_uart_launcher)(int); /* UART launcher º¯Êý*/
  27. void (*p_adfu_launcher)(void); /* adfu launcher º¯Êý*/
  28. void (*p_launch)(boot_type_e type, unsigned int run_addr, unsigned int phy_addr); /* launcher º¯Êý*/
  29. void* p_spinor_api;
  30. void* (*p_memset)(void *dst, int val, unsigned int count);
  31. void* (*p_memcpy)(void *dest, const void *src, unsigned int count);
  32. int (*p_memcmp)(const void *s1, const void *s2, unsigned int len);
  33. //int (*p_vsnprintf)(char* buf, int size, unsigned int linesep, const char* fmt, va_list args);
  34. int (*p_vsnprintf)(void *);/* spinor mem */
  35. /* spinor mem */
  36. unsigned int rev[4];
  37. unsigned int (*p_image_checksum32)(void *data, unsigned int len);
  38. }brom_api_t;
  39. #define p_brom_api ((brom_api_t *)BROM_API_ADDR)
  40. #ifndef _cbprintf_cb
  41. typedef int (*_cbprintf_cb)(/* int c, void *ctx */);
  42. #endif
  43. typedef struct
  44. {
  45. char * (*p_strcpy)(char * d, const char * s);
  46. char * (*p_strncpy)(char * d, const char * s, size_t n);
  47. char * (*p_strchr)(const char *s, int c);
  48. char * (*p_strrchr)(const char *s, int c);
  49. size_t (*p_strlen)(const char *s);
  50. size_t (*p_strnlen)(const char *s, size_t maxlen);
  51. int (*p_strcmp)(const char *s1, const char *s2);
  52. int (*p_strncmp)(const char *s1, const char *s2, size_t n);
  53. char * (*p_strtok_r)(char *str, const char *sep, char **state);
  54. char * (*p_strcat)(char * dest,const char * src);
  55. char * (*p_strncat)(char * d, const char * s,size_t n);
  56. char * (*p_strstr)(const char *s, const char *find);
  57. size_t (*p_strspn)(const char *s, const char *accept);
  58. size_t (*p_strcspn)(const char *s, const char *reject);
  59. int (*p_memcmp)(const void *m1, const void *m2, size_t n);
  60. void * (*p_memmove)(void *d, const void *s, size_t n);
  61. void * (*p_memcpy)(void * d, const void * s,size_t n);
  62. void * (*p_memset)(void *buf, int c, size_t n);
  63. void * (*p_memchr)(const void *s, int c, size_t n);
  64. int (*p_cbvprintf)(_cbprintf_cb out, void *ctx, const char *format, va_list ap);
  65. int (*p_vsnprintf)(char * s, size_t len, const char * format, va_list vargs);
  66. }lib_api_t;
  67. #define pbrom_libc_api ((lib_api_t *)0x00007030)
  68. struct sw_matrix;
  69. typedef struct {
  70. /*sw_blend.c*/
  71. void (*p_sw_blend_a8_over_rgb565)(void *dst, const void *src, uint32_t src_color,
  72. uint16_t dst_stride, uint16_t src_stride, uint16_t w, uint16_t h);
  73. void (*p_sw_blend_a8_over_argb8888)(void *dst, const void *src, uint32_t src_color,
  74. uint16_t dst_stride, uint16_t src_stride, uint16_t w, uint16_t h);
  75. void (*p_sw_blend_argb8565_over_rgb565)(void *dst, const void *src,
  76. uint16_t dst_stride, uint16_t src_stride, uint16_t w, uint16_t h);
  77. void (*p_sw_blend_argb8565_over_argb8888)(void *dst, const void *src,
  78. uint16_t dst_stride, uint16_t src_stride, uint16_t w, uint16_t h);
  79. void (*p_sw_blend_argb6666_over_rgb565)(void *dst, const void *src,
  80. uint16_t dst_stride, uint16_t src_stride, uint16_t w, uint16_t h);
  81. void (*p_sw_blend_argb6666_over_argb8888)(void *dst, const void *src,
  82. uint16_t dst_stride, uint16_t src_stride, uint16_t w, uint16_t h);
  83. void (*p_sw_blend_argb8888_over_rgb565)(void *dst, const void *src,
  84. uint16_t dst_stride, uint16_t src_stride, uint16_t w, uint16_t h);
  85. void (*p_sw_blend_argb8888_over_argb8888)(void *dst, const void *src,
  86. uint16_t dst_stride, uint16_t src_stride, uint16_t w, uint16_t h);
  87. /*sw_math.c*/
  88. int32_t (*p_sw_cos30)(uint16_t angle);
  89. int32_t (*p_sw_sin30)(uint16_t angle);
  90. void (*p_sw_transform_point32)(int32_t *dest_x, int32_t *dest_y,
  91. int32_t src_x, int32_t src_y, int32_t pivot_x, int32_t pivot_y,
  92. uint16_t angle, uint16_t zoom_x, uint16_t zoom_y, uint16_t zoom_bits);
  93. void (*p_sw_transform_area16)(
  94. int16_t *dest_x1, int16_t *dest_y1, int16_t *dest_x2, int16_t *dest_y2,
  95. int16_t src_x1, int16_t src_y1, int16_t src_x2, int16_t src_y2,
  96. int16_t pivot_x, int16_t pivot_y, uint16_t angle,
  97. uint16_t zoom_x, uint16_t zoom_y, uint16_t zoom_bits);
  98. /*sw_rotate.c*/
  99. void (*p_sw_transform_config)(int16_t img_x, int16_t img_y,
  100. int16_t pivot_x, int16_t pivot_y, uint16_t angle,
  101. uint16_t zoom_x, uint16_t zoom_y, uint16_t zoom_bits,
  102. struct sw_matrix *matrix);
  103. void (*p_sw_transform_rgb565_over_rgb565)(void *dst, const void *src,
  104. uint16_t dst_stride, uint16_t src_stride, uint16_t src_w, uint16_t src_h,
  105. int16_t x, int16_t y, uint16_t w, uint16_t h,
  106. const struct sw_matrix *matrix);
  107. void (*p_sw_transform_rgb565_over_argb8888)(void *dst, const void *src,
  108. uint16_t dst_stride, uint16_t src_stride, uint16_t src_w, uint16_t src_h,
  109. int16_t x, int16_t y, uint16_t w, uint16_t h,
  110. const struct sw_matrix *matrix);
  111. void (*p_sw_transform_argb8565_over_rgb565)(void *dst, const void *src,
  112. uint16_t dst_stride, uint16_t src_stride, uint16_t src_w, uint16_t src_h,
  113. int16_t x, int16_t y, uint16_t w, uint16_t h,
  114. const struct sw_matrix *matrix);
  115. void (*p_sw_transform_argb8565_over_argb8888)(void *dst, const void *src,
  116. uint16_t dst_stride, uint16_t src_stride, uint16_t src_w, uint16_t src_h,
  117. int16_t x, int16_t y, uint16_t w, uint16_t h,
  118. const struct sw_matrix *matrix);
  119. void (*p_sw_transform_argb6666_over_rgb565)(void *dst, const void *src,
  120. uint16_t dst_stride, uint16_t src_stride, uint16_t src_w, uint16_t src_h,
  121. int16_t x, int16_t y, uint16_t w, uint16_t h,
  122. const struct sw_matrix *matrix);
  123. void (*p_sw_transform_argb6666_over_argb8888)(void *dst, const void *src,
  124. uint16_t dst_stride, uint16_t src_stride, uint16_t src_w, uint16_t src_h,
  125. int16_t x, int16_t y, uint16_t w, uint16_t h,
  126. const struct sw_matrix *matrix);
  127. void (*p_sw_transform_argb8888_over_rgb565)(void *dst, const void *src,
  128. uint16_t dst_stride, uint16_t src_stride, uint16_t src_w, uint16_t src_h,
  129. int16_t x, int16_t y, uint16_t w, uint16_t h,
  130. const struct sw_matrix *matrix);
  131. void (*p_sw_transform_argb8888_over_argb8888)(void *dst, const void *src,
  132. uint16_t dst_stride, uint16_t src_stride, uint16_t src_w, uint16_t src_h,
  133. int16_t x, int16_t y, uint16_t w, uint16_t h,
  134. const struct sw_matrix *matrix);
  135. } brom_libgui_api_t;
  136. #define p_brom_libgui_api ((brom_libgui_api_t *)0x000070a0)
  137. typedef struct
  138. {
  139. int (*p_decompress)(const char* source, char* dest, int compressedSize, int maxDecompressedSize);
  140. }brom_misc_api_t;
  141. #define p_brom_misc_api ((brom_misc_api_t *)0x00007090)
  142. #endif /* _BROM_INTERFACE_H_ */