Skip to content

Commit 6a3808b

Browse files
committed
Add support for ASR1601 and ASR1603 SoC
Signed-off-by: Ajay Bhargav <[email protected]>
1 parent 96ba2c9 commit 6a3808b

15 files changed

+334
-2
lines changed

include/plat/def_gpio.h

Lines changed: 130 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -509,7 +509,7 @@ enum gpioname_e
509509
* A9 | 37
510510
*/
511511
GPIO_36,
512-
#else /* RDA8910 */
512+
#elif defined(SOC_RDA8910) /* RDA8910 */
513513
/**
514514
* Module | Pin
515515
* ------------
@@ -1030,6 +1030,135 @@ enum gpioname_e
10301030
* EG915 | 42
10311031
*/
10321032
GPIO_23_ALT,
1033+
#else /* ASR160x */
1034+
GPIO_0,
1035+
GPIO_1,
1036+
GPIO_2,
1037+
GPIO_3,
1038+
GPIO_4,
1039+
GPIO_5,
1040+
GPIO_6,
1041+
GPIO_7,
1042+
GPIO_8,
1043+
GPIO_9,
1044+
GPIO_10,
1045+
GPIO_11,
1046+
GPIO_12,
1047+
GPIO_13,
1048+
GPIO_14,
1049+
GPIO_15,
1050+
GPIO_16,
1051+
GPIO_17,
1052+
GPIO_18,
1053+
GPIO_19,
1054+
GPIO_20,
1055+
GPIO_21,
1056+
GPIO_22,
1057+
GPIO_23,
1058+
GPIO_24,
1059+
GPIO_25,
1060+
GPIO_26,
1061+
GPIO_27,
1062+
GPIO_28,
1063+
GPIO_29,
1064+
GPIO_30,
1065+
GPIO_31,
1066+
GPIO_32,
1067+
GPIO_33,
1068+
GPIO_34,
1069+
GPIO_35,
1070+
GPIO_36,
1071+
GPIO_37,
1072+
GPIO_38,
1073+
GPIO_39,
1074+
GPIO_40,
1075+
GPIO_41,
1076+
GPIO_42,
1077+
GPIO_43,
1078+
GPIO_44,
1079+
GPIO_45,
1080+
GPIO_46,
1081+
GPIO_47,
1082+
GPIO_48,
1083+
GPIO_49,
1084+
GPIO_50,
1085+
GPIO_51,
1086+
GPIO_52,
1087+
GPIO_53,
1088+
GPIO_54,
1089+
GPIO_55,
1090+
GPIO_56,
1091+
GPIO_57,
1092+
GPIO_58,
1093+
GPIO_59,
1094+
GPIO_60,
1095+
GPIO_61,
1096+
GPIO_62,
1097+
GPIO_63,
1098+
GPIO_64,
1099+
GPIO_65,
1100+
GPIO_66,
1101+
GPIO_67,
1102+
GPIO_68,
1103+
GPIO_69,
1104+
GPIO_70,
1105+
GPIO_71,
1106+
GPIO_72,
1107+
GPIO_73,
1108+
GPIO_74,
1109+
GPIO_75,
1110+
GPIO_76,
1111+
GPIO_77,
1112+
GPIO_78,
1113+
GPIO_79,
1114+
GPIO_80,
1115+
GPIO_81,
1116+
GPIO_82,
1117+
GPIO_83,
1118+
GPIO_84,
1119+
GPIO_85,
1120+
GPIO_86,
1121+
GPIO_87,
1122+
GPIO_88,
1123+
GPIO_89,
1124+
GPIO_90,
1125+
GPIO_91,
1126+
GPIO_92,
1127+
GPIO_93,
1128+
GPIO_94,
1129+
GPIO_95,
1130+
GPIO_96,
1131+
GPIO_97,
1132+
GPIO_98,
1133+
GPIO_99,
1134+
GPIO_100,
1135+
GPIO_101,
1136+
GPIO_102,
1137+
GPIO_103,
1138+
GPIO_104,
1139+
GPIO_105,
1140+
GPIO_106,
1141+
GPIO_107,
1142+
GPIO_108,
1143+
GPIO_109,
1144+
GPIO_110,
1145+
GPIO_111,
1146+
GPIO_112,
1147+
GPIO_113,
1148+
GPIO_114,
1149+
GPIO_115,
1150+
GPIO_116,
1151+
GPIO_117,
1152+
GPIO_118,
1153+
GPIO_119,
1154+
GPIO_120,
1155+
GPIO_121,
1156+
GPIO_122,
1157+
GPIO_123,
1158+
GPIO_124,
1159+
GPIO_125,
1160+
GPIO_126,
1161+
GPIO_127,
10331162
#endif
10341163
GPIO_PIN_MAX,
10351164
};

