Ejemplo n.º 1
0
/**
 * @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;
}
Ejemplo n.º 2
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;
}