spi_mem_chip.c 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  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. {"XMC", SPIMemChipVendorXMC},
  42. {"Unknown", SPIMemChipVendorUnknown}};
  43. static const char* spi_mem_chip_search_vendor_name(SPIMemChipVendor vendor_enum) {
  44. const SPIMemChipVendorName* vendor = spi_mem_chip_vendor_names;
  45. while(vendor->vendor_enum != SPIMemChipVendorUnknown && vendor->vendor_enum != vendor_enum)
  46. vendor++;
  47. return vendor->vendor_name;
  48. }
  49. bool spi_mem_chip_find_all(SPIMemChip* chip_info, found_chips_t found_chips) {
  50. const SPIMemChip* chip_info_arr;
  51. found_chips_reset(found_chips);
  52. for(chip_info_arr = SPIMemChips; chip_info_arr->model_name != NULL; chip_info_arr++) {
  53. if(chip_info->vendor_id != chip_info_arr->vendor_id) continue;
  54. if(chip_info->type_id != chip_info_arr->type_id) continue;
  55. if(chip_info->capacity_id != chip_info_arr->capacity_id) continue;
  56. found_chips_push_back(found_chips, chip_info_arr);
  57. }
  58. if(found_chips_size(found_chips)) return true;
  59. return false;
  60. }
  61. void spi_mem_chip_copy_chip_info(SPIMemChip* dest, const SPIMemChip* src) {
  62. memcpy(dest, src, sizeof(SPIMemChip));
  63. }
  64. size_t spi_mem_chip_get_size(SPIMemChip* chip) {
  65. return (chip->size);
  66. }
  67. const char* spi_mem_chip_get_vendor_name(const SPIMemChip* chip) {
  68. return (spi_mem_chip_search_vendor_name(chip->vendor_enum));
  69. }
  70. const char* spi_mem_chip_get_vendor_name_by_enum(uint32_t vendor_enum) {
  71. return (spi_mem_chip_search_vendor_name(vendor_enum));
  72. }
  73. const char* spi_mem_chip_get_model_name(const SPIMemChip* chip) {
  74. return (chip->model_name);
  75. }
  76. uint8_t spi_mem_chip_get_vendor_id(SPIMemChip* chip) {
  77. return (chip->vendor_id);
  78. }
  79. uint8_t spi_mem_chip_get_type_id(SPIMemChip* chip) {
  80. return (chip->type_id);
  81. }
  82. uint8_t spi_mem_chip_get_capacity_id(SPIMemChip* chip) {
  83. return (chip->capacity_id);
  84. }
  85. SPIMemChipWriteMode spi_mem_chip_get_write_mode(SPIMemChip* chip) {
  86. return (chip->write_mode);
  87. }
  88. size_t spi_mem_chip_get_page_size(SPIMemChip* chip) {
  89. return (chip->page_size);
  90. }
  91. uint32_t spi_mem_chip_get_vendor_enum(const SPIMemChip* chip) {
  92. return ((uint32_t)chip->vendor_enum);
  93. }