brom_interface.h 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  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. unsigned int (*p_calculate_crc32)(unsigned char *buffer, unsigned int buf_len, unsigned int crc_initial, int last);
  36. int (*p_verify_signature)(const unsigned char *key, const unsigned char *sig, const unsigned char *data, unsigned int len);
  37. unsigned char * (*p_image_tlv_find)(void *image_head, unsigned short it_type, unsigned short *it_len, int is_prot);
  38. const unsigned char* (*p_SHA256_hash)(const void* data, int len, unsigned char* digest);
  39. unsigned int (*p_image_checksum32)(void *data, unsigned int len);
  40. }brom_api_t;
  41. #define p_brom_api ((brom_api_t *)BROM_API_ADDR)
  42. #ifndef cbprintf_cb
  43. typedef int (*cbprintf_cb)(/* int c, void *ctx */);
  44. #endif
  45. typedef struct
  46. {
  47. char * (*p_strcpy)(char * d, const char * s);
  48. char * (*p_strncpy)(char * d, const char * s, size_t n);
  49. char * (*p_strchr)(const char *s, int c);
  50. char * (*p_strrchr)(const char *s, int c);
  51. size_t (*p_strlen)(const char *s);
  52. size_t (*p_strnlen)(const char *s, size_t maxlen);
  53. int (*p_strcmp)(const char *s1, const char *s2);
  54. int (*p_strncmp)(const char *s1, const char *s2, size_t n);
  55. char * (*p_strtok_r)(char *str, const char *sep, char **state);
  56. char * (*p_strcat)(char * dest,const char * src);
  57. char * (*p_strncat)(char * d, const char * s,size_t n);
  58. char * (*p_strstr)(const char *s, const char *find);
  59. size_t (*p_strspn)(const char *s, const char *accept);
  60. size_t (*p_strcspn)(const char *s, const char *reject);
  61. int (*p_memcmp)(const void *m1, const void *m2, size_t n);
  62. void * (*p_memmove)(void *d, const void *s, size_t n);
  63. void * (*p_memcpy)(void * d, const void * s,size_t n);
  64. void * (*p_memset)(void *buf, int c, size_t n);
  65. void * (*p_memchr)(const void *s, int c, size_t n);
  66. int (*p_cbvprintf)(cbprintf_cb out, void *ctx, const char *format, va_list ap);
  67. int (*p_vsnprintf)(char * s, size_t len, const char * format, va_list vargs);
  68. }lib_api_t;
  69. #define pbrom_libc_api ((lib_api_t *)0x00007030)
  70. struct sw_rotate_config;
  71. typedef struct {
  72. /* sw_blend.c */
  73. void (*p_sw_blend_argb8565_over_rgb565)(void *dst, const void *src,
  74. uint16_t dst_stride, uint16_t src_stride, uint16_t w, uint16_t h);
  75. void (*p_sw_blend_argb8888_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_argb8888_over_argb8888)(void *dst, const void *src,
  78. uint16_t dst_stride, uint16_t src_stride, uint16_t w, uint16_t h);
  79. /* sw_math.c (angle in 0.1 degree, range [0, 3600] */
  80. int32_t (*p_sw_cos30)(uint16_t angle);
  81. int32_t (*p_sw_sin30)(uint16_t angle);
  82. void (*p_sw_rotate_point32)(int32_t *draw_x, int32_t *draw_y,
  83. int32_t img_x, int32_t img_y, int32_t pivot_x, int32_t pivot_y, uint16_t angle);
  84. void (*p_sw_rotate_area16)(
  85. int16_t *dest_x1, int16_t *dest_y1, int16_t *dest_x2, int16_t *dest_y2,
  86. int16_t src_x1, int16_t src_y1, int16_t src_x2, int16_t src_y2,
  87. int16_t pivot_x, int16_t pivot_y, uint16_t angle);
  88. /* sw_rotate.c */
  89. void (*p_sw_rotate_configure)(int16_t dst_x, int16_t dst_y, int16_t src_x, int16_t src_y,
  90. int16_t pivot_x, int16_t pivot_y, uint16_t angle, struct sw_rotate_config *cfg);
  91. void (*p_sw_rotate_rgb565_over_rgb565)(void *dst, const void *src,
  92. uint16_t dst_stride, uint16_t src_w, uint16_t src_h,
  93. int16_t x, int16_t y, uint16_t w, uint16_t h,
  94. const struct sw_rotate_config *cfg);
  95. void (*p_sw_rotate_argb8888_over_rgb565)(void *dst, const void *src,
  96. uint16_t dst_stride, uint16_t src_w, uint16_t src_h,
  97. int16_t x, int16_t y, uint16_t w, uint16_t h,
  98. const struct sw_rotate_config *cfg);
  99. void (*p_sw_rotate_argb8888_over_argb8888)(void *dst, const void *src,
  100. uint16_t dst_stride, uint16_t src_w, uint16_t src_h,
  101. int16_t x, int16_t y, uint16_t w, uint16_t h,
  102. const struct sw_rotate_config *cfg);
  103. } brom_libgui_api_t;
  104. #define p_brom_libgui_api ((brom_libgui_api_t *)0x000070a0)
  105. #endif /* _BROM_INTERFACE_H_ */