1  /* SPDX-License-Identifier: GPL-2.0-only */
2  /*
3   * cisreg.h
4   *
5   * The initial developer of the original code is David A. Hinds
6   * <dahinds@users.sourceforge.net>.  Portions created by David A. Hinds
7   * are Copyright (C) 1999 David A. Hinds.  All Rights Reserved.
8   *
9   * (C) 1999             David A. Hinds
10   */
11  
12  #ifndef _LINUX_CISREG_H
13  #define _LINUX_CISREG_H
14  
15  /*
16   * Offsets from ConfigBase for CIS registers
17   */
18  #define CISREG_COR		0x00
19  #define CISREG_CCSR		0x02
20  #define CISREG_PRR		0x04
21  #define CISREG_SCR		0x06
22  #define CISREG_ESR		0x08
23  #define CISREG_IOBASE_0		0x0a
24  #define CISREG_IOBASE_1		0x0c
25  #define CISREG_IOBASE_2		0x0e
26  #define CISREG_IOBASE_3		0x10
27  #define CISREG_IOSIZE		0x12
28  
29  /*
30   * Configuration Option Register
31   */
32  #define COR_CONFIG_MASK		0x3f
33  #define COR_MFC_CONFIG_MASK	0x38
34  #define COR_FUNC_ENA		0x01
35  #define COR_ADDR_DECODE		0x02
36  #define COR_IREQ_ENA		0x04
37  #define COR_LEVEL_REQ		0x40
38  #define COR_SOFT_RESET		0x80
39  
40  /*
41   * Card Configuration and Status Register
42   */
43  #define CCSR_INTR_ACK		0x01
44  #define CCSR_INTR_PENDING	0x02
45  #define CCSR_POWER_DOWN		0x04
46  #define CCSR_AUDIO_ENA		0x08
47  #define CCSR_IOIS8		0x20
48  #define CCSR_SIGCHG_ENA		0x40
49  #define CCSR_CHANGED		0x80
50  
51  /*
52   * Pin Replacement Register
53   */
54  #define PRR_WP_STATUS		0x01
55  #define PRR_READY_STATUS	0x02
56  #define PRR_BVD2_STATUS		0x04
57  #define PRR_BVD1_STATUS		0x08
58  #define PRR_WP_EVENT		0x10
59  #define PRR_READY_EVENT		0x20
60  #define PRR_BVD2_EVENT		0x40
61  #define PRR_BVD1_EVENT		0x80
62  
63  /*
64   * Socket and Copy Register
65   */
66  #define SCR_SOCKET_NUM		0x0f
67  #define SCR_COPY_NUM		0x70
68  
69  /*
70   * Extended Status Register
71   */
72  #define ESR_REQ_ATTN_ENA	0x01
73  #define ESR_REQ_ATTN		0x10
74  
75  /*
76   * CardBus Function Status Registers
77   */
78  #define CBFN_EVENT		0x00
79  #define CBFN_MASK		0x04
80  #define CBFN_STATE		0x08
81  #define CBFN_FORCE		0x0c
82  
83  /*
84   * These apply to all the CardBus function registers
85   */
86  #define CBFN_WP			0x0001
87  #define CBFN_READY		0x0002
88  #define CBFN_BVD2		0x0004
89  #define CBFN_BVD1		0x0008
90  #define CBFN_GWAKE		0x0010
91  #define CBFN_INTR		0x8000
92  
93  /*
94   * Extra bits in the Function Event Mask Register
95   */
96  #define FEMR_BAM_ENA		0x0020
97  #define FEMR_PWM_ENA		0x0040
98  #define FEMR_WKUP_MASK		0x4000
99  
100  /*
101   * Indirect Addressing Registers for Zoomed Video: these are addresses
102   * in common memory space
103   */
104  #define CISREG_ICTRL0		0x02	/* control registers */
105  #define CISREG_ICTRL1		0x03
106  #define CISREG_IADDR0		0x04	/* address registers */
107  #define CISREG_IADDR1		0x05
108  #define CISREG_IADDR2		0x06
109  #define CISREG_IADDR3		0x07
110  #define CISREG_IDATA0		0x08	/* data registers */
111  #define CISREG_IDATA1		0x09
112  
113  #define ICTRL0_COMMON		0x01
114  #define ICTRL0_AUTOINC		0x02
115  #define ICTRL0_BYTEGRAN		0x04
116  
117  #endif /* _LINUX_CISREG_H */
118