1 /* $NetBSD: dev_flash.c,v 1.4 2009/03/18 17:06:44 cegger Exp $ */
4 * Copyright (c) 2003 Naoto Shimazaki.
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
16 * THIS SOFTWARE IS PROVIDED BY NAOTO SHIMAZAKI AND CONTRIBUTORS ``AS IS''
17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
18 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE NAOTO OR CONTRIBUTORS BE
20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
26 * THE POSSIBILITY OF SUCH DAMAGE.
28 #include <sys/cdefs.h>
29 __KERNEL_RCSID(0, "$NetBSD: dev_flash.c,v 1.4 2009/03/18 17:06:44 cegger Exp $");
31 #include <sys/param.h>
32 #include <lib/libsa/stand.h>
33 #include <machine/stdarg.h>
37 #define READ_CHUNK 0x10000
40 flash_strategy(void *devdata
, int rw
, daddr_t blk
,
41 size_t size
, void *buf
, size_t *rsize
)
49 src
= (u_int8_t
*) KERN_ROMBASE
+ dbtob(blk
);
50 count
= size
< READ_CHUNK
? size
: READ_CHUNK
;
51 memcpy(buf
, src
, count
);
57 flash_open(struct open_file
*f
, ...)
64 fname
= va_arg(ap
, char *);
65 file
= va_arg(ap
, char **);
74 flash_close(struct open_file
*f
)
80 flash_ioctl(struct open_file
*f
, u_long cmd
, void *data
)