sfc: Expose FPGA bitfile partition through MTD
[profile/ivi/kernel-adaptation-intel-automotive.git] / drivers / net / ethernet / sfc / mtd.c
index 26b3c23..08f825b 100644 (file)
@@ -193,7 +193,7 @@ static int efx_mtd_erase(struct mtd_info *mtd, struct erase_info *erase)
                erase->state = MTD_ERASE_DONE;
        } else {
                erase->state = MTD_ERASE_FAILED;
-               erase->fail_addr = 0xffffffff;
+               erase->fail_addr = MTD_FAIL_ADDR_UNKNOWN;
        }
        mtd_erase_callback(erase);
        return rc;
@@ -263,10 +263,10 @@ static int efx_mtd_probe_device(struct efx_nic *efx, struct efx_mtd *efx_mtd)
                part->mtd.owner = THIS_MODULE;
                part->mtd.priv = efx_mtd;
                part->mtd.name = part->name;
-               part->mtd.erase = efx_mtd_erase;
-               part->mtd.read = efx_mtd->ops->read;
-               part->mtd.write = efx_mtd->ops->write;
-               part->mtd.sync = efx_mtd_sync;
+               part->mtd._erase = efx_mtd_erase;
+               part->mtd._read = efx_mtd->ops->read;
+               part->mtd._write = efx_mtd->ops->write;
+               part->mtd._sync = efx_mtd_sync;
 
                if (mtd_device_register(&part->mtd, NULL, 0))
                        goto fail;
@@ -585,6 +585,7 @@ static const struct siena_nvram_type_info siena_nvram_types[] = {
        [MC_CMD_NVRAM_TYPE_EXP_ROM_CFG_PORT1]   = { 1, "sfc_exp_rom_cfg" },
        [MC_CMD_NVRAM_TYPE_PHY_PORT0]           = { 0, "sfc_phy_fw" },
        [MC_CMD_NVRAM_TYPE_PHY_PORT1]           = { 1, "sfc_phy_fw" },
+       [MC_CMD_NVRAM_TYPE_FPGA]                = { 0, "sfc_fpga" },
 };
 
 static int siena_mtd_probe_partition(struct efx_nic *efx,
@@ -598,7 +599,8 @@ static int siena_mtd_probe_partition(struct efx_nic *efx,
        bool protected;
        int rc;
 
-       if (type >= ARRAY_SIZE(siena_nvram_types))
+       if (type >= ARRAY_SIZE(siena_nvram_types) ||
+           siena_nvram_types[type].name == NULL)
                return -ENODEV;
 
        info = &siena_nvram_types[type];
@@ -627,7 +629,8 @@ static int siena_mtd_get_fw_subtypes(struct efx_nic *efx,
                                     struct efx_mtd *efx_mtd)
 {
        struct efx_mtd_partition *part;
-       uint16_t fw_subtype_list[MC_CMD_GET_BOARD_CFG_OUT_FW_SUBTYPE_LIST_MINNUM];
+       uint16_t fw_subtype_list[
+               MC_CMD_GET_BOARD_CFG_OUT_FW_SUBTYPE_LIST_MAXNUM];
        int rc;
 
        rc = efx_mcdi_get_board_cfg(efx, NULL, fw_subtype_list, NULL);