blob: 019ef930022ffba30263192743a0ca199ff1b008 [file] [log] [blame]
Tom Rini10e47792018-05-06 17:58:06 -04001// SPDX-License-Identifier: GPL-2.0+
Wenyou Yangedf88d32015-11-05 16:37:53 +08002/*
3 * Copyright (C) 2015 Atmel Corporation
4 * Wenyou Yang <wenyou.yang@atmel.com>
Wenyou Yangedf88d32015-11-05 16:37:53 +08005 */
6
Tom Rinidec7ea02024-05-20 13:35:03 -06007#include <config.h>
Wenyou Yangd19b9012017-09-14 11:07:42 +08008#include <asm/hardware.h>
Wenyou Yangedf88d32015-11-05 16:37:53 +08009#include <asm/io.h>
Tudor Ambarus680897a2019-09-27 13:09:00 +000010#include <asm/arch/at91_sfr.h>
Wenyou Yangedf88d32015-11-05 16:37:53 +080011
Eugen Hristev99fe5002019-08-08 07:48:28 +000012#if defined(CONFIG_SAMA5D2) || defined(CONFIG_SAMA5D4)
Wenyou Yangedf88d32015-11-05 16:37:53 +080013void redirect_int_from_saic_to_aic(void)
14{
15 struct atmel_sfr *sfr = (struct atmel_sfr *)ATMEL_BASE_SFR;
16 u32 key32;
17
18 if (!(readl(&sfr->aicredir) & ATMEL_SFR_AICREDIR_NSAIC)) {
19 key32 = readl(&sfr->sn1) ^ ATMEL_SFR_AICREDIR_KEY;
20 writel((key32 | ATMEL_SFR_AICREDIR_NSAIC), &sfr->aicredir);
21 }
22}
Samuel Mescoffc3156fc2016-02-16 09:45:06 +010023
24void configure_2nd_sram_as_l2_cache(void)
25{
26 struct atmel_sfr *sfr = (struct atmel_sfr *)ATMEL_BASE_SFR;
27
28 writel(1, &sfr->l2cc_hramc);
29}
Eugen Hristev99fe5002019-08-08 07:48:28 +000030#endif
31
Eugen Hristev5f6ea432019-08-08 07:48:30 +000032void configure_ddrcfg_input_buffers(bool open)
33{
34 struct atmel_sfr *sfr = (struct atmel_sfr *)ATMEL_BASE_SFR;
35
36 if (open)
37 writel(ATMEL_SFR_DDRCFG_FDQIEN | ATMEL_SFR_DDRCFG_FDQSIEN,
38 &sfr->ddrcfg);
39 else
40 writel(0, &sfr->ddrcfg);
41}