summaryrefslogtreecommitdiff
path: root/sys/dev/ic/w83l518dreg.h
blob: 3497df8ed1e3c359f6e70bae8b1c89d0b8d46a02 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
/*	$OpenBSD: w83l518dreg.h,v 1.1 2009/10/03 19:51:53 kettenis Exp $	*/
/*	$NetBSD: w83l518dreg.h,v 1.1 2009/09/30 20:44:50 jmcneill Exp $ */

/*
 * Copyright (c) 2009 Jared D. McNeill <jmcneill@invisible.ca>
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. The name of the author may not be used to endorse or promote products
 *    derived from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 */

#ifndef _SYS_DEV_IC_W83L518DREG_H
#define _SYS_DEV_IC_W83L518DREG_H

/*
 * Global Registers
 */

#define	WB_REG_RESET		0x02
#define	 WB_RESET_SWRST		 0x01	/* software reset */

#define	WB_REG_DEVNO		0x07
#define	 WB_DEVNO_SC		 0x00	/* Smart Card interface */
#define	 WB_DEVNO_MS		 0x01	/* Memory Stick interface */
#define	 WB_DEVNO_GPIO		 0x02	/* GPIO */
#define	 WB_DEVNO_SD		 0x03	/* SD memory card interface */

#define	WB_REG_DEVID_HI		0x20
#define	WB_REG_DEVID_LO		0x21
#define	 WB_DEVID_W83L518D	 0x7110
#define	 WB_DEVID_W83L519D	 0x7120
#define	 WB_DEVID_REVISION(id)	 ((id) & 0xf)

#define	WB_REG_POWER		0x22
#define	 WB_POWER_SC		 0x80	/* Smart Card interface */
#define	 WB_POWER_MS		 0x40	/* Memory Stick interface */
#define	 WB_POWER_SD		 0x20	/* SD memory card interface */

#define	WB_REG_PME		0x23
#define	 WB_PME_PME_EN		 0x80	/* Global PM event enable */
#define	 WB_PME_MSPME_EN	 0x40	/* MS PM event enable */
#define	 WB_PME_SDPME_EN	 0x20	/* SD PM event enable */
#define	 WB_PME_SCPME_EN	 0x10	/* SC PM event enable */

#define	WB_REG_PMESTS		0x24	/* PM event status */
#define	 WB_PMESTS_MSPME_STS	 0x40	/* MS PM event status */
#define	 WB_PMESTS_SDPME_STS	 0x20	/* SD PM event status */
#define	 WB_PMESTS_SCPME_STS	 0x10	/* SC PM event status */

#define	WB_REG_CFG		0x26
#define	 WB_CFG_HEFRAS		 0x40	/* Extended func reg addr select */
#define	 WB_CFG_LOCKREG		 0x20	/* Config register access control */

#define	WB_REG_MFSEL		0x29	/* Multi-function sel (518 only) */

/*
 * Logical Device Interface
 */

#define WB_REG_DEV_EN		0x30
#define	 WB_DEV_EN_ACTIVE	 0x01	/* Logical device active bit */

#define	WB_REG_DEV_BASE_HI	0x60
#define	WB_REG_DEV_BASE_LO	0x61

#define	WB_REG_DEV_IRQ		0x70
#define	 WB_DEV_IRQ_MASK	 0x0f

#define	WB_REG_DEV_DRQ		0x74
#define	 WB_DEV_DRQ_MASK	 0x0f

#define	WB_REG_DEV_MISC		0xf0
#define	 WB_DEV_MISC_SCIRQ_SHR	 0x80	/* SC: IRQ sharing control */
#define	 WB_DEV_MISC_SCPSNT_POL	 0x01	/* SC: SC present polarity */
#define	 WB_DEV_MISC_MSIRQ_POLL	 0x10	/* MS: IRQ polarity control (level) */
#define	 WB_DEV_MISC_MSIRQ_POLP	 0x08	/* MS: IRQ polarity control (pulse) */
#define	 WB_DEV_MISC_MSIRQ_SHR	 0x04	/* MS: IRQ sharing control */
#define	 WB_DEV_MISC_MS4OUT_POL	 0x02	/* MS: MS4 output polarity control */
#define	 WB_DEV_MISC_MS4OUT_EN	 0x01	/* MS: MS4 output enable */
#define	 WB_DEV_MISC_SDDATA3_HI	 0x20	/* SD: DATA3 pin will output high */
#define	 WB_DEV_MISC_SDDATA3_OUT 0x10	/* SD: DATA3 pin to output pin */
#define	 WB_DEV_MISC_SDGP11_HI	 0x04	/* SD: GP11 card-detect pin pole */
#define	 WB_DEV_MISC_SDGP11_DET	 0x02	/* SD: GP11 card-detect enable */
#define	 WB_DEV_MISC_SDDATA3_DET 0x01	/* SD: DATA3 card-detect enable */

