1/*
2 *      Copyright (c) 2001 Maciej W. Rozycki
3 *
4 *      This program is free software; you can redistribute it and/or
5 *      modify it under the terms of the GNU General Public License
6 *      as published by the Free Software Foundation; either version
7 *      2 of the License, or (at your option) any later version.
8 */
9
10#include <linux/ioport.h>
11#include <linux/mtd/mtd.h>
12
13/* MS02-NV iomem register offsets. */
14#define MS02NV_CSR		0x400000	/* control & status register */
15
16/* MS02-NV memory offsets. */
17#define MS02NV_DIAG		0x0003f8	/* diagnostic status */
18#define MS02NV_MAGIC		0x0003fc	/* MS02-NV magic ID */
19#define MS02NV_RAM		0x000400	/* general-purpose RAM start */
20
21/* MS02-NV diagnostic status constants. */
22#define MS02NV_DIAG_SIZE_MASK	0xf0		/* RAM size mask */
23#define MS02NV_DIAG_SIZE_SHIFT	0x10		/* RAM size shift (left) */
24
25/* MS02-NV general constants. */
26#define MS02NV_ID		0x03021966	/* MS02-NV magic ID value */
27#define MS02NV_SLOT_SIZE	0x800000	/* size of the address space
28						   decoded by the module */
29
30typedef volatile u32 ms02nv_uint;
31
32struct ms02nv_private {
33	struct mtd_info *next;
34	struct {
35		struct resource *module;
36		struct resource *diag_ram;
37		struct resource *user_ram;
38		struct resource *csr;
39	} resource;
40	u_char *addr;
41	size_t size;
42	u_char *uaddr;
43};
44