summaryrefslogtreecommitdiff
path: root/firmware/export/tcc77x.h
blob: b17865e257d05013f412a6a1a91f8f1ff8517a0e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
/***************************************************************************
 *             __________               __   ___.
 *   Open      \______   \ ____   ____ |  | _\_ |__   _______  ___
 *   Source     |       _//  _ \_/ ___\|  |/ /| __ \ /  _ \  \/  /
 *   Jukebox    |    |   (  <_> )  \___|    < | \_\ (  <_> > <  <
 *   Firmware   |____|_  /\____/ \___  >__|_ \|___  /\____/__/\_ \
 *                     \/            \/     \/    \/            \/
 * $Id$
 *
 * Copyright (C) 2007 Dave Chapman
 *
 * 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 software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ****************************************************************************/
#ifndef __TCC77X_H__
#define __TCC77X_H__

/* General-purpose IO */

#define GPIOA      (*(volatile unsigned long *)0x80000300)
#define GPIOB      (*(volatile unsigned long *)0x80000310)
#define GPIOC      (*(volatile unsigned long *)0x80000320)
#define GPIOD      (*(volatile unsigned long *)0x80000330)
#define GPIOE      (*(volatile unsigned long *)0x80000340)

#define GPIOA_DIR  (*(volatile unsigned long *)0x80000304)
#define GPIOB_DIR  (*(volatile unsigned long *)0x80000314)
#define GPIOC_DIR  (*(volatile unsigned long *)0x80000324)
#define GPIOD_DIR  (*(volatile unsigned long *)0x80000334)
#define GPIOE_DIR  (*(volatile unsigned long *)0x80000344)

#define GPIOA_FUNC (*(volatile unsigned long *)0x80000308)
#define GPIOB_FUNC (*(volatile unsigned long *)0x80000318)
#define GPIOC_FUNC (*(volatile unsigned long *)0x80000328)
#define GPIOD_FUNC (*(volatile unsigned long *)0x80000338)
#define GPIOE_FUNC (*(volatile unsigned long *)0x80000348)

#define BMI        (*(volatile unsigned long *)0x80000364)

/* Clock Generator */

#define CLKCTRL    (*(volatile unsigned long *)0x80000400)
#define PLL0CFG    (*(volatile unsigned long *)0x80000404)
#define CLKDIVC    (*(volatile unsigned long *)0x8000040c)
#define MODECTR    (*(volatile unsigned long *)0x80000410)
#define BCLKCTR    (*(volatile unsigned long *)0x80000414)
#define SWRESET    (*(volatile unsigned long *)0x80000418)
#define PCLKCFG0   (*(volatile unsigned long *)0x8000041c)
#define PCLKCFG1   (*(volatile unsigned long *)0x80000420)
#define PCLKCFG2   (*(volatile unsigned long *)0x80000424)
#define PCLKCFG3   (*(volatile unsigned long *)0x80000428)
#define PCLKCFG4   (*(volatile unsigned long *)0x8000042c)
#define PCLKCFG5   (*(volatile unsigned long *)0x80000430)
#define PCLKCFG6   (*(volatile unsigned long *)0x80000434)

/* Device bits for SWRESET & BCLKCTR */

#define DEV_NAND (1<<16)

/* ADC */

#define ADCCON     (*(volatile unsigned long *)0x80000a00)
#define ADCDATA    (*(volatile unsigned long *)0x80000a04)
#define ADCCONA    (*(volatile unsigned long *)0x80000a80)
#define ADCSTATUS  (*(volatile unsigned long *)0x80000a84)
#define ADCCFG     (*(volatile unsigned long *)0x80000a88)


/* Memory Controller */
#define SDCFG      (*(volatile unsigned long *)0xf0000000)
#define SDFSM      (*(volatile unsigned long *)0xf0000004)
#define MCFG       (*(volatile unsigned long *)0xf0000008)
#define TST        (*(volatile unsigned long *)0xf000000c)
#define CSCFG0     (*(volatile unsigned long *)0xf0000010)
#define CSCFG1     (*(volatile unsigned long *)0xf0000014)
#define CSCFG2     (*(volatile unsigned long *)0xf0000018)
#define CSCFG3     (*(volatile unsigned long *)0xf000001c)
#define CLKCFG     (*(volatile unsigned long *)0xf0000020)
#define SDCMD      (*(volatile unsigned long *)0xf0000024)


/* IRQ Controller */

