285 lines
		
	
	
		
			8.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			285 lines
		
	
	
		
			8.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
|  | /*
 | ||
|  |  * File      : x1000.h | ||
|  |  * This file is part of RT-Thread RTOS | ||
|  |  * COPYRIGHT (C) 2008 - 2012, RT-Thread Development Team | ||
|  |  * | ||
|  |  *  This program is free software; you can redistribute it and/or modify | ||
|  |  *  it under the terms of the GNU General Public License as published by | ||
|  |  *  the Free Software Foundation; either version 2 of the License, or | ||
|  |  *  (at your option) any later version. | ||
|  |  * | ||
|  |  *  This program is distributed in the hope that it will be useful, | ||
|  |  *  but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
|  |  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||
|  |  *  GNU General Public License for more details. | ||
|  |  * | ||
|  |  *  You should have received a copy of the GNU General Public License along | ||
|  |  *  with this program; if not, write to the Free Software Foundation, Inc., | ||
|  |  *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||
|  |  * | ||
|  |  * Change Logs: | ||
|  |  * Date           Author       Notes | ||
|  |  * 2015-11-19     Urey         the first version | ||
|  |  */ | ||
|  | 
 | ||
|  | #ifndef __X1000_H__
 | ||
|  | #define __X1000_H__
 | ||
|  | 
 | ||
|  | #include "../common/mips.h"
 | ||
|  | 
 | ||
|  | #ifndef __ASSEMBLY__
 | ||
|  | 
 | ||
|  | #define cache_unroll(base,op)               \
 | ||
|  |     __asm__ __volatile__("                  \
 | ||
|  |         .set noreorder;                     \ | ||
|  |         .set mips3;                         \ | ||
|  |         cache %1, (%0);                     \ | ||
|  |         .set mips0;                         \ | ||
|  |         .set reorder"                       \
 | ||
|  |         :                                   \ | ||
|  |         : "r" (base),                       \ | ||
|  |           "i" (op)); | ||
|  | 
 | ||
|  | /* cpu pipeline flush */ | ||
|  | static inline void jz_sync(void) | ||
|  | { | ||
|  |     __asm__ volatile ("sync"); | ||
|  | } | ||
|  | 
 | ||
|  | static inline void writeb(u8 value, u32 address) | ||
|  | { | ||
|  |     *((volatile u8 *) address) = value; | ||
|  | } | ||
|  | static inline void writew( u16 value, u32 address) | ||
|  | { | ||
|  |     *((volatile u16 *) address) = value; | ||
|  | } | ||
|  | static inline void writel(u32 value, u32 address) | ||
|  | { | ||
|  |     *((volatile u32 *) address) = value; | ||
|  | } | ||
|  | 
 | ||
|  | static inline u8 readb(u32 address) | ||
|  | { | ||
|  |     return *((volatile u8 *)address); | ||
|  | } | ||
|  | 
 | ||
|  | static inline u16 readw(u32 address) | ||
|  | { | ||
|  |     return *((volatile u16 *)address); | ||
|  | } | ||
|  | 
 | ||
|  | static inline u32 readl(u32 address) | ||
|  | { | ||
|  |     return *((volatile u32 *)address); | ||
|  | } | ||
|  | 
 | ||
|  | static inline void jz_writeb(u32 address, u8 value) | ||
|  | { | ||
|  |     *((volatile u8 *)address) = value; | ||
|  | } | ||
|  | 
 | ||
|  | static inline void jz_writew(u32 address, u16 value) | ||
|  | { | ||
|  |     *((volatile u16 *)address) = value; | ||
|  | } | ||
|  | 
 | ||
|  | static inline void jz_writel(u32 address, u32 value) | ||
|  | { | ||
|  |     *((volatile u32 *)address) = value; | ||
|  | } | ||
|  | 
 | ||
|  | static inline u8 jz_readb(u32 address) | ||
|  | { | ||
|  |     return *((volatile u8 *)address); | ||
|  | } | ||
|  | 
 | ||
