Commit 69652f32 authored by Rafael J. Wysocki's avatar Rafael J. Wysocki
Browse files

ACPI: event: Redefine acpi_notifier_call_chain()



Notice that acpi_notifier_call_chain() only uses its device argument
to retrieve the pnp.device_class and pnp.bus_id values from there, so
it can be redefined to take pointers to those two strings as parameters
istead of a struct acpi_device pointer.

That allows all of its callers to pass a string literal as its first
argument, so they won't need to initialize pnp.device_class in
struct acpi_device objects operated by them any more, and its
signature becomes more similar to acpi_bus_generate_netlink_event()
then.

Update the code as per the above.

No intentional functional impact.

Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
Link: https://patch.msgid.link/2056097.PYKUYFuaPT@rafael.j.wysocki
parent 97892d5f
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -133,7 +133,8 @@ static void acpi_ac_notify(acpi_handle handle, u32 event, void *data)
		acpi_bus_generate_netlink_event(adev->pnp.device_class,
						  dev_name(&adev->dev), event,
						  (u32) ac->state);
		acpi_notifier_call_chain(adev, event, (u32) ac->state);
		acpi_notifier_call_chain(ACPI_AC_CLASS, acpi_device_bid(adev),
					 event, ac->state);
		power_supply_changed(ac->charger);
	}
}
+6 −3
Original line number Diff line number Diff line
@@ -1566,7 +1566,8 @@ static void acpi_video_bus_notify(acpi_handle handle, u32 event, void *data)
		break;
	}

	if (acpi_notifier_call_chain(device, event, 0))
	if (acpi_notifier_call_chain(ACPI_VIDEO_CLASS, acpi_device_bid(device),
				     event, 0))
		/* Something vetoed the keypress. */
		keycode = 0;

@@ -1607,7 +1608,8 @@ static void acpi_video_device_notify(acpi_handle handle, u32 event, void *data)
		if (video_device->backlight)
			backlight_force_update(video_device->backlight,
					       BACKLIGHT_UPDATE_HOTKEY);
		acpi_notifier_call_chain(device, event, 0);
		acpi_notifier_call_chain(ACPI_VIDEO_CLASS, acpi_device_bid(device),
					 event, 0);
		return;
	}

@@ -1640,7 +1642,8 @@ static void acpi_video_device_notify(acpi_handle handle, u32 event, void *data)
	if (keycode)
		may_report_brightness_keys = true;

	acpi_notifier_call_chain(device, event, 0);
	acpi_notifier_call_chain(ACPI_VIDEO_CLASS, acpi_device_bid(device),
				 event, 0);

	if (keycode && (report_key_events & REPORT_BRIGHTNESS_KEY_EVENTS)) {
		input_report_key(input, keycode, 1);
+2 −1
Original line number Diff line number Diff line
@@ -1081,7 +1081,8 @@ static void acpi_battery_notify(acpi_handle handle, u32 event, void *data)
	acpi_bus_generate_netlink_event(device->pnp.device_class,
					dev_name(&device->dev), event,
					acpi_battery_present(battery));
	acpi_notifier_call_chain(device, event, acpi_battery_present(battery));
	acpi_notifier_call_chain(ACPI_BATTERY_CLASS, acpi_device_bid(device),
				 event, acpi_battery_present(battery));
	/* acpi_battery_update could remove power_supply object */
	if (old && battery->bat)
		power_supply_changed(battery->bat);
+4 −3
Original line number Diff line number Diff line
@@ -24,12 +24,13 @@
/* ACPI notifier chain */
static BLOCKING_NOTIFIER_HEAD(acpi_chain_head);

int acpi_notifier_call_chain(struct acpi_device *dev, u32 type, u32 data)
int acpi_notifier_call_chain(const char *device_class,
			     const char *bus_id, u32 type, u32 data)
{
	struct acpi_bus_event event;

	strscpy(event.device_class, dev->pnp.device_class);
	strscpy(event.bus_id, dev->pnp.bus_id);
	strscpy(event.device_class, device_class);
	strscpy(event.bus_id, bus_id);
	event.type = type;
	event.data = data;
	return (blocking_notifier_call_chain(&acpi_chain_head, 0, (void *)&event)
+2 −1
Original line number Diff line number Diff line
@@ -625,7 +625,8 @@ int acpi_dev_install_notify_handler(struct acpi_device *adev,
void acpi_dev_remove_notify_handler(struct acpi_device *adev,
				    u32 handler_type,
				    acpi_notify_handler handler);
extern int acpi_notifier_call_chain(struct acpi_device *, u32, u32);
extern int acpi_notifier_call_chain(const char *device_class,
				    const char *bus_id, u32 type, u32 data);
extern int register_acpi_notifier(struct notifier_block *);
extern int unregister_acpi_notifier(struct notifier_block *);