/* Copyright 2023 The ChromiumOS Authors * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #include "flash_helpers.h" #include "futility.h" #include "updater.h" int setup_flash(struct updater_config **cfg, struct updater_config_arguments *args) { #ifdef USE_FLASHROM *cfg = updater_new_config(); if (!*cfg) { ERROR("Out of memory\n"); return 1; } if (args->detect_servo) { char *servo_programmer = host_detect_servo(&(*cfg)->prepare_ctrl_name); if (!servo_programmer) { ERROR("Problem communicating with servo\n"); goto errdelete; } if (!args->programmer) args->programmer = servo_programmer; else free(servo_programmer); } if (updater_setup_config(*cfg, args)) { ERROR("Bad servo options\n"); goto errdelete; } prepare_servo_control((*cfg)->prepare_ctrl_name, true); return 0; errdelete: updater_delete_config(*cfg); *cfg = NULL; return 1; #else return 1; #endif /* USE_FLASHROM */ } void teardown_flash(struct updater_config *cfg) { #ifdef USE_FLASHROM prepare_servo_control(cfg->prepare_ctrl_name, false); updater_delete_config(cfg); #endif /* USE_FLASHROM */ }