On Mon, 19 Nov 2012, Lorenzo Pieralisi wrote:

> Kernel subsystems other than the topology layer need the MPIDR
> mask definitions to access the MPIDR without relying on hardcoded
> masks. This patch moves the MPIDR register masks definition to
> a header file and defines a macro to simplify access to MPIDR bit fields
> representing affinity levels.
> 
> Signed-off-by: Lorenzo Pieralisi <[email protected]>

Acked-by: Nicolas Pitre <[email protected]>

> ---
>  arch/arm/include/asm/cputype.h | 13 +++++++++++++
>  arch/arm/kernel/topology.c     | 27 +--------------------------
>  2 files changed, 14 insertions(+), 26 deletions(-)
> 
> diff --git a/arch/arm/include/asm/cputype.h b/arch/arm/include/asm/cputype.h
> index cb47d28..a59dcb5 100644
> --- a/arch/arm/include/asm/cputype.h
> +++ b/arch/arm/include/asm/cputype.h
> @@ -25,6 +25,19 @@
>  #define CPUID_EXT_ISAR4      "c2, 4"
>  #define CPUID_EXT_ISAR5      "c2, 5"
>  
> +#define MPIDR_SMP_BITMASK (0x3 << 30)
> +#define MPIDR_SMP_VALUE (0x2 << 30)
> +
> +#define MPIDR_MT_BITMASK (0x1 << 24)
> +
> +#define MPIDR_HWID_BITMASK 0xFFFFFF
> +
> +#define MPIDR_LEVEL_BITS 8
> +#define MPIDR_LEVEL_MASK ((1 << MPIDR_LEVEL_BITS) - 1)
> +
> +#define MPIDR_AFFINITY_LEVEL(mpidr, level) \
> +     ((mpidr >> (MPIDR_LEVEL_BITS * level)) & MPIDR_LEVEL_MASK)
> +
>  extern unsigned int processor_id;
>  
>  #ifdef CONFIG_CPU_CP15
> diff --git a/arch/arm/kernel/topology.c b/arch/arm/kernel/topology.c
> index 317dac6..4642c7d 100644
> --- a/arch/arm/kernel/topology.c
> +++ b/arch/arm/kernel/topology.c
> @@ -196,32 +196,7 @@ static inline void parse_dt_topology(void) {}
>  static inline void update_cpu_power(unsigned int cpuid, unsigned int mpidr) 
> {}
>  #endif
>  
> -
> -/*
> - * cpu topology management
> - */
> -
> -#define MPIDR_SMP_BITMASK (0x3 << 30)
> -#define MPIDR_SMP_VALUE (0x2 << 30)
> -
> -#define MPIDR_MT_BITMASK (0x1 << 24)
> -
> -/*
> - * These masks reflect the current use of the affinity levels.
> - * The affinity level can be up to 16 bits according to ARM ARM
> - */
> -#define MPIDR_HWID_BITMASK 0xFFFFFF
> -
> -#define MPIDR_LEVEL0_MASK 0x3
> -#define MPIDR_LEVEL0_SHIFT 0
> -
> -#define MPIDR_LEVEL1_MASK 0xF
> -#define MPIDR_LEVEL1_SHIFT 8
> -
> -#define MPIDR_LEVEL2_MASK 0xFF
> -#define MPIDR_LEVEL2_SHIFT 16
> -
> -/*
> + /*
>   * cpu topology table
>   */
>  struct cputopo_arm cpu_topology[NR_CPUS];
> -- 
> 1.7.12
> 
> 
_______________________________________________
devicetree-discuss mailing list
[email protected]
https://lists.ozlabs.org/listinfo/devicetree-discuss

Reply via email to