Blame view

include/cpu_func.h 2.05 KB
62f9b6544   Simon Glass   common: Move olde...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
  /* SPDX-License-Identifier: GPL-2.0+ */
  /*
   * (C) Copyright 2000-2009
   * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
   * Copyright 2019 Google LLC
   */
  
  #ifndef __CPU_LEGACY_H
  #define __CPU_LEGACY_H
  
  #include <linux/types.h>
  
  /*
   * Multicore arch functions
   *
   * These should be moved to use the CPU uclass.
   */
  int cpu_status(u32 nr);
  int cpu_reset(u32 nr);
  int cpu_disable(u32 nr);
  int cpu_release(u32 nr, int argc, char * const argv[]);
30c7c4347   Simon Glass   common: Move chec...
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
  static inline int cpumask_next(int cpu, unsigned int mask)
  {
  	for (cpu++; !((1 << cpu) & mask); cpu++)
  		;
  
  	return cpu;
  }
  
  #define for_each_cpu(iter, cpu, num_cpus, mask) \
  	for (iter = 0, cpu = cpumask_next(-1, mask); \
  	     iter < num_cpus; \
  	     iter++, cpu = cpumask_next(cpu, mask)) \
  
  int cpu_numcores(void);
  int cpu_num_dspcores(void);
  u32 cpu_mask(void);
  u32 cpu_dsp_mask(void);
  int is_core_valid(unsigned int core);
  
  /**
   * checkcpu() - perform an early check of the CPU
   *
   * This is used on PowerPC, SH and X86 machines as a CPU init mechanism. It is
   * called during the pre-relocation init sequence in board_init_f().
   *
   * @return 0 if oK, -ve on error
   */
  int checkcpu(void);
62270f439   Simon Glass   common: Move some...
50
51
  void smp_set_core_boot_addr(unsigned long addr, int corenr);
  void smp_kick_all_cpus(void);
9edefc277   Simon Glass   common: Move some...
52
53
54
55
56
57
58
  int icache_status(void);
  void icache_enable(void);
  void icache_disable(void);
  int dcache_status(void);
  void dcache_enable(void);
  void dcache_disable(void);
  void mmu_disable(void);
1eb69ae49   Simon Glass   common: Move ARM ...
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
  /* arch/$(ARCH)/lib/cache.c */
  void enable_caches(void);
  void flush_cache(unsigned long addr, unsigned long size);
  void flush_dcache_all(void);
  void flush_dcache_range(unsigned long start, unsigned long stop);
  void invalidate_dcache_range(unsigned long start, unsigned long stop);
  void invalidate_dcache_all(void);
  void invalidate_icache_all(void);
  
  enum {
  	/* Disable caches (else flush caches but leave them active) */
  	CBL_DISABLE_CACHES		= 1 << 0,
  	CBL_SHOW_BOOTSTAGE_REPORT	= 1 << 1,
  
  	CBL_ALL				= 3,
  };
  
  /**
   * Clean up ready for linux
   *
   * @param flags		Flags to control what is done
   */
  int cleanup_before_linux_select(int flags);
9a3b4ceb3   Simon Glass   common: Move rese...
82
83
  
  void reset_cpu(ulong addr);
1eb69ae49   Simon Glass   common: Move ARM ...
84
  ;
62f9b6544   Simon Glass   common: Move olde...
85
  #endif