18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
28c2ecf20Sopenharmony_ci#ifndef _MVME147HW_H_
38c2ecf20Sopenharmony_ci#define _MVME147HW_H_
48c2ecf20Sopenharmony_ci
58c2ecf20Sopenharmony_ci#include <asm/irq.h>
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_citypedef struct {
88c2ecf20Sopenharmony_ci	unsigned char
98c2ecf20Sopenharmony_ci		ctrl,
108c2ecf20Sopenharmony_ci		bcd_sec,
118c2ecf20Sopenharmony_ci		bcd_min,
128c2ecf20Sopenharmony_ci		bcd_hr,
138c2ecf20Sopenharmony_ci		bcd_dow,
148c2ecf20Sopenharmony_ci		bcd_dom,
158c2ecf20Sopenharmony_ci		bcd_mth,
168c2ecf20Sopenharmony_ci		bcd_year;
178c2ecf20Sopenharmony_ci} MK48T02;
188c2ecf20Sopenharmony_ci
198c2ecf20Sopenharmony_ci#define RTC_WRITE	0x80
208c2ecf20Sopenharmony_ci#define RTC_READ	0x40
218c2ecf20Sopenharmony_ci#define RTC_STOP	0x20
228c2ecf20Sopenharmony_ci
238c2ecf20Sopenharmony_ci#define m147_rtc ((MK48T02 * volatile)0xfffe07f8)
248c2ecf20Sopenharmony_ci
258c2ecf20Sopenharmony_ci
268c2ecf20Sopenharmony_cistruct pcc_regs {
278c2ecf20Sopenharmony_ci   volatile u_long	dma_tadr;
288c2ecf20Sopenharmony_ci   volatile u_long	dma_dadr;
298c2ecf20Sopenharmony_ci   volatile u_long	dma_bcr;
308c2ecf20Sopenharmony_ci   volatile u_long	dma_hr;
318c2ecf20Sopenharmony_ci   volatile u_short	t1_preload;
328c2ecf20Sopenharmony_ci   volatile u_short	t1_count;
338c2ecf20Sopenharmony_ci   volatile u_short	t2_preload;
348c2ecf20Sopenharmony_ci   volatile u_short	t2_count;
358c2ecf20Sopenharmony_ci   volatile u_char	t1_int_cntrl;
368c2ecf20Sopenharmony_ci   volatile u_char	t1_cntrl;
378c2ecf20Sopenharmony_ci   volatile u_char	t2_int_cntrl;
388c2ecf20Sopenharmony_ci   volatile u_char	t2_cntrl;
398c2ecf20Sopenharmony_ci   volatile u_char	ac_fail;
408c2ecf20Sopenharmony_ci   volatile u_char	watchdog;
418c2ecf20Sopenharmony_ci   volatile u_char	lpt_intr;
428c2ecf20Sopenharmony_ci   volatile u_char	lpt_cntrl;
438c2ecf20Sopenharmony_ci   volatile u_char	dma_intr;
448c2ecf20Sopenharmony_ci   volatile u_char	dma_cntrl;
458c2ecf20Sopenharmony_ci   volatile u_char	bus_error;
468c2ecf20Sopenharmony_ci   volatile u_char	dma_status;
478c2ecf20Sopenharmony_ci   volatile u_char	abort;
488c2ecf20Sopenharmony_ci   volatile u_char	ta_fnctl;
498c2ecf20Sopenharmony_ci   volatile u_char	serial_cntrl;
508c2ecf20Sopenharmony_ci   volatile u_char	general_cntrl;
518c2ecf20Sopenharmony_ci   volatile u_char	lan_cntrl;
528c2ecf20Sopenharmony_ci   volatile u_char	general_status;
538c2ecf20Sopenharmony_ci   volatile u_char	scsi_interrupt;
548c2ecf20Sopenharmony_ci   volatile u_char	slave;
558c2ecf20Sopenharmony_ci   volatile u_char	soft1_cntrl;
568c2ecf20Sopenharmony_ci   volatile u_char	int_base;
578c2ecf20Sopenharmony_ci   volatile u_char	soft2_cntrl;
588c2ecf20Sopenharmony_ci   volatile u_char	revision_level;
598c2ecf20Sopenharmony_ci   volatile u_char	lpt_data;
608c2ecf20Sopenharmony_ci   volatile u_char	lpt_status;
618c2ecf20Sopenharmony_ci   };
628c2ecf20Sopenharmony_ci
638c2ecf20Sopenharmony_ci#define m147_pcc ((struct pcc_regs * volatile)0xfffe1000)
648c2ecf20Sopenharmony_ci
658c2ecf20Sopenharmony_ci
668c2ecf20Sopenharmony_ci#define PCC_INT_ENAB		0x08
678c2ecf20Sopenharmony_ci
688c2ecf20Sopenharmony_ci#define PCC_TIMER_INT_CLR	0x80
698c2ecf20Sopenharmony_ci
708c2ecf20Sopenharmony_ci#define PCC_TIMER_TIC_EN	0x01
718c2ecf20Sopenharmony_ci#define PCC_TIMER_COC_EN	0x02
728c2ecf20Sopenharmony_ci#define PCC_TIMER_CLR_OVF	0x04
738c2ecf20Sopenharmony_ci
748c2ecf20Sopenharmony_ci#define PCC_LEVEL_ABORT		0x07
758c2ecf20Sopenharmony_ci#define PCC_LEVEL_SERIAL	0x04
768c2ecf20Sopenharmony_ci#define PCC_LEVEL_ETH		0x04
778c2ecf20Sopenharmony_ci#define PCC_LEVEL_TIMER1	0x04
788c2ecf20Sopenharmony_ci#define PCC_LEVEL_SCSI_PORT	0x04
798c2ecf20Sopenharmony_ci#define PCC_LEVEL_SCSI_DMA	0x04
808c2ecf20Sopenharmony_ci
818c2ecf20Sopenharmony_ci#define PCC_IRQ_AC_FAIL		(IRQ_USER+0)
828c2ecf20Sopenharmony_ci#define PCC_IRQ_BERR		(IRQ_USER+1)
838c2ecf20Sopenharmony_ci#define PCC_IRQ_ABORT		(IRQ_USER+2)
848c2ecf20Sopenharmony_ci/* #define PCC_IRQ_SERIAL	(IRQ_USER+3) */
858c2ecf20Sopenharmony_ci#define PCC_IRQ_PRINTER		(IRQ_USER+7)
868c2ecf20Sopenharmony_ci#define PCC_IRQ_TIMER1		(IRQ_USER+8)
878c2ecf20Sopenharmony_ci#define PCC_IRQ_TIMER2		(IRQ_USER+9)
888c2ecf20Sopenharmony_ci#define PCC_IRQ_SOFTWARE1	(IRQ_USER+10)
898c2ecf20Sopenharmony_ci#define PCC_IRQ_SOFTWARE2	(IRQ_USER+11)
908c2ecf20Sopenharmony_ci
918c2ecf20Sopenharmony_ci
928c2ecf20Sopenharmony_ci#define M147_SCC_A_ADDR		0xfffe3002
938c2ecf20Sopenharmony_ci#define M147_SCC_B_ADDR		0xfffe3000
948c2ecf20Sopenharmony_ci#define M147_SCC_PCLK		5000000
958c2ecf20Sopenharmony_ci
968c2ecf20Sopenharmony_ci#define MVME147_IRQ_SCSI_PORT	(IRQ_USER+0x45)
978c2ecf20Sopenharmony_ci#define MVME147_IRQ_SCSI_DMA	(IRQ_USER+0x46)
988c2ecf20Sopenharmony_ci
998c2ecf20Sopenharmony_ci/* SCC interrupts, for MVME147 */
1008c2ecf20Sopenharmony_ci
1018c2ecf20Sopenharmony_ci#define MVME147_IRQ_TYPE_PRIO	0
1028c2ecf20Sopenharmony_ci#define MVME147_IRQ_SCC_BASE		(IRQ_USER+32)
1038c2ecf20Sopenharmony_ci#define MVME147_IRQ_SCCB_TX		(IRQ_USER+32)
1048c2ecf20Sopenharmony_ci#define MVME147_IRQ_SCCB_STAT		(IRQ_USER+34)
1058c2ecf20Sopenharmony_ci#define MVME147_IRQ_SCCB_RX		(IRQ_USER+36)
1068c2ecf20Sopenharmony_ci#define MVME147_IRQ_SCCB_SPCOND		(IRQ_USER+38)
1078c2ecf20Sopenharmony_ci#define MVME147_IRQ_SCCA_TX		(IRQ_USER+40)
1088c2ecf20Sopenharmony_ci#define MVME147_IRQ_SCCA_STAT		(IRQ_USER+42)
1098c2ecf20Sopenharmony_ci#define MVME147_IRQ_SCCA_RX		(IRQ_USER+44)
1108c2ecf20Sopenharmony_ci#define MVME147_IRQ_SCCA_SPCOND		(IRQ_USER+46)
1118c2ecf20Sopenharmony_ci
1128c2ecf20Sopenharmony_ci#define MVME147_LANCE_BASE	0xfffe1800
1138c2ecf20Sopenharmony_ci#define MVME147_LANCE_IRQ	(IRQ_USER+4)
1148c2ecf20Sopenharmony_ci
1158c2ecf20Sopenharmony_ci#define ETHERNET_ADDRESS 0xfffe0778
1168c2ecf20Sopenharmony_ci
1178c2ecf20Sopenharmony_ci#endif
118