Lines Matching +full:smi +full:- +full:common

7  * SPDX-License-Identifier: GPL-2.0+
10 #include <common.h>
13 #include <dm/uclass-internal.h>
35 memcpy(rsdp->signature, RSDP_SIG, 8); in acpi_write_rsdp()
36 memcpy(rsdp->oem_id, OEM_ID, 6); in acpi_write_rsdp()
38 rsdp->length = sizeof(struct acpi_rsdp); in acpi_write_rsdp()
39 rsdp->rsdt_address = (u32)rsdt; in acpi_write_rsdp()
49 rsdp->revision = ACPI_RSDP_REV_ACPI_1_0; in acpi_write_rsdp()
51 rsdp->xsdt_address = (u64)(u32)xsdt; in acpi_write_rsdp()
52 rsdp->revision = ACPI_RSDP_REV_ACPI_2_0; in acpi_write_rsdp()
56 rsdp->checksum = table_compute_checksum((void *)rsdp, 20); in acpi_write_rsdp()
57 rsdp->ext_checksum = table_compute_checksum((void *)rsdp, in acpi_write_rsdp()
63 memcpy(header->signature, signature, 4); in acpi_fill_header()
64 memcpy(header->oem_id, OEM_ID, 6); in acpi_fill_header()
65 memcpy(header->oem_table_id, OEM_TABLE_ID, 8); in acpi_fill_header()
66 header->oem_revision = U_BOOT_BUILD_DATE; in acpi_fill_header()
67 memcpy(header->aslc_id, ASLC_ID, 4); in acpi_fill_header()
72 struct acpi_table_header *header = &(rsdt->header); in acpi_write_rsdt()
76 header->length = sizeof(struct acpi_rsdt); in acpi_write_rsdt()
77 header->revision = 1; in acpi_write_rsdt()
82 header->checksum = table_compute_checksum((void *)rsdt, in acpi_write_rsdt()
88 struct acpi_table_header *header = &(xsdt->header); in acpi_write_xsdt()
92 header->length = sizeof(struct acpi_xsdt); in acpi_write_xsdt()
93 header->revision = 1; in acpi_write_xsdt()
98 header->checksum = table_compute_checksum((void *)xsdt, in acpi_write_xsdt()
113 rsdt = (struct acpi_rsdt *)rsdp->rsdt_address; in acpi_add_table()
115 if (rsdp->xsdt_address) in acpi_add_table()
116 xsdt = (struct acpi_xsdt *)((u32)rsdp->xsdt_address); in acpi_add_table()
119 entries_num = ARRAY_SIZE(rsdt->entry); in acpi_add_table()
122 if (rsdt->entry[i] == 0) in acpi_add_table()
132 rsdt->entry[i] = (u32)table; in acpi_add_table()
135 rsdt->header.length = sizeof(struct acpi_table_header) + in acpi_add_table()
138 /* Re-calculate checksum */ in acpi_add_table()
139 rsdt->header.checksum = 0; in acpi_add_table()
140 rsdt->header.checksum = table_compute_checksum((u8 *)rsdt, in acpi_add_table()
141 rsdt->header.length); in acpi_add_table()
145 * now we want the XSDT and RSDT to always be in sync in U-Boot in acpi_add_table()
149 xsdt->entry[i] = (u64)(u32)table; in acpi_add_table()
152 xsdt->header.length = sizeof(struct acpi_table_header) + in acpi_add_table()
155 /* Re-calculate checksum */ in acpi_add_table()
156 xsdt->header.checksum = 0; in acpi_add_table()
157 xsdt->header.checksum = table_compute_checksum((u8 *)xsdt, in acpi_add_table()
158 xsdt->header.length); in acpi_add_table()
166 memcpy(facs->signature, "FACS", 4); in acpi_create_facs()
167 facs->length = sizeof(struct acpi_facs); in acpi_create_facs()
168 facs->hardware_signature = 0; in acpi_create_facs()
169 facs->firmware_waking_vector = 0; in acpi_create_facs()
170 facs->global_lock = 0; in acpi_create_facs()
171 facs->flags = 0; in acpi_create_facs()
172 facs->x_firmware_waking_vector_l = 0; in acpi_create_facs()
173 facs->x_firmware_waking_vector_h = 0; in acpi_create_facs()
174 facs->version = 1; in acpi_create_facs()
180 lapic->type = ACPI_APIC_LAPIC; in acpi_create_madt_lapic()
181 lapic->length = sizeof(struct acpi_madt_lapic); in acpi_create_madt_lapic()
182 lapic->flags = LOCAL_APIC_FLAG_ENABLED; in acpi_create_madt_lapic()
183 lapic->processor_id = cpu; in acpi_create_madt_lapic()
184 lapic->apic_id = apic; in acpi_create_madt_lapic()
186 return lapic->length; in acpi_create_madt_lapic()
200 plat->cpu_id, plat->cpu_id); in acpi_create_madt_lapics()
211 ioapic->type = ACPI_APIC_IOAPIC; in acpi_create_madt_ioapic()
212 ioapic->length = sizeof(struct acpi_madt_ioapic); in acpi_create_madt_ioapic()
213 ioapic->reserved = 0x00; in acpi_create_madt_ioapic()
214 ioapic->gsi_base = gsi_base; in acpi_create_madt_ioapic()
215 ioapic->ioapic_id = id; in acpi_create_madt_ioapic()
216 ioapic->ioapic_addr = addr; in acpi_create_madt_ioapic()
218 return ioapic->length; in acpi_create_madt_ioapic()
224 irqoverride->type = ACPI_APIC_IRQ_SRC_OVERRIDE; in acpi_create_madt_irqoverride()
225 irqoverride->length = sizeof(struct acpi_madt_irqoverride); in acpi_create_madt_irqoverride()
226 irqoverride->bus = bus; in acpi_create_madt_irqoverride()
227 irqoverride->source = source; in acpi_create_madt_irqoverride()
228 irqoverride->gsirq = gsirq; in acpi_create_madt_irqoverride()
229 irqoverride->flags = flags; in acpi_create_madt_irqoverride()
231 return irqoverride->length; in acpi_create_madt_irqoverride()
237 lapic_nmi->type = ACPI_APIC_LAPIC_NMI; in acpi_create_madt_lapic_nmi()
238 lapic_nmi->length = sizeof(struct acpi_madt_lapic_nmi); in acpi_create_madt_lapic_nmi()
239 lapic_nmi->flags = flags; in acpi_create_madt_lapic_nmi()
240 lapic_nmi->processor_id = cpu; in acpi_create_madt_lapic_nmi()
241 lapic_nmi->lint = lint; in acpi_create_madt_lapic_nmi()
243 return lapic_nmi->length; in acpi_create_madt_lapic_nmi()
275 struct acpi_table_header *header = &(madt->header); in acpi_create_madt()
282 header->length = sizeof(struct acpi_madt); in acpi_create_madt()
283 header->revision = 4; in acpi_create_madt()
285 madt->lapic_addr = LAPIC_DEFAULT_BASE; in acpi_create_madt()
286 madt->flags = ACPI_MADT_PCAT_COMPAT; in acpi_create_madt()
291 header->length = current - (u32)madt; in acpi_create_madt()
293 header->checksum = table_compute_checksum((void *)madt, header->length); in acpi_create_madt()
300 mmconfig->base_address_l = base; in acpi_create_mcfg_mmconfig()
301 mmconfig->base_address_h = 0; in acpi_create_mcfg_mmconfig()
302 mmconfig->pci_segment_group_number = seg_nr; in acpi_create_mcfg_mmconfig()
303 mmconfig->start_bus_number = start; in acpi_create_mcfg_mmconfig()
304 mmconfig->end_bus_number = end; in acpi_create_mcfg_mmconfig()
321 struct acpi_table_header *header = &(mcfg->header); in acpi_create_mcfg()
328 header->length = sizeof(struct acpi_mcfg); in acpi_create_mcfg()
329 header->revision = 1; in acpi_create_mcfg()
334 header->length = current - (u32)mcfg; in acpi_create_mcfg()
335 header->checksum = table_compute_checksum((void *)mcfg, header->length); in acpi_create_mcfg()
344 * either an SCI or SMI interrupt. When this bit is set, then power in enter_acpi_mode()
346 * is reset power management events will generate an SMI interrupt. in enter_acpi_mode()
351 * U-Boot does not support SMI. And we don't have plan to support in enter_acpi_mode()
352 * anything running in SMM within U-Boot. To create a legacy-free in enter_acpi_mode()
399 memset((void *)start, 0, current - start); in write_acpi_tables()
418 dsdt->length - sizeof(struct acpi_table_header)); in write_acpi_tables()
419 current += dsdt->length - sizeof(struct acpi_table_header); in write_acpi_tables()
423 for (i = 0; i < dsdt->length; i++) { in write_acpi_tables()
433 dsdt->checksum = 0; in write_acpi_tables()
434 dsdt->checksum = table_compute_checksum((void *)dsdt, dsdt->length); in write_acpi_tables()
436 /* Fill in platform-specific global NVS variables */ in write_acpi_tables()
451 current += madt->header.length; in write_acpi_tables()
458 current += mcfg->header.length; in write_acpi_tables()
467 if (fadt->flags & ACPI_FADT_HW_REDUCED_ACPI) in write_acpi_tables()
472 * do it by ourselves, since SMI will not be triggered. in write_acpi_tables()
474 enter_acpi_mode(fadt->pm1a_cnt_blk); in write_acpi_tables()
481 if (strncmp((char *)rsdp, RSDP_SIG, sizeof(RSDP_SIG) - 1) != 0) in acpi_valid_rsdp()
490 if ((rsdp->revision > 1) && in acpi_valid_rsdp()
491 (table_compute_checksum((void *)rsdp, rsdp->length) != 0)) in acpi_valid_rsdp()
517 rsdt = (struct acpi_rsdt *)rsdp->rsdt_address; in acpi_find_fadt()
519 end = (char *)rsdt + rsdt->header.length; in acpi_find_fadt()
522 for (i = 0; ((char *)&rsdt->entry[i]) < end; i++) { in acpi_find_fadt()
523 fadt = (struct acpi_fadt *)rsdt->entry[i]; in acpi_find_fadt()
543 facs = (struct acpi_facs *)fadt->firmware_ctrl; in acpi_find_wakeup_vector()
551 wake_vec = (void *)facs->firmware_waking_vector; in acpi_find_wakeup_vector()