Unverified Commit 8cc2c415 authored by Kurt Borja's avatar Kurt Borja Committed by Ilpo Järvinen
Browse files

platform/x86: Split the alienware-wmi driver



Split alienware-wmi WMI drivers into different files. This is done
seamlessly by copying and pasting, however some blocks are reordered.

Reviewed-by: default avatarArmin Wolf <W_Armin@gmx.de>
Reviewed-by: default avatarMario Limonciello <mario.limonciello@amd.com>
Signed-off-by: default avatarKurt Borja <kuurtb@gmail.com>
Link: https://lore.kernel.org/r/20250207154610.13675-12-kuurtb@gmail.com


Reviewed-by: default avatarIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: default avatarIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
parent c5ebbaf1
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -6,6 +6,8 @@

obj-$(CONFIG_ALIENWARE_WMI)		+= alienware-wmi.o
alienware-wmi-objs			:= alienware-wmi-base.o
alienware-wmi-y				+= alienware-wmi-legacy.o
alienware-wmi-y				+= alienware-wmi-wmax.o
obj-$(CONFIG_DCDBAS)			+= dcdbas.o
obj-$(CONFIG_DELL_LAPTOP)		+= dell-laptop.o
obj-$(CONFIG_DELL_RBTN)			+= dell-rbtn.o
+0 −839

File changed.

Preview size limit exceeded, changes collapsed.

+95 −0
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Alienware LEGACY WMI device driver
 *
 * Copyright (C) 2025 Kurt Borja <kuurtb@gmail.com>
 */

#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt

#include <linux/wmi.h>
#include "alienware-wmi.h"

struct legacy_led_args {
	struct color_platform colors;
	u8 brightness;
	u8 state;
} __packed;


/*
 * Legacy WMI driver
 */
static int legacy_wmi_update_led(struct alienfx_priv *priv,
				 struct wmi_device *wdev, u8 location)
{
	struct legacy_led_args legacy_args = {
		.colors = priv->colors[location],
		.brightness = priv->global_brightness,
		.state = 0,
	};
	struct acpi_buffer input;
	acpi_status status;

	if (legacy_args.state != LEGACY_RUNNING) {
		legacy_args.state = priv->lighting_control_state;

		input.length = sizeof(legacy_args);
		input.pointer = &legacy_args;

		status = wmi_evaluate_method(LEGACY_POWER_CONTROL_GUID, 0,
					     location + 1, &input, NULL);
		if (ACPI_FAILURE(status))
			return -EIO;

		return 0;
	}

	return alienware_wmi_command(wdev, location + 1, &legacy_args,
				     sizeof(legacy_args), NULL);
}

static int legacy_wmi_update_brightness(struct alienfx_priv *priv,
					struct wmi_device *wdev, u8 brightness)
{
	return legacy_wmi_update_led(priv, wdev, 0);
}

static int legacy_wmi_probe(struct wmi_device *wdev, const void *context)
{
	struct alienfx_platdata pdata = {
		.wdev = wdev,
		.ops = {
			.upd_led = legacy_wmi_update_led,
			.upd_brightness = legacy_wmi_update_brightness,
		},
	};

	return alienware_alienfx_setup(&pdata);
}

static const struct wmi_device_id alienware_legacy_device_id_table[] = {
	{ LEGACY_CONTROL_GUID, NULL },
	{ },
};
MODULE_DEVICE_TABLE(wmi, alienware_legacy_device_id_table);

static struct wmi_driver alienware_legacy_wmi_driver = {
	.driver = {
		.name = "alienware-wmi-alienfx",
		.probe_type = PROBE_PREFER_ASYNCHRONOUS,
	},
	.id_table = alienware_legacy_device_id_table,
	.probe = legacy_wmi_probe,
	.no_singleton = true,
};

int __init alienware_legacy_wmi_init(void)
{
	return wmi_driver_register(&alienware_legacy_wmi_driver);
}

void __exit alienware_legacy_wmi_exit(void)
{
	wmi_driver_unregister(&alienware_legacy_wmi_driver);
}
+768 −0

File added.

Preview size limit exceeded, changes collapsed.