1#-
2# Copyright (C) 2009-2012 Semihalf
3# All rights reserved.
4#
5# Redistribution and use in source and binary forms, with or without
6# modification, are permitted provided that the following conditions
7# are met:
8# 1. Redistributions of source code must retain the above copyright
9#    notice, this list of conditions and the following disclaimer.
10# 2. Redistributions in binary form must reproduce the above copyright
11#    notice, this list of conditions and the following disclaimer in the
12#    documentation and/or other materials provided with the distribution.
13#
14# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24# SUCH DAMAGE.
25#
26# $FreeBSD$
27
28# NAND bus interface description
29#
30
31#include <sys/bus.h>
32#include <dev/nand/nand.h>
33
34INTERFACE nandbus;
35
36METHOD int get_status {
37	device_t	dev;
38	uint8_t	*	status;
39};
40
41METHOD void read_buffer {
42	device_t	dev;
43	void *		buf;
44	uint32_t	len;
45};
46
47METHOD int select_cs {
48	device_t	dev;
49	uint8_t		cs;
50};
51
52METHOD int send_command {
53	device_t	dev;
54	uint8_t		command;
55};
56
57METHOD int send_address {
58	device_t	dev;
59	uint8_t		address;
60};
61
62METHOD int start_command {
63	device_t	dev;
64};
65
66METHOD int wait_ready {
67	device_t 	dev;
68	uint8_t *	status;	
69}
70
71METHOD void write_buffer {
72	device_t	dev;
73	void *		buf;
74	uint32_t	len;
75};
76
77METHOD int get_ecc {
78	device_t	dev;
79	void *		buf;
80	uint32_t	pagesize;
81	void *		ecc;
82	int *		needwrite;
83};
84
85METHOD int correct_ecc {
86	device_t	dev;
87	void *		buf;
88	int		pagesize;
89	void *		readecc;
90	void *		calcecc;
91};
92
93METHOD void lock {
94	device_t	dev;
95};
96
97METHOD void unlock {
98	device_t	dev;
99};
100	
101