include/plat/def_pwm.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,17 @@ enum pwmch_e
102102
* A9 | 49
103103
*/
104104
PWM_CH1,
105+
#elif defined(SOC_ASR160X)
106+
PWM_CH0_IO8,
107+
PWM_CH0_IO31,
108+
PWM_CH1_IO9,
109+
PWM_CH1_IO32,
110+
PWM_CH2_IO6,
111+
PWM_CH2_IO8,
112+
PWM_CH2_IO10,
113+
PWM_CH3_IO7,
114+
PWM_CH3_IO9,
115+
PWM_CH3_IO11,
105116
#else
106117
/**
107118
* PWM Channel 0

include/plat/def_spi.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ enum spiport_e {
5252
*
5353
*/
5454
SPI_PORT_0,
55-
#if defined(SOC_RDA8910) || defined(_DOXYGEN_)
55+
#if defined(SOC_RDA8910) || defined(SOC_ASR160X) || defined(_DOXYGEN_)
5656
/**
5757
* @brief SPI Port 1
5858
*

lib/asr160x/app_linker.ld

Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
2+
OUTPUT_ARCH(arm)
3+
4+
ENTRY(appimg_enter)
5+
EXTERN(appimg_enter)
6+
EXTERN(appimg_exit)
7+
EXTERN(appimg_get_param)
8+
EXTERN(appimg_set_param)
9+
PROVIDE(appimg_get_param = 0);
10+
PROVIDE(appimg_set_param = 0);
11+
12+
#define ALIGNMENT ALIGN(0x20)
13+
#define HEADER_APP_IMG LONG(0x4D4F524C) \
14+
LONG(0) \
15+
LONG(0) \
16+
KEEP(*(.rodata.core_stub.header))
17+
#define HEADER_LOAD(t, n) LONG(t) \
18+
LONG(__##n##_load_start - __flash_start) \
19+
LONG(__##n##_end - __##n##_start) \
20+
LONG(__##n##_start)
21+
#define HEADER_CLEAR(n) LONG(3) \
22+
LONG(0) \
23+
LONG(__##n##_end - __##n##_start) \
24+
LONG(__##n##_start)
25+
#define HEADER_DUMMY LONG(0) LONG(0) LONG(0) LONG(0)
26+
27+
#ifdef FLASHSZ_16M
28+
#define APP_FLASH_ORIGIN 0x7e810000
29+
#define APP_FLASH_SZ 0x100000
30+
#elif defined(FLASHSZ_8M)
31+
#define APP_FLASH_ORIGIN 0x7e810000
32+
#define APP_FLASH_SZ 0x80000
33+
#else
34+
#error "Flash size not set"
35+
#endif
36+
37+
#define DEF_RO .text .text.* .gnu.linkonce.t.* .plt .rdata .rodata .rodata.* .constdata .constdata.* .gnu.linkonce.r.* .glue_7 .glue_7t .vfp11_veneer .v4_bx vtable
38+
#define DEF_RW .data_begin .data_begin.* .data .data.* .gnu.linkonce.d.* .got.plt .got .shdata .data_end .data_end.*
39+
#define DEF_ZI .bss_begin .bss_begin.* .shbss .bss .bss.* COMMON .scommon .sbss .sbss.* .sbss2 .sbss2.* .gnu.linkonce.b.* .bss_end .bss_end.*
40+
41+
MEMORY {
42+
flash (rx): ORIGIN = APP_FLASH_ORIGIN, LENGTH = APP_FLASH_SZ
43+
ram (rwx): ORIGIN = 0x7e910000, LENGTH = 0x00080000
44+
}
45+
46+
SECTIONS {
47+
. = ORIGIN(flash);
48+
__flash_start = .;
49+
50+
.imageheader : {
51+
HEADER_APP_IMG
52+
HEADER_LOAD(2, corestub)
53+
HEADER_LOAD(4, text)
54+
HEADER_LOAD(4, init_array)
55+
HEADER_LOAD(1, data)
56+
HEADER_CLEAR(bss)
57+
HEADER_DUMMY
58+
} > flash
59+
60+
ASSERT(SIZEOF(.imageheader) == 128, "invalid app image header")
61+
.initdata ALIGNMENT : {
62+
KEEP(*(.appinit));
63+
} > flash
64+
65+
. = ORIGIN(ram);
66+
__ram_start = .;
67+
68+
.corestub ALIGNMENT : {
69+
__corestub_start = .;
70+
*(.text.core_stub.*)
71+
__corestub_end = .;
72+
. = ALIGNMENT;
73+
__corestub_load_start = LOADADDR(.corestub);
74+
} AT>flash
75+
76+
.data ALIGNMENT : {
77+
__data_start = .;
78+
*(DEF_RW)
79+
__data_end = .;
80+
. = ALIGNMENT;
81+
__data_load_start = LOADADDR(.data);
82+
} AT>flash
83+
84+
.bss ALIGNMENT : {
85+
__bss_start = .;
86+
*(DEF_ZI)
87+
__bss_end = .;
88+
. = ALIGNMENT;
89+
}
90+
91+
. = LOADADDR(.corestub) + SIZEOF(.corestub) + SIZEOF(.data);
92+
93+
.text ALIGNMENT : {
94+
__text_start = .;
95+
*(DEF_RO)
96+
KEEP(*(.eh_frame*))
97+
__text_end = .;
98+
. = ALIGNMENT;
99+
__text_load_start = LOADADDR(.text);
100+
} > flash
101+
102+
.ll ALIGNMENT : {
103+
PROVIDE_HIDDEN (__ll_entry_start = .);
104+
KEEP( *(SORT(.ll_entry_cmdlist*)) );
105+
PROVIDE_HIDDEN (__ll_entry_end = .);
106+
} > flash
107+
108+
/* ARM magic sections */
109+
.ARM.extab ALIGNMENT : {
110+
*(.ARM.extab* .gnu.linkonce.armextab.*)
111+
} > flash
112+
113+
__exidx_start = .;
114+
.ARM.exidx ALIGNMENT : {
115+
*(.ARM.exidx* .gnu.linkonce.armexidx.*)
116+
} > flash
117+
__exidx_end = .;
118+
119+
.init_array ALIGNMENT : {
120+
__init_array_start = .;
121+
KEEP(*(.init_array .init_array.*))
122+
__init_array_end = .;
123+
. = ALIGNMENT;
124+
__init_array_load_start = LOADADDR(.init_array);
125+
} > flash
126+
127+
__flash_end = ADDR(.init_array) + SIZEOF(.init_array);
128+
__ram_end = ADDR(.bss) + SIZEOF(.bss);
129+
130+
ASSERT(__flash_end <= ORIGIN(flash) + LENGTH(flash), "FLASH overflow")
131+
ASSERT(__ram_end <= ORIGIN(ram) + LENGTH(ram), "RAM overflow")
132+
133+
.comment 0 : { *(.comment) }
134+
/DISCARD/ : { *(.dynstr*) }
135+
/DISCARD/ : { *(.dynamic*) }
136+
/DISCARD/ : { *(.plt*) }
137+
/DISCARD/ : { *(.interp*) }
138+
/DISCARD/ : { *(.gnu*) }
139+
}

lib/asr160x/liblogicromasr.a

541 KB
Binary file not shown.

lib/asr160x/liblogicromasr_debug.a

548 KB
Binary file not shown.
45 KB
Binary file not shown.
16.4 KB
Binary file not shown.
32.9 KB
Binary file not shown.
27.1 KB
Binary file not shown.

0 commit comments

Comments
 (0)