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 <benjamin.valentin@ml-pa.com>
This commit is contained in:
parent
496ace1500
commit
4cfd0fd1d0
1 changed files with 141 additions and 0 deletions
141
soc/arm/atmel_sam0/common/sercom_fixup_samd5x.h
Normal file
141
soc/arm/atmel_sam0/common/sercom_fixup_samd5x.h
Normal file
|
@ -0,0 +1,141 @@
|
|||
/*
|
||||
* Copyright (c) 2019 ML!PA Consulting GmbH
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#ifdef MCLK_APBAMASK_SERCOM0
|
||||
#define MCLK_SERCOM0 (&MCLK->APBAMASK.reg)
|
||||
#define MCLK_SERCOM0_MASK (MCLK_APBAMASK_SERCOM0)
|
||||
#endif
|
||||
#ifdef MCLK_APBBMASK_SERCOM0
|
||||
#define MCLK_SERCOM0 (&MCLK->APBBMASK.reg)
|
||||
#define MCLK_SERCOM0_MASK (MCLK_APBBMASK_SERCOM0)
|
||||
#endif
|
||||
#ifdef MCLK_APBCMASK_SERCOM0
|
||||
#define MCLK_SERCOM0 (&MCLK->APBCMASK.reg)
|
||||
#define MCLK_SERCOM0_MASK (MCLK_APBCMASK_SERCOM0)
|
||||
#endif
|
||||
#ifdef MCLK_APBDMASK_SERCOM0
|
||||
#define MCLK_SERCOM0 (&MCLK->APBDMASK.reg)
|
||||
#define MCLK_SERCOM0_MASK (MCLK_APBDMASK_SERCOM0)
|
||||
#endif
|
||||
|
||||
#ifdef MCLK_APBAMASK_SERCOM1
|
||||
#define MCLK_SERCOM1 (&MCLK->APBAMASK.reg)
|
||||
#define MCLK_SERCOM1_MASK (MCLK_APBAMASK_SERCOM1)
|
||||
#endif
|
||||
#ifdef MCLK_APBBMASK_SERCOM1
|
||||
#define MCLK_SERCOM1 (&MCLK->APBBMASK.reg)
|
||||
#define MCLK_SERCOM1_MASK (MCLK_APBBMASK_SERCOM1)
|
||||
#endif
|
||||
#ifdef MCLK_APBCMASK_SERCOM1
|
||||
#define MCLK_SERCOM1 (&MCLK->APBCMASK.reg)
|
||||
#define MCLK_SERCOM1_MASK (MCLK_APBCMASK_SERCOM1)
|
||||
#endif
|
||||
#ifdef MCLK_APBDMASK_SERCOM1
|
||||
#define MCLK_SERCOM1 (&MCLK->APBDMASK.reg)
|
||||
#define MCLK_SERCOM1_MASK (MCLK_APBDMASK_SERCOM1)
|
||||
#endif
|
||||
|
||||
#ifdef MCLK_APBAMASK_SERCOM2
|
||||
#define MCLK_SERCOM2 (&MCLK->APBAMASK.reg)
|
||||
#define MCLK_SERCOM2_MASK (MCLK_APBAMASK_SERCOM2)
|
||||
#endif
|
||||
#ifdef MCLK_APBBMASK_SERCOM2
|
||||
#define MCLK_SERCOM2 (&MCLK->APBBMASK.reg)
|
||||
#define MCLK_SERCOM2_MASK (MCLK_APBBMASK_SERCOM2)
|
||||
#endif
|
||||
#ifdef MCLK_APBCMASK_SERCOM2
|
||||
#define MCLK_SERCOM2 (&MCLK->APBCMASK.reg)
|
||||
#define MCLK_SERCOM2_MASK (MCLK_APBCMASK_SERCOM2)
|
||||
#endif
|
||||
#ifdef MCLK_APBDMASK_SERCOM2
|
||||
#define MCLK_SERCOM2 (&MCLK->APBDMASK.reg)
|
||||
#define MCLK_SERCOM2_MASK (MCLK_APBDMASK_SERCOM2)
|
||||
#endif
|
||||
|
||||
#ifdef MCLK_APBAMASK_SERCOM3
|
||||
#define MCLK_SERCOM3 (&MCLK->APBAMASK.reg)
|
||||
#define MCLK_SERCOM3_MASK (MCLK_APBAMASK_SERCOM3)
|
||||
#endif
|
||||
#ifdef MCLK_APBBMASK_SERCOM3
|
||||
#define MCLK_SERCOM3 (&MCLK->APBBMASK.reg)
|
||||
#define MCLK_SERCOM3_MASK (MCLK_APBBMASK_SERCOM3)
|
||||
#endif
|
||||
#ifdef MCLK_APBCMASK_SERCOM3
|
||||
#define MCLK_SERCOM3 (&MCLK->APBCMASK.reg)
|
||||
#define MCLK_SERCOM3_MASK (MCLK_APBCMASK_SERCOM3)
|
||||
#endif
|
||||
#ifdef MCLK_APBDMASK_SERCOM3
|
||||
#define MCLK_SERCOM3 (&MCLK->APBDMASK.reg)
|
||||
#define MCLK_SERCOM3_MASK (MCLK_APBDMASK_SERCOM3)
|
||||
#endif
|
||||
|
||||
#ifdef MCLK_APBAMASK_SERCOM4
|
||||
#define MCLK_SERCOM4 (&MCLK->APBAMASK.reg)
|
||||
#define MCLK_SERCOM4_MASK (MCLK_APBAMASK_SERCOM4)
|
||||
#endif
|
||||
#ifdef MCLK_APBBMASK_SERCOM4
|
||||
#define MCLK_SERCOM4 (&MCLK->APBBMASK.reg)
|
||||
#define MCLK_SERCOM4_MASK (MCLK_APBBMASK_SERCOM4)
|
||||
#endif
|
||||
#ifdef MCLK_APBCMASK_SERCOM4
|
||||
#define MCLK_SERCOM4 (&MCLK->APBCMASK.reg)
|
||||
#define MCLK_SERCOM4_MASK (MCLK_APBCMASK_SERCOM4)
|
||||
#endif
|
||||
#ifdef MCLK_APBDMASK_SERCOM4
|
||||
#define MCLK_SERCOM4 (&MCLK->APBDMASK.reg)
|
||||
#define MCLK_SERCOM4_MASK (MCLK_APBDMASK_SERCOM4)
|
||||
#endif
|
||||
|
||||
#ifdef MCLK_APBAMASK_SERCOM5
|
||||
#define MCLK_SERCOM5 (&MCLK->APBAMASK.reg)
|
||||
#define MCLK_SERCOM5_MASK (MCLK_APBAMASK_SERCOM5)
|
||||
#endif
|
||||
#ifdef MCLK_APBBMASK_SERCOM5
|
||||
#define MCLK_SERCOM5 (&MCLK->APBBMASK.reg)
|
||||
#define MCLK_SERCOM5_MASK (MCLK_APBBMASK_SERCOM5)
|
||||
#endif
|
||||
#ifdef MCLK_APBCMASK_SERCOM5
|
||||
#define MCLK_SERCOM5 (&MCLK->APBCMASK.reg)
|
||||
#define MCLK_SERCOM5_MASK (MCLK_APBCMASK_SERCOM5)
|
||||
#endif
|
||||
#ifdef MCLK_APBDMASK_SERCOM5
|
||||
#define MCLK_SERCOM5 (&MCLK->APBDMASK.reg)
|
||||
#define MCLK_SERCOM5_MASK (MCLK_APBDMASK_SERCOM5)
|
||||
#endif
|
||||
|
||||
#ifdef MCLK_APBAMASK_SERCOM6
|
||||
#define MCLK_SERCOM6 (&MCLK->APBAMASK.reg)
|
||||
#define MCLK_SERCOM6_MASK (MCLK_APBAMASK_SERCOM6)
|
||||
#endif
|
||||
#ifdef MCLK_APBBMASK_SERCOM6
|
||||
#define MCLK_SERCOM6 (&MCLK->APBBMASK.reg)
|
||||
#define MCLK_SERCOM6_MASK (MCLK_APBBMASK_SERCOM6)
|
||||
#endif
|
||||
#ifdef MCLK_APBCMASK_SERCOM6
|
||||
#define MCLK_SERCOM6 (&MCLK->APBCMASK.reg)
|
||||
#define MCLK_SERCOM6_MASK (MCLK_APBCMASK_SERCOM6)
|
||||
#endif
|
||||
#ifdef MCLK_APBDMASK_SERCOM6
|
||||
#define MCLK_SERCOM6 (&MCLK->APBDMASK.reg)
|
||||
#define MCLK_SERCOM6_MASK (MCLK_APBDMASK_SERCOM6)
|
||||
#endif
|
||||
|
||||
#ifdef MCLK_APBAMASK_SERCOM7
|
||||
#define MCLK_SERCOM7 (&MCLK->APBAMASK.reg)
|
||||
#define MCLK_SERCOM7_MASK (MCLK_APBAMASK_SERCOM7)
|
||||
#endif
|
||||
#ifdef MCLK_APBBMASK_SERCOM7
|
||||
#define MCLK_SERCOM7 (&MCLK->APBBMASK.reg)
|
||||
#define MCLK_SERCOM7_MASK (MCLK_APBBMASK_SERCOM7)
|
||||
#endif
|
||||
#ifdef MCLK_APBCMASK_SERCOM7
|
||||
#define MCLK_SERCOM7 (&MCLK->APBCMASK.reg)
|
||||
#define MCLK_SERCOM7_MASK (MCLK_APBCMASK_SERCOM7)
|
||||
#endif
|
||||
#ifdef MCLK_APBDMASK_SERCOM7
|
||||
#define MCLK_SERCOM7 (&MCLK->APBDMASK.reg)
|
||||
#define MCLK_SERCOM7_MASK (MCLK_APBDMASK_SERCOM7)
|
||||
#endif
|
Loading…
Add table
Add a link
Reference in a new issue