13 #if CONFIG(HAVE_ACPI_TABLES)
30 static int i2c_generic_write_gpio(
struct acpi_gpio *
gpio,
int *curr_index)
34 if (
gpio->pin_count == 0)
45 void (*callback)(
const struct device *dev),
57 int reset_gpio_index = -1, enable_gpio_index = -1, irq_gpio_index = -1;
85 if (
config->irq_gpio.pin_count)
86 irq_gpio_index = i2c_generic_write_gpio(&
config->irq_gpio,
91 if (i2c_generic_add_gpios_to_crs(
config) ==
true) {
92 reset_gpio_index = i2c_generic_write_gpio(&
config->reset_gpio,
94 enable_gpio_index = i2c_generic_write_gpio(&
config->enable_gpio,
107 (reset_gpio_index != -1) ||
108 (enable_gpio_index != -1) || (irq_gpio_index != -1)) {
110 if (
config->compat_string)
115 if (irq_gpio_index != -1)
118 config->irq_gpio.active_low);
119 if (reset_gpio_index != -1)
122 config->reset_gpio.active_low);
123 if (enable_gpio_index != -1)
125 enable_gpio_index, 0,
126 config->enable_gpio.active_low);
134 if (
config->has_power_resource) {
138 config->reset_off_delay_ms,
141 config->enable_off_delay_ms,
160 static void i2c_generic_fill_ssdt_generator(
const struct device *dev)
166 static const char *i2c_generic_acpi_name(
const struct device *dev)
183 #if CONFIG(HAVE_ACPI_TABLES)
184 .acpi_name = i2c_generic_acpi_name,
185 .acpi_fill_ssdt = i2c_generic_fill_ssdt_generator,
197 if (
config->device_present_gpio) {
199 present ^=
config->device_present_gpio_invert;
void acpi_device_write_gpio(const struct acpi_gpio *gpio)
const char * acpi_device_path(const struct device *dev)
void acpi_device_add_power_res(const struct acpi_power_res_params *params)
struct acpi_dp * acpi_dp_add_string(struct acpi_dp *dp, const char *name, const char *string)
void acpi_device_write_interrupt(const struct acpi_irq *irq)
struct acpi_dp * acpi_dp_add_integer(struct acpi_dp *dp, const char *name, uint64_t value)
void acpi_device_write_i2c(const struct acpi_i2c *i2c)
void acpi_dp_write(struct acpi_dp *table)
struct acpi_dp * acpi_dp_add_gpio(struct acpi_dp *dp, const char *name, const char *ref, int index, int pin, int active_low)
size_t acpi_dp_add_property_list(struct acpi_dp *dp, const struct acpi_dp *property_list, size_t property_count)
int acpi_device_status(const struct device *dev)
const char * acpi_device_name(const struct device *dev)
struct acpi_dp * acpi_dp_new_table(const char *name)
const char * acpi_device_scope(const struct device *dev)
void acpigen_write_PRW(u32 wake, u32 level)
void acpigen_pop_len(void)
void acpigen_write_scope(const char *name)
void acpigen_write_resourcetemplate_footer(void)
void acpigen_write_name_integer(const char *name, uint64_t val)
void acpigen_write_STA(uint8_t status)
void acpigen_write_resourcetemplate_header(void)
void acpigen_write_device(const char *name)
void acpigen_write_name(const char *name)
void acpigen_write_name_string(const char *name, const char *string)
#define printk(level,...)
const char * dev_path(const struct device *dev)
void i2c_generic_fill_ssdt(const struct device *dev, void(*callback)(const struct device *dev), struct drivers_i2c_generic_config *config)
static struct device_operations i2c_generic_ops
static void i2c_generic_enable(struct device *dev)
struct chip_operations drivers_i2c_generic_ops
@ ACPI_DEVICE_SLEEP_D3_HOT
static void noop_read_resources(struct device *dev)
Standard device operations function pointers shims.
static void noop_set_resources(struct device *dev)
int gpio_get(gpio_t gpio)
#define BIOS_INFO
BIOS_INFO - Expected events.
#define BIOS_ERR
BIOS_ERR - System in incomplete state.
void(* read_resources)(struct device *dev)
struct chip_operations * chip_ops
struct device_operations * ops
DEVTREE_CONST void * chip_info
struct acpi_gpio enable_gpio
bool disable_gpio_export_in_crs
struct acpi_gpio reset_gpio
int snprintf(char *buf, size_t size, const char *fmt,...)
Note: This file is only for POSIX compatibility, and is meant to be chain-included via string....