1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 3 #include <acpi/acpi.h> 4 #include <baseboard/variants.h> 5 #include <device/device.h> 6 #include <nhlt.h> 7 #include <gpio.h> 8 #include <soc/nhlt.h> 9 mainboard_init(void * chip_info)10static void mainboard_init(void *chip_info) 11 { 12 const struct pad_config *pads; 13 size_t num; 14 15 pads = variant_gpio_table(&num); 16 gpio_configure_pads(pads, num); 17 } 18 mainboard_write_acpi_tables(const struct device * device,unsigned long current,acpi_rsdp_t * rsdp)19static unsigned long mainboard_write_acpi_tables(const struct device *device, 20 unsigned long current, 21 acpi_rsdp_t *rsdp) 22 { 23 uintptr_t start_addr; 24 uintptr_t end_addr; 25 struct nhlt *nhlt; 26 27 start_addr = current; 28 29 nhlt = nhlt_init(); 30 31 if (nhlt == NULL) 32 return start_addr; 33 34 variant_nhlt_init(nhlt); 35 36 end_addr = nhlt_soc_serialize(nhlt, start_addr); 37 38 if (end_addr != start_addr) 39 acpi_add_table(rsdp, (void *)start_addr); 40 41 return end_addr; 42 } 43 mainboard_enable(struct device * dev)44static void mainboard_enable(struct device *dev) 45 { 46 dev->ops->write_acpi_tables = mainboard_write_acpi_tables; 47 } 48 49 struct chip_operations mainboard_ops = { 50 .init = mainboard_init, 51 .enable_dev = mainboard_enable, 52 }; 53