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