#define TIMER0_IRQ_MASK (1<<6)
#define ADC_IRQ_MASK (1<<16)

#define IEN      (*(volatile unsigned long *)0x80000100)
#define CREQ     (*(volatile unsigned long *)0x80000104)
#define IREQ     (*(volatile unsigned long *)0x80000108)
#define IRQSEL   (*(volatile unsigned long *)0x8000010c)
#define ICFG     (*(volatile unsigned long *)0x80000110)
#define MREQ     (*(volatile unsigned long *)0x80000114)
#define TSTREQ   (*(volatile unsigned long *)0x80000118)
#define IRQ      (*(volatile unsigned long *)0x80000120)
#define FIQ      (*(volatile unsigned long *)0x80000124)
#define MIRQ     (*(volatile unsigned long *)0x80000128)
#define MFIQ     (*(volatile unsigned long *)0x8000012c)
#define TMODE    (*(volatile unsigned long *)0x80000130)
#define SYNC     (*(volatile unsigned long *)0x80000134)
#define WKUP     (*(volatile unsigned long *)0x80000138)

/* Timer Controller */

#define TCFG0    (*(volatile unsigned long *)0x80000200)
#define TCNT0    (*(volatile unsigned long *)0x80000204)
#define TREF0    (*(volatile unsigned long *)0x80000208)
#define TMREF0   (*(volatile unsigned long *)0x8000020c)
#define TCFG1    (*(volatile unsigned long *)0x80000210)
#define TCNT1    (*(volatile unsigned long *)0x80000214)
#define TREF1    (*(volatile unsigned long *)0x80000218)
#define TMREF1   (*(volatile unsigned long *)0x8000021c)
#define TCFG2    (*(volatile unsigned long *)0x80000220)
#define TCNT2    (*(volatile unsigned long *)0x80000224)
#define TREF2    (*(volatile unsigned long *)0x80000228)
#define TMREF2   (*(volatile unsigned long *)0x8000022c)
#define TCFG3    (*(volatile unsigned long *)0x80000230)
#define TCNT3    (*(volatile unsigned long *)0x80000234)
#define TREF3    (*(volatile unsigned long *)0x80000238)
#define TMREF3   (*(volatile unsigned long *)0x8000023c)
#define TCFG4    (*(volatile unsigned long *)0x80000240)
#define TCNT4    (*(volatile unsigned long *)0x80000244)
#define TREF4    (*(volatile unsigned long *)0x80000248)
#define TCFG5    (*(volatile unsigned long *)0x80000250)
#define TCNT5    (*(volatile unsigned long *)0x80000254)
#define TREF5    (*(volatile unsigned long *)0x80000258)
#define TIREQ    (*(volatile unsigned long *)0x80000260)
#define TWDCFG   (*(volatile unsigned long *)0x80000270)
#define TWDCLR   (*(volatile unsigned long *)0x80000274)
#define TC32EN   (*(volatile unsigned long *)0x80000280)
#define TC32LDV  (*(volatile unsigned long *)0x80000284)
#define TC32CMP0 (*(volatile unsigned long *)0x80000288)
#define TC32CMP1 (*(volatile unsigned long *)0x8000028c)
#define TC32PCNT (*(volatile unsigned long *)0x80000290)
#define TC32MCNT (*(volatile unsigned long *)0x80000294)
#define TC32IRQ  (*(volatile unsigned long *)0x80000298)

/* TIREQ flags */
#define TF0 (1<<8) /* Timer 0 reference value reached */
#define TF1 (1<<9) /* Timer 1 reference value reached */
#define TI0 (1<<0) /* Timer 0 IRQ flag */
#define TI1 (1<<1) /* Timer 1 IRQ flag */

/* NAND Flash Controller */

#define NFC_CMD    (*(volatile unsigned long *)0x90000000)
#define NFC_SADDR  (*(volatile unsigned long *)0x9000000C)
#define NFC_SDATA  (*(volatile unsigned long *)0x90000040)
#define NFC_WDATA  (*(volatile unsigned long *)0x90000010)
#define NFC_CTRL   (*(volatile unsigned long *)0x90000050)
    #define NFC_16BIT (1<<26)
    #define NFC_CS0   (1<<23)
    #define NFC_CS1   (1<<22)
    #define NFC_READY (1<<20)
#define NFC_IREQ   (*(volatile unsigned long *)0x90000060)
#define NFC_RST    (*(volatile unsigned long *)0x90000064)

#endif