1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- /* SPDX-License-Identifier: GPL 2.0+ OR BSD-3-Clause */
- /*
- * Copyright (c) Thomas Gleixner <tglx@linutronix.de>
- */
- #ifndef __UBOOT_UBISPL_H
- #define __UBOOT_UBISPL_H
- /*
- * The following CONFIG options are relevant for UBISPL
- *
- * #define CONFIG_SPL_UBI_MAX_VOL_LEBS 256
- *
- * Defines the maximum number of logical erase blocks per loadable
- * (static) volume to size the ubispl internal arrays.
- *
- * #define CONFIG_SPL_UBI_MAX_PEB_SIZE (256*1024)
- *
- * Defines the maximum physical erase block size to size the fastmap
- * buffer for ubispl.
- *
- * #define CONFIG_SPL_UBI_MAX_PEBS 4096
- *
- * Define the maximum number of physical erase blocks to size the
- * ubispl internal arrays.
- *
- * #define CONFIG_SPL_UBI_VOL_IDS 8
- *
- * Defines the maximum number of volumes in which UBISPL is
- * interested. Limits the amount of memory for the scan data and
- * speeds up the scan process as we simply ignore stuff which we dont
- * want to load from the SPL anyway. So the volumes which can be
- * loaded in the above example are ids 0 - 7
- */
- /*
- * The struct definition is in drivers/mtd/ubispl/ubispl.h. It does
- * not fit into the BSS due to the large buffer requirement of the
- * upstream fastmap code. So the caller of ubispl_load_volumes needs
- * to hand in a pointer to a free memory area where ubispl will place
- * its data. The area is not required to be initialized.
- */
- struct ubi_scan_info;
- typedef int (*ubispl_read_flash)(int pnum, int offset, int len, void *dst);
- /**
- * struct ubispl_info - description structure for fast ubi scan
- * @ubi: Pointer to memory space for ubi scan info structure
- * @peb_size: Physical erase block size
- * @vid_offset: Offset of the VID header
- * @leb_start: Start of the logical erase block, i.e. offset of data
- * @peb_count: Number of physical erase blocks in the UBI FLASH area
- * aka MTD partition.
- * @peb_offset: Offset of PEB0 in the UBI FLASH area (aka MTD partition)
- * to the real start of the FLASH in erase blocks.
- * @fastmap: Enable fastmap attachment
- * @read: Read function to access the flash
- */
- struct ubispl_info {
- struct ubi_scan_info *ubi;
- u32 peb_size;
- u32 vid_offset;
- u32 leb_start;
- u32 peb_count;
- u32 peb_offset;
- int fastmap;
- ubispl_read_flash read;
- };
- /**
- * struct ubispl_load - structure to describe a volume to load
- * @vol_id: Volume id
- * @load_addr: Load address of the volume
- */
- struct ubispl_load {
- int vol_id;
- void *load_addr;
- };
- /**
- * ubispl_load_volumes - Scan flash and load volumes
- * @info: Pointer to the ubi scan info structure
- * @lovls: Pointer to array of volumes to load
- * @nrvols: Array size of @lovls
- */
- int ubispl_load_volumes(struct ubispl_info *info,
- struct ubispl_load *lvols, int nrvols);
- #endif
|