Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/arch/mips/ingenic moar registers!
details: https://anonhg.NetBSD.org/src/rev/612a450b47ea
branches: trunk
changeset: 804921:612a450b47ea
user: macallan <macallan%NetBSD.org@localhost>
date: Sat Dec 06 14:33:34 2014 +0000
description:
moar registers!
diffstat:
sys/arch/mips/ingenic/ingenic_regs.h | 92 +++++++++++++++++++++++++++++++++--
1 files changed, 86 insertions(+), 6 deletions(-)
diffs (120 lines):
diff -r 7ab71c3c1cac -r 612a450b47ea sys/arch/mips/ingenic/ingenic_regs.h
--- a/sys/arch/mips/ingenic/ingenic_regs.h Sat Dec 06 14:33:18 2014 +0000
+++ b/sys/arch/mips/ingenic/ingenic_regs.h Sat Dec 06 14:33:34 2014 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: ingenic_regs.h,v 1.1 2014/11/22 15:17:01 macallan Exp $ */
+/* $NetBSD: ingenic_regs.h,v 1.2 2014/12/06 14:33:34 macallan Exp $ */
/*-
* Copyright (c) 2014 Michael Lorenz
@@ -46,7 +46,7 @@
#define JZ_WDOG_TCSR 0x1000200c
#define TCSR_PCK_EN 0x01 /* PCLK */
#define TCSR_RTC_EN 0x02 /* RTCCLK - 32.768kHz */
- #define TCSR_EXT_EN 0x04 /* EXTCLK - 12MHz? */
+ #define TCSR_EXT_EN 0x04 /* EXTCLK - 48MHz */
#define TCSR_PRESCALE_M 0x38
#define TCSR_DIV_1 0x00
#define TCSR_DIV_4 0x08
@@ -63,11 +63,33 @@
#define TESR_TCST2 0x0004 /* enable counter 2 */
#define TESR_TCST3 0x0008 /* enable counter 3 */
#define TESR_TCST4 0x0010 /* enable counter 4 */
- #define TESR_TCST5 0x0014 /* enable counter 5 */
- #define TESR_TCST6 0x0018 /* enable counter 6 */
- #define TESR_TCST7 0x001c /* enable counter 7 */
+ #define TESR_TCST5 0x0020 /* enable counter 5 */
+ #define TESR_TCST6 0x0040 /* enable counter 6 */
+ #define TESR_TCST7 0x0080 /* enable counter 7 */
#define TESR_OST 0x8000 /* enable OST */
#define JZ_TC_TECR 0x10002018 /* TC enable clear reg. */
+#define JZ_TC_TFR 0x10002020
+ #define TFR_FFLAG0 0x00000001 /* channel 0 */
+ #define TFR_FFLAG1 0x00000002 /* channel 1 */
+ #define TFR_FFLAG2 0x00000004 /* channel 2 */
+ #define TFR_FFLAG3 0x00000008 /* channel 3 */
+ #define TFR_FFLAG4 0x00000010 /* channel 4 */
+ #define TFR_FFLAG5 0x00000020 /* channel 5 */
+ #define TFR_FFLAG6 0x00000040 /* channel 6 */
+ #define TFR_FFLAG7 0x00000080 /* channel 7 */
+ #define TFR_OSTFLAG 0x00008000 /* OS timer */
+#define JZ_TC_TFSR 0x10002024 /* timer flag set */
+#define JZ_TC_TFCR 0x10002028 /* timer flag clear */
+#define JZ_TC_TMR 0x10002030 /* timer flag mask */
+#define JZ_TC_TMSR 0x10002034 /* timer flag mask set */
+#define JZ_TC_TMCR 0x10002038 /* timer flag mask clear*/
+
+#define JZ_TC_TDFR(n) (0x10002040 + (n * 0x10)) /* FULL compare */
+#define JZ_TC_TDHR(n) (0x10002044 + (n * 0x10)) /* HALF compare */
+#define JZ_TC_TCNT(n) (0x10002048 + (n * 0x10)) /* count */
+
+#define JZ_TC_TCSR(n) (0x1000204c + (n * 0x10))
+/* same bits as in JZ_WDOG_TCSR */
/* operating system timer */
#define JZ_OST_DATA 0x100020e0 /* compare */
@@ -102,4 +124,62 @@
return *(int32_t *)MIPS_PHYS_TO_KSEG1(reg);
}
-#endif /* INGENIC_REGS_H */
\ No newline at end of file
+/* extra CP0 registers */
+static inline uint32_t
+MFC0(uint32_t r, uint32_t s)
+{
+ uint32_t ret = 0x12345678;
+
+ __asm volatile("mfc0 %0, $%1, %2; nop;" : "=r"(ret) : "i"(r), "i"(s));
+ return ret;
+}
+
+#define MTC0(v, r, s) __asm volatile("mtc0 %0, $%1, %2; nop;" :: "r"(v), "i"(r), "i"(s))
+
+#define CP0_CORE_CTRL 12 /* select 2 */
+ #define CC_SW_RST0 1 /* reset core 0 */
+ #define CC_SW_RST1 2 /* reset core 1 */
+ #define CC_RPC0 0x100 /* dedicater reset entry core 0 */
+ #define CC_RPC1 0x200 /* -- || -- core 1 */
+ #define CC_SLEEP0M 0x10000 /* mask sleep core 0 */
+ #define CC_SLEEP1M 0x20000 /* mask sleep core 1 */
+
+/* cores status, 12 select 3 */
+#define CS_MIRQ0_P 0x00001 /* mailbox IRQ for 0 pending */
+#define CS_MIRQ1_P 0x00002 /* || core 1 */
+#define CS_IRQ0_P 0x00100 /* peripheral IRQ for core 0 */
+#define CS_IRQ1_P 0x00200 /* || core 1 */
+#define CS_SLEEP0 0x10000 /* core 0 sleeping */
+#define CS_SLEEP1 0x20000 /* core 1 sleeping */
+
+/* cores reset entry & IRQ masks - 12 select 4 */
+#define REIM_MIRQ0_M 0x00001 /* allow mailbox IRQ for core 0 */
+#define REIM_MIRQ1_M 0x00002 /* allow mailbox IRQ for core 1 */
+#define REIM_IRQ0_M 0x00100 /* allow peripheral IRQ for core 0 */
+#define REIM_IRQ1_M 0x00200 /* allow peripheral IRQ for core 1 */
+#define REIM_ENTRY_M 0xffff0000 /* reset exception entry if RPCn=1 */
+
+#define CP0_CORE_MBOX 20 /* select 0 for core 0, 1 for 1 */
+
+/* interrupt controller */
+#define JZ_ICSR0 0x10001000 /* raw IRQ line status */
+#define JZ_ICMR0 0x10001004 /* IRQ mask, 1 masks IRQ */
+#define JZ_ICMSR0 0x10001008 /* sets bits in mask register */
+#define JZ_ICMCR0 0x1000100c /* clears bits in maks register */
+#define JZ_ICPR0 0x10001010 /* line status after masking */
+
+#define JZ_ICSR1 0x10001020 /* raw IRQ line status */
+#define JZ_ICMR1 0x10001024 /* IRQ mask, 1 masks IRQ */
+#define JZ_ICMSR1 0x10001028 /* sets bits in mask register */
+#define JZ_ICMCR1 0x1000102c /* clears bits in maks register */
+#define JZ_ICPR1 0x10001030 /* line status after masking */
+
+#define JZ_DSR0 0x10001034 /* source for PDMA */
+#define JZ_DMR0 0x10001038 /* mask for PDMA */
+#define JZ_DPR0 0x1000103c /* pending for PDMA */
+
+#define JZ_DSR1 0x10001040 /* source for PDMA */
+#define JZ_DMR1 0x10001044 /* mask for PDMA */
+#define JZ_DPR1 0x10001048 /* pending for PDMA */
+
+#endif /* INGENIC_REGS_H */
Home |
Main Index |
Thread Index |
Old Index