1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * Header file for OneNAND support for U-Boot 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * Adaptation from kernel to U-Boot 5*4882a593Smuzhiyun * 6*4882a593Smuzhiyun * Copyright (C) 2005-2007 Samsung Electronics 7*4882a593Smuzhiyun * Kyungmin Park <kyungmin.park@samsung.com> 8*4882a593Smuzhiyun * 9*4882a593Smuzhiyun * This program is free software; you can redistribute it and/or modify 10*4882a593Smuzhiyun * it under the terms of the GNU General Public License version 2 as 11*4882a593Smuzhiyun * published by the Free Software Foundation. 12*4882a593Smuzhiyun */ 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun #ifndef __UBOOT_ONENAND_H 15*4882a593Smuzhiyun #define __UBOOT_ONENAND_H 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun #include <linux/types.h> 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun /* Forward declarations */ 20*4882a593Smuzhiyun struct mtd_info; 21*4882a593Smuzhiyun struct mtd_oob_ops; 22*4882a593Smuzhiyun struct erase_info; 23*4882a593Smuzhiyun struct onenand_chip; 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun extern struct mtd_info onenand_mtd; 26*4882a593Smuzhiyun extern struct onenand_chip onenand_chip; 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun /* board */ 29*4882a593Smuzhiyun extern int onenand_board_init(struct mtd_info *); 30*4882a593Smuzhiyun 31*4882a593Smuzhiyun /* Functions */ 32*4882a593Smuzhiyun extern void onenand_init(void); 33*4882a593Smuzhiyun extern int onenand_read(struct mtd_info *mtd, loff_t from, size_t len, 34*4882a593Smuzhiyun size_t * retlen, u_char * buf); 35*4882a593Smuzhiyun extern int onenand_read_oob(struct mtd_info *mtd, loff_t from, struct mtd_oob_ops *ops); 36*4882a593Smuzhiyun extern int onenand_write(struct mtd_info *mtd, loff_t from, size_t len, 37*4882a593Smuzhiyun size_t * retlen, const u_char * buf); 38*4882a593Smuzhiyun extern int onenand_erase(struct mtd_info *mtd, struct erase_info *instr); 39*4882a593Smuzhiyun 40*4882a593Smuzhiyun extern char *onenand_print_device_info(int device, int version); 41*4882a593Smuzhiyun 42*4882a593Smuzhiyun extern unsigned onenand_block(struct onenand_chip *this, loff_t addr); 43*4882a593Smuzhiyun 44*4882a593Smuzhiyun extern loff_t onenand_addr(struct onenand_chip *this, int block); 45*4882a593Smuzhiyun 46*4882a593Smuzhiyun extern int flexonenand_region(struct mtd_info *mtd, loff_t addr); 47*4882a593Smuzhiyun 48*4882a593Smuzhiyun extern int flexonenand_set_boundary(struct mtd_info *mtd, int die, 49*4882a593Smuzhiyun int boundary, int lock); 50*4882a593Smuzhiyun 51*4882a593Smuzhiyun /* SPL */ 52*4882a593Smuzhiyun int onenand_spl_read_block(int block, int offset, int len, void *dst); 53*4882a593Smuzhiyun void onenand_spl_load_image(uint32_t offs, uint32_t size, void *dst); 54*4882a593Smuzhiyun 55*4882a593Smuzhiyun #endif /* __UBOOT_ONENAND_H */ 56