Lines Matching defs:mlxfw_dev

38 static int mlxfw_fsm_state_err(struct mlxfw_dev *mlxfw_dev,
49 MLXFW_ERR_MSG(mlxfw_dev, extack, "general error", err);
52 MLXFW_ERR_MSG(mlxfw_dev, extack, "component hash mismatch", err);
55 MLXFW_ERR_MSG(mlxfw_dev, extack, "component not applicable", err);
58 MLXFW_ERR_MSG(mlxfw_dev, extack, "unknown key", err);
61 MLXFW_ERR_MSG(mlxfw_dev, extack, "authentication failed", err);
64 MLXFW_ERR_MSG(mlxfw_dev, extack, "component was not signed", err);
67 MLXFW_ERR_MSG(mlxfw_dev, extack, "key not applicable", err);
70 MLXFW_ERR_MSG(mlxfw_dev, extack, "bad format", err);
73 MLXFW_ERR_MSG(mlxfw_dev, extack, "pending reset", err);
77 MLXFW_ERR_MSG(mlxfw_dev, extack, "unknown error", err);
84 static int mlxfw_fsm_state_wait(struct mlxfw_dev *mlxfw_dev, u32 fwhandle,
95 err = mlxfw_dev->ops->fsm_query_state(mlxfw_dev, fwhandle,
98 MLXFW_ERR_MSG(mlxfw_dev, extack, "FSM state query failed", err);
103 return mlxfw_fsm_state_err(mlxfw_dev, extack, fsm_state_err);
107 MLXFW_ERR_MSG(mlxfw_dev, extack,
118 mlxfw_fsm_reactivate_err(struct mlxfw_dev *mlxfw_dev,
125 MLXFW_ERR_MSG(mlxfw_dev, extack, MXFW_REACT_PRFX msg, err)
166 static int mlxfw_fsm_reactivate(struct mlxfw_dev *mlxfw_dev,
173 if (!mlxfw_dev->ops->fsm_reactivate)
176 err = mlxfw_dev->ops->fsm_reactivate(mlxfw_dev, &status);
183 MLXFW_ERR_MSG(mlxfw_dev, extack,
192 return mlxfw_fsm_reactivate_err(mlxfw_dev, extack, status);
195 static void mlxfw_status_notify(struct mlxfw_dev *mlxfw_dev,
199 devlink_flash_update_status_notify(mlxfw_dev->devlink, msg, comp_name,
207 static int mlxfw_flash_component(struct mlxfw_dev *mlxfw_dev,
224 err = mlxfw_dev->ops->component_query(mlxfw_dev, comp->index,
228 MLXFW_ERR_MSG(mlxfw_dev, extack, "FSM component query failed", err);
234 MLXFW_ERR_MSG(mlxfw_dev, extack,
242 mlxfw_dbg(mlxfw_dev, "Component update\n");
243 mlxfw_status_notify(mlxfw_dev, "Updating component", comp_name, 0, 0);
244 err = mlxfw_dev->ops->fsm_component_update(mlxfw_dev, fwhandle,
249 MLXFW_ERR_MSG(mlxfw_dev, extack,
253 MLXFW_ERR_MSG(mlxfw_dev, extack,
258 err = mlxfw_fsm_state_wait(mlxfw_dev, fwhandle,
263 mlxfw_dbg(mlxfw_dev, "Component download\n");
264 mlxfw_status_notify(mlxfw_dev, "Downloading component",
272 err = mlxfw_dev->ops->fsm_block_download(mlxfw_dev, fwhandle,
276 MLXFW_ERR_MSG(mlxfw_dev, extack,
280 mlxfw_status_notify(mlxfw_dev, "Downloading component",
285 mlxfw_dbg(mlxfw_dev, "Component verify\n");
286 mlxfw_status_notify(mlxfw_dev, "Verifying component", comp_name, 0, 0);
287 err = mlxfw_dev->ops->fsm_component_verify(mlxfw_dev, fwhandle,
290 MLXFW_ERR_MSG(mlxfw_dev, extack,
295 err = mlxfw_fsm_state_wait(mlxfw_dev, fwhandle,
302 mlxfw_dev->ops->fsm_cancel(mlxfw_dev, fwhandle);
306 static int mlxfw_flash_components(struct mlxfw_dev *mlxfw_dev, u32 fwhandle,
315 err = mlxfw_mfa2_file_component_count(mfa2_file, mlxfw_dev->psid,
316 mlxfw_dev->psid_size,
319 MLXFW_ERR_MSG(mlxfw_dev, extack,
327 comp = mlxfw_mfa2_file_component_get(mfa2_file, mlxfw_dev->psid,
328 mlxfw_dev->psid_size, i);
331 MLXFW_ERR_MSG(mlxfw_dev, extack,
336 mlxfw_info(mlxfw_dev, "Flashing component type %d\n",
338 err = mlxfw_flash_component(mlxfw_dev, fwhandle, comp,
347 int mlxfw_firmware_flash(struct mlxfw_dev *mlxfw_dev,
357 MLXFW_ERR_MSG(mlxfw_dev, extack,
365 MLXFW_ERR_MSG(mlxfw_dev, extack,
370 mlxfw_info(mlxfw_dev, "Initialize firmware flash process\n");
371 mlxfw_status_notify(mlxfw_dev, "Initializing firmware flash process",
373 err = mlxfw_dev->ops->fsm_lock(mlxfw_dev, &fwhandle);
375 MLXFW_ERR_MSG(mlxfw_dev, extack,
380 err = mlxfw_fsm_state_wait(mlxfw_dev, fwhandle,
385 err = mlxfw_fsm_reactivate(mlxfw_dev, extack, &reactivate_supp);
389 err = mlxfw_fsm_state_wait(mlxfw_dev, fwhandle,
394 err = mlxfw_flash_components(mlxfw_dev, fwhandle, mfa2_file,
399 mlxfw_dbg(mlxfw_dev, "Activate image\n");
400 mlxfw_status_notify(mlxfw_dev, "Activating image", NULL, 0, 0);
401 err = mlxfw_dev->ops->fsm_activate(mlxfw_dev, fwhandle);
403 MLXFW_ERR_MSG(mlxfw_dev, extack,
408 err = mlxfw_fsm_state_wait(mlxfw_dev, fwhandle,
413 mlxfw_dbg(mlxfw_dev, "Handle release\n");
414 mlxfw_dev->ops->fsm_release(mlxfw_dev, fwhandle);
416 mlxfw_info(mlxfw_dev, "Firmware flash done\n");
417 mlxfw_status_notify(mlxfw_dev, "Firmware flash done", NULL, 0, 0);
427 mlxfw_dev->ops->fsm_release(mlxfw_dev, fwhandle);