|  | static inline u16 jz_readw(u32 address) | ||
|  | { | ||
|  |     return *((volatile u16 *)address); | ||
|  | } | ||
|  | 
 | ||
|  | static inline u32 jz_readl(u32 address) | ||
|  | { | ||
|  |     return *((volatile u32 *)address); | ||
|  | } | ||
|  | 
 | ||
|  | #define BIT(n)          (0x01u << (n))
 | ||
|  | #define BIT0            (0x01u <<  0)
 | ||
|  | #define BIT1            (0x01u <<  1)
 | ||
|  | #define BIT2            (0x01u <<  2)
 | ||
|  | #define BIT3            (0x01u <<  3)
 | ||
|  | #define BIT4            (0x01u <<  4)
 | ||
|  | #define BIT5            (0x01u <<  5)
 | ||
|  | #define BIT6            (0x01u <<  6)
 | ||
|  | #define BIT7            (0x01u <<  7)
 | ||
|  | #define BIT8            (0x01u <<  8)
 | ||
|  | #define BIT9            (0x01u <<  9)
 | ||
|  | #define BIT10           (0x01u << 10)
 | ||
|  | #define BIT11           (0x01u << 11)
 | ||
|  | #define BIT12           (0x01u << 12)
 | ||
|  | #define BIT13           (0x01u << 13)
 | ||
|  | #define BIT14           (0x01u << 14)
 | ||
|  | #define BIT15           (0x01u << 15)
 | ||
|  | #define BIT16           (0x01u << 16)
 | ||
|  | #define BIT17           (0x01u << 17)
 | ||
|  | #define BIT18           (0x01u << 18)
 | ||
|  | #define BIT19           (0x01u << 19)
 | ||
|  | #define BIT20           (0x01u << 20)
 | ||
|  | #define BIT21           (0x01u << 21)
 | ||
|  | #define BIT22           (0x01u << 22)
 | ||
|  | #define BIT23           (0x01u << 23)
 | ||
|  | #define BIT24           (0x01u << 24)
 | ||
|  | #define BIT25           (0x01u << 25)
 | ||
|  | #define BIT26           (0x01u << 26)
 | ||
|  | #define BIT27           (0x01u << 27)
 | ||
|  | #define BIT28           (0x01u << 28)
 | ||
|  | #define BIT29           (0x01u << 29)
 | ||
|  | #define BIT30           (0x01u << 30)
 | ||
|  | #define BIT31           (0x01u << 31)
 | ||
|  | 
 | ||
|  | /* Generate the bit field mask from msb to lsb */ | ||
|  | #define BITS_H2L(msb, lsb)  ((0xFFFFFFFF >> (32-((msb)-(lsb)+1))) << (lsb))
 | ||
|  | 
 | ||
|  | 
 | ||
|  | /* Get the bit field value from the data which is read from the register */ | ||
|  | #define get_bf_value(data, lsb, mask)  (((data) & (mask)) >> (lsb))
 | ||
|  | 
 | ||
|  | #endif /* !ASSEMBLY */
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //----------------------------------------------------------------------
 | ||
|  | // Register Definitions
 | ||
|  | //
 | ||
|  | /* AHB0 BUS Devices Base */ | ||
|  | #define HARB0_BASE  0xB3000000
 | ||
|  | #define EMC_BASE    0xB3010000
 | ||
|  | #define DDRC_BASE   0xB3020000
 | ||
|  | #define MDMAC_BASE  0xB3030000
 | ||
|  | #define LCD_BASE    0xB3050000
 | ||
|  | #define TVE_BASE    0xB3050000
 | ||
|  | #define SLCD_BASE   0xB3050000
 | ||
|  | #define CIM_BASE    0xB3060000
 | ||
|  | #define IPU_BASE    0xB3080000
 | ||
|  | /* AHB1 BUS Devices Base */ | ||
|  | #define HARB1_BASE  0xB3200000
 | ||
|  | #define DMAGP0_BASE 0xB3210000
 | ||
|  | #define DMAGP1_BASE 0xB3220000
 | ||
