hc
2025-02-14 bbb9540dc49f70f6b703d1c8d1b85fa5f602d86e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
// SPDX-License-Identifier: GPL-2.0
#include <linux/of.h>
#include <linux/of_address.h>
#include <asm/mach/arch.h>
 
#include "core.h"
 
#define SYS_FLAGSSET        0x030
#define SYS_FLAGSCLR        0x034
 
void vexpress_flags_set(u32 data)
{
   static void __iomem *base;
 
   if (!base) {
       struct device_node *node = of_find_compatible_node(NULL, NULL,
               "arm,vexpress-sysreg");
 
       base = of_iomap(node, 0);
   }
 
   if (WARN_ON(!base))
       return;
 
   writel(~0, base + SYS_FLAGSCLR);
   writel(data, base + SYS_FLAGSSET);
}
 
static const char * const v2m_dt_match[] __initconst = {
   "arm,vexpress",
   NULL,
};
 
DT_MACHINE_START(VEXPRESS_DT, "ARM-Versatile Express")
   .dt_compat    = v2m_dt_match,
   .l2c_aux_val    = 0x00400000,
   .l2c_aux_mask    = 0xfe0fffff,
   .smp        = smp_ops(vexpress_smp_dt_ops),
   .smp_init    = smp_init_ops(vexpress_smp_init_ops),
MACHINE_END