coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
mux.c
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 
3 #include <acpi/acpigen.h>
4 #include <device/device.h>
5 #include "chip.h"
6 
7 #define TGL_PMC_MUX_HID "INTC105C"
8 
9 static const char *mux_acpi_name(const struct device *dev)
10 {
11  return "MUX";
12 }
13 
14 static void mux_fill_ssdt(const struct device *dev)
15 {
16  const char *scope = acpi_device_scope(dev);
17  const char *name = acpi_device_name(dev);
18 
19  if (!scope || !name)
20  return;
21 
22  acpigen_write_scope(scope);
24 
27 
28  acpigen_pop_len(); /* Device */
29  acpigen_pop_len(); /* Scope */
30 }
31 
32 static struct device_operations mux_dev_ops = {
34  .set_resources = noop_set_resources,
35  .acpi_name = mux_acpi_name,
36  .acpi_fill_ssdt = mux_fill_ssdt,
37  .scan_bus = scan_static_bus,
38 };
39 
40 static void mux_enable(struct device *dev)
41 {
42  dev->ops = &mux_dev_ops;
43 }
44 
46  CHIP_NAME("Intel PMC MUX Driver")
47  .enable_dev = mux_enable,
48 };
const char * acpi_device_name(const struct device *dev)
Definition: device.c:49
const char * acpi_device_scope(const struct device *dev)
Definition: device.c:158
void acpigen_pop_len(void)
Definition: acpigen.c:37
void acpigen_write_scope(const char *name)
Definition: acpigen.c:326
void acpigen_write_device(const char *name)
Definition: acpigen.c:769
void acpigen_write_name_string(const char *name, const char *string)
Definition: acpigen.c:176
const char * name
Definition: mmu.c:92
#define CHIP_NAME(X)
Definition: device.h:32
static void noop_read_resources(struct device *dev)
Standard device operations function pointers shims.
Definition: device.h:73
static void noop_set_resources(struct device *dev)
Definition: device.h:74
#define TGL_PMC_MUX_HID
Definition: mux.c:7
static const char * mux_acpi_name(const struct device *dev)
Definition: mux.c:9
struct chip_operations drivers_intel_pmc_mux_ops
Definition: mux.c:45
static void mux_fill_ssdt(const struct device *dev)
Definition: mux.c:14
static struct device_operations mux_dev_ops
Definition: mux.c:32
static void mux_enable(struct device *dev)
Definition: mux.c:40
void scan_static_bus(struct device *bus)
Definition: root_device.c:89
const char * name
Definition: device.h:29
void(* read_resources)(struct device *dev)
Definition: device.h:39
Definition: device.h:107
struct chip_operations * chip_ops
Definition: device.h:144
struct device_operations * ops
Definition: device.h:143