/* Copyright 2015 The Chromium OS Authors. All rights reserved.
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 *
 * This module provides some utility functions to use "flashrom" to read from
 * and write to NOR flash.
 */

#ifndef VBOOT_REFERENCE_CGPT_NOR_H_
#define VBOOT_REFERENCE_CGPT_NOR_H_

// Obtain the MTD size from its sysfs node. |mtd_device| should point to
// a dev node such as /dev/mtd0. This function returns 0 on success.
int GetMtdSize(const char *mtd_device, uint64_t *size);

// Exec |argv| in |cwd|. Return -1 on error, or exit code on success. |argv|
// must be terminated with a NULL element as is required by execv().
int ForkExecV(const char *cwd, const char *const argv[]);

// Similar to ForkExecV but with a vararg instead of an array of pointers.
int ForkExecL(const char *cwd, const char *cmd, ...);

// Exec "rm" to remove |dir|.
int RemoveDir(const char *dir);

// Read RW_GPT from NOR flash to "rw_gpt" in dir.
int ReadNorFlash(const char *dir);

// Write "rw_gpt" back to NOR flash. We write the file in two parts for safety.
int WriteNorFlash(const char *dir);

#endif  /* VBOOT_REFERENCE_CGPT_NOR_H_ */
