xref: /rk3399_rockchip-uboot/include/ubi_uboot.h (revision d1cfeee916fe86eddd944f7363f9d2884bdd9814)
17e6ee7adSKyungmin Park /*
27e6ee7adSKyungmin Park  * Header file for UBI support for U-Boot
37e6ee7adSKyungmin Park  *
47e6ee7adSKyungmin Park  * Adaptation from kernel to U-Boot
57e6ee7adSKyungmin Park  *
67e6ee7adSKyungmin Park  *  Copyright (C) 2005-2007 Samsung Electronics
77e6ee7adSKyungmin Park  *  Kyungmin Park <kyungmin.park@samsung.com>
87e6ee7adSKyungmin Park  *
97e6ee7adSKyungmin Park  * This program is free software; you can redistribute it and/or modify
107e6ee7adSKyungmin Park  * it under the terms of the GNU General Public License version 2 as
117e6ee7adSKyungmin Park  * published by the Free Software Foundation.
127e6ee7adSKyungmin Park  */
137e6ee7adSKyungmin Park 
147e6ee7adSKyungmin Park #ifndef __UBOOT_UBI_H
157e6ee7adSKyungmin Park #define __UBOOT_UBI_H
167e6ee7adSKyungmin Park 
177e6ee7adSKyungmin Park #include <common.h>
18d8bc55a6SAnton Vorontsov #include <compiler.h>
190c06db59SHeiko Schocher #include <linux/compat.h>
207e6ee7adSKyungmin Park #include <malloc.h>
217e6ee7adSKyungmin Park #include <div64.h>
220c06db59SHeiko Schocher #include <linux/math64.h>
237e6ee7adSKyungmin Park #include <linux/crc32.h>
249eefe2a2SStefan Roese #include <linux/types.h>
259eefe2a2SStefan Roese #include <linux/list.h>
269eefe2a2SStefan Roese #include <linux/rbtree.h>
279eefe2a2SStefan Roese #include <linux/string.h>
287e6ee7adSKyungmin Park #include <linux/mtd/mtd.h>
299eefe2a2SStefan Roese #include <linux/mtd/ubi.h>
307e6ee7adSKyungmin Park 
317e6ee7adSKyungmin Park #ifdef CONFIG_CMD_ONENAND
327e6ee7adSKyungmin Park #include <onenand_uboot.h>
337e6ee7adSKyungmin Park #endif
347e6ee7adSKyungmin Park 
357e6ee7adSKyungmin Park #include <asm/errno.h>
367e6ee7adSKyungmin Park 
377e6ee7adSKyungmin Park /* configurable */
380c06db59SHeiko Schocher #if !defined(CONFIG_MTD_UBI_WL_THRESHOLD)
397e6ee7adSKyungmin Park #define CONFIG_MTD_UBI_WL_THRESHOLD	4096
400c06db59SHeiko Schocher #endif
417e6ee7adSKyungmin Park #define CONFIG_MTD_UBI_BEB_RESERVE	1
427e6ee7adSKyungmin Park 
437e6ee7adSKyungmin Park /* debug options (Linux: drivers/mtd/ubi/Kconfig.debug) */
447e6ee7adSKyungmin Park #undef CONFIG_MTD_UBI_DEBUG
457e6ee7adSKyungmin Park #undef CONFIG_MTD_UBI_DEBUG_PARANOID
467e6ee7adSKyungmin Park #undef CONFIG_MTD_UBI_DEBUG_MSG
477e6ee7adSKyungmin Park #undef CONFIG_MTD_UBI_DEBUG_MSG_EBA
487e6ee7adSKyungmin Park #undef CONFIG_MTD_UBI_DEBUG_MSG_WL
497e6ee7adSKyungmin Park #undef CONFIG_MTD_UBI_DEBUG_MSG_IO
507e6ee7adSKyungmin Park #undef CONFIG_MTD_UBI_DEBUG_MSG_BLD
510c06db59SHeiko Schocher 
520c06db59SHeiko Schocher #undef CONFIG_MTD_UBI_BLOCK
530c06db59SHeiko Schocher 
54*d1cfeee9SAndrew Ruder /* ubi_init() disables returning error codes when built into the Linux
55*d1cfeee9SAndrew Ruder  * kernel so that it doesn't hang the Linux kernel boot process.  Since
56*d1cfeee9SAndrew Ruder  * the U-Boot driver code depends on getting valid error codes from this
57*d1cfeee9SAndrew Ruder  * function we just tell the UBI layer that we are building as a module
58*d1cfeee9SAndrew Ruder  * (which only enables the additional error reporting).
59*d1cfeee9SAndrew Ruder  */
60*d1cfeee9SAndrew Ruder #define CONFIG_MTD_UBI_MODULE
61*d1cfeee9SAndrew Ruder 
620c06db59SHeiko Schocher #if !defined(CONFIG_MTD_UBI_BEB_LIMIT)
630c06db59SHeiko Schocher #define CONFIG_MTD_UBI_BEB_LIMIT	20
640c06db59SHeiko Schocher #endif
657e6ee7adSKyungmin Park 
667e6ee7adSKyungmin Park /* build.c */
677e6ee7adSKyungmin Park #define get_device(...)
687e6ee7adSKyungmin Park #define put_device(...)
697e6ee7adSKyungmin Park #define ubi_sysfs_init(...)		0
707e6ee7adSKyungmin Park #define ubi_sysfs_close(...)		do { } while (0)
717e6ee7adSKyungmin Park 
729eefe2a2SStefan Roese #ifndef __UBIFS_H__
737e6ee7adSKyungmin Park #include "../drivers/mtd/ubi/ubi.h"
749eefe2a2SStefan Roese #endif
757e6ee7adSKyungmin Park 
767e6ee7adSKyungmin Park /* functions */
777e6ee7adSKyungmin Park extern int ubi_mtd_param_parse(const char *val, struct kernel_param *kp);
787e6ee7adSKyungmin Park extern int ubi_init(void);
792ee951baSStefan Roese extern void ubi_exit(void);
8071829067SJoe Hershberger extern int ubi_part(char *part_name, const char *vid_header_offset);
8171829067SJoe Hershberger extern int ubi_volume_write(char *volume, void *buf, size_t size);
8271829067SJoe Hershberger extern int ubi_volume_read(char *volume, char *buf, size_t size);
837e6ee7adSKyungmin Park 
847e6ee7adSKyungmin Park extern struct ubi_device *ubi_devices[];
857e6ee7adSKyungmin Park 
867e6ee7adSKyungmin Park #endif
87