1 /* 2 * Copyright (c) 2013-2016, ARM Limited and Contributors. All rights reserved. 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 */ 6 7 #ifndef __GIC_V3_H__ 8 #define __GIC_V3_H__ 9 10 /****************************************************************************** 11 * THIS DRIVER IS DEPRECATED. For GICv2 systems, use the driver in gicv2.h 12 * and for GICv3 systems, use the driver in gicv3.h. 13 *****************************************************************************/ 14 #if ERROR_DEPRECATED 15 #error " The legacy ARM GIC driver is deprecated." 16 #endif 17 18 #include <mmio.h> 19 #include <stdint.h> 20 #include <types.h> 21 22 23 /* GICv3 Re-distributor interface registers & shifts */ 24 #define GICR_PCPUBASE_SHIFT 0x11 25 #define GICR_TYPER 0x08 26 #define GICR_WAKER 0x14 27 28 /* GICR_WAKER bit definitions */ 29 #define WAKER_CA (U(1) << 2) 30 #define WAKER_PS (U(1) << 1) 31 32 /* GICR_TYPER bit definitions */ 33 #define GICR_TYPER_AFF_SHIFT 32 34 #define GICR_TYPER_AFF_MASK 0xffffffff 35 #define GICR_TYPER_LAST (U(1) << 4) 36 37 /* GICv3 ICC_SRE register bit definitions*/ 38 #define ICC_SRE_EN (U(1) << 3) 39 #define ICC_SRE_SRE (U(1) << 0) 40 41 /******************************************************************************* 42 * GICv3 defintions 43 ******************************************************************************/ 44 #define GICV3_AFFLVL_MASK 0xff 45 #define GICV3_AFF0_SHIFT 0 46 #define GICV3_AFF1_SHIFT 8 47 #define GICV3_AFF2_SHIFT 16 48 #define GICV3_AFF3_SHIFT 24 49 #define GICV3_AFFINITY_MASK 0xffffffff 50 51 /******************************************************************************* 52 * Function prototypes 53 ******************************************************************************/ 54 uintptr_t gicv3_get_rdist(uintptr_t gicr_base, u_register_t mpidr); 55 56 /******************************************************************************* 57 * GIC Redistributor interface accessors 58 ******************************************************************************/ gicr_read_waker(uintptr_t base)59static inline uint32_t gicr_read_waker(uintptr_t base) 60 { 61 return mmio_read_32(base + GICR_WAKER); 62 } 63 gicr_write_waker(uintptr_t base,uint32_t val)64static inline void gicr_write_waker(uintptr_t base, uint32_t val) 65 { 66 mmio_write_32(base + GICR_WAKER, val); 67 } 68 gicr_read_typer(uintptr_t base)69static inline uint64_t gicr_read_typer(uintptr_t base) 70 { 71 return mmio_read_64(base + GICR_TYPER); 72 } 73 74 75 #endif /* __GIC_V3_H__ */ 76