1 /* SPDX-License-Identifier: GPL-2.0 OR MIT */ 2 /* Copyright (c) 2024 Imagination Technologies Ltd. */ 3 4 #ifndef PVR_ROGUE_RISCV_H 5 #define PVR_ROGUE_RISCV_H 6 7 #include "pvr_rogue_cr_defs.h" 8 9 #include <linux/bitops.h> 10 #include <linux/sizes.h> 11 #include <linux/types.h> 12 13 #define ROGUE_RISCVFW_REGION_SIZE SZ_256M 14 #define ROGUE_RISCVFW_REGION_SHIFT __ffs(ROGUE_RISCVFW_REGION_SIZE) 15 16 enum rogue_riscvfw_region { 17 ROGUE_RISCV_REGION__RESERVED_0 = 0, 18 ROGUE_RISCV_REGION__RESERVED_1, 19 ROGUE_RISCV_REGION_SOCIF, 20 ROGUE_RISCV_REGION__RESERVED_3, 21 ROGUE_RISCV_REGION__RESERVED_4, 22 ROGUE_RISCV_REGION_BOOTLDR_DATA, 23 ROGUE_RISCV_REGION_SHARED_CACHED_DATA, 24 ROGUE_RISCV_REGION__RESERVED_7, 25 ROGUE_RISCV_REGION_COREMEM, 26 ROGUE_RISCV_REGION__RESERVED_9, 27 ROGUE_RISCV_REGION__RESERVED_A, 28 ROGUE_RISCV_REGION__RESERVED_B, 29 ROGUE_RISCV_REGION_BOOTLDR_CODE, 30 ROGUE_RISCV_REGION_SHARED_UNCACHED_DATA, 31 ROGUE_RISCV_REGION__RESERVED_E, 32 ROGUE_RISCV_REGION__RESERVED_F, 33 34 ROGUE_RISCV_REGION__COUNT, 35 }; 36 37 #define ROGUE_RISCVFW_REGION_BASE(r) ((u32)(ROGUE_RISCV_REGION_##r) << ROGUE_RISCVFW_REGION_SHIFT) 38 #define ROGUE_RISCVFW_REGION_REMAP_CR(r) \ 39 (ROGUE_CR_FWCORE_ADDR_REMAP_CONFIG0 + (u32)(ROGUE_RISCV_REGION_##r) * 8U) 40 41 #endif /* PVR_ROGUE_RISCV_H */ 42