| /* |
| * Copyright 2020 Broadcom |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #ifndef ZEPHYR_INCLUDE_DRIVERS_INTC_GIC_COMMON_PRIV_H_ |
| #define ZEPHYR_INCLUDE_DRIVERS_INTC_GIC_COMMON_PRIV_H_ |
| |
| /* Offsets from GICD base or GICR(n) SGI_base */ |
| #define GIC_DIST_IGROUPR 0x0080 |
| #define GIC_DIST_ISENABLER 0x0100 |
| #define GIC_DIST_ICENABLER 0x0180 |
| #define GIC_DIST_ISPENDR 0x0200 |
| #define GIC_DIST_ICPENDR 0x0280 |
| #define GIC_DIST_ISACTIVER 0x0300 |
| #define GIC_DIST_ICACTIVER 0x0380 |
| #define GIC_DIST_IPRIORITYR 0x0400 |
| #define GIC_DIST_ITARGETSR 0x0800 |
| #define GIC_DIST_ICFGR 0x0c00 |
| #define GIC_DIST_IGROUPMODR 0x0d00 |
| #define GIC_DIST_SGIR 0x0f00 |
| |
| /* GICD GICR common access macros */ |
| #define IGROUPR(base, n) (base + GIC_DIST_IGROUPR + (n) * 4) |
| #define ISENABLER(base, n) (base + GIC_DIST_ISENABLER + (n) * 4) |
| #define ICENABLER(base, n) (base + GIC_DIST_ICENABLER + (n) * 4) |
| #define ISPENDR(base, n) (base + GIC_DIST_ISPENDR + (n) * 4) |
| #define ICPENDR(base, n) (base + GIC_DIST_ICPENDR + (n) * 4) |
| #define IPRIORITYR(base, n) (base + GIC_DIST_IPRIORITYR + n) |
| #define ITARGETSR(base, n) (base + GIC_DIST_ITARGETSR + (n) * 4) |
| #define ICFGR(base, n) (base + GIC_DIST_ICFGR + (n) * 4) |
| #define IGROUPMODR(base, n) (base + GIC_DIST_IGROUPMODR + (n) * 4) |
| |
| /* |
| * selects redistributor SGI_base for current core for PPI and SGI |
| * selects distributor base for SPI |
| * The macro translates to distributor base for GICv2 and GICv1 |
| */ |
| |
| #if CONFIG_GIC_VER <= 2 |
| #define GET_DIST_BASE(intid) GIC_DIST_BASE |
| #else |
| #define GET_DIST_BASE(intid) ((intid < GIC_SPI_INT_BASE) ? \ |
| (gic_get_rdist() + GICR_SGI_BASE_OFF) \ |
| : GIC_DIST_BASE) |
| #endif |
| #endif /* ZEPHYR_INCLUDE_DRIVERS_INTC_GIC_COMMON_PRIV_H */ |