Commit 9a199794 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull more ACPI support updates from Rafael J. Wysocki:
 "These are mostly fixes and cleanups on top of the ACPI support updates
  merged recently, including two new quirks, an ACPI CPPC library fix,
  and fixes and cleanups of a few core ACPI device drivers:

   - Add an unused power resource handling quirk for THUNDEROBOT ZERO
     (Zhai Can)

   - Fix remaining for_each_possible_cpu() in the ACPI CPPC library to
     use online CPUs (Sean V Kelley)

   - Drop redundant checks from the ACPI notify handler and the driver
     remove callback in the ACPI battery driver (Rafael Wysocki)

   - Move the creation of the wakeup source during the ACPI button
     driver probe to an earlier point to avoid missing a wakeup event
     due to a race and clean up system wakeup handling and remove
     callback in that driver (Rafael Wysocki)

   - Drop unnecessary driver_data pointer clearing from the ACPI EC and
     SMBUS HC drivers and make the ACPI backlight (video) driver clear
     the device's driver_data pointer on remove (Rafael Wysocki)

   - Force enabling of PWM2 on the Yogabook YB1-X90 tablets (Yauhen
     Kharuzhy)"

* tag 'acpi-7.0-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
  ACPI: PM: Add unused power resource quirk for THUNDEROBOT ZERO
  ACPI: driver: Drop driver_data pointer clearing from two drivers
  ACPI: video: Clear driver_data pointer on remove
  ACPI: button: Tweak acpi_button_remove()
  ACPI: button: Tweak system wakeup handling
  ACPI: battery: Drop redundant checks from acpi_battery_remove()
  ACPI: CPPC: Fix remaining for_each_possible_cpu() to use online CPUs
  ACPI: x86: Force enabling of PWM2 on the Yogabook YB1-X90
  ACPI: button: Call device_init_wakeup() earlier during probe
  ACPI: battery: Drop redundant check from acpi_battery_notify()
parents c3c1e985 b89d8be0
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -2116,6 +2116,7 @@ static void acpi_video_bus_remove(struct platform_device *pdev)

	kfree(video->attached_array);
	kfree(video);
	device->driver_data = NULL;
}

static int __init is_i740(struct pci_dev *dev)
+1 −8
Original line number Diff line number Diff line
@@ -1066,9 +1066,6 @@ static void acpi_battery_notify(acpi_handle handle, u32 event, void *data)
	struct acpi_device *device = battery->device;
	struct power_supply *old;

	if (!battery)
		return;

	guard(mutex)(&battery->update_lock);

	old = battery->bat;
@@ -1274,13 +1271,9 @@ static int acpi_battery_probe(struct platform_device *pdev)

