vm.h 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #ifndef _VM_H_
  2. #define _VM_H_
  3. #include "ioctl.h"
  4. #include "device/device.h"
  5. #define IOCTL_SET_VM_INFO _IOW('V', 1, 1)
  6. #define IOCTL_GET_VM_INFO _IOW('V', 2, 1)
  7. // enum {
  8. // #<{(|
  9. // * 用户自定义配置项 (0-64)
  10. // |)}>#
  11. // #<{(| ... |)}>#
  12. // }
  13. // VM define and api
  14. typedef u16 vm_hdl;
  15. struct vm_table {
  16. u16 index;
  17. u16 value_byte;
  18. int value; //cache value which value_byte <= 4
  19. };
  20. typedef enum _vm_err {
  21. VM_ERR_NONE = 0,
  22. VM_INDEX_ERR = -0x100,
  23. VM_INDEX_EXIST, //0xFF
  24. VM_DATA_LEN_ERR, //0xFE
  25. VM_READ_NO_INDEX, //0xFD
  26. VM_READ_DATA_ERR, //0xFC
  27. VM_WRITE_OVERFLOW, //0xFB
  28. VM_NOT_INIT,
  29. VM_INIT_ALREADY,
  30. VM_DEFRAG_ERR,
  31. VM_ERR_INIT,
  32. VM_ERR_PROTECT
  33. } VM_ERR;
  34. // vm api
  35. VM_ERR vm_eraser(void);
  36. VM_ERR vm_init(void *dev_hdl, u32 vm_addr, u32 vm_len, u8 vm_mode);
  37. //VM_ERR vm_db_create_table(const struct vm_table *table, int num);
  38. void vm_check_all(u8 level); //level : default 0
  39. u8 get_vm_statu(void);
  40. // io api
  41. //s32 vm_read(vm_hdl hdl, void *data_buf, u16 len);
  42. //s32 vm_write(vm_hdl hdl, const void *data_buf, u16 len);
  43. void spi_port_hd(u8 level);
  44. bool sfc_erase_zone(u32 addr, u32 len);
  45. void vm_api_write_mult(u16 start_id, u16 end_id, void *buf, u16 len, u32 delay);
  46. int vm_api_read_mult(u16 start_id, u16 end_id, void *buf, u16 len);
  47. #endif //_VM_H_