|  | #define DMAGP2_BASE 0xB3230000
 | ||
|  | #define MC_BASE     0xB3250000
 | ||
|  | #define ME_BASE     0xB3260000
 | ||
|  | #define DEBLK_BASE  0xB3270000
 | ||
|  | #define IDCT_BASE   0xB3280000
 | ||
|  | #define CABAC_BASE  0xB3290000
 | ||
|  | #define TCSM0_BASE  0xB32B0000
 | ||
|  | #define TCSM1_BASE  0xB32C0000
 | ||
|  | #define SRAM_BASE   0xB32D0000
 | ||
|  | /* AHB2 BUS Devices Base */ | ||
|  | #define HARB2_BASE  0xB3400000
 | ||
|  | #define NEMC_BASE   0xB3410000
 | ||
|  | #define DMAC_BASE   0xB3420000
 | ||
|  | #define UHC_BASE    0xB3430000
 | ||
|  | //#define UDC_BASE    0xB3440000
 | ||
|  | #define SFC_BASE	 0xB3440000
 | ||
|  | #define GPS_BASE    0xB3480000
 | ||
|  | #define ETHC_BASE   0xB34B0000
 | ||
|  | #define BCH_BASE    0xB34D0000
 | ||
|  | #define MSC0_BASE   0xB3450000
 | ||
|  | #define MSC1_BASE   0xB3460000
 | ||
|  | #define MSC2_BASE   0xB3470000
 | ||
|  | #define OTG_BASE    0xb3500000
 | ||
|  | 
 | ||
|  | /* APB BUS Devices Base */ | ||
|  | #define CPM_BASE    0xB0000000
 | ||
|  | #define INTC_BASE   0xB0001000
 | ||
|  | #define TCU_BASE    0xB0002000
 | ||
|  | #define WDT_BASE    0xB0002000
 | ||
|  | #define OST_BASE    0xB2000000      /* OS Timer */
 | ||
|  | #define RTC_BASE    0xB0003000
 | ||
|  | #define GPIO_BASE   0xB0010000
 | ||
|  | #define AIC_BASE    0xB0020000
 | ||
|  | #define DMIC_BASE   0xB0021000
 | ||
|  | #define ICDC_BASE   0xB0020000
 | ||
|  | #define UART0_BASE  0xB0030000
 | ||
|  | #define UART1_BASE  0xB0031000
 | ||
|  | #define UART2_BASE  0xB0032000
 | ||
|  | #define SCC_BASE    0xB0040000
 | ||
|  | #define SSI0_BASE   0xB0043000
 | ||
|  | #define SSI1_BASE   0xB0044000
 | ||
|  | #define SSI2_BASE   0xB0045000
 | ||
|  | #define I2C0_BASE   0xB0050000
 | ||
|  | #define I2C1_BASE   0xB0051000
 | ||
|  | #define I2C2_BASE   0xB0052000
 | ||
|  | #define PS2_BASE    0xB0060000
 | ||
|  | #define SADC_BASE   0xB0070000
 | ||
|  | #define OWI_BASE    0xB0072000
 | ||
|  | #define TSSI_BASE   0xB0073000
 | ||
|  | 
 | ||
|  | /* NAND CHIP Base Address*/ | ||
|  | #define NEMC_CS1_IOBASE 0Xbb000000
 | ||
|  | #define NEMC_CS2_IOBASE 0Xba000000
 | ||
|  | #define NEMC_CS3_IOBASE 0Xb9000000
 | ||
|  | #define NEMC_CS4_IOBASE 0Xb8000000
 | ||
|  | #define NEMC_CS5_IOBASE 0Xb7000000
 | ||
|  | #define NEMC_CS6_IOBASE 0Xb6000000
 | ||
|  | 
 | ||
|  | /*********************************************************************************************************
 | ||
|  | **   WDT | ||
|  | *********************************************************************************************************/ | ||
|  | #define WDT_TDR         (0x00)
 | ||
|  | #define WDT_TCER        (0x04)
 | ||
|  | #define WDT_TCNT        (0x08)
 | ||
