1 /* $NetBSD: gcscpcibreg.h,v 1.1 2011/08/27 12:47:49 bouyer Exp $ */
2 /* $OpenBSD: glxpcib.c,v 1.6 2007/11/17 17:02:47 mbalmer Exp $        */
3 
4 /*
5  * Copyright (c) 2007 Marc Balmer <mbalmer@openbsd.org>
6  * Copyright (c) 2007 Michael Shalayeff
7  * All rights reserved.
8  *
9  * Permission to use, copy, modify, and distribute this software for any
10  * purpose with or without fee is hereby granted, provided that the above
11  * copyright notice and this permission notice appear in all copies.
12  *
13  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
14  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
15  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
16  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
17  * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER IN
18  * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
19  * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
20  */
21 
22 /*
23  * Register definitions for the AMD CS5535/CS5536 Companion Device.
24  */
25 
26 #ifndef _IC_GCSCPCIBREG_H_
27 #define _IC_GCSCPCIBREG_H_
28 
29 #define   AMD553X_REV                   0x51400017
30 #define   AMD553X_REV_MASK    0xff
31 #define   AMD553X_TMC                   0x51400050
32 
33 /* Multi-Functional General Purpose Timer */
34 #define   MSR_LBAR_MFGPT                0x5140000d
35 #define AMD553X_MFGPT_MAX     6         /* 6 timers for wdog */
36 #define AMD553X_MFGPT_REGOFFSET         0x8
37 #define   AMD553X_MFGPTX_CMP1(x)        (0x00000000 + (AMD553X_MFGPT_REGOFFSET * (x)))
38 #define   AMD553X_MFGPTX_CMP2(x)        (0x00000002 + (AMD553X_MFGPT_REGOFFSET * (x)))
39 #define   AMD553X_MFGPTX_CNT(x)         (0x00000004 + (AMD553X_MFGPT_REGOFFSET * (x)))
40 #define   AMD553X_MFGPTX_SETUP(x)       (0x00000006 + (AMD553X_MFGPT_REGOFFSET * (x)))
41 #define   AMD553X_MFGPT_DIV_MASK        0x000f    /* div = 1 << mask */
42 #define     AMD553X_MFGPT_DIV_1         0x0000
43 #define     AMD553X_MFGPT_DIV_2         0x0001
44 #define     AMD553X_MFGPT_DIV_4         0x0002
45 #define     AMD553X_MFGPT_DIV_8         0x0003
46 #define     AMD553X_MFGPT_DIV_16        0x0004
47 #define     AMD553X_MFGPT_DIV_32        0x0005
48 #define     AMD553X_MFGPT_DIV_64        0x0006
49 #define     AMD553X_MFGPT_DIV_128       0x0007
50 #define     AMD553X_MFGPT_DIV_256       0x0008
51 #define     AMD553X_MFGPT_DIV_512       0x0009
52 #define     AMD553X_MFGPT_DIV_1K        0x000a
53 #define     AMD553X_MFGPT_DIV_2K        0x000b
54 #define     AMD553X_MFGPT_DIV_4K        0x000c
55 #define     AMD553X_MFGPT_DIV_8K        0x000d
56 #define     AMD553X_MFGPT_DIV_16K       0x000e
57 #define     AMD553X_MFGPT_DIV_32K       0x000f
58 #define   AMD553X_MFGPT_CLKSEL          0x0010
59 #define   AMD553X_MFGPT_REV_EN          0x0020
60 #define   AMD553X_MFGPT_CMP1DIS         0x0000
61 #define   AMD553X_MFGPT_CMP1EQ          0x0040
62 #define   AMD553X_MFGPT_CMP1GE          0x0080
63 #define   AMD553X_MFGPT_CMP1EV          0x00c0
64 #define   AMD553X_MFGPT_CMP2DIS         0x0000
65 #define   AMD553X_MFGPT_CMP2EQ          0x0100
66 #define   AMD553X_MFGPT_CMP2GE          0x0200
67 #define   AMD553X_MFGPT_CMP2EV          0x0300
68 #define   AMD553X_MFGPT_STOP_EN         0x0800
69 #define   AMD553X_MFGPT_SET   0x1000
70 #define   AMD553X_MFGPT_CMP1  0x2000
71 #define   AMD553X_MFGPT_CMP2  0x4000
72 #define   AMD553X_MFGPT_CNT_EN          0x8000
73 #define   AMD553X_MFGPT_IRQ   0x51400028
74 #define   AMD553X_MFGPT0_C1_IRQM        0x00000001
75 #define   AMD553X_MFGPT1_C1_IRQM        0x00000002
76 #define   AMD553X_MFGPT2_C1_IRQM        0x00000004
77 #define   AMD553X_MFGPT3_C1_IRQM        0x00000008
78 #define   AMD553X_MFGPT4_C1_IRQM        0x00000010
79 #define   AMD553X_MFGPT5_C1_IRQM        0x00000020
80 #define   AMD553X_MFGPT6_C1_IRQM        0x00000040
81 #define   AMD553X_MFGPT7_C1_IRQM        0x00000080
82 #define   AMD553X_MFGPT0_C2_IRQM        0x00000100
83 #define   AMD553X_MFGPT1_C2_IRQM        0x00000200
84 #define   AMD553X_MFGPT2_C2_IRQM        0x00000400
85 #define   AMD553X_MFGPT3_C2_IRQM        0x00000800
86 #define   AMD553X_MFGPT4_C2_IRQM        0x00001000
87 #define   AMD553X_MFGPT5_C2_IRQM        0x00002000
88 #define   AMD553X_MFGPT6_C2_IRQM        0x00004000
89 #define   AMD553X_MFGPT7_C2_IRQM        0x00008000
90 #define   AMD553X_MFGPT_NR    0x51400029 /* NMI and Reset mask */
91 #define   AMD553X_MFGPT0_C1_NMIM        0x00000001
92 #define   AMD553X_MFGPT1_C1_NMIM        0x00000002
93 #define   AMD553X_MFGPT2_C1_NMIM        0x00000004
94 #define   AMD553X_MFGPT3_C1_NMIM        0x00000008
95 #define   AMD553X_MFGPT4_C1_NMIM        0x00000010
96 #define   AMD553X_MFGPT5_C1_NMIM        0x00000020
97 #define   AMD553X_MFGPT6_C1_NMIM        0x00000040
98 #define   AMD553X_MFGPT7_C1_NMIM        0x00000080
99 #define   AMD553X_MFGPT0_C2_NMIM        0x00000100
100 #define   AMD553X_MFGPT1_C2_NMIM        0x00000200
101 #define   AMD553X_MFGPT2_C2_NMIM        0x00000400
102 #define   AMD553X_MFGPT3_C2_NMIM        0x00000800
103 #define   AMD553X_MFGPT4_C2_NMIM        0x00001000
104 #define   AMD553X_MFGPT5_C2_NMIM        0x00002000
105 #define   AMD553X_MFGPT6_C2_NMIM        0x00004000
106 #define   AMD553X_MFGPT7_C2_NMIM        0x00008000
107 #define   AMD553X_NMI_LEG               0x00010000
108 #define   AMD553X_MFGPT0_C2_RSTEN       0x01000000
109 #define   AMD553X_MFGPT1_C2_RSTEN       0x02000000
110 #define   AMD553X_MFGPT2_C2_RSTEN       0x04000000
111 #define   AMD553X_MFGPT3_C2_RSTEN       0x08000000
112 #define   AMD553X_MFGPT4_C2_RSTEN       0x10000000
113 #define   AMD553X_MFGPT5_C2_RSTEN       0x20000000
114 #define   AMD553X_MFGPT_SETUP 0x5140002b
115 
116 /* SMB / IIC */
117 #define   MSR_LBAR_SMB                  0x5140000b
118 
119 /* GPIO */
120 #define   MSR_LBAR_GPIO                 0x5140000c
121 #define   AMD553X_GPIO_NPINS  32
122 #define   AMD553X_GPIOH_OFFSET          0x80      /* high bank register offset */
123 #define   AMD553X_GPIO_OUT_VAL          0x00      /* output value */
124 #define   AMD553X_GPIO_OUT_EN 0x04      /* output enable */
125 #define   AMD553X_GPIO_OD_EN  0x08      /* open-drain enable */
126 #define AMD553X_GPIO_OUT_INVRT_EN 0x0c  /* invert output enable*/
127 #define   AMD553X_GPIO_PU_EN  0x18      /* pull-up enable */
128 #define   AMD553X_GPIO_PD_EN  0x1c      /* pull-down enable */
129 #define   AMD553X_GPIO_IN_EN  0x20      /* input enable */
130 #define AMD553X_GPIO_IN_INVRT_EN 0x24   /* invert input */
131 #define   AMD553X_GPIO_IN_FLTR_EN       0x28      /* filter enable */
132 #define   AMD553X_GPIO_IN_EVNTCNT_EN    0x2c      /* event counter enable */
133 #define   AMD553X_GPIO_READ_BACK        0x30      /* read back value */
134 #define   AMD553X_GPIO_EVNT_EN          0x38      /* event enable */
135 #define   AMD553X_GPIO_LOCK_EN          0x3c      /* lock enable */
136 #define   AMD553X_GPIO_IN_PE_EN         0x40      /* input positive edge enable */
137 #define   AMD553X_GPIO_IN_NE_EN         0x44      /* input negative edge enable */
138 #define   AMD553X_GPIO_IN_NE_STS        0x48      /* input negative edge status */
139 #define   AMD553X_GPIO_IN_PE_STS        0x4c      /* input positive edge status */
140 
141 #endif /* _IC_GCSCPCIBREG_H_ */
142