summaryrefslogtreecommitdiff
path: root/firmware/target/arm/tcc77x/system-tcc77x.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/arm/tcc77x/system-tcc77x.c')
-rw-r--r--firmware/target/arm/tcc77x/system-tcc77x.c34
1 files changed, 30 insertions, 4 deletions
diff --git a/firmware/target/arm/tcc77x/system-tcc77x.c b/firmware/target/arm/tcc77x/system-tcc77x.c
index 2628d9f0ed..b338281c48 100644
--- a/firmware/target/arm/tcc77x/system-tcc77x.c
+++ b/firmware/target/arm/tcc77x/system-tcc77x.c
@@ -61,15 +61,19 @@ static void gpio_init(void)
61 GPIOD_FUNC = 0; 61 GPIOD_FUNC = 0;
62 GPIOD_DIR = 0x3f0; 62 GPIOD_DIR = 0x3f0;
63 GPIOD = 0xe0; 63 GPIOD = 0xe0;
64
64 GPIOE_FUNC = 0; 65 GPIOE_FUNC = 0;
65 GPIOE_DIR = 0xe0; 66 GPIOE_DIR = 0xe0;
66 GPIOE = 0; 67 GPIOE = 0;
68
67 GPIOA_FUNC = 0; 69 GPIOA_FUNC = 0;
68 GPIOA_DIR = 0xffff1000; /* 0 - 0xf000 */ 70 GPIOA_DIR = 0xffff1000; /* 0 - 0xf000 */
69 GPIOA = 0x1080; 71 GPIOA = 0x1080;
72
70 GPIOB_FUNC = 0x16a3; 73 GPIOB_FUNC = 0x16a3;
71 GPIOB_DIR = 0x6ffff; 74 GPIOB_DIR = 0x6ffff;
72 GPIOB = 0; 75 GPIOB = 0;
76
73 GPIOC_FUNC = 1; 77 GPIOC_FUNC = 1;
74 GPIOC_DIR = 0x03ffffff; /* mvn r2, 0xfc000000 */ 78 GPIOC_DIR = 0x03ffffff; /* mvn r2, 0xfc000000 */
75 GPIOC = 0; 79 GPIOC = 0;
@@ -99,6 +103,28 @@ static void gpio_init(void)
99{ 103{
100 /* TODO - Implement for M200 */ 104 /* TODO - Implement for M200 */
101} 105}
106#elif defined(SANSA_C100)
107static void gpio_init(void)
108{
109 /* Do what the original firmware does */
110 GPIOA_FUNC = 0;
111 GPIOB_FUNC = 0x16A3;
112 GPIOC_FUNC = 1;
113 GPIOD_FUNC |= 2;
114 GPIOE_FUNC = 0;
115
116 GPIOA_DIR = 0xFFFF0E00;
117 GPIOB_DIR = 0x6FFFF;
118 GPIOC_DIR = 0x03FFFFFF;
119 GPIOD_DIR = 0x3F7;
120 GPIOE_DIR = 0x9B;
121
122 GPIOA = 0x80;
123 GPIOB = 0;
124 GPIOC = 0;
125 GPIOD |= 0xC0;
126 GPIOE = 0x9B;
127}
102#endif 128#endif
103 129
104/* Second function called in the original firmware's startup code - we just 130/* Second function called in the original firmware's startup code - we just
@@ -158,7 +184,7 @@ http://infocenter.arm.com/help/topic/com.arm.doc.ddi0201d/DDI0201D_arm946es_r1p1
158 "mcr p15, 0, r0, c6, c0, 0 \n\t" 184 "mcr p15, 0, r0, c6, c0, 0 \n\t"
159 "mcr p15, 0, r0, c6, c0, 1 \n\t" 185 "mcr p15, 0, r0, c6, c0, 1 \n\t"
160 186
161#ifdef LOGIK_DAX 187#if defined(LOGIK_DAX) || defined(SANSA_C100)
162 /* Address region 1 - addr 0x2fff0000, size=64KB, enabled*/ 188 /* Address region 1 - addr 0x2fff0000, size=64KB, enabled*/
163 "ldr r0, =0x2fff001f \n\t" 189 "ldr r0, =0x2fff001f \n\t"
164#elif defined(IAUDIO_7) 190#elif defined(IAUDIO_7)
@@ -208,7 +234,7 @@ http://infocenter.arm.com/help/topic/com.arm.doc.ddi0201d/DDI0201D_arm946es_r1p1
208 "mcr p15, 0, r0, c6, c7, 0 \n\t" 234 "mcr p15, 0, r0, c6, c7, 0 \n\t"
209 "mcr p15, 0, r0, c6, c7, 1 \n\t" 235 "mcr p15, 0, r0, c6, c7, 1 \n\t"
210 236
211 237
212 /* Register 5 - Access Permission Registers */ 238 /* Register 5 - Access Permission Registers */
213 239
214 "ldr r0, =0xffff \n\t" 240 "ldr r0, =0xffff \n\t"
@@ -218,9 +244,9 @@ http://infocenter.arm.com/help/topic/com.arm.doc.ddi0201d/DDI0201D_arm946es_r1p1
218 "mov r0, #0xa7 \n\t" 244 "mov r0, #0xa7 \n\t"
219 "mcr p15, 0, r0, c3, c0, 0 \n\t" /* set write buffer control register */ 245 "mcr p15, 0, r0, c3, c0, 0 \n\t" /* set write buffer control register */
220 246
221#ifdef LOGIK_DAX 247#if defined(LOGIK_DAX) || defined(SANSA_C100)
222 "mov r0, #0xa5 \n\t" 248 "mov r0, #0xa5 \n\t"
223#elif defined(IAUDIO_7) || defined(SANSA_M200) 249#elif defined(IAUDIO_7) || defined(SANSA_M200)
224 "mov r0, #0xa7 \n\t" 250 "mov r0, #0xa7 \n\t"
225#elif 251#elif
226 #error NOT DEFINED FOR THIS TARGET! 252 #error NOT DEFINED FOR THIS TARGET!