|  | #define WDT_TCSR        (0x0C)
 | ||
|  | 
 | ||
|  | #define REG_WDT_TDR     REG16(WDT_BASE + WDT_TDR)
 | ||
|  | #define REG_WDT_TCER    REG8(WDT_BASE + WDT_TCER)
 | ||
|  | #define REG_WDT_TCNT    REG16(WDT_BASE + WDT_TCNT)
 | ||
|  | #define REG_WDT_TCSR    REG16(WDT_BASE + WDT_TCSR)
 | ||
|  | 
 | ||
|  | #define WDT_TSCR_WDTSC          (1 << 16)
 | ||
|  | 
 | ||
|  | #define WDT_TCSR_PRESCALE_1         (0 << 3)
 | ||
|  | #define WDT_TCSR_PRESCALE_4         (1 << 3)
 | ||
|  | #define WDT_TCSR_PRESCALE_16        (2 << 3)
 | ||
|  | #define WDT_TCSR_PRESCALE_64        (3 << 3)
 | ||
|  | #define WDT_TCSR_PRESCALE_256       (4 << 3)
 | ||
|  | #define WDT_TCSR_PRESCALE_1024      (5 << 3)
 | ||
|  | 
 | ||
|  | #define WDT_TCSR_EXT_EN         (1 << 2)
 | ||
|  | #define WDT_TCSR_RTC_EN         (1 << 1)
 | ||
|  | #define WDT_TCSR_PCK_EN         (1 << 0)
 | ||
|  | 
 | ||
|  | #define WDT_TCER_TCEN           (1 << 0)
 | ||
|  | 
 | ||
|  | /* RTC Reg */ | ||
|  | #define RTC_RTCCR		(0x00)	/* rw, 32, 0x00000081 */
 | ||
|  | #define RTC_RTCSR		(0x04)	/* rw, 32, 0x???????? */
 | ||
|  | #define RTC_RTCSAR		(0x08)	/* rw, 32, 0x???????? */
 | ||
|  | #define RTC_RTCGR		(0x0c)	/* rw, 32, 0x0??????? */
 | ||
|  | #define RTC_HCR			(0x20)  /* rw, 32, 0x00000000 */
 | ||
|  | #define RTC_HWFCR		(0x24)  /* rw, 32, 0x0000???0 */
 | ||
|  | #define RTC_HRCR		(0x28)  /* rw, 32, 0x00000??0 */
 | ||
|  | #define RTC_HWCR		(0x2c)  /* rw, 32, 0x00000008 */
 | ||
|  | #define RTC_HWRSR		(0x30)  /* rw, 32, 0x00000000 */
 | ||
|  | #define RTC_HSPR		(0x34)  /* rw, 32, 0x???????? */
 | ||
|  | #define RTC_WENR		(0x3c)  /* rw, 32, 0x00000000 */
 | ||
|  | #define RTC_CKPCR		(0x40)  /* rw, 32, 0x00000010 */
 | ||
|  | #define RTC_OWIPCR		(0x44)  /* rw, 32, 0x00000010 */
 | ||
|  | #define RTC_PWRONCR		(0x48)  /* rw, 32, 0x???????? */
 | ||
|  | 
 | ||
|  | #define RTCCR_WRDY				BIT(7)
 | ||
|  | #define WENR_WEN                BIT(31)
 | ||
|  | 
 | ||
|  | #define RECOVERY_SIGNATURE	(0x001a1a)
 | ||
|  | #define REBOOT_SIGNATURE	(0x003535)
 | ||
|  | #define UNMSAK_SIGNATURE	(0x7c0000)//do not use these bits
 | ||
|  | 
 | ||
|  | 
 | ||
|  | #include "x1000_cpm.h"
 | ||
|  | #include "x1000_intc.h"
 | ||
|  | #include "x1000_otg_dwc.h"
 | ||
|  | #include "x1000_aic.h"
 | ||
|  | #include "x1000_slcdc.h"
 | ||
|  | 
 | ||
|  | #endif /* _JZ_M150_H_ */
 |