xref: /OK3568_Linux_fs/kernel/arch/m68k/include/asm/bvme6000hw.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */
2*4882a593Smuzhiyun #ifndef _M68K_BVME6000HW_H_
3*4882a593Smuzhiyun #define _M68K_BVME6000HW_H_
4*4882a593Smuzhiyun 
5*4882a593Smuzhiyun #include <asm/irq.h>
6*4882a593Smuzhiyun 
7*4882a593Smuzhiyun /*
8*4882a593Smuzhiyun  * PIT structure
9*4882a593Smuzhiyun  */
10*4882a593Smuzhiyun 
11*4882a593Smuzhiyun #define BVME_PIT_BASE	0xffa00000
12*4882a593Smuzhiyun 
13*4882a593Smuzhiyun typedef struct {
14*4882a593Smuzhiyun 	unsigned char
15*4882a593Smuzhiyun 	pad_a[3], pgcr,
16*4882a593Smuzhiyun 	pad_b[3], psrr,
17*4882a593Smuzhiyun 	pad_c[3], paddr,
18*4882a593Smuzhiyun 	pad_d[3], pbddr,
19*4882a593Smuzhiyun 	pad_e[3], pcddr,
20*4882a593Smuzhiyun 	pad_f[3], pivr,
21*4882a593Smuzhiyun 	pad_g[3], pacr,
22*4882a593Smuzhiyun 	pad_h[3], pbcr,
23*4882a593Smuzhiyun 	pad_i[3], padr,
24*4882a593Smuzhiyun 	pad_j[3], pbdr,
25*4882a593Smuzhiyun 	pad_k[3], paar,
26*4882a593Smuzhiyun 	pad_l[3], pbar,
27*4882a593Smuzhiyun 	pad_m[3], pcdr,
28*4882a593Smuzhiyun 	pad_n[3], psr,
29*4882a593Smuzhiyun 	pad_o[3], res1,
30*4882a593Smuzhiyun 	pad_p[3], res2,
31*4882a593Smuzhiyun 	pad_q[3], tcr,
32*4882a593Smuzhiyun 	pad_r[3], tivr,
33*4882a593Smuzhiyun 	pad_s[3], res3,
34*4882a593Smuzhiyun 	pad_t[3], cprh,
35*4882a593Smuzhiyun 	pad_u[3], cprm,
36*4882a593Smuzhiyun 	pad_v[3], cprl,
37*4882a593Smuzhiyun 	pad_w[3], res4,
38*4882a593Smuzhiyun 	pad_x[3], crh,
39*4882a593Smuzhiyun 	pad_y[3], crm,
40*4882a593Smuzhiyun 	pad_z[3], crl,
41*4882a593Smuzhiyun 	pad_A[3], tsr,
42*4882a593Smuzhiyun 	pad_B[3], res5;
43*4882a593Smuzhiyun } PitRegs_t, *PitRegsPtr;
44*4882a593Smuzhiyun 
45*4882a593Smuzhiyun #define bvmepit   ((*(volatile PitRegsPtr)(BVME_PIT_BASE)))
46*4882a593Smuzhiyun 
47*4882a593Smuzhiyun #define BVME_RTC_BASE	0xff900000
48*4882a593Smuzhiyun 
49*4882a593Smuzhiyun typedef struct {
50*4882a593Smuzhiyun 	unsigned char
51*4882a593Smuzhiyun 	pad_a[3], msr,
52*4882a593Smuzhiyun 	pad_b[3], t0cr_rtmr,
53*4882a593Smuzhiyun 	pad_c[3], t1cr_omr,
54*4882a593Smuzhiyun 	pad_d[3], pfr_icr0,
55*4882a593Smuzhiyun 	pad_e[3], irr_icr1,
56*4882a593Smuzhiyun 	pad_f[3], bcd_tenms,
57*4882a593Smuzhiyun 	pad_g[3], bcd_sec,
58*4882a593Smuzhiyun 	pad_h[3], bcd_min,
59*4882a593Smuzhiyun 	pad_i[3], bcd_hr,
60*4882a593Smuzhiyun 	pad_j[3], bcd_dom,
61*4882a593Smuzhiyun 	pad_k[3], bcd_mth,
62*4882a593Smuzhiyun 	pad_l[3], bcd_year,
63*4882a593Smuzhiyun 	pad_m[3], bcd_ujcc,
64*4882a593Smuzhiyun 	pad_n[3], bcd_hjcc,
65*4882a593Smuzhiyun 	pad_o[3], bcd_dow,
66*4882a593Smuzhiyun 	pad_p[3], t0lsb,
67*4882a593Smuzhiyun 	pad_q[3], t0msb,
68*4882a593Smuzhiyun 	pad_r[3], t1lsb,
69*4882a593Smuzhiyun 	pad_s[3], t1msb,
70*4882a593Smuzhiyun 	pad_t[3], cmp_sec,
71*4882a593Smuzhiyun 	pad_u[3], cmp_min,
72*4882a593Smuzhiyun 	pad_v[3], cmp_hr,
73*4882a593Smuzhiyun 	pad_w[3], cmp_dom,
74*4882a593Smuzhiyun 	pad_x[3], cmp_mth,
75*4882a593Smuzhiyun 	pad_y[3], cmp_dow,
76*4882a593Smuzhiyun 	pad_z[3], sav_sec,
77*4882a593Smuzhiyun 	pad_A[3], sav_min,
78*4882a593Smuzhiyun 	pad_B[3], sav_hr,
79*4882a593Smuzhiyun 	pad_C[3], sav_dom,
80*4882a593Smuzhiyun 	pad_D[3], sav_mth,
81*4882a593Smuzhiyun 	pad_E[3], ram,
82*4882a593Smuzhiyun 	pad_F[3], test;
83*4882a593Smuzhiyun } RtcRegs_t, *RtcPtr_t;
84*4882a593Smuzhiyun 
85*4882a593Smuzhiyun 
86*4882a593Smuzhiyun #define BVME_I596_BASE	0xff100000
87*4882a593Smuzhiyun 
88*4882a593Smuzhiyun #define BVME_ETHIRQ_REG	0xff20000b
89*4882a593Smuzhiyun 
90*4882a593Smuzhiyun #define BVME_LOCAL_IRQ_STAT  0xff20000f
91*4882a593Smuzhiyun 
92*4882a593Smuzhiyun #define BVME_ETHERR          0x02
93*4882a593Smuzhiyun #define BVME_ABORT_STATUS    0x08
94*4882a593Smuzhiyun 
95*4882a593Smuzhiyun #define BVME_NCR53C710_BASE	0xff000000
96*4882a593Smuzhiyun 
97*4882a593Smuzhiyun #define BVME_SCC_A_ADDR	0xffb0000b
98*4882a593Smuzhiyun #define BVME_SCC_B_ADDR	0xffb00003
99*4882a593Smuzhiyun #define BVME_SCC_RTxC	7372800
100*4882a593Smuzhiyun 
101*4882a593Smuzhiyun #define BVME_CONFIG_REG	0xff500003
102*4882a593Smuzhiyun 
103*4882a593Smuzhiyun #define config_reg_ptr	(volatile unsigned char *)BVME_CONFIG_REG
104*4882a593Smuzhiyun 
105*4882a593Smuzhiyun #define BVME_CONFIG_SW1	0x08
106*4882a593Smuzhiyun #define BVME_CONFIG_SW2	0x04
107*4882a593Smuzhiyun #define BVME_CONFIG_SW3	0x02
108*4882a593Smuzhiyun #define BVME_CONFIG_SW4	0x01
109*4882a593Smuzhiyun 
110*4882a593Smuzhiyun 
111*4882a593Smuzhiyun #define BVME_IRQ_TYPE_PRIO	0
112*4882a593Smuzhiyun 
113*4882a593Smuzhiyun #define BVME_IRQ_PRN		(IRQ_USER+20)
114*4882a593Smuzhiyun #define BVME_IRQ_TIMER		(IRQ_USER+25)
115*4882a593Smuzhiyun #define BVME_IRQ_I596		IRQ_AUTO_2
116*4882a593Smuzhiyun #define BVME_IRQ_SCSI		IRQ_AUTO_3
117*4882a593Smuzhiyun #define BVME_IRQ_RTC		IRQ_AUTO_6
118*4882a593Smuzhiyun #define BVME_IRQ_ABORT		IRQ_AUTO_7
119*4882a593Smuzhiyun 
120*4882a593Smuzhiyun /* SCC interrupts */
121*4882a593Smuzhiyun #define BVME_IRQ_SCC_BASE		IRQ_USER
122*4882a593Smuzhiyun #define BVME_IRQ_SCCB_TX		IRQ_USER
123*4882a593Smuzhiyun #define BVME_IRQ_SCCB_STAT		(IRQ_USER+2)
124*4882a593Smuzhiyun #define BVME_IRQ_SCCB_RX		(IRQ_USER+4)
125*4882a593Smuzhiyun #define BVME_IRQ_SCCB_SPCOND		(IRQ_USER+6)
126*4882a593Smuzhiyun #define BVME_IRQ_SCCA_TX		(IRQ_USER+8)
127*4882a593Smuzhiyun #define BVME_IRQ_SCCA_STAT		(IRQ_USER+10)
128*4882a593Smuzhiyun #define BVME_IRQ_SCCA_RX		(IRQ_USER+12)
129*4882a593Smuzhiyun #define BVME_IRQ_SCCA_SPCOND		(IRQ_USER+14)
130*4882a593Smuzhiyun 
131*4882a593Smuzhiyun /* Address control registers */
132*4882a593Smuzhiyun 
133*4882a593Smuzhiyun #define BVME_ACR_A32VBA		0xff400003
134*4882a593Smuzhiyun #define BVME_ACR_A32MSK		0xff410003
135*4882a593Smuzhiyun #define BVME_ACR_A24VBA		0xff420003
136*4882a593Smuzhiyun #define BVME_ACR_A24MSK		0xff430003
137*4882a593Smuzhiyun #define BVME_ACR_A16VBA		0xff440003
138*4882a593Smuzhiyun #define BVME_ACR_A32LBA		0xff450003
139*4882a593Smuzhiyun #define BVME_ACR_A24LBA		0xff460003
140*4882a593Smuzhiyun #define BVME_ACR_ADDRCTL	0xff470003
141*4882a593Smuzhiyun 
142*4882a593Smuzhiyun #define bvme_acr_a32vba		*(volatile unsigned char *)BVME_ACR_A32VBA
143*4882a593Smuzhiyun #define bvme_acr_a32msk		*(volatile unsigned char *)BVME_ACR_A32MSK
144*4882a593Smuzhiyun #define bvme_acr_a24vba		*(volatile unsigned char *)BVME_ACR_A24VBA
145*4882a593Smuzhiyun #define bvme_acr_a24msk		*(volatile unsigned char *)BVME_ACR_A24MSK
146*4882a593Smuzhiyun #define bvme_acr_a16vba		*(volatile unsigned char *)BVME_ACR_A16VBA
147*4882a593Smuzhiyun #define bvme_acr_a32lba		*(volatile unsigned char *)BVME_ACR_A32LBA
148*4882a593Smuzhiyun #define bvme_acr_a24lba		*(volatile unsigned char *)BVME_ACR_A24LBA
149*4882a593Smuzhiyun #define bvme_acr_addrctl	*(volatile unsigned char *)BVME_ACR_ADDRCTL
150*4882a593Smuzhiyun 
151*4882a593Smuzhiyun #endif
152