Skip to content

Commit 4cfd0fd

Browse files
benpiccogalak
authored andcommitted
soc: sam0: Add SERCOM fixup for samd5x
The SERCOMS on SAMD5x/SAME5x are connected to different MCLK APBMASKs. There is no systematic way to tell whether a SERCOM is connected to APBA, APBB, APBC or APBD, so rely on the information from ASF instead of replicating it elsewhere. This is needed for SPI, I2C and UART support on the SAMD5x/SAME5x platform. Signed-off-by: Benjamin Valentin <[email protected]>
1 parent 496ace1 commit 4cfd0fd

File tree

1 file changed

+141
-0
lines changed

1 file changed

+141
-0
lines changed
Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
/*
2+
* Copyright (c) 2019 ML!PA Consulting GmbH
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
#ifdef MCLK_APBAMASK_SERCOM0
8+
#define MCLK_SERCOM0 (&MCLK->APBAMASK.reg)
9+
#define MCLK_SERCOM0_MASK (MCLK_APBAMASK_SERCOM0)
10+
#endif
11+
#ifdef MCLK_APBBMASK_SERCOM0
12+
#define MCLK_SERCOM0 (&MCLK->APBBMASK.reg)
13+
#define MCLK_SERCOM0_MASK (MCLK_APBBMASK_SERCOM0)
14+
#endif
15+
#ifdef MCLK_APBCMASK_SERCOM0
16+
#define MCLK_SERCOM0 (&MCLK->APBCMASK.reg)
17+
#define MCLK_SERCOM0_MASK (MCLK_APBCMASK_SERCOM0)
18+
#endif
19+
#ifdef MCLK_APBDMASK_SERCOM0
20+
#define MCLK_SERCOM0 (&MCLK->APBDMASK.reg)
21+
#define MCLK_SERCOM0_MASK (MCLK_APBDMASK_SERCOM0)
22+
#endif
23+
24+
#ifdef MCLK_APBAMASK_SERCOM1
25+
#define MCLK_SERCOM1 (&MCLK->APBAMASK.reg)
26+
#define MCLK_SERCOM1_MASK (MCLK_APBAMASK_SERCOM1)
27+
#endif
28+
#ifdef MCLK_APBBMASK_SERCOM1
29+
#define MCLK_SERCOM1 (&MCLK->APBBMASK.reg)
30+
#define MCLK_SERCOM1_MASK (MCLK_APBBMASK_SERCOM1)
31+
#endif
32+
#ifdef MCLK_APBCMASK_SERCOM1
33+
#define MCLK_SERCOM1 (&MCLK->APBCMASK.reg)
34+
#define MCLK_SERCOM1_MASK (MCLK_APBCMASK_SERCOM1)
35+
#endif
36+
#ifdef MCLK_APBDMASK_SERCOM1
37+
#define MCLK_SERCOM1 (&MCLK->APBDMASK.reg)
38+
#define MCLK_SERCOM1_MASK (MCLK_APBDMASK_SERCOM1)
39+
#endif
40+
41+
#ifdef MCLK_APBAMASK_SERCOM2
42+
#define MCLK_SERCOM2 (&MCLK->APBAMASK.reg)
43+
#define MCLK_SERCOM2_MASK (MCLK_APBAMASK_SERCOM2)
44+
#endif
45+
#ifdef MCLK_APBBMASK_SERCOM2
46+
#define MCLK_SERCOM2 (&MCLK->APBBMASK.reg)
47+
#define MCLK_SERCOM2_MASK (MCLK_APBBMASK_SERCOM2)
48+
#endif
49+
#ifdef MCLK_APBCMASK_SERCOM2
50+
#define MCLK_SERCOM2 (&MCLK->APBCMASK.reg)
51+
#define MCLK_SERCOM2_MASK (MCLK_APBCMASK_SERCOM2)
52+
#endif
53+
#ifdef MCLK_APBDMASK_SERCOM2
54+
#define MCLK_SERCOM2 (&MCLK->APBDMASK.reg)
55+
#define MCLK_SERCOM2_MASK (MCLK_APBDMASK_SERCOM2)
56+
#endif
57+
58+
#ifdef MCLK_APBAMASK_SERCOM3
59+
#define MCLK_SERCOM3 (&MCLK->APBAMASK.reg)
60+
#define MCLK_SERCOM3_MASK (MCLK_APBAMASK_SERCOM3)
61+
#endif
62+
#ifdef MCLK_APBBMASK_SERCOM3
63+
#define MCLK_SERCOM3 (&MCLK->APBBMASK.reg)
64+
#define MCLK_SERCOM3_MASK (MCLK_APBBMASK_SERCOM3)
65+
#endif
66+
#ifdef MCLK_APBCMASK_SERCOM3
67+
#define MCLK_SERCOM3 (&MCLK->APBCMASK.reg)
68+
#define MCLK_SERCOM3_MASK (MCLK_APBCMASK_SERCOM3)
69+
#endif
70+
#ifdef MCLK_APBDMASK_SERCOM3
71+
#define MCLK_SERCOM3 (&MCLK->APBDMASK.reg)
72+
#define MCLK_SERCOM3_MASK (MCLK_APBDMASK_SERCOM3)
73+
#endif
74+
75+
#ifdef MCLK_APBAMASK_SERCOM4
76+
#define MCLK_SERCOM4 (&MCLK->APBAMASK.reg)
77+
#define MCLK_SERCOM4_MASK (MCLK_APBAMASK_SERCOM4)
78+
#endif
79+
#ifdef MCLK_APBBMASK_SERCOM4
80+
#define MCLK_SERCOM4 (&MCLK->APBBMASK.reg)
81+
#define MCLK_SERCOM4_MASK (MCLK_APBBMASK_SERCOM4)
82+
#endif
83+
#ifdef MCLK_APBCMASK_SERCOM4
84+
#define MCLK_SERCOM4 (&MCLK->APBCMASK.reg)
85+
#define MCLK_SERCOM4_MASK (MCLK_APBCMASK_SERCOM4)
86+
#endif
87+
#ifdef MCLK_APBDMASK_SERCOM4
88+
#define MCLK_SERCOM4 (&MCLK->APBDMASK.reg)
89+
#define MCLK_SERCOM4_MASK (MCLK_APBDMASK_SERCOM4)
90+
#endif
91+
92+
#ifdef MCLK_APBAMASK_SERCOM5
93+
#define MCLK_SERCOM5 (&MCLK->APBAMASK.reg)
94+
#define MCLK_SERCOM5_MASK (MCLK_APBAMASK_SERCOM5)
95+
#endif
96+
#ifdef MCLK_APBBMASK_SERCOM5
97+
#define MCLK_SERCOM5 (&MCLK->APBBMASK.reg)
98+
#define MCLK_SERCOM5_MASK (MCLK_APBBMASK_SERCOM5)
99+
#endif
100+
#ifdef MCLK_APBCMASK_SERCOM5
101+
#define MCLK_SERCOM5 (&MCLK->APBCMASK.reg)
102+
#define MCLK_SERCOM5_MASK (MCLK_APBCMASK_SERCOM5)
103+
#endif
104+
#ifdef MCLK_APBDMASK_SERCOM5
105+
#define MCLK_SERCOM5 (&MCLK->APBDMASK.reg)
106+
#define MCLK_SERCOM5_MASK (MCLK_APBDMASK_SERCOM5)
107+
#endif
108+
109+
#ifdef MCLK_APBAMASK_SERCOM6
110+
#define MCLK_SERCOM6 (&MCLK->APBAMASK.reg)
111+
#define MCLK_SERCOM6_MASK (MCLK_APBAMASK_SERCOM6)
112+
#endif
113+
#ifdef MCLK_APBBMASK_SERCOM6
114+
#define MCLK_SERCOM6 (&MCLK->APBBMASK.reg)
115+
#define MCLK_SERCOM6_MASK (MCLK_APBBMASK_SERCOM6)
116+
#endif
117+
#ifdef MCLK_APBCMASK_SERCOM6
118+
#define MCLK_SERCOM6 (&MCLK->APBCMASK.reg)
119+
#define MCLK_SERCOM6_MASK (MCLK_APBCMASK_SERCOM6)
120+
#endif
121+
#ifdef MCLK_APBDMASK_SERCOM6
122+
#define MCLK_SERCOM6 (&MCLK->APBDMASK.reg)
123+
#define MCLK_SERCOM6_MASK (MCLK_APBDMASK_SERCOM6)
124+
#endif
125+
126+
#ifdef MCLK_APBAMASK_SERCOM7
127+
#define MCLK_SERCOM7 (&MCLK->APBAMASK.reg)
128+
#define MCLK_SERCOM7_MASK (MCLK_APBAMASK_SERCOM7)
129+
#endif
130+
#ifdef MCLK_APBBMASK_SERCOM7
131+
#define MCLK_SERCOM7 (&MCLK->APBBMASK.reg)
132+
#define MCLK_SERCOM7_MASK (MCLK_APBBMASK_SERCOM7)
133+
#endif
134+
#ifdef MCLK_APBCMASK_SERCOM7
135+
#define MCLK_SERCOM7 (&MCLK->APBCMASK.reg)
136+
#define MCLK_SERCOM7_MASK (MCLK_APBCMASK_SERCOM7)
137+
#endif
138+
#ifdef MCLK_APBDMASK_SERCOM7
139+
#define MCLK_SERCOM7 (&MCLK->APBDMASK.reg)
140+
#define MCLK_SERCOM7_MASK (MCLK_APBDMASK_SERCOM7)
141+
#endif

0 commit comments

Comments
 (0)