xref: /nrf52832-nimble/rt-thread/libcpu/mips/loongson_1b/ls1b.h (revision 104654410c56c573564690304ae786df310c91fc)
1*10465441SEvalZero /*
2*10465441SEvalZero  * File      : ls1b.h
3*10465441SEvalZero  * This file is part of RT-Thread RTOS
4*10465441SEvalZero  * COPYRIGHT (C) 2006-2011, RT-Thread Develop Team
5*10465441SEvalZero  *
6*10465441SEvalZero  * The license and distribution terms for this file may be
7*10465441SEvalZero  * found in the file LICENSE in this distribution or at
8*10465441SEvalZero  * http://www.rt-thread.org/license/LICENSE
9*10465441SEvalZero  *
10*10465441SEvalZero  * Change Logs:
11*10465441SEvalZero  * Date           Author       Notes
12*10465441SEvalZero  * 2011-08-08     lgnq         first version
13*10465441SEvalZero  */
14*10465441SEvalZero 
15*10465441SEvalZero #ifndef __LS1B_H__
16*10465441SEvalZero #define __LS1B_H__
17*10465441SEvalZero 
18*10465441SEvalZero #include "../common/mipsregs.h"
19*10465441SEvalZero 
20*10465441SEvalZero #define LS1B_ACPI_IRQ	0
21*10465441SEvalZero #define LS1B_HPET_IRQ	1
22*10465441SEvalZero #define LS1B_UART0_IRQ	2
23*10465441SEvalZero #define LS1B_UART1_IRQ	3
24*10465441SEvalZero #define LS1B_UART2_IRQ	4
25*10465441SEvalZero #define LS1B_UART3_IRQ	5
26*10465441SEvalZero #define LS1B_CAN0_IRQ	6
27*10465441SEvalZero #define LS1B_CAN1_IRQ	7
28*10465441SEvalZero #define LS1B_SPI0_IRQ	8
29*10465441SEvalZero #define LS1B_SPI1_IRQ	9
30*10465441SEvalZero #define LS1B_AC97_IRQ	10
31*10465441SEvalZero #define LS1B_MS_IRQ		11
32*10465441SEvalZero #define LS1B_KB_IRQ		12
33*10465441SEvalZero #define LS1B_DMA0_IRQ	13
34*10465441SEvalZero #define LS1B_DMA1_IRQ	14
35*10465441SEvalZero #define LS1B_NAND_IRQ	15
36*10465441SEvalZero #define LS1B_I2C0_IRQ	16
37*10465441SEvalZero #define LS1B_I2C1_IRQ	17
38*10465441SEvalZero #define LS1B_PWM0_IRQ	18
39*10465441SEvalZero #define LS1B_PWM1_IRQ	19
40*10465441SEvalZero #define LS1B_PWM2_IRQ	20
41*10465441SEvalZero #define LS1B_PWM3_IRQ	21
42*10465441SEvalZero #define LS1B_LPC_IRQ	22
43*10465441SEvalZero #define LS1B_EHCI_IRQ	32
44*10465441SEvalZero #define LS1B_OHCI_IRQ	33
45*10465441SEvalZero #define LS1B_GMAC1_IRQ	34
46*10465441SEvalZero #define LS1B_GMAC2_IRQ	35
47*10465441SEvalZero #define LS1B_SATA_IRQ	36
48*10465441SEvalZero #define LS1B_GPU_IRQ	37
49*10465441SEvalZero #define LS1B_PCI_INTA_IRQ 38
50*10465441SEvalZero #define LS1B_PCI_INTB_IRQ 39
51*10465441SEvalZero #define LS1B_PCI_INTC_IRQ 40
52*10465441SEvalZero #define LS1B_PCI_INTD_IRQ 41
53*10465441SEvalZero 
54*10465441SEvalZero #define LS1B_GPIO_IRQ 64
55*10465441SEvalZero #define LS1B_GPIO_FIRST_IRQ 64
56*10465441SEvalZero #define LS1B_GPIO_IRQ_COUNT 96
57*10465441SEvalZero #define LS1B_GPIO_LAST_IRQ  (LS1B_GPIO_FIRST_IRQ + LS1B_GPIO_IRQ_COUNT-1)
58*10465441SEvalZero 
59*10465441SEvalZero #define INT_PCI_INTA	(1<<6)
60*10465441SEvalZero #define INT_PCI_INTB	(1<<7)
61*10465441SEvalZero #define INT_PCI_INTC	(1<<8)
62*10465441SEvalZero #define INT_PCI_INTD	(1<<9)
63*10465441SEvalZero 
64*10465441SEvalZero #define LS1B_LAST_IRQ 159
65*10465441SEvalZero #define MIPS_CPU_TIMER_IRQ	167
66*10465441SEvalZero #define LS1B_INTREG_BASE 0xbfd01040
67*10465441SEvalZero 
68*10465441SEvalZero #define LS1B_DMA_IRQ_BASE 168
69*10465441SEvalZero #define LS1B_DMA_IRQ_COUNT 16
70*10465441SEvalZero 
71*10465441SEvalZero struct ls1b_intc_regs
72*10465441SEvalZero {
73*10465441SEvalZero 	volatile unsigned int int_isr;
74*10465441SEvalZero 	volatile unsigned int int_en;
75*10465441SEvalZero 	volatile unsigned int int_set;
76*10465441SEvalZero 	volatile unsigned int int_clr;		/* offset 0x10*/
77*10465441SEvalZero 	volatile unsigned int int_pol;
78*10465441SEvalZero    	volatile unsigned int int_edge;		/* offset 0 */
79*10465441SEvalZero };
80*10465441SEvalZero 
81*10465441SEvalZero struct ls1b_cop_global_regs
82*10465441SEvalZero {
83*10465441SEvalZero 	volatile unsigned int control;
84*10465441SEvalZero 	volatile unsigned int rd_inten;
85*10465441SEvalZero 	volatile unsigned int wr_inten;
86*10465441SEvalZero 	volatile unsigned int rd_intisr;		/* offset 0x10*/
87*10465441SEvalZero 	volatile unsigned int wr_intisr;
88*10465441SEvalZero 	unsigned int unused[11];
89*10465441SEvalZero } ;
90*10465441SEvalZero 
91*10465441SEvalZero struct ls1b_cop_channel_regs
92*10465441SEvalZero {
93*10465441SEvalZero 	volatile unsigned int rd_control;
94*10465441SEvalZero 	volatile unsigned int rd_src;
95*10465441SEvalZero 	volatile unsigned int rd_cnt;
96*10465441SEvalZero 	volatile unsigned int rd_status;		/* offset 0x10*/
97*10465441SEvalZero 	volatile unsigned int wr_control;
98*10465441SEvalZero 	volatile unsigned int wr_src;
99*10465441SEvalZero 	volatile unsigned int wr_cnt;
100*10465441SEvalZero 	volatile unsigned int wr_status;		/* offset 0x10*/
101*10465441SEvalZero } ;
102*10465441SEvalZero 
103*10465441SEvalZero struct ls1b_cop_regs
104*10465441SEvalZero {
105*10465441SEvalZero 	struct ls1b_cop_global_regs global;
106*10465441SEvalZero 	struct ls1b_cop_channel_regs chan[8][2];
107*10465441SEvalZero } ;
108*10465441SEvalZero 
109*10465441SEvalZero #define __REG8(addr)		*((volatile unsigned char *)(addr))
110*10465441SEvalZero #define __REG16(addr)		*((volatile unsigned short *)(addr))
111*10465441SEvalZero #define __REG32(addr)		*((volatile unsigned int *)(addr))
112*10465441SEvalZero 
113*10465441SEvalZero #define GMAC0_BASE			0xBFE10000
114*10465441SEvalZero #define GMAC0_DMA_BASE		0xBFE11000
115*10465441SEvalZero #define GMAC1_BASE			0xBFE20000
116*10465441SEvalZero #define GMAC1_DMA_BASE		0xBFE21000
117*10465441SEvalZero #define I2C0_BASE			0xBFE58000
118*10465441SEvalZero #define PWM0_BASE			0xBFE5C000
119*10465441SEvalZero #define PWM1_BASE			0xBFE5C010
120*10465441SEvalZero #define PWM2_BASE			0xBFE5C020
121*10465441SEvalZero #define PWM3_BASE			0xBFE5C030
122*10465441SEvalZero #define WDT_BASE			0xBFE5C060
123*10465441SEvalZero #define RTC_BASE			0xBFE64000
124*10465441SEvalZero #define I2C1_BASE			0xBFE68000
125*10465441SEvalZero #define I2C2_BASE			0xBFE70000
126*10465441SEvalZero #define AC97_BASE			0xBFE74000
127*10465441SEvalZero #define NAND_BASE			0xBFE78000
128*10465441SEvalZero #define SPI_BASE			0xBFE80000
129*10465441SEvalZero #define CAN1_BASE			0xBF004300
130*10465441SEvalZero #define CAN0_BASE			0xBF004400
131*10465441SEvalZero 
132*10465441SEvalZero /* Watch Dog registers */
133*10465441SEvalZero #define WDT_EN				__REG32(WDT_BASE + 0x00)
134*10465441SEvalZero #define WDT_SET				__REG32(WDT_BASE + 0x04)
135*10465441SEvalZero #define WDT_TIMER			__REG32(WDT_BASE + 0x08)
136*10465441SEvalZero 
137*10465441SEvalZero #define PLL_FREQ 				__REG32(0xbfe78030)
138*10465441SEvalZero #define PLL_DIV_PARAM 			__REG32(0xbfe78034)
139*10465441SEvalZero 
140*10465441SEvalZero #endif
141