static void acpi_battery_remove(struct platform_device *pdev)
{
	struct acpi_device *device = ACPI_COMPANION(&pdev->dev);
	struct acpi_battery *battery = platform_get_drvdata(pdev);

	if (!device || !battery)
		return;

	acpi_dev_remove_notify_handler(device, ACPI_ALL_NOTIFY,
	acpi_dev_remove_notify_handler(battery->device, ACPI_ALL_NOTIFY,
				       acpi_battery_notify);

	device_init_wakeup(&pdev->dev, false);
+12 −8
Original line number Diff line number Diff line
@@ -170,7 +170,7 @@ static struct platform_driver acpi_button_driver = {

struct acpi_button {
	struct acpi_device *adev;
	struct platform_device *pdev;
	struct device *dev;		/* physical button device */
	unsigned int type;
	struct input_dev *input;
	char phys[32];			/* for input device */
@@ -398,7 +398,7 @@ static int acpi_lid_update_state(struct acpi_button *button,
		return state;

	if (state && signal_wakeup)
		acpi_pm_wakeup_event(&button->pdev->dev);
		acpi_pm_wakeup_event(button->dev);

	return acpi_lid_notify_state(button, state);
}
@@ -455,7 +455,7 @@ static void acpi_button_notify(acpi_handle handle, u32 event, void *data)
		return;
	}

	acpi_pm_wakeup_event(&button->pdev->dev);
	acpi_pm_wakeup_event(button->dev);

	if (button->suspended || event == ACPI_BUTTON_NOTIFY_WAKE)
		return;
@@ -550,7 +550,7 @@ static int acpi_button_probe(struct platform_device *pdev)

	platform_set_drvdata(pdev, button);

	button->pdev = pdev;
	button->dev = &pdev->dev;
	button->adev = device;
	button->input = input = input_allocate_device();
	if (!input) {
@@ -625,6 +625,8 @@ static int acpi_button_probe(struct platform_device *pdev)
		goto err_remove_fs;
	}

	device_init_wakeup(button->dev, true);

	switch (device->device_type) {
	case ACPI_BUS_TYPE_POWER_BUTTON:
		status = acpi_install_fixed_event_handler(ACPI_EVENT_POWER_BUTTON,
@@ -655,11 +657,11 @@ static int acpi_button_probe(struct platform_device *pdev)
		lid_device = device;
	}

	device_init_wakeup(&pdev->dev, true);
	pr_info("%s [%s]\n", name, acpi_device_bid(device));
	return 0;

err_input_unregister:
	device_init_wakeup(button->dev, false);
	input_unregister_device(input);
err_remove_fs:
	acpi_button_remove_fs(button);
@@ -670,10 +672,10 @@ static int acpi_button_probe(struct platform_device *pdev)

static void acpi_button_remove(struct platform_device *pdev)
{
	struct acpi_device *device = ACPI_COMPANION(&pdev->dev);
	struct acpi_button *button = platform_get_drvdata(pdev);
	struct acpi_device *adev = button->adev;

	switch (device->device_type) {
	switch (adev->device_type) {
	case ACPI_BUS_TYPE_POWER_BUTTON:
		acpi_remove_fixed_event_handler(ACPI_EVENT_POWER_BUTTON,
						acpi_button_event);
@@ -683,7 +685,7 @@ static void acpi_button_remove(struct platform_device *pdev)
						acpi_button_event);
		break;
	default:
		acpi_remove_notify_handler(device->handle, ACPI_DEVICE_NOTIFY,
		acpi_remove_notify_handler(adev->handle, ACPI_DEVICE_NOTIFY,
					   button->type == ACPI_BUTTON_TYPE_LID ?
						acpi_lid_notify :
						acpi_button_notify);
@@ -691,6 +693,8 @@ static void acpi_button_remove(struct platform_device *pdev)
	}
	acpi_os_wait_events_complete();

	device_init_wakeup(button->dev, false);

	acpi_button_remove_fs(button);
	input_unregister_device(button->input);
	kfree(button);
+2 −2
Original line number Diff line number Diff line
@@ -362,7 +362,7 @@ static int send_pcc_cmd(int pcc_ss_id, u16 cmd)
end:
	if (cmd == CMD_WRITE) {
		if (unlikely(ret)) {
			for_each_possible_cpu(i) {
			for_each_online_cpu(i) {
				struct cpc_desc *desc = per_cpu(cpc_desc_ptr, i);

				if (!desc)
@@ -524,7 +524,7 @@ int acpi_get_psd_map(unsigned int cpu, struct cppc_cpudata *cpu_data)
	else if (pdomain->coord_type == DOMAIN_COORD_TYPE_SW_ANY)
		cpu_data->shared_type = CPUFREQ_SHARED_TYPE_ANY;

	for_each_possible_cpu(i) {
	for_each_online_cpu(i) {
		if (i == cpu)
			continue;

+0 −2
Original line number Diff line number Diff line
@@ -1754,12 +1754,10 @@ static int acpi_ec_probe(struct platform_device *pdev)

static void acpi_ec_remove(struct platform_device *pdev)
{
	struct acpi_device *device = ACPI_COMPANION(&pdev->dev);
	struct acpi_ec *ec = platform_get_drvdata(pdev);

	release_region(ec->data_addr, 1);
	release_region(ec->command_addr, 1);
	device->driver_data = NULL;
	if (ec != boot_ec) {
		ec_remove_handlers(ec);
		acpi_ec_free(ec);
Loading