Synopsis
int libmem_register_cfi_intel_driver(libmem_driver_handle_t *h,
                                     uint8_t *start,
                                     size_t size,
                                     const libmem_geometry_t *geometry,
                                     const libmem_flash_info_t *flash_info);
Description

libmem_register_cfi_intel_driver registers a combined multi-width CFI command set 1 and 3 (Intel) LIBMEM driver.

h — A pointer to the LIBMEM handle structure to use for this LIBMEM driver.

start — The start address of the FLASH memory.

size — The size of the FLASH memory.

geometry — A NULL terminated description of the FLASH's geometry.

flash_info — A pointer to the FLASH information structure.

libmem_register_cfi_intel_driver returns — The LIBMEM status result.

This function registers a combined multi-width CFI command set 1 and 3 (Intel) LIBMEM driver. The advantage of this driver over the individual single width and command set drivers is that one driver will support a range of Intel FLASH chips, the disadvantage is that of increased code size and reduced performance.

Example:

const int flash1_max_geometry_regions = 4;
libmem_driver_handle_t flash1_handle;
uint8_t *flash1_start = (uint8_t *)0x10000000;
libmem_geometry_t flash1_geometry[flash1_max_geometry_regions];
libmem_flash_info_t flash1_info;
size_t flash1_size;
int res;

// Detect the type, size and geometry of the Intel FLASH.
res = libmem_cfi_get_info(flash1_start,
                          &flash1_size,
                          flash1_geometry,
                          flash1_max_geometry_regions,
                          &flash1_info);

if (res == LIBMEM_STATUS_SUCCESS)
  {
    // Register the driver
    res = libmem_register_cfi_intel_driver(&flash1_handle,
                                           flash1_start,
                                           flash1_size,
                                           flash1_geometry,
                                           &flash1_info);

    if (res == LIBMEM_STATUS_SUCCESS)
      printf("libmem_register_cfi_intel_driver : success\n");
    else
      printf("libmem_register_cfi_intel_driver : failed (%d)\n", res);

  }
else
  printf("libmem_cfi_get_info : failed (%d)\n", res);