/** * @brief Initialize the flash device and enable write access */ int32_t PIOS_Flash_Jedec_Init(uintptr_t *flash_id, uint32_t spi_id, uint32_t slave_num) { struct jedec_flash_dev *flash_dev = PIOS_Flash_Jedec_alloc(); if (!flash_dev) { return -1; } flash_dev->spi_id = spi_id; flash_dev->slave_num = slave_num; flash_dev->cfg = NULL; (void)PIOS_Flash_Jedec_ReadID(flash_dev); for (uint32_t i = 0; i < pios_flash_jedec_catalog_size; ++i) { const struct pios_flash_jedec_cfg flash_jedec_entry = pios_flash_jedec_catalog[i]; if ((flash_dev->manufacturer == flash_jedec_entry.expect_manufacturer) && (flash_dev->memorytype == flash_jedec_entry.expect_memorytype) && (flash_dev->capacity == flash_jedec_entry.expect_capacity)) { flash_dev->cfg = &pios_flash_jedec_catalog[i]; break; } } if (!flash_dev->cfg) { return -1; } /* Give back a handle to this flash device */ *flash_id = (uintptr_t)flash_dev; return 0; }
/** * @brief Initialize the flash device and enable write access */ int32_t PIOS_Flash_Jedec_Init(uint32_t spi_id, uint32_t slave_num, const struct pios_flash_jedec_cfg * cfg) { flash_dev = PIOS_Flash_Jedec_alloc(); if(flash_dev == NULL) return -1; flash_dev->spi_id = spi_id; flash_dev->slave_num = slave_num; flash_dev->cfg = cfg; device_type = PIOS_Flash_Jedec_ReadID(); if(device_type == 0) return -1; return 0; }