Commit dfef7710 authored by Rafael J. Wysocki's avatar Rafael J. Wysocki

Merge branches 'acpi-bus', 'acpi-scan' and 'acpi-tables'

* acpi-bus:
  ACPI: Remove redundant clearing of context->ret.pointer from acpi_run_osc()

* acpi-scan:
  ACPI: scan: Simplify acpi_table_events_fn()
  ACPI: scan: Fix race related to dropping dependencies
  ACPI: scan: Reorganize acpi_device_add()
  ACPI: scan: Fix device object rescan in acpi_scan_clear_dep()
  ACPI: scan: Make acpi_walk_dep_device_list()
  ACPI: scan: Rearrange acpi_dev_get_first_consumer_dev_cb()
  ACPI: scan: Define acpi_bus_put_acpi_device() as static inline
  ACPI: scan: initialize local variable to avoid garbage being returned
  ACPI: scan: Add function to fetch dependent of ACPI device
  ACPI: scan: Extend acpi_walk_dep_device_list()
  ACPI: scan: Rearrange dep_unmet initialization

* acpi-tables:
  ACPI: tables: Add custom DSDT file as makefile prerequisite
  ACPI: bgrt: Use sysfs_emit
  ACPI: bgrt: Fix CFI violation
  ACPI: tables: FPDT: Add missing acpi_put_table() in acpi_init_fpdt()
  ACPI: tables: PPTT: Populate cache-id if provided by firmware
