Skip to content

Commit 1a74c1c

Browse files
committed
platform/sam3u: initial eefc
Signed-off-by: Rafael Silva <perigoso@riseup.net>
1 parent e39a601 commit 1a74c1c

3 files changed

Lines changed: 44 additions & 0 deletions

File tree

config/families/sam3u.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ ld_flags = [
2929
]
3030
source = [
3131
'startup.c',
32+
'eefc.c',
3233
'wdt.c',
3334
]
3435

src/platform/sam3u/eefc.c

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/*
2+
* SPDX-License-Identifier: MIT
3+
* SPDX-FileCopyrightText: 2021 Rafael Silva <perigoso@riseup.net>
4+
*/
5+
6+
#include <sam.h>
7+
8+
#include "platform/sam3u/eefc.h"
9+
10+
void eefc_config_waitstates(const u32 frequency)
11+
{
12+
if (frequency <= 27000000UL)
13+
EFC0->EEFC_FMR = (EFC0->EEFC_FMR & ~EEFC_FMR_FWS_Msk) | (0 << EEFC_FMR_FWS_Pos);
14+
else if (frequency <= 47000000UL)
15+
EFC0->EEFC_FMR = (EFC0->EEFC_FMR & ~EEFC_FMR_FWS_Msk) | (1 << EEFC_FMR_FWS_Pos);
16+
else if (frequency <= 84000000UL)
17+
EFC0->EEFC_FMR = (EFC0->EEFC_FMR & ~EEFC_FMR_FWS_Msk) | (2 << EEFC_FMR_FWS_Pos);
18+
else
19+
EFC0->EEFC_FMR = (EFC0->EEFC_FMR & ~EEFC_FMR_FWS_Msk) | (3 << EEFC_FMR_FWS_Pos);
20+
21+
#ifdef _SAM3U_EFC1_INSTANCE_
22+
if (frequency <= 27000000UL)
23+
EFC1->EEFC_FMR = (EFC0->EEFC_FMR & ~EEFC_FMR_FWS_Msk) | (0 << EEFC_FMR_FWS_Pos);
24+
else if (frequency <= 47000000UL)
25+
EFC1->EEFC_FMR = (EFC0->EEFC_FMR & ~EEFC_FMR_FWS_Msk) | (1 << EEFC_FMR_FWS_Pos);
26+
else if (frequency <= 84000000UL)
27+
EFC1->EEFC_FMR = (EFC0->EEFC_FMR & ~EEFC_FMR_FWS_Msk) | (2 << EEFC_FMR_FWS_Pos);
28+
else
29+
EFC1->EEFC_FMR = (EFC0->EEFC_FMR & ~EEFC_FMR_FWS_Msk) | (3 << EEFC_FMR_FWS_Pos);
30+
#endif /* _SAM3U_EFC1_INSTANCE_ */
31+
}

src/platform/sam3u/eefc.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
/*
2+
* SPDX-License-Identifier: MIT
3+
* SPDX-FileCopyrightText: 2021 Rafael Silva <perigoso@riseup.net>
4+
*/
5+
6+
#pragma once
7+
8+
#include <sam.h>
9+
10+
#include "util/types.h"
11+
12+
void eefc_config_waitstates(const u32 frequency);

0 commit comments

Comments
 (0)