aboutsummaryrefslogtreecommitdiff
path: root/ubi-utils/inc
diff options
context:
space:
mode:
Diffstat (limited to 'ubi-utils/inc')
-rw-r--r--ubi-utils/inc/libpfi.h257
-rw-r--r--ubi-utils/inc/libubi.h340
-rw-r--r--ubi-utils/inc/libubigen.h104
3 files changed, 0 insertions, 701 deletions
diff --git a/ubi-utils/inc/libpfi.h b/ubi-utils/inc/libpfi.h
deleted file mode 100644
index 6aca4be..0000000
--- a/ubi-utils/inc/libpfi.h
+++ /dev/null
@@ -1,257 +0,0 @@
-#ifndef __pfi_h
-#define __pfi_h
-/*
- * Copyright (c) International Business Machines Corp., 2006
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- * the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/**
- * @file pfi.h
- *
- * @author Oliver Lohmann <oliloh@de.ibm.com>
- * Andreas Arnez <arnez@de.ibm.com>
- * Joern Engel <engeljoe@de.ibm.com>
- * Frank Haverkamp <haverkam@de.ibm.com>
- *
- * @brief libpfi will hold all code to create and process pfi
- * images. Definitions made in this file are equaly usable for the
- * development host and the target system.
- *
- * @note This header additionally holds the official definitions for
- * the pfi headers.
- */
-
-#include <stdio.h> /* FILE */
-#include "list.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct pfi_ubi {
- long long data_offs;
- uint32_t data_size;
- uint32_t alignment;
- uint32_t *ids;
- uint32_t ids_size;
- char **names;
- uint32_t names_size;
- uint32_t size;
- int vol_type;
- int curr_seqnum; /* specifies the seqnum taken in an update,
- default: 0 (used by pfiflash, ubimirror) */
- uint32_t crc;
-};
-
-int read_pfi_headers(struct list_entry **ubi_list, FILE *fp_pfi);
-int free_pfi_ubi(struct pfi_ubi **pfi_ubi);
-
-/* Definitions. */
-
-#define PFI_HDRVERSION 1 /* current header version */
-
-#define PFI_ENOVERSION 1 /* unknown version */
-#define PFI_ENOHEADER 2 /* not a pfi header */
-#define PFI_EINSUFF 3 /* insufficient information */
-#define PFI_EUNDEF 4 /* key not defined */
-#define PFI_ENOMEM 5 /* out of memory */
-#define PFI_EBADTYPE 6 /* bad data type */
-#define PFI_EFILE 7 /* file I/O error: see errno */
-#define PFI_EFILEINVAL 8 /* file format not valid */
-#define PFI_EINVAL 9 /* invalid parameter */
-#define PFI_ERANGE 10 /* invalid range */
-#define PFI_EMODE 11 /* expecting other mode in this header */
-#define PFI_DATA_START 12 /* data section starts */
-#define PFI_EMAX 13 /* should be always larger as the largest
- error code */
-
-#define PFI_LABEL_LEN 64 /* This is the maximum length for a
- PFI header label */
-#define PFI_KEYWORD_LEN 32 /* This is the maximum length for an
- entry in the mode and type fields */
-
-#define PFI_UBI_MAX_VOLUMES 128
-#define PFI_UBI_VOL_NAME_LEN 127
-
-/**
- * @brief The pfi header allows to set flags which influence the flashing
- * behaviour.
- */
-#define PFI_FLAG_PROTECTED 0x00000001
-
-struct pfi_header;
-
-/**
- * @brief Initialize a pfi header object.
- *
- * @param head Pointer to handle. This function allocates memory
- * for this data structure.
- * @return 0 on success, otherwise:
- * PFI_ENOMEM : no memory available for the handle.
- */
-int pfi_header_init (struct pfi_header **head);
-
-
-/**
- * @brief Destroy a pfi header object.
- *
- * @param head handle. head is invalid after calling this function.
- * @return 0 always.
- */
-int pfi_header_destroy (struct pfi_header **head);
-
-
-/**
- * @brief Add a key/value pair to a pfi header object.
- *
- * @param head handle.
- * @param key pointer to key string. Must be 0 terminated.
- * @param value pointer to value string. Must be 0 terminated.
- * @return 0 on success, otherwise:
- * PFI_EUNDEF : key was not found.
- * PFI_ENOMEM : no memory available for the handle.
- * PFI_EBADTYPE : value is not an hex string. This happens
- * when the key stores an integer and the
- * new value is not convertable e.g. not in
- * 0xXXXXXXXX format.
- */
-int pfi_header_setvalue (struct pfi_header *head,
- const char *key, const char *value);
-
-
-/**
- * @brief Add a key/value pair to a pfi header object. Provide the
- * value as a number.
- *
- * @param head handle.
- * @param key pointer to key string. Must be 0 terminated.
- * @param value value to set.
- * @return 0 on success, otherwise:
- * PFI_EUNDEF : key was not found.
- * PFI_EBADTYPE : value is not a string. This happens
- * when the key stores a string.
- */
-int pfi_header_setnumber (struct pfi_header *head,
- const char *key, uint32_t value);
-
-
-/**
- * @brief For a given key, return the numerical value stored in a
- * pfi header object.
- *
- * @param head handle.
- * @param key pointer to key string. Must be 0 terminated.
- * @param value pointer to value.
- * @return 0 on success, otherwise:
- * PFI_EUNDEF : key was not found.
- * PFI_EBADTYPE : stored value is not an integer but a string.
- */
-int pfi_header_getnumber (struct pfi_header *head,
- const char *key, uint32_t *value);
-
-
-static inline uint32_t
-pfi_getnumber(struct pfi_header *head, const char *key)
-{
- uint32_t value;
- pfi_header_getnumber(head, key, &value);
- return value;
-}
-
-/**
- * @brief For a given key, return the string value stored in a pfi
- * header object.
- *
- * @param head handle.
- * @param key pointer to key string. Must be 0 terminated.
- * @param value pointer to value string. Memory must be allocated by the user.
- * @return 0 on success, otherwise:
- * PFI_EUNDEF : key was not found.
- * PFI_EBADTYPE : stored value is not a string but an integer.
- */
-int pfi_header_getstring (struct pfi_header *head,
- const char *key, char *value, size_t size);
-
-
-/**
- * @brief Write a pfi header object into a given file.
- *
- * @param out output stream.
- * @param head handle.
- * @return 0 on success, error values otherwise:
- * PFI_EINSUFF : not all mandatory fields are filled.
- * PFI_ENOHEADER : wrong header version or magic number.
- * -E* : see <asm/errno.h>.
- */
-int pfi_header_write (FILE *out, struct pfi_header *head);
-
-
-/**
- * @brief Read a pfi header object from a given file.
- *
- * @param in input stream.
- * @param head handle.
- * @return 0 on success, error values otherwise:
- * PFI_ENOVERSION: unknown header version.
- * PFI_EFILE : cannot read enough data.
- * PFI_ENOHEADER : wrong header version or magic number.
- * -E* : see <asm/errno.h>.
- *
- * If the header verification returned success the user can assume that
- * all mandatory fields for a particular version are accessible. Checking
- * the return code when calling the get-function for those keys is not
- * required in those cases. For optional fields the checking must still be
- * done.
- */
-int pfi_header_read (FILE *in, struct pfi_header *head);
-
-
-/**
- * @brief Display a pfi header in human-readable form.
- *
- * @param out output stream.
- * @param head handle.
- * @return always 0.
- *
- * @note Prints out that it is not implemented and whom you should
- * contact if you need it urgently!.
- */
-int pfi_header_dump (FILE *out, struct pfi_header *head);
-
-
-/*
- * @brief Iterates over a stream of pfi files. The iterator function
- * must advance the file pointer in FILE *in to the next pfi
- * header. Function exists on feof(in).
- *
- * @param in input file descriptor, must be open and valid.
- * @param func iterator function called when pfi header could be
- * read and was validated. The function must return 0 on
- * success.
- * @return See pfi_header_init and pfi_header_read.
- * PFI_EINVAL : func is not valid
- * 0 ok.
- */
-typedef int (* pfi_read_func)(FILE *in, struct pfi_header *hdr, void *priv_data);
-
-int pfi_read (FILE *in, pfi_read_func func, void *priv_data);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __pfi_h */
diff --git a/ubi-utils/inc/libubi.h b/ubi-utils/inc/libubi.h
deleted file mode 100644
index 0cdb67c..0000000
--- a/ubi-utils/inc/libubi.h
+++ /dev/null
@@ -1,340 +0,0 @@
-/*
- * Copyright (c) International Business Machines Corp., 2006
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- * the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- * Author: Artem B. Bityutskiy
- *
- * UBI (Unsorted Block Images) library.
- */
-
-#ifndef __LIBUBI_H__
-#define __LIBUBI_H__
-
-#include <stdint.h>
-#include <mtd/ubi-user.h>
-#include <ctype.h>
-#include <mtd/ubi-header.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* UBI version libubi is made for */
-#define LIBUBI_UBI_VERSION 1
-
-/* UBI library descriptor */
-typedef void * libubi_t;
-
-/**
- * struct ubi_attach_request - MTD device attachement request.
- * @dev_num: number to assigne to the newly created UBI device
- * (%UBI_DEV_NUM_AUTO should be used to automatically assign the
- * number)
- * @mtd_num: MTD device number to attach
- * @vid_hdr_offset: VID header offset (%0 means default offset and this is what
- * most of the users want)
- */
-struct ubi_attach_request
-{
- int dev_num;
- int mtd_num;
- int vid_hdr_offset;
-};
-
-/**
- * struct ubi_mkvol_request - volume creation request.
- * @vol_id: ID to assign to the new volume (%UBI_VOL_NUM_AUTO should be used to
- * automatically assign ID)
- * @alignment: volume alignment
- * @bytes: volume size in bytes
- * @vol_type: volume type (%UBI_DYNAMIC_VOLUME or %UBI_STATIC_VOLUME)
- * @name: volume name
- */
-struct ubi_mkvol_request
-{
- int vol_id;
- int alignment;
- long long bytes;
- int vol_type;
- const char *name;
-};
-
-/**
- * struct ubi_info - general UBI information.
- * @dev_count: count of UBI devices in system
- * @lowest_dev_num: lowest UBI device number
- * @highest_dev_num: highest UBI device number
- * @version: UBI version
- * @ctrl_major: major number of the UBI control device
- * @ctrl_minor: minor number of the UBI control device
- */
-struct ubi_info
-{
- int dev_count;
- int lowest_dev_num;
- int highest_dev_num;
- int version;
- int ctrl_major;
- int ctrl_minor;
-};
-
-/**
- * struct ubi_dev_info - UBI device information.
- * @vol_count: count of volumes on this UBI device
- * @lowest_vol_num: lowest volume number
- * @highest_vol_num: highest volume number
- * @major: major number of corresponding character device
- * @minor: minor number of corresponding character device
- * @total_lebs: total number of logical eraseblocks on this UBI device
- * @avail_lebs: how many logical eraseblocks are not used and available for new
- * volumes
- * @total_bytes: @total_lebs * @leb_size
- * @avail_bytes: @avail_lebs * @leb_size
- * @bad_count: count of bad physical eraseblocks
- * @leb_size: logical eraseblock size
- * @max_ec: current highest erase counter value
- * @bad_rsvd: how many physical eraseblocks of the underlying flash device are
- * reserved for bad eraseblocks handling
- * @max_vol_count: maximum possible number of volumes on this UBI device
- * @min_io_size: minimum input/output unit size of the UBI device
- */
-struct ubi_dev_info
-{
- int dev_num;
- int vol_count;
- int lowest_vol_num;
- int highest_vol_num;
- int major;
- int minor;
- int total_lebs;
- int avail_lebs;
- long long total_bytes;
- long long avail_bytes;
- int bad_count;
- int leb_size;
- long long max_ec;
- int bad_rsvd;
- int max_vol_count;
- int min_io_size;
-};
-
-/**
- * struct ubi_vol_info - UBI volume information.
- * @dev_num: UBI device number the volume resides on
- * @vol_id: ID of this volume
- * @major: major number of corresponding volume character device
- * @minor: minor number of corresponding volume character device
- * @dev_major: major number of corresponding UBI device character device
- * @dev_minor: minor number of corresponding UBI device character device
- * @type: volume type (%UBI_DYNAMIC_VOLUME or %UBI_STATIC_VOLUME)
- * @alignment: alignemnt of this volume
- * @data_bytes: how many data bytes are stored on this volume (equivalent to
- * @rsvd_bytes for dynamic volumes)
- * @rsvd_bytes: how many bytes are reserved for this volume
- * @rsvd_lebs: how many logical eraseblocks are reserved for this volume
- * @leb_size: logical eraseblock size of this volume (may be less then
- * device's logical eraseblock size due to alignment)
- * @corrupted: non-zero if the volume is corrupted
- * @name: volume name (null-terminated)
- */
-struct ubi_vol_info
-{
- int dev_num;
- int vol_id;
- int major;
- int minor;
- int dev_major;
- int dev_minor;
- int type;
- int alignment;
- long long data_bytes;
- long long rsvd_bytes;
- int rsvd_lebs;
- int leb_size;
- int corrupted;
- char name[UBI_VOL_NAME_MAX + 1];
-};
-
-/**
- * libubi_open - open UBI library.
- * This function initializes and opens the UBI library and returns UBI library
- * descriptor in case of success and %NULL in case of failure.
- */
-libubi_t libubi_open(void);
-
-/**
- * libubi_close - close UBI library.
- * @desc UBI library descriptor
- */
-void libubi_close(libubi_t desc);
-
-/**
- * ubi_get_info - get general UBI information.
- * @desc: UBI library descriptor
- * @info: pointer to the &struct ubi_info object to fill
- *
- * This function fills the passed @info object with general UBI information and
- * returns %0 in case of success and %-1 in case of failure.
- */
-int ubi_get_info(libubi_t desc, struct ubi_info *info);
-
-/**
- * ubi_attach_mtd - attach MTD device to UBI.
- * @desc: UBI library descriptor
- * @node: name of the UBI control character device node
- * @req: MTD attach request.
- *
- * This function creates a new UBI device by attaching an MTD device as
- * described by @req. Returns %0 in case of success and %-1 in case of failure.
- * The newly created UBI device number is returned in @req->dev_num.
- */
-int ubi_attach_mtd(libubi_t desc, const char *node,
- struct ubi_attach_request *req);
-
-/**
- * ubi_detach_mtd - detach an MTD device.
- * @desc: UBI library descriptor
- * @node: name of the UBI control character device node
- * @mtd_num: MTD device number to detach
- *
- * This function detaches MTD device number @mtd_num from UBI, which means the
- * corresponding UBI device is removed. Returns zero in case of success and %-1
- * in case of failure.
- */
-int ubi_detach_mtd(libubi_t desc, const char *node, int mtd_num);
-
-/**
- * ubi_remove_dev - remove an UBI device.
- * @desc: UBI library descriptor
- * @node: name of the UBI control character device node
- * @ubi_dev: UBI device number to remove
- *
- * This function removes UBI device number @ubi_dev and returns zero in case of
- * success and %-1 in case of failure.
- */
-int ubi_remove_dev(libubi_t desc, const char *node, int ubi_dev);
-
-/**
- * ubi_mkvol - create an UBI volume.
- * @desc: UBI library descriptor
- * @node: name of the UBI character device to create a volume at
- * @req: UBI volume creation request
- *
- * This function creates a UBI volume as described at @req and returns %0 in
- * case of success and %-1 in case of failure. The assigned volume ID is
- * returned in @req->vol_id.
- */
-int ubi_mkvol(libubi_t desc, const char *node, struct ubi_mkvol_request *req);
-
-/**
- * ubi_rmvol - remove a UBI volume.
- * @desc: UBI library descriptor
- * @node: name of the UBI character device to remove a volume from
- * @vol_id: ID of the volume to remove
- *
- * This function removes volume @vol_id from UBI device @node and returns %0 in
- * case of success and %-1 in case of failure.
- */
-int ubi_rmvol(libubi_t desc, const char *node, int vol_id);
-
-/**
- * ubi_rsvol - re-size UBI volume.
- * @desc: UBI library descriptor
- * @node: name of the UBI character device owning the volume which should be
- * re-sized
- * @vol_id: volume ID to re-size
- * @bytes: new volume size in bytes
- *
- * This function returns %0 in case of success and %-1 in case of error.
- */
-int ubi_rsvol(libubi_t desc, const char *node, int vol_id, long long bytes);
-
-/**
- * ubi_node_type - test UBI node type.
- * @desc: UBI library descriptor
- * @node: the node to test
- *
- * This function tests whether @node is a UBI device or volume node and returns
- * %1 if this is an UBI device node, %2 if this is a volume node, and %-1 if
- * this is not an UBI node or if an error occurred (the latter is indicated by
- * a non-zero errno).
- */
-int ubi_node_type(libubi_t desc, const char *node);
-
-/**
- * ubi_get_dev_info - get UBI device information.
- * @desc: UBI library descriptor
- * @node: name of the UBI character device to fetch information about
- * @info: pointer to the &struct ubi_dev_info object to fill
- *
- * This function fills the passed @info object with UBI device information and
- * returns %0 in case of success and %-1 in case of failure.
- */
-int ubi_get_dev_info(libubi_t desc, const char *node,
- struct ubi_dev_info *info);
-
-/**
- * ubi_get_dev_info1 - get UBI device information.
- * @desc: UBI library descriptor
- * @dev_num: UBI device number to fetch information about
- * @info: pointer to the &struct ubi_dev_info object to fill
- *
- * This function is identical to 'ubi_get_dev_info()' except that it accepts UBI
- * device number, not UBI character device.
- */
-int ubi_get_dev_info1(libubi_t desc, int dev_num, struct ubi_dev_info *info);
-
-/**
- * ubi_get_vol_info - get UBI volume information.
- * @desc: UBI library descriptor
- * @node: name of the UBI volume character device to fetch information about
- * @info: pointer to the &struct ubi_vol_info object to fill
- *
- * This function fills the passed @info object with UBI volume information and
- * returns %0 in case of success and %-1 in case of failure.
- */
-int ubi_get_vol_info(libubi_t desc, const char *node,
- struct ubi_vol_info *info);
-
-/**
- * ubi_get_vol_info1 - get UBI volume information.
- * @desc: UBI library descriptor
- * @dev_num: UBI device number
- * @vol_id: ID of the UBI volume to fetch information about
- * @info: pointer to the &struct ubi_vol_info object to fill
- *
- * This function is identical to 'ubi_get_vol_info()' except that it accepts UBI
- * volume number, not UBI volume character device.
- */
-int ubi_get_vol_info1(libubi_t desc, int dev_num, int vol_id,
- struct ubi_vol_info *info);
-
-/**
- * ubi_update_start - start UBI volume update.
- * @desc: UBI library descriptor
- * @fd: volume character devie file descriptor
- * @bytes: how many bytes will be written to the volume
- *
- * This function initiates UBI volume update and returns %0 in case of success
- * and %-1 in case of error.
- */
-int ubi_update_start(libubi_t desc, int fd, long long bytes);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* !__LIBUBI_H__ */
diff --git a/ubi-utils/inc/libubigen.h b/ubi-utils/inc/libubigen.h
deleted file mode 100644
index 5315a72..0000000
--- a/ubi-utils/inc/libubigen.h
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright (c) International Business Machines Corp., 2006
- * Copyright (C) 2008 Nokia Corporation
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- * the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * Authors: Frank Haverkamp
- * Artem Bityutskiy
- */
-
-#ifndef __LIBUBIGEN_H__
-#define __LIBUBIGEN_H__
-
-#include <stdio.h>
-#include <asm/byteorder.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * struct ubigen_info - libubigen information.
- * @leb_size: logical eraseblock size
- * @peb_size: size of the physical eraseblock
- * @min_io_size: minimum input/output unit size
- * @vid_hdr_offs: offset of the VID header
- * @data_offs: data offset
- * @ubi_ver: UBI version
- * @ec: initial erase counter
- */
-struct ubigen_info
-{
- int leb_size;
- int peb_size;
- int min_io_size;
- int vid_hdr_offs;
- int data_offs;
- int ubi_ver;
- long long ec;
-};
-
-/**
- * struct ubigen_vol_info - information about a volume.
- * @id: volume id
- * @type: volume type (%UBI_VID_DYNAMIC or %UBI_VID_STATIC)
- * @alignment: volume alignment
- * @data_pad: how many bytes are unused at the end of the each physical
- * eraseblock to satisfy the requested alignment
- * @usable_leb_size: LEB size accessible for volume users
- * @name: volume name
- * @name_len: volume name length
- * @compat: compatibility of this volume (%0, %UBI_COMPAT_DELETE,
- * %UBI_COMPAT_IGNORE, %UBI_COMPAT_PRESERVE, or %UBI_COMPAT_REJECT)
- * @used_ebs: total number of used logical eraseblocks in this volume (relevant
- * for static volumes only)
- * @bytes: size of the volume contents in bytes (relevant for static volumes
- * only)
- */
-struct ubigen_vol_info
-{
- int id;
- int type;
- int alignment;
- int data_pad;
- int usable_leb_size;
- const char *name;
- int name_len;
- int compat;
- int used_ebs;
- long long bytes;
-};
-
-void ubigen_info_init(struct ubigen_info *ui, int peb_size, int min_io_size,
- int subpage_size, int vid_hdr_offs, int ubi_ver,
- long long ec);
-struct ubi_vtbl_record *ubigen_create_empty_vtbl(int *size);
-void ubigen_add_volume(const struct ubigen_info *ui,
- const struct ubigen_vol_info *vi,
- struct ubi_vtbl_record *vtbl);
-int ubigen_write_volume(const struct ubigen_info *ui,
- const struct ubigen_vol_info *vi,
- long long bytes, FILE *in, FILE *out);
-int ubigen_write_layout_vol(const struct ubigen_info *ui,
- struct ubi_vtbl_record *vtbl, FILE *out);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* !__LIBUBIGEN_H__ */