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 351221ce45SMasahiro Yamada #include <linux/errno.h> 367e6ee7adSKyungmin Park 377e6ee7adSKyungmin Park /* configurable */ 387e6ee7adSKyungmin Park #define CONFIG_MTD_UBI_BEB_RESERVE 1 397e6ee7adSKyungmin Park 407e6ee7adSKyungmin Park /* debug options (Linux: drivers/mtd/ubi/Kconfig.debug) */ 417e6ee7adSKyungmin Park #undef CONFIG_MTD_UBI_DEBUG 427e6ee7adSKyungmin Park #undef CONFIG_MTD_UBI_DEBUG_PARANOID 437e6ee7adSKyungmin Park #undef CONFIG_MTD_UBI_DEBUG_MSG 447e6ee7adSKyungmin Park #undef CONFIG_MTD_UBI_DEBUG_MSG_EBA 457e6ee7adSKyungmin Park #undef CONFIG_MTD_UBI_DEBUG_MSG_WL 467e6ee7adSKyungmin Park #undef CONFIG_MTD_UBI_DEBUG_MSG_IO 477e6ee7adSKyungmin Park #undef CONFIG_MTD_UBI_DEBUG_MSG_BLD 480c06db59SHeiko Schocher 490c06db59SHeiko Schocher #undef CONFIG_MTD_UBI_BLOCK 500c06db59SHeiko Schocher 51d1cfeee9SAndrew Ruder /* ubi_init() disables returning error codes when built into the Linux 52d1cfeee9SAndrew Ruder * kernel so that it doesn't hang the Linux kernel boot process. Since 53d1cfeee9SAndrew Ruder * the U-Boot driver code depends on getting valid error codes from this 54d1cfeee9SAndrew Ruder * function we just tell the UBI layer that we are building as a module 55d1cfeee9SAndrew Ruder * (which only enables the additional error reporting). 56d1cfeee9SAndrew Ruder */ 57d1cfeee9SAndrew Ruder #define CONFIG_MTD_UBI_MODULE 58d1cfeee9SAndrew Ruder 597e6ee7adSKyungmin Park /* build.c */ 607e6ee7adSKyungmin Park #define get_device(...) 617e6ee7adSKyungmin Park #define put_device(...) 627e6ee7adSKyungmin Park #define ubi_sysfs_init(...) 0 637e6ee7adSKyungmin Park #define ubi_sysfs_close(...) do { } while (0) 647e6ee7adSKyungmin Park 659eefe2a2SStefan Roese #ifndef __UBIFS_H__ 667e6ee7adSKyungmin Park #include "../drivers/mtd/ubi/ubi.h" 679eefe2a2SStefan Roese #endif 687e6ee7adSKyungmin Park 697e6ee7adSKyungmin Park /* functions */ 707e6ee7adSKyungmin Park extern int ubi_mtd_param_parse(const char *val, struct kernel_param *kp); 717e6ee7adSKyungmin Park extern int ubi_init(void); 722ee951baSStefan Roese extern void ubi_exit(void); 7371829067SJoe Hershberger extern int ubi_part(char *part_name, const char *vid_header_offset); 7471829067SJoe Hershberger extern int ubi_volume_write(char *volume, void *buf, size_t size); 7571829067SJoe Hershberger extern int ubi_volume_read(char *volume, char *buf, size_t size); 767e6ee7adSKyungmin Park 777e6ee7adSKyungmin Park extern struct ubi_device *ubi_devices[]; 78*14dfc648STien Fong Chee int cmd_ubifs_mount(char *vol_name); 7910c20440STien Fong Chee int cmd_ubifs_umount(void); 807e6ee7adSKyungmin Park 817e6ee7adSKyungmin Park #endif 82