#define	WB_REG_DEV_IRQCFG	0xf1
#define	 WB_DEV_IRQCFG_HI_L	 0x08
#define	 WB_DEV_IRQCFG_HI_P	 0x04
#define	 WB_DEV_IRQCFG_MODE	 0x02
#define	 WB_DEV_IRQCFG_DEBOUNCE	 0x01

/*
 * SD Card interface registers
 */

#define WB_SD_COMMAND		0x00
#define	WB_SD_FIFO		0x01
#define	WB_SD_INTCTL		0x02
#define	WB_SD_INTSTS		0x03
#define	 WB_INT_PENDING		 0x80
#define	 WB_INT_CARD		 0x40
#define	 WB_INT_FIFO		 0x20
#define	 WB_INT_CRC		 0x10
#define	 WB_INT_TIMEOUT		 0x08
#define	 WB_INT_PROGEND		 0x04
#define	 WB_INT_BUSYEND		 0x02
#define	 WB_INT_TC		 0x01
#define	 WB_INT_DEFAULT	\
	  (WB_INT_CARD|WB_INT_FIFO|WB_INT_CRC|WB_INT_TIMEOUT)
#define	WB_SD_FIFOSTS		0x04
#define	 WB_FIFO_EMPTY		 0x80
#define	 WB_FIFO_FULL		 0x40
#define	 WB_FIFO_EMPTY_THRES	 0x20
#define	 WB_FIFO_FULL_THRES	 0x10
#define	 WB_FIFO_DEPTH_MASK	 0x0f
#define	WB_SD_INDEX		0x05
#define	 WB_INDEX_CLK		 0x01
#define	  WB_CLK_375K		  0x00
#define	  WB_CLK_12M		  0x01
#define	  WB_CLK_16M		  0x02
#define	  WB_CLK_24M		  0x03
#define	 WB_INDEX_PBSMSB	 0x02
#define	 WB_INDEX_TAAC		 0x03
#define	 WB_INDEX_NSAC		 0x04
#define	 WB_INDEX_PBSLSB	 0x05
#define	 WB_INDEX_SETUP		 0x06
#define	  WB_SETUP_DATA3_HI	  0x08
#define	  WB_SETUP_FIFO_RST	  0x04
#define	  WB_SETUP_SOFT_RST	  0x02
#define	 WB_INDEX_DMA		 0x07
#define	 WB_INDEX_FIFOEN	 0x08
#define	  WB_FIFOEN_EMPTY	  0x20
#define	  WB_FIFOEN_FULL	  0x10
#define	 WB_INDEX_STATUS	 0x10
#define	  WB_STATUS_BLOCK_READ	  0x80
#define	  WB_STATUS_BLOCK_WRITE	  0x40
#define	  WB_STATUS_BUSY	  0x20
#define	  WB_STATUS_CARD_TRAFFIC  0x04
#define	  WB_STATUS_SEND_COMMAND  0x02
#define	  WB_STATUS_RECV_RES	  0x01
#define	 WB_INDEX_RESPLEN	 0x1e
#define	 WB_INDEX_RESP(n)	 (0x1f + (n))
#define	 WB_INDEX_CRCSTS	 0x30
#define	 WB_INDEX_ISR		 0x3f
#define	WB_SD_DATA		0x06
#define	WB_SD_CSR		0x07
#define	 WB_CSR_MS_LED		 0x20
#define	 WB_CSR_POWER_N		 0x10
#define	 WB_CSR_WRITE_PROTECT	 0x04
#define	 WB_CSR_CARD_PRESENT	 0x01

#endif