blob: 9facdbc25197ba2c55719022e5b48f31f412a92a [file] [log] [blame]
Konstantin Porotchkinf69ec582018-06-07 18:31:14 +03001/*
2 * Copyright (C) 2018 Marvell International Ltd.
3 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 * https://spdx.org/licenses
6 */
7
Konstantin Porotchkinf69ec582018-06-07 18:31:14 +03008#include <arch_helpers.h>
Antonio Nino Diaze0f90632018-12-14 00:18:21 +00009#include <common/debug.h>
10#include <drivers/marvell/cache_llc.h>
11#include <lib/mmio.h>
12#include <plat/common/platform.h>
Konstantin Porotchkinf69ec582018-06-07 18:31:14 +030013
14#define CCU_HTC_ASET (MVEBU_CCU_BASE(MVEBU_AP0) + 0x264)
15#define MVEBU_IO_AFFINITY (0xF00)
Grzegorz Jaszczyk785ab752019-01-23 15:47:57 +010016#define MVEBU_SF_REG (MVEBU_REGS_BASE + 0x40)
17#define MVEBU_SF_EN BIT(8)
Konstantin Porotchkinf69ec582018-06-07 18:31:14 +030018
Grzegorz Jaszczyk785ab752019-01-23 15:47:57 +010019#ifdef MVEBU_SOC_AP807
20static void plat_enable_snoop_filter(void)
21{
22 int cpu_id = plat_my_core_pos();
23
24 /* Snoop filter needs to be enabled once per cluster */
25 if (cpu_id % 2)
26 return;
27
28 mmio_setbits_32(MVEBU_SF_REG, MVEBU_SF_EN);
29}
30#endif
Konstantin Porotchkinf69ec582018-06-07 18:31:14 +030031
32static void plat_enable_affinity(void)
33{
34 int cluster_id;
35 int affinity;
36
37 /* set CPU Affinity */
38 cluster_id = plat_my_core_pos() / PLAT_MARVELL_CLUSTER_CORE_COUNT;
39 affinity = (MVEBU_IO_AFFINITY | (1 << cluster_id));
40 mmio_write_32(CCU_HTC_ASET, affinity);
41
42 /* set barier */
43 isb();
44}
45
46void marvell_psci_arch_init(int die_index)
47{
48#if LLC_ENABLE
49 /* check if LLC is in exclusive mode
50 * as L2 is configured to UniqueClean eviction
51 * (in a8k reset handler)
52 */
53 if (llc_is_exclusive(0) == 0)
54 ERROR("LLC should be configured to exclusice mode\n");
55#endif
56
57 /* Enable Affinity */
58 plat_enable_affinity();
Grzegorz Jaszczyk785ab752019-01-23 15:47:57 +010059
60#ifdef MVEBU_SOC_AP807
61 plat_enable_snoop_filter();
62#endif
Konstantin Porotchkinf69ec582018-06-07 18:31:14 +030063}