Lines Matching +full:ram +full:- +full:code

1 // SPDX-License-Identifier: GPL-2.0
2 /* Copyright(c) 2013 - 2018 Intel Corporation. */
7 * i40e_init_nvm - Initialize NVM function pointers
14 * We are accessing FLASH always thru the Shadow RAM.
18 struct i40e_nvm_info *nvm = &hw->nvm; in i40e_init_nvm()
30 nvm->sr_size = BIT(sr_size) * I40E_SR_WORDS_IN_1KB; in i40e_init_nvm()
36 nvm->timeout = I40E_MAX_NVM_TIMEOUT; in i40e_init_nvm()
37 nvm->blank_nvm_mode = false; in i40e_init_nvm()
39 nvm->blank_nvm_mode = true; in i40e_init_nvm()
48 * i40e_acquire_nvm - Generic request for acquiring the NVM ownership
62 if (hw->nvm.blank_nvm_mode) in i40e_acquire_nvm()
71 hw->nvm.hw_semaphore_timeout = I40E_MS_TO_GTIME(time_left) + gtime; in i40e_acquire_nvm()
76 access, time_left, ret_code, hw->aq.asq_last_status); in i40e_acquire_nvm()
89 hw->nvm.hw_semaphore_timeout = in i40e_acquire_nvm()
95 hw->nvm.hw_semaphore_timeout = 0; in i40e_acquire_nvm()
98 time_left, ret_code, hw->aq.asq_last_status); in i40e_acquire_nvm()
107 * i40e_release_nvm - Generic request for releasing the NVM ownership
117 if (hw->nvm.blank_nvm_mode) in i40e_release_nvm()
126 (total_delay < hw->aq.asq_cmd_timeout)) { in i40e_release_nvm()
136 * i40e_poll_sr_srctl_done_bit - Polls the GLNVM_SRCTL done bit
139 * Polls the SRCTL Shadow RAM register done bit.
161 * i40e_read_nvm_word_srctl - Reads Shadow RAM via SRCTL register
163 * @offset: offset of the Shadow RAM word to read (0x000000 - 0x001FFF)
164 * @data: word read from the Shadow RAM
166 * Reads one 16 bit word from the Shadow RAM using the GLNVM_SRCTL register.
174 if (offset >= hw->nvm.sr_size) { in i40e_read_nvm_word_srctl()
176 "NVM read error: offset %d beyond Shadow RAM limit %d\n", in i40e_read_nvm_word_srctl()
177 offset, hw->nvm.sr_size); in i40e_read_nvm_word_srctl()
201 "NVM read error: Couldn't access Shadow RAM address: 0x%x\n", in i40e_read_nvm_word_srctl()
209 * i40e_read_nvm_aq - Read Shadow RAM.
214 * @data: buffer with words to write to the Shadow RAM
217 * Writes a 16 bit words buffer to the Shadow RAM using the admin command.
228 cmd_details.wb_desc = &hw->nvm_wb_desc; in i40e_read_nvm_aq()
231 * We cannot do it for the module-based model, as we did not acquire in i40e_read_nvm_aq()
233 * Firmware will check the module-based model. in i40e_read_nvm_aq()
235 if ((offset + words) > hw->nvm.sr_size) in i40e_read_nvm_aq()
237 "NVM write error: offset %d beyond Shadow RAM limit %d\n", in i40e_read_nvm_aq()
238 (offset + words), hw->nvm.sr_size); in i40e_read_nvm_aq()
244 else if (((offset + (words - 1)) / I40E_SR_SECTOR_SIZE_IN_WORDS) in i40e_read_nvm_aq()
260 * i40e_read_nvm_word_aq - Reads Shadow RAM via AQ
262 * @offset: offset of the Shadow RAM word to read (0x000000 - 0x001FFF)
263 * @data: word read from the Shadow RAM
265 * Reads one 16 bit word from the Shadow RAM using the AdminQ
279 * __i40e_read_nvm_word - Reads nvm word, assumes caller does the locking
281 * @offset: offset of the Shadow RAM word to read (0x000000 - 0x001FFF)
282 * @data: word read from the Shadow RAM
284 * Reads one 16 bit word from the Shadow RAM.
292 if (hw->flags & I40E_HW_FLAG_AQ_SRCTL_ACCESS_ENABLE) in __i40e_read_nvm_word()
299 * i40e_read_nvm_word - Reads nvm word and acquire lock if necessary
301 * @offset: offset of the Shadow RAM word to read (0x000000 - 0x001FFF)
302 * @data: word read from the Shadow RAM
304 * Reads one 16 bit word from the Shadow RAM.
311 if (hw->flags & I40E_HW_FLAG_NVM_READ_REQUIRES_LOCK) in i40e_read_nvm_word()
318 if (hw->flags & I40E_HW_FLAG_NVM_READ_REQUIRES_LOCK) in i40e_read_nvm_word()
325 * i40e_read_nvm_module_data - Reads NVM Buffer to specified memory location
349 "Reading nvm word failed.Error code: %d.\n", in i40e_read_nvm_module_data()
366 /* Pointer points outside of the Shared RAM mapped area */ in i40e_read_nvm_module_data()
368 "Reading nvm data failed. Pointer points outside of the Shared RAM mapped area.\n"); in i40e_read_nvm_module_data()
372 /* Read from the Shadow RAM */ in i40e_read_nvm_module_data()
378 "Reading nvm word failed.Error code: %d.\n", in i40e_read_nvm_module_data()
390 "Reading nvm buffer failed.Error code: %d.\n", in i40e_read_nvm_module_data()
399 * i40e_read_nvm_buffer_srctl - Reads Shadow RAM buffer via SRCTL register
401 * @offset: offset of the Shadow RAM word to read (0x000000 - 0x001FFF).
403 * @data: words read from the Shadow RAM
423 /* Update the number of words read from the Shadow RAM */ in i40e_read_nvm_buffer_srctl()
430 * i40e_read_nvm_buffer_aq - Reads Shadow RAM buffer via AQ
432 * @offset: offset of the Shadow RAM word to read (0x000000 - 0x001FFF).
434 * @data: words read from the Shadow RAM
456 (u16)(I40E_SR_SECTOR_SIZE_IN_WORDS - in i40e_read_nvm_buffer_aq()
459 read_size = min((*words - words_read), in i40e_read_nvm_buffer_aq()
487 * __i40e_read_nvm_buffer - Reads nvm buffer, caller must acquire lock
489 * @offset: offset of the Shadow RAM word to read (0x000000 - 0x001FFF).
491 * @data: words read from the Shadow RAM
500 if (hw->flags & I40E_HW_FLAG_AQ_SRCTL_ACCESS_ENABLE) in __i40e_read_nvm_buffer()
507 * i40e_read_nvm_buffer - Reads Shadow RAM buffer and acquire lock if necessary
509 * @offset: offset of the Shadow RAM word to read (0x000000 - 0x001FFF).
511 * @data: words read from the Shadow RAM
522 if (hw->flags & I40E_HW_FLAG_AQ_SRCTL_ACCESS_ENABLE) { in i40e_read_nvm_buffer()
537 * i40e_write_nvm_aq - Writes Shadow RAM.
542 * @data: buffer with words to write to the Shadow RAM
545 * Writes a 16 bit words buffer to the Shadow RAM using the admin command.
555 cmd_details.wb_desc = &hw->nvm_wb_desc; in i40e_write_nvm_aq()
558 * We cannot do it for the module-based model, as we did not acquire in i40e_write_nvm_aq()
560 * Firmware will check the module-based model. in i40e_write_nvm_aq()
562 if ((offset + words) > hw->nvm.sr_size) in i40e_write_nvm_aq()
564 "NVM write error: offset %d beyond Shadow RAM limit %d\n", in i40e_write_nvm_aq()
565 (offset + words), hw->nvm.sr_size); in i40e_write_nvm_aq()
571 else if (((offset + (words - 1)) / I40E_SR_SECTOR_SIZE_IN_WORDS) in i40e_write_nvm_aq()
588 * i40e_calc_nvm_checksum - Calculates and returns the checksum
592 * This function calculates SW Checksum that covers the whole 64kB shadow RAM
593 * except the VPD and PCIe ALT Auto-load modules. The structure and size of VPD
621 /* read pointer to PCIe Alt Auto-load module */ in i40e_calc_nvm_checksum()
629 /* Calculate SW checksum that covers the whole 64kB shadow RAM in i40e_calc_nvm_checksum()
630 * except the VPD and PCIe ALT Auto-load modules in i40e_calc_nvm_checksum()
632 for (i = 0; i < hw->nvm.sr_size; i++) { in i40e_calc_nvm_checksum()
663 *checksum = (u16)I40E_SR_SW_CHECKSUM_BASE - checksum_local; in i40e_calc_nvm_checksum()
671 * i40e_update_nvm_checksum - Updates the NVM checksum
695 * i40e_validate_nvm_checksum - Validate EEPROM checksum
802 * i40e_nvmupd_command - Process an NVM update command
806 * @perrno: pointer to return error code
825 hw->nvmupd_state, in i40e_nvmupd_command()
826 hw->nvm_release_on_done, hw->nvm_wait_opcode, in i40e_nvmupd_command()
827 cmd->command, cmd->config, cmd->offset, cmd->data_size); in i40e_nvmupd_command()
830 *perrno = -EFAULT; in i40e_nvmupd_command()
840 if (!cmd->data_size) { in i40e_nvmupd_command()
841 *perrno = -EFAULT; in i40e_nvmupd_command()
845 bytes[0] = hw->nvmupd_state; in i40e_nvmupd_command()
847 if (cmd->data_size >= 4) { in i40e_nvmupd_command()
849 *((u16 *)&bytes[2]) = hw->nvm_wait_opcode; in i40e_nvmupd_command()
853 if (hw->nvmupd_state == I40E_NVMUPD_STATE_ERROR) in i40e_nvmupd_command()
854 hw->nvmupd_state = I40E_NVMUPD_STATE_INIT; in i40e_nvmupd_command()
860 if (hw->nvmupd_state == I40E_NVMUPD_STATE_ERROR) { in i40e_nvmupd_command()
863 hw->nvmupd_state = I40E_NVMUPD_STATE_INIT; in i40e_nvmupd_command()
874 mutex_lock(&hw->aq.arq_mutex); in i40e_nvmupd_command()
875 switch (hw->nvmupd_state) { in i40e_nvmupd_command()
893 if (cmd->offset == 0xffff) { in i40e_nvmupd_command()
900 *perrno = -EBUSY; in i40e_nvmupd_command()
906 "NVMUPD: no such state %d\n", hw->nvmupd_state); in i40e_nvmupd_command()
908 *perrno = -ESRCH; in i40e_nvmupd_command()
912 mutex_unlock(&hw->aq.arq_mutex); in i40e_nvmupd_command()
917 * i40e_nvmupd_state_init - Handle NVM update state Init
921 * @perrno: pointer to return error code
940 hw->aq.asq_last_status); in i40e_nvmupd_state_init()
951 hw->aq.asq_last_status); in i40e_nvmupd_state_init()
957 hw->nvmupd_state = I40E_NVMUPD_STATE_READING; in i40e_nvmupd_state_init()
965 hw->aq.asq_last_status); in i40e_nvmupd_state_init()
971 hw->nvm_release_on_done = true; in i40e_nvmupd_state_init()
972 hw->nvm_wait_opcode = i40e_aqc_opc_nvm_erase; in i40e_nvmupd_state_init()
973 hw->nvmupd_state = I40E_NVMUPD_STATE_INIT_WAIT; in i40e_nvmupd_state_init()
982 hw->aq.asq_last_status); in i40e_nvmupd_state_init()
988 hw->nvm_release_on_done = true; in i40e_nvmupd_state_init()
989 hw->nvm_wait_opcode = i40e_aqc_opc_nvm_update; in i40e_nvmupd_state_init()
990 hw->nvmupd_state = I40E_NVMUPD_STATE_INIT_WAIT; in i40e_nvmupd_state_init()
999 hw->aq.asq_last_status); in i40e_nvmupd_state_init()
1005 hw->nvm_wait_opcode = i40e_aqc_opc_nvm_update; in i40e_nvmupd_state_init()
1006 hw->nvmupd_state = I40E_NVMUPD_STATE_WRITE_WAIT; in i40e_nvmupd_state_init()
1015 hw->aq.asq_last_status); in i40e_nvmupd_state_init()
1019 *perrno = hw->aq.asq_last_status ? in i40e_nvmupd_state_init()
1021 hw->aq.asq_last_status) : in i40e_nvmupd_state_init()
1022 -EIO; in i40e_nvmupd_state_init()
1025 hw->nvm_release_on_done = true; in i40e_nvmupd_state_init()
1026 hw->nvm_wait_opcode = i40e_aqc_opc_nvm_update; in i40e_nvmupd_state_init()
1027 hw->nvmupd_state = I40E_NVMUPD_STATE_INIT_WAIT; in i40e_nvmupd_state_init()
1049 *perrno = -ESRCH; in i40e_nvmupd_state_init()
1056 * i40e_nvmupd_state_reading - Handle NVM update state Reading
1060 * @perrno: pointer to return error code
1083 hw->nvmupd_state = I40E_NVMUPD_STATE_INIT; in i40e_nvmupd_state_reading()
1091 *perrno = -ESRCH; in i40e_nvmupd_state_reading()
1098 * i40e_nvmupd_state_writing - Handle NVM update state Writing
1102 * @perrno: pointer to return error code
1122 hw->nvm_wait_opcode = i40e_aqc_opc_nvm_update; in i40e_nvmupd_state_writing()
1123 hw->nvmupd_state = I40E_NVMUPD_STATE_WRITE_WAIT; in i40e_nvmupd_state_writing()
1130 *perrno = hw->aq.asq_last_status ? in i40e_nvmupd_state_writing()
1132 hw->aq.asq_last_status) : in i40e_nvmupd_state_writing()
1133 -EIO; in i40e_nvmupd_state_writing()
1134 hw->nvmupd_state = I40E_NVMUPD_STATE_INIT; in i40e_nvmupd_state_writing()
1136 hw->nvm_release_on_done = true; in i40e_nvmupd_state_writing()
1137 hw->nvm_wait_opcode = i40e_aqc_opc_nvm_update; in i40e_nvmupd_state_writing()
1138 hw->nvmupd_state = I40E_NVMUPD_STATE_INIT_WAIT; in i40e_nvmupd_state_writing()
1146 *perrno = hw->aq.asq_last_status ? in i40e_nvmupd_state_writing()
1148 hw->aq.asq_last_status) : in i40e_nvmupd_state_writing()
1149 -EIO; in i40e_nvmupd_state_writing()
1150 hw->nvmupd_state = I40E_NVMUPD_STATE_INIT; in i40e_nvmupd_state_writing()
1152 hw->nvm_wait_opcode = i40e_aqc_opc_nvm_update; in i40e_nvmupd_state_writing()
1153 hw->nvmupd_state = I40E_NVMUPD_STATE_WRITE_WAIT; in i40e_nvmupd_state_writing()
1161 *perrno = hw->aq.asq_last_status ? in i40e_nvmupd_state_writing()
1163 hw->aq.asq_last_status) : in i40e_nvmupd_state_writing()
1164 -EIO; in i40e_nvmupd_state_writing()
1165 hw->nvmupd_state = I40E_NVMUPD_STATE_INIT; in i40e_nvmupd_state_writing()
1167 hw->nvm_release_on_done = true; in i40e_nvmupd_state_writing()
1168 hw->nvm_wait_opcode = i40e_aqc_opc_nvm_update; in i40e_nvmupd_state_writing()
1169 hw->nvmupd_state = I40E_NVMUPD_STATE_INIT_WAIT; in i40e_nvmupd_state_writing()
1178 *perrno = -ESRCH; in i40e_nvmupd_state_writing()
1182 /* In some circumstances, a multi-write transaction takes longer in i40e_nvmupd_state_writing()
1188 if (status && (hw->aq.asq_last_status == I40E_AQ_RC_EBUSY) && in i40e_nvmupd_state_writing()
1191 u32 old_asq_status = hw->aq.asq_last_status; in i40e_nvmupd_state_writing()
1195 if (gtime >= hw->nvm.hw_semaphore_timeout) { in i40e_nvmupd_state_writing()
1198 gtime, hw->nvm.hw_semaphore_timeout); in i40e_nvmupd_state_writing()
1204 hw->aq.asq_last_status); in i40e_nvmupd_state_writing()
1206 hw->aq.asq_last_status = old_asq_status; in i40e_nvmupd_state_writing()
1218 * i40e_nvmupd_clear_wait_state - clear wait state on hw
1225 hw->nvm_wait_opcode); in i40e_nvmupd_clear_wait_state()
1227 if (hw->nvm_release_on_done) { in i40e_nvmupd_clear_wait_state()
1229 hw->nvm_release_on_done = false; in i40e_nvmupd_clear_wait_state()
1231 hw->nvm_wait_opcode = 0; in i40e_nvmupd_clear_wait_state()
1233 if (hw->aq.arq_last_status) { in i40e_nvmupd_clear_wait_state()
1234 hw->nvmupd_state = I40E_NVMUPD_STATE_ERROR; in i40e_nvmupd_clear_wait_state()
1238 switch (hw->nvmupd_state) { in i40e_nvmupd_clear_wait_state()
1240 hw->nvmupd_state = I40E_NVMUPD_STATE_INIT; in i40e_nvmupd_clear_wait_state()
1244 hw->nvmupd_state = I40E_NVMUPD_STATE_WRITING; in i40e_nvmupd_clear_wait_state()
1253 * i40e_nvmupd_check_wait_event - handle NVM update operation events
1263 if (opcode == hw->nvm_wait_opcode) { in i40e_nvmupd_check_wait_event()
1264 memcpy(&hw->nvm_aq_event_desc, desc, aq_desc_len); in i40e_nvmupd_check_wait_event()
1270 * i40e_nvmupd_validate_command - Validate given command
1273 * @perrno: pointer to return error code
1287 transaction = i40e_nvmupd_get_transaction(cmd->config); in i40e_nvmupd_validate_command()
1288 module = i40e_nvmupd_get_module(cmd->config); in i40e_nvmupd_validate_command()
1291 if ((cmd->data_size < 1) || in i40e_nvmupd_validate_command()
1292 (cmd->data_size > I40E_NVMUPD_MAX_DATA)) { in i40e_nvmupd_validate_command()
1295 cmd->data_size); in i40e_nvmupd_validate_command()
1296 *perrno = -EFAULT; in i40e_nvmupd_validate_command()
1300 switch (cmd->command) { in i40e_nvmupd_validate_command()
1365 * i40e_nvmupd_exec_aq - Run an AQ command
1369 * @perrno: pointer to return error code
1386 if (cmd->offset == 0xffff) in i40e_nvmupd_exec_aq()
1390 cmd_details.wb_desc = &hw->nvm_wb_desc; in i40e_nvmupd_exec_aq()
1393 memset(&hw->nvm_wb_desc, 0, aq_desc_len); in i40e_nvmupd_exec_aq()
1396 if (cmd->data_size < aq_desc_len) { in i40e_nvmupd_exec_aq()
1399 cmd->data_size, aq_desc_len); in i40e_nvmupd_exec_aq()
1400 *perrno = -EINVAL; in i40e_nvmupd_exec_aq()
1406 aq_data_len = cmd->data_size - aq_desc_len; in i40e_nvmupd_exec_aq()
1407 buff_size = max_t(u32, aq_data_len, le16_to_cpu(aq_desc->datalen)); in i40e_nvmupd_exec_aq()
1409 if (!hw->nvm_buff.va) { in i40e_nvmupd_exec_aq()
1410 status = i40e_allocate_virt_mem(hw, &hw->nvm_buff, in i40e_nvmupd_exec_aq()
1411 hw->aq.asq_buf_size); in i40e_nvmupd_exec_aq()
1418 if (hw->nvm_buff.va) { in i40e_nvmupd_exec_aq()
1419 buff = hw->nvm_buff.va; in i40e_nvmupd_exec_aq()
1424 if (cmd->offset) in i40e_nvmupd_exec_aq()
1425 memset(&hw->nvm_aq_event_desc, 0, aq_desc_len); in i40e_nvmupd_exec_aq()
1434 i40e_aq_str(hw, hw->aq.asq_last_status)); in i40e_nvmupd_exec_aq()
1435 *perrno = i40e_aq_rc_to_posix(status, hw->aq.asq_last_status); in i40e_nvmupd_exec_aq()
1440 if (cmd->offset) { in i40e_nvmupd_exec_aq()
1441 hw->nvm_wait_opcode = cmd->offset; in i40e_nvmupd_exec_aq()
1442 hw->nvmupd_state = I40E_NVMUPD_STATE_INIT_WAIT; in i40e_nvmupd_exec_aq()
1449 * i40e_nvmupd_get_aq_result - Get the results from the previous exec_aq
1453 * @perrno: pointer to return error code
1469 aq_total_len = aq_desc_len + le16_to_cpu(hw->nvm_wb_desc.datalen); in i40e_nvmupd_get_aq_result()
1472 if (cmd->offset > aq_total_len) { in i40e_nvmupd_get_aq_result()
1474 __func__, cmd->offset, aq_total_len); in i40e_nvmupd_get_aq_result()
1475 *perrno = -EINVAL; in i40e_nvmupd_get_aq_result()
1480 if (cmd->data_size > (aq_total_len - cmd->offset)) { in i40e_nvmupd_get_aq_result()
1481 int new_len = aq_total_len - cmd->offset; in i40e_nvmupd_get_aq_result()
1484 __func__, cmd->data_size, new_len); in i40e_nvmupd_get_aq_result()
1485 cmd->data_size = new_len; in i40e_nvmupd_get_aq_result()
1488 remainder = cmd->data_size; in i40e_nvmupd_get_aq_result()
1489 if (cmd->offset < aq_desc_len) { in i40e_nvmupd_get_aq_result()
1490 u32 len = aq_desc_len - cmd->offset; in i40e_nvmupd_get_aq_result()
1492 len = min(len, cmd->data_size); in i40e_nvmupd_get_aq_result()
1494 __func__, cmd->offset, cmd->offset + len); in i40e_nvmupd_get_aq_result()
1496 buff = ((u8 *)&hw->nvm_wb_desc) + cmd->offset; in i40e_nvmupd_get_aq_result()
1500 remainder -= len; in i40e_nvmupd_get_aq_result()
1501 buff = hw->nvm_buff.va; in i40e_nvmupd_get_aq_result()
1503 buff = hw->nvm_buff.va + (cmd->offset - aq_desc_len); in i40e_nvmupd_get_aq_result()
1507 int start_byte = buff - (u8 *)hw->nvm_buff.va; in i40e_nvmupd_get_aq_result()
1518 * i40e_nvmupd_get_aq_event - Get the Admin Queue event from previous exec_aq
1522 * @perrno: pointer to return error code
1536 aq_total_len = aq_desc_len + le16_to_cpu(hw->nvm_aq_event_desc.datalen); in i40e_nvmupd_get_aq_event()
1539 if (cmd->data_size > aq_total_len) { in i40e_nvmupd_get_aq_event()
1542 __func__, cmd->data_size, aq_total_len); in i40e_nvmupd_get_aq_event()
1543 cmd->data_size = aq_total_len; in i40e_nvmupd_get_aq_event()
1546 memcpy(bytes, &hw->nvm_aq_event_desc, cmd->data_size); in i40e_nvmupd_get_aq_event()
1552 * i40e_nvmupd_nvm_read - Read NVM
1556 * @perrno: pointer to return error code
1569 transaction = i40e_nvmupd_get_transaction(cmd->config); in i40e_nvmupd_nvm_read()
1570 module = i40e_nvmupd_get_module(cmd->config); in i40e_nvmupd_nvm_read()
1574 cmd_details.wb_desc = &hw->nvm_wb_desc; in i40e_nvmupd_nvm_read()
1576 status = i40e_aq_read_nvm(hw, module, cmd->offset, (u16)cmd->data_size, in i40e_nvmupd_nvm_read()
1581 module, cmd->offset, cmd->data_size); in i40e_nvmupd_nvm_read()
1584 status, hw->aq.asq_last_status); in i40e_nvmupd_nvm_read()
1585 *perrno = i40e_aq_rc_to_posix(status, hw->aq.asq_last_status); in i40e_nvmupd_nvm_read()
1592 * i40e_nvmupd_nvm_erase - Erase an NVM module
1595 * @perrno: pointer to return error code
1608 transaction = i40e_nvmupd_get_transaction(cmd->config); in i40e_nvmupd_nvm_erase()
1609 module = i40e_nvmupd_get_module(cmd->config); in i40e_nvmupd_nvm_erase()
1613 cmd_details.wb_desc = &hw->nvm_wb_desc; in i40e_nvmupd_nvm_erase()
1615 status = i40e_aq_erase_nvm(hw, module, cmd->offset, (u16)cmd->data_size, in i40e_nvmupd_nvm_erase()
1620 module, cmd->offset, cmd->data_size); in i40e_nvmupd_nvm_erase()
1623 status, hw->aq.asq_last_status); in i40e_nvmupd_nvm_erase()
1624 *perrno = i40e_aq_rc_to_posix(status, hw->aq.asq_last_status); in i40e_nvmupd_nvm_erase()
1631 * i40e_nvmupd_nvm_write - Write NVM
1635 * @perrno: pointer to return error code
1649 transaction = i40e_nvmupd_get_transaction(cmd->config); in i40e_nvmupd_nvm_write()
1650 module = i40e_nvmupd_get_module(cmd->config); in i40e_nvmupd_nvm_write()
1652 preservation_flags = i40e_nvmupd_get_preservation_flags(cmd->config); in i40e_nvmupd_nvm_write()
1655 cmd_details.wb_desc = &hw->nvm_wb_desc; in i40e_nvmupd_nvm_write()
1657 status = i40e_aq_update_nvm(hw, module, cmd->offset, in i40e_nvmupd_nvm_write()
1658 (u16)cmd->data_size, bytes, last, in i40e_nvmupd_nvm_write()
1663 module, cmd->offset, cmd->data_size); in i40e_nvmupd_nvm_write()
1666 status, hw->aq.asq_last_status); in i40e_nvmupd_nvm_write()
1667 *perrno = i40e_aq_rc_to_posix(status, hw->aq.asq_last_status); in i40e_nvmupd_nvm_write()