spi_mem_chip.c 3.5 KB

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