Re: [PATCH 01/19] ACPI: introduce ACPI int340x thermal scan handler

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thursday, September 18, 2014 09:53:32 AM Zhang Rui wrote:
> Newer laptops and tablets that use ACPI may have thermal sensors and
> other devices with thermal control capabilities outside the core CPU/SOC,
> for thermal safety reasons.
> They are exposed for the OS to use via
> 1) INT3400 ACPI device object as the master.
> 2) INT3401 ~ INT340B ACPI device objects as the slaves.
> 
> This patch introduces a scan handler to enumerate the INT3400
> ACPI device object to platform bus, and prevent its slaves
> from being enumerated before the controller driver being probed.
> 
> Signed-off-by: Zhang Rui <rui.zhang@xxxxxxxxx>

ACK

> ---
>  drivers/acpi/Makefile          |  1 +
>  drivers/acpi/int340x_thermal.c | 51 ++++++++++++++++++++++++++++++++++++++++++
>  drivers/acpi/internal.h        |  1 +
>  drivers/acpi/scan.c            |  1 +
>  drivers/thermal/Kconfig        | 17 ++++++++++++++
>  5 files changed, 71 insertions(+)
>  create mode 100644 drivers/acpi/int340x_thermal.c
> 
> diff --git a/drivers/acpi/Makefile b/drivers/acpi/Makefile
> index 505d4d7..c3b2fcb 100644
> --- a/drivers/acpi/Makefile
> +++ b/drivers/acpi/Makefile
> @@ -43,6 +43,7 @@ acpi-y				+= pci_root.o pci_link.o pci_irq.o
>  acpi-y				+= acpi_lpss.o
>  acpi-y				+= acpi_platform.o
>  acpi-y				+= acpi_pnp.o
> +acpi-y				+= int340x_thermal.o
>  acpi-y				+= power.o
>  acpi-y				+= event.o
>  acpi-y				+= sysfs.o
> diff --git a/drivers/acpi/int340x_thermal.c b/drivers/acpi/int340x_thermal.c
> new file mode 100644
> index 0000000..2103bb6
> --- /dev/null
> +++ b/drivers/acpi/int340x_thermal.c
> @@ -0,0 +1,51 @@
> +/*
> + * ACPI support for int340x thermal drivers
> + *
> + * Copyright (C) 2014, Intel Corporation
> + * Authors: Zhang Rui <rui.zhang@xxxxxxxxx>
> + *
> + * 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/module.h>
> +
> +#include "internal.h"
> +
> +#define DO_ENUMERATION 0x01
> +static const struct acpi_device_id int340x_thermal_device_ids[] = {
> +	{"INT3400", DO_ENUMERATION },
> +	{"INT3401"},
> +	{"INT3402"},
> +	{"INT3403"},
> +	{"INT3404"},
> +	{"INT3406"},
> +	{"INT3407"},
> +	{"INT3408"},
> +	{"INT3409"},
> +	{"INT340A"},
> +	{"INT340B"},
> +	{""},
> +};
> +
> +static int int340x_thermal_handler_attach(struct acpi_device *adev,
> +					const struct acpi_device_id *id)
> +{
> +#ifdef CONFIG_INT340X_THERMAL
> +	if (id->driver_data == DO_ENUMERATION)
> +		acpi_create_platform_device(adev);
> +#endif
> +	return 1;
> +}
> +
> +static struct acpi_scan_handler int340x_thermal_handler = {
> +	.ids = int340x_thermal_device_ids,
> +	.attach = int340x_thermal_handler_attach,
> +};
> +
> +void __init acpi_int340x_thermal_init(void)
> +{
> +	acpi_scan_add_handler(&int340x_thermal_handler);
> +}
> diff --git a/drivers/acpi/internal.h b/drivers/acpi/internal.h
> index 4c5cf77..de47f9f 100644
> --- a/drivers/acpi/internal.h
> +++ b/drivers/acpi/internal.h
> @@ -31,6 +31,7 @@ void acpi_pci_link_init(void);
>  void acpi_processor_init(void);
>  void acpi_platform_init(void);
>  void acpi_pnp_init(void);
> +void acpi_int340x_thermal_init(void);
>  int acpi_sysfs_init(void);
>  void acpi_container_init(void);
>  void acpi_memory_hotplug_init(void);
> diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
> index 0a817ad..eed9740 100644
> --- a/drivers/acpi/scan.c
> +++ b/drivers/acpi/scan.c
> @@ -2306,6 +2306,7 @@ int __init acpi_scan_init(void)
>  	acpi_container_init();
>  	acpi_memory_hotplug_init();
>  	acpi_pnp_init();
> +	acpi_int340x_thermal_init();
>  
>  	mutex_lock(&acpi_scan_lock);
>  	/*
> diff --git a/drivers/thermal/Kconfig b/drivers/thermal/Kconfig
> index 693208e..2ff7416 100644
> --- a/drivers/thermal/Kconfig
> +++ b/drivers/thermal/Kconfig
> @@ -234,6 +234,23 @@ config INTEL_SOC_DTS_THERMAL
>  	  notification methods.The other trip is a critical trip point, which
>  	  was set by the driver based on the TJ MAX temperature.
>  
> +config INT340X_THERMAL
> +	bool
> +	depends on X86 && ACPI
> +	help
> +	  Newer laptops and tablets that use ACPI may have thermal sensors and
> +	  other devices with thermal control capabilities outside the core
> +	  CPU/SOC, for thermal safety reasons.
> +	  They are exposed for the OS to use via the INT3400 ACPI device object
> +	  as the master, and INT3401~INT340B ACPI device objects as the slaves.
> +	  Enable this to expose the temperature information and cooling ability
> +	  from these objects to userspace via the normal thermal framework.
> +	  This means that a wide range of applications and GUI widgets can show
> +	  the information to the user or use this information for making
> +	  decisions. For example, the Intel Thermal Daemon can use this
> +	  information to allow the user to select his laptop to run without
> +	  turning on the fans.
> +
>  menu "Texas Instruments thermal drivers"
>  source "drivers/thermal/ti-soc-thermal/Kconfig"
>  endmenu
> 

-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.
--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux