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> 19*0c06db59SHeiko Schocher #include <linux/compat.h> 207e6ee7adSKyungmin Park #include <malloc.h> 217e6ee7adSKyungmin Park #include <div64.h> 22*0c06db59SHeiko 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 */ 38*0c06db59SHeiko Schocher #if !defined(CONFIG_MTD_UBI_WL_THRESHOLD) 397e6ee7adSKyungmin Park #define CONFIG_MTD_UBI_WL_THRESHOLD 4096 40*0c06db59SHeiko 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 51*0c06db59SHeiko Schocher 52*0c06db59SHeiko Schocher #undef CONFIG_MTD_UBI_BLOCK 53*0c06db59SHeiko Schocher 54*0c06db59SHeiko Schocher #if !defined(CONFIG_MTD_UBI_BEB_LIMIT) 55*0c06db59SHeiko Schocher #define CONFIG_MTD_UBI_BEB_LIMIT 20 56*0c06db59SHeiko Schocher #endif 577e6ee7adSKyungmin Park 587e6ee7adSKyungmin Park /* build.c */ 597e6ee7adSKyungmin Park #define get_device(...) 607e6ee7adSKyungmin Park #define put_device(...) 617e6ee7adSKyungmin Park #define ubi_sysfs_init(...) 0 627e6ee7adSKyungmin Park #define ubi_sysfs_close(...) do { } while (0) 637e6ee7adSKyungmin Park 649eefe2a2SStefan Roese #ifndef __UBIFS_H__ 657e6ee7adSKyungmin Park #include "../drivers/mtd/ubi/ubi.h" 669eefe2a2SStefan Roese #endif 677e6ee7adSKyungmin Park 687e6ee7adSKyungmin Park /* functions */ 697e6ee7adSKyungmin Park extern int ubi_mtd_param_parse(const char *val, struct kernel_param *kp); 707e6ee7adSKyungmin Park extern int ubi_init(void); 712ee951baSStefan Roese extern void ubi_exit(void); 7271829067SJoe Hershberger extern int ubi_part(char *part_name, const char *vid_header_offset); 7371829067SJoe Hershberger extern int ubi_volume_write(char *volume, void *buf, size_t size); 7471829067SJoe Hershberger extern int ubi_volume_read(char *volume, char *buf, size_t size); 757e6ee7adSKyungmin Park 767e6ee7adSKyungmin Park extern struct ubi_device *ubi_devices[]; 777e6ee7adSKyungmin Park 787e6ee7adSKyungmin Park #endif 79