NAK: [PATCH 1/5] mfd: Add support for IO functions of AAEON devices

Kleber Souza kleber.souza at canonical.com
Wed May 26 10:07:20 UTC 2021


Hello Aaeon,

Thank you for your proposed contribution to the Ubuntu Kernel. However,
in order for patches to be considered for acceptance, they need to follow
some rules as documented in the following link:

https://wiki.ubuntu.com/Kernel/Dev/StablePatchFormat

Could you please follow the instructions and re-send the patches?

Also, if you subscribe yourself to the mailing-list the emails are sent
straight away, otherwise they need to go through a moderation queue which
can take some days for someone to review it.


Thank you,
Kleber

On 24.05.21 08:13, aaeon.asus at gmail.com wrote:
> From: Kunyang_Fan <kunyang_fan at asus.com>
> 
> This adds the supports for multiple IO functions of the
> AAEON x86 devices and makes use of the WMI interface to
> control the these IO devices including:
> 
> - GPIO
> - LED
> - Watchdog
> - HWMON
> 
> It also adds the mfd child device drivers to support
> the above IO functions.
> 
> Signed-off-by: Kunyang_Fan <kunyang_fan at asus.com>
> ---
>   MAINTAINERS             | 12 +++++++
>   drivers/mfd/Kconfig     | 12 +++++++
>   drivers/mfd/Makefile    |  1 +
>   drivers/mfd/mfd-aaeon.c | 77 +++++++++++++++++++++++++++++++++++++++++
>   4 files changed, 102 insertions(+)
>   create mode 100644 drivers/mfd/mfd-aaeon.c
> 
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 1c19c1e2c970..49783dd44367 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -257,6 +257,18 @@ W:	http://www.adaptec.com/
>   F:	Documentation/scsi/aacraid.rst
>   F:	drivers/scsi/aacraid/
>   
> +AAEON DEVICE DRIVER WITH WMI INTERFACE
> +M:	Edward Lin<edward1_lin at asus.com>
> +M:	Kunyang Fan <kunyang_fan at asus.com>
> +M:	Frank Hsieh <frank2_hsieh at asus.com>
> +M:	Jacob Wu <jacob_wu at asus.com>
> +S:	Supported
> +F:	drivers/gpio/gpio-aaeon.c
> +F:	drivers/hwmon/hwmon-aaeon.c
> +F:	drivers/leds/leds-aaeon.c
> +F:	drivers/mfd/mfd-aaeon.c
> +F:	drivers/watchdog/wdt_aaeon.c
> +
>   ABI/API
>   L:	linux-api at vger.kernel.org
>   F:	include/linux/syscalls.h
> diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
> index a37d7d171382..f172564eed0d 100644
> --- a/drivers/mfd/Kconfig
> +++ b/drivers/mfd/Kconfig
> @@ -2053,6 +2053,18 @@ config MFD_WCD934X
>   	  This driver provides common support WCD934x audio codec and its
>   	  associated Pin Controller, Soundwire Controller and Audio codec.
>   
> +
> +config MFD_AAEON
> +	tristate "AAEON WMI MFD devices"
> +	depends on ASUS_WMI
> +	help
> +	  Say yes here to support mltiple IO devices on Single Board Computers
> +	  produced by AAEON.
> +
> +	  This driver leverages the ASUS WMI interface to access device
> +	  resources.
> +
> +
>   menu "Multimedia Capabilities Port drivers"
>   	depends on ARCH_SA1100
>   
> diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile
> index 9367a92f795a..36fff3d0da7e 100644
> --- a/drivers/mfd/Makefile
> +++ b/drivers/mfd/Makefile
> @@ -264,3 +264,4 @@ obj-$(CONFIG_MFD_ROHM_BD718XX)	+= rohm-bd718x7.o
>   obj-$(CONFIG_MFD_STMFX) 	+= stmfx.o
>   
>   obj-$(CONFIG_SGI_MFD_IOC3)	+= ioc3.o
> +obj-$(CONFIG_MFD_AAEON)		+= mfd-aaeon.o
> diff --git a/drivers/mfd/mfd-aaeon.c b/drivers/mfd/mfd-aaeon.c
> new file mode 100644
> index 000000000000..9d2efde53cad
> --- /dev/null
> +++ b/drivers/mfd/mfd-aaeon.c
> @@ -0,0 +1,77 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later
> +/*
> + * UP Board main platform driver and FPGA configuration support
> + *
> + * Copyright (c) 2021, AAEON Ltd.
> + *
> + * Author: Kunyang_Fan <knuyang_fan at aaeon.com.tw>
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation.
> + */
> +
> +#include <linux/acpi.h>
> +#include <linux/gpio.h>
> +#include <linux/kernel.h>
> +#include <linux/mfd/core.h>
> +#include <linux/module.h>
> +#include <linux/platform_device.h>
> +#include <linux/leds.h>
> +#include <linux/wmi.h>
> +
> +#define AAEON_WMI_MGMT_GUID      "97845ED0-4E6D-11DE-8A39-0800200C9A66"
> +
> +struct aaeon_wmi_priv {
> +	const struct mfd_cell *cells;
> +	size_t ncells;
> +};
> +
> +static const struct mfd_cell aaeon_mfd_cells[] = {
> +	{ .name = "gpio-aaeon" },
> +	{ .name = "hwmon-aaeon"},
> +	{ .name = "leds-aaeon"},
> +	{ .name = "wdt-aaeon"},
> +};
> +
> +static const struct aaeon_wmi_priv aaeon_wmi_priv_data = {
> +	.cells = aaeon_mfd_cells,
> +	.ncells = ARRAY_SIZE(aaeon_mfd_cells),
> +};
> +
> +static int aaeon_wmi_probe(struct wmi_device *wdev, const void *context)
> +{
> +	struct aaeon_wmi_priv *priv;
> +
> +	if (!wmi_has_guid(AAEON_WMI_MGMT_GUID)) {
> +		dev_info(&wdev->dev, "AAEON Management GUID not found\n");
> +		return -ENODEV;
> +	}
> +
> +
> +	priv = (struct aaeon_wmi_priv *)context;
> +	dev_set_drvdata(&wdev->dev, priv);
> +
> +	return devm_mfd_add_devices(&wdev->dev, 0, priv->cells,
> +				    priv->ncells, NULL, 0, NULL);
> +}
> +
> +static const struct wmi_device_id aaeon_wmi_id_table[] = {
> +	{ AAEON_WMI_MGMT_GUID, (void *)&aaeon_wmi_priv_data },
> +	{}
> +};
> +
> +static struct wmi_driver aaeon_wmi_driver = {
> +	.driver = {
> +		.name = "mfd-aaeon",
> +	},
> +	.id_table = aaeon_wmi_id_table,
> +	.probe = aaeon_wmi_probe,
> +};
> +
> +module_wmi_driver(aaeon_wmi_driver);
> +
> +MODULE_DEVICE_TABLE(wmi, aaeon_wmi_id_table);
> +MODULE_AUTHOR("Kunyang Fan <kunyang_fan at aaeon.com.tw>");
> +MODULE_DESCRIPTION("AAEON Board WMI driver");
> +MODULE_LICENSE("GPL v2");
> 




More information about the kernel-team mailing list