1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 3 * Copyright (C) 2013-2014, Linaro Ltd. 4 * Author: Al Stone <al.stone@linaro.org> 5 * Author: Graeme Gregory <graeme.gregory@linaro.org> 6 * Author: Hanjun Guo <hanjun.guo@linaro.org> 7 * 8 * Copyright (C) 2021-2023, Ventana Micro Systems Inc. 9 * Author: Sunil V L <sunilvl@ventanamicro.com> 10 */ 11 12 #ifndef _ASM_ACPI_H 13 #define _ASM_ACPI_H 14 15 /* Basic configuration for ACPI */ 16 #ifdef CONFIG_ACPI 17 18 typedef u64 phys_cpuid_t; 19 #define PHYS_CPUID_INVALID INVALID_HARTID 20 21 /* ACPI table mapping after acpi_permanent_mmap is set */ 22 void __iomem *acpi_os_ioremap(acpi_physical_address phys, acpi_size size); 23 #define acpi_os_ioremap acpi_os_ioremap 24 25 #define acpi_strict 1 /* No out-of-spec workarounds on RISC-V */ 26 extern int acpi_disabled; 27 extern int acpi_noirq; 28 extern int acpi_pci_disabled; 29 30 static inline void disable_acpi(void) 31 { 32 acpi_disabled = 1; 33 acpi_pci_disabled = 1; 34 acpi_noirq = 1; 35 } 36 37 static inline void enable_acpi(void) 38 { 39 acpi_disabled = 0; 40 acpi_pci_disabled = 0; 41 acpi_noirq = 0; 42 } 43 44 /* 45 * The ACPI processor driver for ACPI core code needs this macro 46 * to find out whether this cpu was already mapped (mapping from CPU hardware 47 * ID to CPU logical ID) or not. 48 */ 49 #define cpu_physical_id(cpu) cpuid_to_hartid_map(cpu) 50 51 /* 52 * Since MADT must provide at least one RINTC structure, the 53 * CPU will be always available in MADT on RISC-V. 54 */ 55 static inline bool acpi_has_cpu_in_madt(void) 56 { 57 return true; 58 } 59 60 static inline void arch_fix_phys_package_id(int num, u32 slot) { } 61 62 void acpi_init_rintc_map(void); 63 struct acpi_madt_rintc *acpi_cpu_get_madt_rintc(int cpu); 64 u32 get_acpi_id_for_cpu(int cpu); 65 int acpi_get_riscv_isa(struct acpi_table_header *table, 66 unsigned int cpu, const char **isa); 67 68 static inline int acpi_numa_get_nid(unsigned int cpu) { return NUMA_NO_NODE; } 69 void acpi_get_cbo_block_size(struct acpi_table_header *table, u32 *cbom_size, 70 u32 *cboz_size, u32 *cbop_size); 71 #else 72 static inline void acpi_init_rintc_map(void) { } 73 static inline struct acpi_madt_rintc *acpi_cpu_get_madt_rintc(int cpu) 74 { 75 return NULL; 76 } 77 78 static inline int acpi_get_riscv_isa(struct acpi_table_header *table, 79 unsigned int cpu, const char **isa) 80 { 81 return -EINVAL; 82 } 83 84 static inline void acpi_get_cbo_block_size(struct acpi_table_header *table, 85 u32 *cbom_size, u32 *cboz_size, 86 u32 *cbop_size) { } 87 88 #endif /* CONFIG_ACPI */ 89 90 #endif /*_ASM_ACPI_H*/ 91