spi_mem_chip.c 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. #include "spi_mem_chip_i.h"
  2. const SPIMemChipVendorName spi_mem_chip_vendor_names[] = {
  3. {"Adesto", SPIMemChipVendorADESTO},
  4. {"AMIC", SPIMemChipVendorAMIC},
  5. {"Boya", SPIMemChipVendorBoya},
  6. {"EON", SPIMemChipVendorEON},
  7. {"PFlash", SPIMemChipVendorPFLASH},
  8. {"Terra", SPIMemChipVendorTERRA},
  9. {"Generalplus", SPIMemChipVendorGeneralplus},
  10. {"Deutron", SPIMemChipVendorDEUTRON},
  11. {"EFST", SPIMemChipVendorEFST},
  12. {"Excel Semi.", SPIMemChipVendorEXCELSEMI},
  13. {"Fidelix", SPIMemChipVendorFIDELIX},
  14. {"GigaDevice", SPIMemChipVendorGIGADEVICE},
  15. {"ICE", SPIMemChipVendorICE},
  16. {"Intel", SPIMemChipVendorINTEL},
  17. {"KHIC", SPIMemChipVendorKHIC},
  18. {"Macronix", SPIMemChipVendorMACRONIX},
  19. {"Micron", SPIMemChipVendorMICRON},
  20. {"Mshine", SPIMemChipVendorMSHINE},
  21. {"Nantronics", SPIMemChipVendorNANTRONICS},
  22. {"Nexflash", SPIMemChipVendorNEXFLASH},
  23. {"Numonyx", SPIMemChipVendorNUMONYX},
  24. {"PCT", SPIMemChipVendorPCT},
  25. {"Spansion", SPIMemChipVendorSPANSION},
  26. {"SST", SPIMemChipVendorSST},
  27. {"ST", SPIMemChipVendorST},
  28. {"Winbond", SPIMemChipVendorWINBOND},
  29. {"Zempro", SPIMemChipVendorZEMPRO},
  30. {"Zbit", SPIMemChipVendorZbit},
  31. {"Berg Micro.", SPIMemChipVendorBerg_Micro},
  32. {"Atmel", SPIMemChipVendorATMEL},
  33. {"ACE", SPIMemChipVendorACE},
  34. {"ATO", SPIMemChipVendorATO},
  35. {"Douqi", SPIMemChipVendorDOUQI},
  36. {"Fremont", SPIMemChipVendorFremont},
  37. {"Fudan", SPIMemChipVendorFudan},
  38. {"Genitop", SPIMemChipVendorGenitop},
  39. {"Paragon", SPIMemChipVendorParagon},
  40. {"XTX", SPIMemChipVendorXTX},
  41. {"Unknown", SPIMemChipVendorUnknown}};
  42. static const char* spi_mem_chip_search_vendor_name(SPIMemChipVendor vendor_enum) {
  43. const SPIMemChipVendorName* vendor = spi_mem_chip_vendor_names;
  44. while(vendor->vendor_enum != SPIMemChipVendorUnknown && vendor->vendor_enum != vendor_enum)
  45. vendor++;
  46. return vendor->vendor_name;
  47. }
  48. bool spi_mem_chip_find_all(SPIMemChip* chip_info, found_chips_t found_chips) {
  49. const SPIMemChip* chip_info_arr;
  50. found_chips_reset(found_chips);
  51. for(chip_info_arr = SPIMemChips; chip_info_arr->model_name != NULL; chip_info_arr++) {
  52. if(chip_info->vendor_id != chip_info_arr->vendor_id) continue;
  53. if(chip_info->type_id != chip_info_arr->type_id) continue;
  54. if(chip_info->capacity_id != chip_info_arr->capacity_id) continue;
  55. found_chips_push_back(found_chips, chip_info_arr);
  56. }
  57. if(found_chips_size(found_chips)) return true;
  58. return false;
  59. }
  60. void spi_mem_chip_copy_chip_info(SPIMemChip* dest, const SPIMemChip* src) {
  61. memcpy(dest, src, sizeof(SPIMemChip));
  62. }
  63. size_t spi_mem_chip_get_size(SPIMemChip* chip) {
  64. return (chip->size);
  65. }
  66. const char* spi_mem_chip_get_vendor_name(const SPIMemChip* chip) {
  67. return (spi_mem_chip_search_vendor_name(chip->vendor_enum));
  68. }
  69. const char* spi_mem_chip_get_vendor_name_by_enum(uint32_t vendor_enum) {
  70. return (spi_mem_chip_search_vendor_name(vendor_enum));
  71. }
  72. const char* spi_mem_chip_get_model_name(const SPIMemChip* chip) {
  73. return (chip->model_name);
  74. }
  75. uint8_t spi_mem_chip_get_vendor_id(SPIMemChip* chip) {
  76. return (chip->vendor_id);
  77. }
  78. uint8_t spi_mem_chip_get_type_id(SPIMemChip* chip) {
  79. return (chip->type_id);
  80. }
  81. uint8_t spi_mem_chip_get_capacity_id(SPIMemChip* chip) {
  82. return (chip->capacity_id);
  83. }
  84. SPIMemChipWriteMode spi_mem_chip_get_write_mode(SPIMemChip* chip) {
  85. return (chip->write_mode);
  86. }
  87. size_t spi_mem_chip_get_page_size(SPIMemChip* chip) {
  88. return (chip->page_size);
  89. }
  90. uint32_t spi_mem_chip_get_vendor_enum(const SPIMemChip* chip) {
  91. return ((uint32_t)chip->vendor_enum);
  92. }