1 /* SPDX-License-Identifier: GPL-2.0+ */ 2 /* 3 * Copyright (C) 2018, Bin Meng <bmeng.cn@gmail.com> 4 */ 5 6 #ifndef __ASM_INTEL_ACPI_H__ 7 #define __ASM_INTEL_ACPI_H__ 8 9 struct acpi_cstate; 10 struct acpi_ctx; 11 struct acpi_tstate; 12 struct udevice; 13 14 /** 15 * acpi_generate_cpu_header() - Start generating an ACPI CPU entry 16 * 17 * Generates the ACPI information for a CPU. After this, the caller should 18 * generate_p_state_entries(), generate_t_state_entries and then 19 * acpigen_pop_len() to close off this package. 20 * 21 * @ctx: ACPI context pointer 22 * @core_id: CPU core number, as numbered by the SoC 23 * @c_state_map: Information about each C state 24 * @num_cstates: Number of entries in @c_state_map 25 * @return 0 if OK, -ve on error 26 */ 27 int acpi_generate_cpu_header(struct acpi_ctx *ctx, int core_id, 28 const struct acpi_cstate *c_state_map, 29 int num_cstates); 30 31 /** 32 * acpi_generate_cpu_package_final() - Write out the CPU PPKG entry 33 * 34 * This writes information about the CPUs in the package 35 * 36 * @ctx: ACPI context pointer 37 * @cores_per_package: Number of CPU cores in each package in the SoC 38 */ 39 int acpi_generate_cpu_package_final(struct acpi_ctx *ctx, 40 int cores_per_package); 41 42 void generate_p_state_entries(struct acpi_ctx *ctx, int core, 43 int cores_per_package); 44 void generate_t_state_entries(struct acpi_ctx *ctx, int core, 45 int cores_per_package, struct acpi_tstate *entry, 46 int nentries); 47 int southbridge_inject_dsdt(const struct udevice *dev, struct acpi_ctx *ctx); 48 49 int intel_southbridge_write_acpi_tables(const struct udevice *dev, 50 struct acpi_ctx *ctx); 51 52 #endif /* __ASM_INTEL_ACPI_H__ */ 53