xref: /netbsd-src/sys/arch/hpcmips/vr/flashreg.h (revision ce099b40997c43048fb78bd578195f81d2456523)
1*ce099b40Smartin /* $NetBSD: flashreg.h,v 1.2 2008/04/28 20:23:22 martin Exp $ */
2f8bc0014Sigy 
3f8bc0014Sigy /*
4f8bc0014Sigy  * Copyright (c) 2002 The NetBSD Foundation, Inc.
5f8bc0014Sigy  * All rights reserved.
6f8bc0014Sigy  *
7f8bc0014Sigy  * This code is derived from software contributed to The NetBSD Foundation
8f8bc0014Sigy  * by Naoto Shimazaki of YOKOGAWA Electric Corporation.
9f8bc0014Sigy  *
10f8bc0014Sigy  * Redistribution and use in source and binary forms, with or without
11f8bc0014Sigy  * modification, are permitted provided that the following conditions
12f8bc0014Sigy  * are met:
13f8bc0014Sigy  * 1. Redistributions of source code must retain the above copyright
14f8bc0014Sigy  *    notice, this list of conditions and the following disclaimer.
15f8bc0014Sigy  * 2. Redistributions in binary form must reproduce the above copyright
16f8bc0014Sigy  *    notice, this list of conditions and the following disclaimer in the
17f8bc0014Sigy  *    documentation and/or other materials provided with the distribution.
18f8bc0014Sigy  *
19f8bc0014Sigy  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
20f8bc0014Sigy  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
21f8bc0014Sigy  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22f8bc0014Sigy  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
23f8bc0014Sigy  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24f8bc0014Sigy  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25f8bc0014Sigy  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26f8bc0014Sigy  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27f8bc0014Sigy  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28f8bc0014Sigy  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29f8bc0014Sigy  * POSSIBILITY OF SUCH DAMAGE.
30f8bc0014Sigy  */
31f8bc0014Sigy 
32f8bc0014Sigy /*
33f8bc0014Sigy  * Intel 28F128 Flash Memory registers
34f8bc0014Sigy  */
35f8bc0014Sigy 
36f8bc0014Sigy #define	I28F128_BLOCK_SIZE	0x20000		/* 128Kbyte */
37f8bc0014Sigy #define	I28F128_BLOCK_MASK	0x1ffff		/* 128Kbyte */
38f8bc0014Sigy 
39f8bc0014Sigy #define	I28F128_MANUFACT	0x89
40f8bc0014Sigy #define	I28F128_DEVCODE		0x18
41f8bc0014Sigy #define	I28F128_PRIM_COMM0	0x01
42f8bc0014Sigy #define	I28F128_PRIM_COMM1	0x00
43f8bc0014Sigy #define	I28F128_PRIM_EXT_TBL0	0x31
44f8bc0014Sigy #define	I28F128_PRIM_EXT_TBL1	0x00
45f8bc0014Sigy 
46f8bc0014Sigy #define	I28F128_RESET		0xff
47f8bc0014Sigy #define	I28F128_READ_ARRAY	I28F128_RESET
48f8bc0014Sigy #define	I28F128_READ_ID		0x90
49f8bc0014Sigy #define	I28F128_READ_STATUS	0x70
50f8bc0014Sigy #define	I28F128_CLEAR_STATUS	0x50
51f8bc0014Sigy 
52f8bc0014Sigy #define	I28F128_BLK_ERASE_1ST	0x20
53f8bc0014Sigy #define	I28F128_BLK_ERASE_2ND	0xd0
54f8bc0014Sigy #define	I28F128_WORDBYTE_PROG	0x40
55f8bc0014Sigy #define	I28F128_WRITE_BUFFER	0xe8
56f8bc0014Sigy #define	I28F128_WBUF_CONFIRM	0xd0
57f8bc0014Sigy 
58f8bc0014Sigy #define	I28F128_S_READY		0x80
59f8bc0014Sigy #define	I28F128_S_ERASE_SUSPEND	0x40
60f8bc0014Sigy #define	I28F128_S_COMSEQ_ERROR	0x30
61f8bc0014Sigy #define	I28F128_S_ERASE_ERROR	0x20
62f8bc0014Sigy #define	I28F128_S_PROG_ERROR	0x10
63f8bc0014Sigy #define	I28F128_S_LOW_VOLTAGE	0x08
64f8bc0014Sigy #define	I28F128_S_PROG_SUSPEND	0x04
65f8bc0014Sigy #define	I28F128_S_BLOCK_LOCKED	0x02
66f8bc0014Sigy 
67f8bc0014Sigy #define	I28F128_XS_BUF_AVAIL	0x80
68f8bc0014Sigy 
69f8bc0014Sigy #define	I28F128_BUFFER_SIZE	0x20
70f8bc0014Sigy 
71f8bc0014Sigy #define	I28F128_BLOCK_ERASE_TIME	1000000	/* usec */
72f8bc0014Sigy #define	I28F128_WRITE_BUFFER_TIMEOUT	800	/* usec */
73f8bc0014Sigy #define	I28F128_WRITE_WORD_TIMEOUT	800	/* usec */
74f8bc0014Sigy 
75f8bc0014Sigy 
76f8bc0014Sigy #define	MBM29LV160_MANUFACT	0x04
77f8bc0014Sigy #define	MBM29LV160TE_DEVCODE	0x22c4
78f8bc0014Sigy #define	MBM29LV160BE_DEVCODE	0x2249
79f8bc0014Sigy 
80f8bc0014Sigy #define	MBM29LV160_SUBSECT_MASK		0x000f8000
81f8bc0014Sigy #define	MBM29LV160TE_SUBSECT_ADDR	0x000f8000
82f8bc0014Sigy #define	MBM29LV160BE_SUBSECT_ADDR	0x00000000
83f8bc0014Sigy 
84f8bc0014Sigy #define	MBM29LV160_COMM_ADDR0	(0x555 << 1)
85f8bc0014Sigy #define	MBM29LV160_COMM_ADDR1	(0x2aa << 1)
86f8bc0014Sigy #define	MBM29LV160_COMM_ADDR2	(0x555 << 1)
87f8bc0014Sigy #define	MBM29LV160_COMM_ADDR3	(0x555 << 1)
88f8bc0014Sigy #define	MBM29LV160_COMM_ADDR4	(0x2aa << 1)
89f8bc0014Sigy #define	MBM29LV160_COMM_ADDR5	(0x555 << 1)
90f8bc0014Sigy 
91f8bc0014Sigy #define	MBM29LV160_COMM_CMD0	0xaa
92f8bc0014Sigy #define	MBM29LV160_COMM_CMD1	0x55
93f8bc0014Sigy 
94f8bc0014Sigy #define	MBM29LV160_SIGN_CMD2	0x90
95f8bc0014Sigy #define	MBM29LV160_PROG_CMD2	0xa0
96f8bc0014Sigy #define	MBM29LV160_ESECT_CMD2	0x80
97f8bc0014Sigy #define	MBM29LV160_ESECT_CMD3	0xaa
98f8bc0014Sigy #define	MBM29LV160_ESECT_CMD4	0x55
99f8bc0014Sigy #define	MBM29LV160_ESECT_CMD5	0x30
100f8bc0014Sigy 
101f8bc0014Sigy #define	MBM29LV160_DEVCODE_REG	0x02
102f8bc0014Sigy 
103f8bc0014Sigy #define	MBM29LV160_SECT_SIZE	0x00010000
104f8bc0014Sigy #define	MBM29LV160_SUBSECT_SIZE	0x00002000
105