...@@ -8,6 +8,11 @@ ccflags-$(CONFIG_ACPI_DEBUG) += -DACPI_DEBUG_OUTPUT ...@@ -8,6 +8,11 @@ ccflags-$(CONFIG_ACPI_DEBUG) += -DACPI_DEBUG_OUTPUT
# #
# ACPI Boot-Time Table Parsing # ACPI Boot-Time Table Parsing
# #
ifeq ($(CONFIG_ACPI_CUSTOM_DSDT),y)
tables.o: $(src)/../../include/$(subst $\",,$(CONFIG_ACPI_CUSTOM_DSDT_FILE)) ;
endif
obj-$(CONFIG_ACPI) += tables.o obj-$(CONFIG_ACPI) += tables.o
obj-$(CONFIG_X86) += blacklist.o obj-$(CONFIG_X86) += blacklist.o
......
...@@ -240,8 +240,10 @@ static int __init acpi_init_fpdt(void) ...@@ -240,8 +240,10 @@ static int __init acpi_init_fpdt(void)
return 0; return 0;
fpdt_kobj = kobject_create_and_add("fpdt", acpi_kobj); fpdt_kobj = kobject_create_and_add("fpdt", acpi_kobj);
if (!fpdt_kobj) if (!fpdt_kobj) {
acpi_put_table(header);
return -ENOMEM; return -ENOMEM;
}
while (offset < header->length) { while (offset < header->length) {
subtable = (void *)header + offset; subtable = (void *)header + offset;
......
...@@ -15,40 +15,19 @@ ...@@ -15,40 +15,19 @@
static void *bgrt_image; static void *bgrt_image;
static struct kobject *bgrt_kobj; static struct kobject *bgrt_kobj;
static ssize_t version_show(struct device *dev, #define BGRT_SHOW(_name, _member) \
struct device_attribute *attr, char *buf) static ssize_t _name##_show(struct kobject *kobj, \
{ struct kobj_attribute *attr, char *buf) \
return snprintf(buf, PAGE_SIZE, "%d\n", bgrt_tab.version); { \
} return sysfs_emit(buf, "%d\n", bgrt_tab._member); \
static DEVICE_ATTR_RO(version); } \
struct kobj_attribute bgrt_attr_##_name = __ATTR_RO(_name)
static ssize_t status_show(struct device *dev,
struct device_attribute *attr, char *buf) BGRT_SHOW(version, version);
{ BGRT_SHOW(status, status);
return snprintf(buf, PAGE_SIZE, "%d\n", bgrt_tab.status); BGRT_SHOW(type, image_type);
} BGRT_SHOW(xoffset, image_offset_x);
static DEVICE_ATTR_RO(status); BGRT_SHOW(yoffset, image_offset_y);
static ssize_t type_show(struct device *dev,
struct device_attribute *attr, char *buf)
{
return snprintf(buf, PAGE_SIZE, "%d\n", bgrt_tab.image_type);
}
static DEVICE_ATTR_RO(type);
static ssize_t xoffset_show(struct device *dev,
struct device_attribute *attr, char *buf)
{
return snprintf(buf, PAGE_SIZE, "%d\n", bgrt_tab.image_offset_x);
}
static DEVICE_ATTR_RO(xoffset);
static ssize_t yoffset_show(struct device *dev,
struct device_attribute *attr, char *buf)
{
return snprintf(buf, PAGE_SIZE, "%d\n", bgrt_tab.image_offset_y);
}
static DEVICE_ATTR_RO(yoffset);
static ssize_t image_read(struct file *file, struct kobject *kobj, static ssize_t image_read(struct file *file, struct kobject *kobj,
struct bin_attribute *attr, char *buf, loff_t off, size_t count) struct bin_attribute *attr, char *buf, loff_t off, size_t count)
...@@ -60,11 +39,11 @@ static ssize_t image_read(struct file *file, struct kobject *kobj, ...@@ -60,11 +39,11 @@ static ssize_t image_read(struct file *file, struct kobject *kobj,
static BIN_ATTR_RO(image, 0); /* size gets filled in later */ static BIN_ATTR_RO(image, 0); /* size gets filled in later */
static struct attribute *bgrt_attributes[] = { static struct attribute *bgrt_attributes[] = {
&dev_attr_version.attr, &bgrt_attr_version.attr,
&dev_attr_status.attr, &bgrt_attr_status.attr,
&dev_attr_type.attr, &bgrt_attr_type.attr,
&dev_attr_xoffset.attr, &bgrt_attr_xoffset.attr,
&dev_attr_yoffset.attr, &bgrt_attr_yoffset.attr,
NULL, NULL,
}; };
......
...@@ -262,8 +262,6 @@ acpi_status acpi_run_osc(acpi_handle handle, struct acpi_osc_context *context) ...@@ -262,8 +262,6 @@ acpi_status acpi_run_osc(acpi_handle handle, struct acpi_osc_context *context)
out_kfree: out_kfree:
kfree(output.pointer); kfree(output.pointer);
if (status != AE_OK)
context->ret.pointer = NULL;
return status; return status;
} }
EXPORT_SYMBOL(acpi_run_osc); EXPORT_SYMBOL(acpi_run_osc);
...@@ -1195,7 +1193,8 @@ void __init acpi_subsystem_init(void) ...@@ -1195,7 +1193,8 @@ void __init acpi_subsystem_init(void)
static acpi_status acpi_bus_table_handler(u32 event, void *table, void *context) static acpi_status acpi_bus_table_handler(u32 event, void *table, void *context)
{ {
acpi_scan_table_handler(event, table, context); if (event == ACPI_TABLE_EVENT_LOAD)
acpi_scan_table_notify();
return acpi_sysfs_table_handler(event, table, context); return acpi_sysfs_table_handler(event, table, context);
} }
......
...@@ -1627,7 +1627,7 @@ static int acpi_ec_add(struct acpi_device *device) ...@@ -1627,7 +1627,7 @@ static int acpi_ec_add(struct acpi_device *device)
WARN(!ret, "Could not request EC cmd io port 0x%lx", ec->command_addr); WARN(!ret, "Could not request EC cmd io port 0x%lx", ec->command_addr);
/* Reprobe devices depending on the EC */ /* Reprobe devices depending on the EC */
acpi_walk_dep_device_list(ec->handle); acpi_dev_clear_dependencies(device);
acpi_handle_debug(ec->handle, "enumerated.\n"); acpi_handle_debug(ec->handle, "enumerated.\n");
return 0; return 0;
......
...@@ -88,7 +88,7 @@ void acpi_device_hotplug(struct acpi_device *adev, u32 src); ...@@ -88,7 +88,7 @@ void acpi_device_hotplug(struct acpi_device *adev, u32 src);
bool acpi_scan_is_offline(struct acpi_device *adev, bool uevent); bool acpi_scan_is_offline(struct acpi_device *adev, bool uevent);
acpi_status acpi_sysfs_table_handler(u32 event, void *table, void *context); acpi_status acpi_sysfs_table_handler(u32 event, void *table, void *context);
void acpi_scan_table_handler(u32 event, void *table, void *context); void acpi_scan_table_notify(void);
/* -------------------------------------------------------------------------- /* --------------------------------------------------------------------------
Device Node Initialization / Removal Device Node Initialization / Removal
......
...@@ -117,7 +117,7 @@ static int chtdc_ti_pmic_opregion_probe(struct platform_device *pdev) ...@@ -117,7 +117,7 @@ static int chtdc_ti_pmic_opregion_probe(struct platform_device *pdev)
return err; return err;
/* Re-enumerate devices depending on PMIC */ /* Re-enumerate devices depending on PMIC */
acpi_walk_dep_device_list(ACPI_HANDLE(pdev->dev.parent)); acpi_dev_clear_dependencies(ACPI_COMPANION(pdev->dev.parent));
return 0; return 0;
} }
......
...@@ -347,6 +347,7 @@ static struct acpi_pptt_cache *acpi_find_cache_node(struct acpi_table_header *ta ...@@ -347,6 +347,7 @@ static struct acpi_pptt_cache *acpi_find_cache_node(struct acpi_table_header *ta
* @this_leaf: Kernel cache info structure being updated * @this_leaf: Kernel cache info structure being updated
* @found_cache: The PPTT node describing this cache instance * @found_cache: The PPTT node describing this cache instance
* @cpu_node: A unique reference to describe this cache instance * @cpu_node: A unique reference to describe this cache instance
* @revision: The revision of the PPTT table
* *
* The ACPI spec implies that the fields in the cache structures are used to * The ACPI spec implies that the fields in the cache structures are used to
* extend and correct the information probed from the hardware. Lets only * extend and correct the information probed from the hardware. Lets only
...@@ -356,8 +357,11 @@ static struct acpi_pptt_cache *acpi_find_cache_node(struct acpi_table_header *ta ...@@ -356,8 +357,11 @@ static struct acpi_pptt_cache *acpi_find_cache_node(struct acpi_table_header *ta
*/ */
static void update_cache_properties(struct cacheinfo *this_leaf, static void update_cache_properties(struct cacheinfo *this_leaf,
struct acpi_pptt_cache *found_cache, struct acpi_pptt_cache *found_cache,
struct acpi_pptt_processor *cpu_node) struct acpi_pptt_processor *cpu_node,
u8 revision)
{ {
struct acpi_pptt_cache_v1* found_cache_v1;
this_leaf->fw_token = cpu_node; this_leaf->fw_token = cpu_node;
if (found_cache->flags & ACPI_PPTT_SIZE_PROPERTY_VALID) if (found_cache->flags & ACPI_PPTT_SIZE_PROPERTY_VALID)
this_leaf->size = found_cache->size; this_leaf->size = found_cache->size;
...@@ -405,6 +409,13 @@ static void update_cache_properties(struct cacheinfo *this_leaf, ...@@ -405,6 +409,13 @@ static void update_cache_properties(struct cacheinfo *this_leaf,
if (this_leaf->type == CACHE_TYPE_NOCACHE && if (this_leaf->type == CACHE_TYPE_NOCACHE &&
found_cache->flags & ACPI_PPTT_CACHE_TYPE_VALID) found_cache->flags & ACPI_PPTT_CACHE_TYPE_VALID)
this_leaf->type = CACHE_TYPE_UNIFIED; this_leaf->type = CACHE_TYPE_UNIFIED;
if (revision >= 3 && (found_cache->flags & ACPI_PPTT_CACHE_ID_VALID)) {
found_cache_v1 = ACPI_ADD_PTR(struct acpi_pptt_cache_v1,
found_cache, sizeof(struct acpi_pptt_cache));
this_leaf->id = found_cache_v1->cache_id;
this_leaf->attributes |= CACHE_ID;
}
} }
static void cache_setup_acpi_cpu(struct acpi_table_header *table, static void cache_setup_acpi_cpu(struct acpi_table_header *table,
...@@ -425,9 +436,8 @@ static void cache_setup_acpi_cpu(struct acpi_table_header *table, ...@@ -425,9 +436,8 @@ static void cache_setup_acpi_cpu(struct acpi_table_header *table,
&cpu_node); &cpu_node);
pr_debug("found = %p %p\n", found_cache, cpu_node); pr_debug("found = %p %p\n", found_cache, cpu_node);
if (found_cache) if (found_cache)
update_cache_properties(this_leaf, update_cache_properties(this_leaf, found_cache,
found_cache, cpu_node, table->revision);
cpu_node);
index++; index++;
} }
......
This diff is collapsed.
...@@ -1233,14 +1233,14 @@ static void acpi_gpiochip_scan_gpios(struct acpi_gpio_chip *achip) ...@@ -1233,14 +1233,14 @@ static void acpi_gpiochip_scan_gpios(struct acpi_gpio_chip *achip)
void acpi_gpiochip_add(struct gpio_chip *chip) void acpi_gpiochip_add(struct gpio_chip *chip)
{ {
struct acpi_gpio_chip *acpi_gpio; struct acpi_gpio_chip *acpi_gpio;
acpi_handle handle; struct acpi_device *adev;
acpi_status status; acpi_status status;
if (!chip || !chip->parent) if (!chip || !chip->parent)
return; return;
handle = ACPI_HANDLE(chip->parent); adev = ACPI_COMPANION(chip->parent);
if (!handle) if (!adev)
return; return;
acpi_gpio = kzalloc(sizeof(*acpi_gpio), GFP_KERNEL); acpi_gpio = kzalloc(sizeof(*acpi_gpio), GFP_KERNEL);
...@@ -1254,7 +1254,7 @@ void acpi_gpiochip_add(struct gpio_chip *chip) ...@@ -1254,7 +1254,7 @@ void acpi_gpiochip_add(struct gpio_chip *chip)
INIT_LIST_HEAD(&acpi_gpio->events); INIT_LIST_HEAD(&acpi_gpio->events);
INIT_LIST_HEAD(&acpi_gpio->deferred_req_irqs_list_entry); INIT_LIST_HEAD(&acpi_gpio->deferred_req_irqs_list_entry);
status = acpi_attach_data(handle, acpi_gpio_chip_dh, acpi_gpio); status = acpi_attach_data(adev->handle, acpi_gpio_chip_dh, acpi_gpio);
if (ACPI_FAILURE(status)) { if (ACPI_FAILURE(status)) {
dev_err(chip->parent, "Failed to attach ACPI GPIO chip\n"); dev_err(chip->parent, "Failed to attach ACPI GPIO chip\n");
kfree(acpi_gpio); kfree(acpi_gpio);
...@@ -1263,7 +1263,7 @@ void acpi_gpiochip_add(struct gpio_chip *chip) ...@@ -1263,7 +1263,7 @@ void acpi_gpiochip_add(struct gpio_chip *chip)
acpi_gpiochip_request_regions(acpi_gpio); acpi_gpiochip_request_regions(acpi_gpio);
acpi_gpiochip_scan_gpios(acpi_gpio); acpi_gpiochip_scan_gpios(acpi_gpio);
acpi_walk_dep_device_list(handle); acpi_dev_clear_dependencies(adev);
} }
void acpi_gpiochip_remove(struct gpio_chip *chip) void acpi_gpiochip_remove(struct gpio_chip *chip)
......
...@@ -259,8 +259,8 @@ static acpi_status i2c_acpi_add_device(acpi_handle handle, u32 level, ...@@ -259,8 +259,8 @@ static acpi_status i2c_acpi_add_device(acpi_handle handle, u32 level,
*/ */
void i2c_acpi_register_devices(struct i2c_adapter *adap) void i2c_acpi_register_devices(struct i2c_adapter *adap)
{ {
struct acpi_device *adev;
acpi_status status; acpi_status status;
acpi_handle handle;
if (!has_acpi_companion(&adap->dev)) if (!has_acpi_companion(&adap->dev))
return; return;
...@@ -275,11 +275,11 @@ void i2c_acpi_register_devices(struct i2c_adapter *adap) ...@@ -275,11 +275,11 @@ void i2c_acpi_register_devices(struct i2c_adapter *adap)
if (!adap->dev.parent) if (!adap->dev.parent)
return; return;
handle = ACPI_HANDLE(adap->dev.parent); adev = ACPI_COMPANION(adap->dev.parent);
if (!handle) if (!adev)
return; return;
acpi_walk_dep_device_list(handle); acpi_dev_clear_dependencies(adev);
} }
static const struct acpi_device_id i2c_acpi_force_400khz_device_ids[] = { static const struct acpi_device_id i2c_acpi_force_400khz_device_ids[] = {
......
...@@ -621,8 +621,8 @@ static const struct acpi_gpio_mapping ssam_acpi_gpios[] = { ...@@ -621,8 +621,8 @@ static const struct acpi_gpio_mapping ssam_acpi_gpios[] = {
static int ssam_serial_hub_probe(struct serdev_device *serdev) static int ssam_serial_hub_probe(struct serdev_device *serdev)
{ {
struct acpi_device *ssh = ACPI_COMPANION(&serdev->dev);
struct ssam_controller *ctrl; struct ssam_controller *ctrl;
acpi_handle *ssh = ACPI_HANDLE(&serdev->dev);
acpi_status astatus; acpi_status astatus;
int status; int status;
...@@ -652,7 +652,7 @@ static int ssam_serial_hub_probe(struct serdev_device *serdev) ...@@ -652,7 +652,7 @@ static int ssam_serial_hub_probe(struct serdev_device *serdev)
if (status) if (status)
goto err_devopen; goto err_devopen;
astatus = ssam_serdev_setup_via_acpi(ssh, serdev); astatus = ssam_serdev_setup_via_acpi(ssh->handle, serdev);
if (ACPI_FAILURE(astatus)) { if (ACPI_FAILURE(astatus)) {
status = -ENXIO; status = -ENXIO;
goto err_devinit; goto err_devinit;
...@@ -706,7 +706,7 @@ static int ssam_serial_hub_probe(struct serdev_device *serdev) ...@@ -706,7 +706,7 @@ static int ssam_serial_hub_probe(struct serdev_device *serdev)
* For now let's thus default power/wakeup to false. * For now let's thus default power/wakeup to false.
*/ */
device_set_wakeup_capable(&serdev->dev, true); device_set_wakeup_capable(&serdev->dev, true);
acpi_walk_dep_device_list(ssh); acpi_dev_clear_dependencies(ssh);
return 0; return 0;
......
...@@ -446,12 +446,12 @@ mshw0011_space_handler(u32 function, acpi_physical_address command, ...@@ -446,12 +446,12 @@ mshw0011_space_handler(u32 function, acpi_physical_address command,
static int mshw0011_install_space_handler(struct i2c_client *client) static int mshw0011_install_space_handler(struct i2c_client *client)
{ {
acpi_handle handle; struct acpi_device *adev;
struct mshw0011_handler_data *data; struct mshw0011_handler_data *data;
acpi_status status; acpi_status status;
handle = ACPI_HANDLE(&client->dev); adev = ACPI_COMPANION(&client->dev);
if (!handle) if (!adev)
return -ENODEV; return -ENODEV;
data = kzalloc(sizeof(struct mshw0011_handler_data), data = kzalloc(sizeof(struct mshw0011_handler_data),
...@@ -460,25 +460,25 @@ static int mshw0011_install_space_handler(struct i2c_client *client) ...@@ -460,25 +460,25 @@ static int mshw0011_install_space_handler(struct i2c_client *client)
return -ENOMEM; return -ENOMEM;
data->client = client; data->client = client;
status = acpi_bus_attach_private_data(handle, (void *)data); status = acpi_bus_attach_private_data(adev->handle, (void *)data);
if (ACPI_FAILURE(status)) { if (ACPI_FAILURE(status)) {
kfree(data); kfree(data);
return -ENOMEM; return -ENOMEM;
} }
status = acpi_install_address_space_handler(handle, status = acpi_install_address_space_handler(adev->handle,
ACPI_ADR_SPACE_GSBUS, ACPI_ADR_SPACE_GSBUS,
&mshw0011_space_handler, &mshw0011_space_handler,
NULL, NULL,
data); data);
if (ACPI_FAILURE(status)) { if (ACPI_FAILURE(status)) {
dev_err(&client->dev, "Error installing i2c space handler\n"); dev_err(&client->dev, "Error installing i2c space handler\n");
acpi_bus_detach_private_data(handle); acpi_bus_detach_private_data(adev->handle);
kfree(data); kfree(data);
return -ENOMEM; return -ENOMEM;
} }
acpi_walk_dep_device_list(handle); acpi_dev_clear_dependencies(adev);
return 0; return 0;
} }
......
...@@ -798,7 +798,7 @@ static int san_consumer_links_setup(struct platform_device *pdev) ...@@ -798,7 +798,7 @@ static int san_consumer_links_setup(struct platform_device *pdev)
static int san_probe(struct platform_device *pdev) static int san_probe(struct platform_device *pdev)
{ {
acpi_handle san = ACPI_HANDLE(&pdev->dev); struct acpi_device *san = ACPI_COMPANION(&pdev->dev);
struct ssam_controller *ctrl; struct ssam_controller *ctrl;
struct san_data *data; struct san_data *data;
acpi_status astatus; acpi_status astatus;
...@@ -821,7 +821,8 @@ static int san_probe(struct platform_device *pdev) ...@@ -821,7 +821,8 @@ static int san_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, data); platform_set_drvdata(pdev, data);
astatus = acpi_install_address_space_handler(san, ACPI_ADR_SPACE_GSBUS, astatus = acpi_install_address_space_handler(san->handle,
ACPI_ADR_SPACE_GSBUS,
&san_opreg_handler, NULL, &san_opreg_handler, NULL,
&data->info); &data->info);
if (ACPI_FAILURE(astatus)) if (ACPI_FAILURE(astatus))
...@@ -835,7 +836,7 @@ static int san_probe(struct platform_device *pdev) ...@@ -835,7 +836,7 @@ static int san_probe(struct platform_device *pdev)
if (status) if (status)
goto err_install_dev; goto err_install_dev;
acpi_walk_dep_device_list(san); acpi_dev_clear_dependencies(san);
return 0; return 0;
err_install_dev: err_install_dev:
......
...@@ -280,6 +280,12 @@ struct acpi_device_power { ...@@ -280,6 +280,12 @@ struct acpi_device_power {
struct acpi_device_power_state states[ACPI_D_STATE_COUNT]; /* Power states (D0-D3Cold) */ struct acpi_device_power_state states[ACPI_D_STATE_COUNT]; /* Power states (D0-D3Cold) */
}; };
struct acpi_dep_data {
struct list_head node;
acpi_handle supplier;
acpi_handle consumer;
};
/* Performance Management */ /* Performance Management */
struct acpi_device_perf_flags { struct acpi_device_perf_flags {
...@@ -498,8 +504,6 @@ extern int unregister_acpi_notifier(struct notifier_block *); ...@@ -498,8 +504,6 @@ extern int unregister_acpi_notifier(struct notifier_block *);
*/ */
int acpi_bus_get_device(acpi_handle handle, struct acpi_device **device); int acpi_bus_get_device(acpi_handle handle, struct acpi_device **device);
struct acpi_device *acpi_bus_get_acpi_device(acpi_handle handle);
void acpi_bus_put_acpi_device(struct acpi_device *adev);
acpi_status acpi_bus_get_status_handle(acpi_handle handle, acpi_status acpi_bus_get_status_handle(acpi_handle handle,
unsigned long long *sta); unsigned long long *sta);
int acpi_bus_get_status(struct acpi_device *device); int acpi_bus_get_status(struct acpi_device *device);
...@@ -685,6 +689,8 @@ static inline bool acpi_device_can_poweroff(struct acpi_device *adev) ...@@ -685,6 +689,8 @@ static inline bool acpi_device_can_poweroff(struct acpi_device *adev)
bool acpi_dev_hid_uid_match(struct acpi_device *adev, const char *hid2, const char *uid2); bool acpi_dev_hid_uid_match(struct acpi_device *adev, const char *hid2, const char *uid2);
void acpi_dev_clear_dependencies(struct acpi_device *supplier);
struct acpi_device *acpi_dev_get_first_consumer_dev(struct acpi_device *supplier);
struct acpi_device * struct acpi_device *
acpi_dev_get_next_match_dev(struct acpi_device *adev, const char *hid, const char *uid, s64 hrv); acpi_dev_get_next_match_dev(struct acpi_device *adev, const char *hid, const char *uid, s64 hrv);
struct acpi_device * struct acpi_device *
...@@ -718,6 +724,13 @@ static inline void acpi_dev_put(struct acpi_device *adev) ...@@ -718,6 +724,13 @@ static inline void acpi_dev_put(struct acpi_device *adev)
{ {
put_device(&adev->dev); put_device(&adev->dev);
} }
struct acpi_device *acpi_bus_get_acpi_device(acpi_handle handle);
static inline void acpi_bus_put_acpi_device(struct acpi_device *adev)
{
acpi_dev_put(adev);
}
#else /* CONFIG_ACPI */ #else /* CONFIG_ACPI */
static inline int register_acpi_bus_type(void *bus) { return 0; } static inline int register_acpi_bus_type(void *bus) { return 0; }
......
...@@ -666,7 +666,6 @@ extern bool acpi_driver_match_device(struct device *dev, ...@@ -666,7 +666,6 @@ extern bool acpi_driver_match_device(struct device *dev,
const struct device_driver *drv); const struct device_driver *drv);
int acpi_device_uevent_modalias(struct device *, struct kobj_uevent_env *); int acpi_device_uevent_modalias(struct device *, struct kobj_uevent_env *);
int acpi_device_modalias(struct device *, char *, int); int acpi_device_modalias(struct device *, char *, int);
void acpi_walk_dep_device_list(acpi_handle handle);
struct platform_device *acpi_create_platform_device(struct acpi_device *, struct platform_device *acpi_create_platform_device(struct acpi_device *,
struct property_entry *); struct property_entry *);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment