Re: [PATCH]: hwmon: (pmbus) Add tps40422 front-end driver

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

 



On Tue, Jul 01, 2014 at 07:14:23AM +0000, Zhu, Richard (NSN - CN/Beijing) wrote:
> Hi Guenter,
> 
> I update the document according to your findings, Thanks a lot for your time!
> 
> BR
> Richard
> 
> 
> [PATCH]: hwmon: (pmbus) Add tps40422 front-end driver
> 
> For TI power management chip TPS40422, READ_TEMPERATURE_2 command is supported on
> page 1 of the chip, but the original driver(pmbus.c) only tried to detect this command
> on page 0, this will lead to a result that the temperature sensor in page 1 couldn't
> be detected. This change is to isolate the tps40422 driver from pmbus.c into a solo
> front-end driver.
> 
> Signed-off-by: Zhu Laiwen <richard.zhu@xxxxxxx>

Applied to -next, with reservation and a minor change (see below).

> 
> diff -uprN a/Documentation/hwmon/pmbus b/Documentation/hwmon/pmbus
> --- a/Documentation/hwmon/pmbus	2014-06-30 09:24:38.302863000 +0200
> +++ b/Documentation/hwmon/pmbus	2014-06-30 09:26:44.128313000 +0200
> @@ -23,12 +23,11 @@ Supported chips:
>  	http://www.lineagepower.com/oem/pdf/PDT012A0X.pdf
>  	http://www.lineagepower.com/oem/pdf/UDT020A0X.pdf
>  	http://www.lineagepower.com/oem/pdf/MDT040A0X.pdf
> -  * Texas Instruments TPS40400, TPS40422
> -    Prefixes: 'tps40400', 'tps40422'
> +  * Texas Instruments TPS40400
> +    Prefixes: 'tps40400'
>      Addresses scanned: -
>      Datasheets:
>  	http://www.ti.com/lit/gpn/tps40400
> -	http://www.ti.com/lit/gpn/tps40422
>    * Generic PMBus devices
>      Prefix: 'pmbus'
>      Addresses scanned: -
> diff -uprN a/Documentation/hwmon/tps40422 b/Documentation/hwmon/tps40422
> --- a/Documentation/hwmon/tps40422	1970-01-01 01:00:00.000000000 +0100
> +++ b/Documentation/hwmon/tps40422	2014-07-01 09:04:45.525343000 +0200
> @@ -0,0 +1,64 @@
> +Kernel driver tps40422
> +======================
> +
> +Supported chips:
> +  * TI TPS40422
> +    Prefix: 'tps40422'
> +    Addresses scanned: -
> +    Datasheet: http://www.ti.com/lit/gpn/tps40422
> +
> +Author: Zhu Laiwen <richard.zhu@xxxxxxx>
> +
> +
> +Description
> +-----------
> +
> +This driver supports TI TPS40422 Dual-Output or Two-Phase Synchronous Buck
> +Controller with PMBus
> +
> +The driver is a client driver to the core PMBus driver.
> +Please see Documentation/hwmon/pmbus for details on PMBus client drivers.
> +
> +
> +Usage Notes
> +-----------
> +
> +This driver does not auto-detect devices. You will have to instantiate the
> +devices explicitly. Please see Documentation/i2c/instantiating-devices for
> +details.
> +
> +
> +Platform data support
> +---------------------
> +
> +The driver supports standard PMBus driver platform data.
> +
> +
> +Sysfs entries
> +-------------
> +
> +The following attributes are supported.
> +
> +in[1-2]_label		"vout[1-2]"
> +in[1-2]_input		Measured voltage. From READ_VOUT register.
> +in[1-2]_alarm		voltage alarm.
> +
> +curr[1-2]_input		Measured current. From READ_IOUT register.
> +curr[1-2]_label		"iout[1-2]"
> +curr1_max		Maximum current. From IOUT_OC_WARN_LIMIT register.
> +curr1_crit		Critical maximum current. From IOUT_OC_FAULT_LIMIT register.
> +curr1_max_alarm		Current high alarm. From IOUT_OC_WARN_LIMIT status.
> +curr1_crit_alarm	Current critical high alarm. From IOUT_OC_FAULT status.
> +curr2_alarm		Current high alarm. From IOUT_OC_WARNING status.
> +
> +temp1_input		Measured temperature. From READ_TEMPERATURE_2 register on page 0.
> +temp1_max		Maximum temperature. From OT_WARN_LIMIT register.
> +temp1_crit		Critical high temperature. From OT_FAULT_LIMIT register.
> +temp1_max_alarm		Chip temperature high alarm. Set by comparing
> +			READ_TEMPERATURE_2 on page 0 with OT_WARN_LIMIT if TEMP_OT_WARNING
> +			status is set.
> +temp1_crit_alarm	Chip temperature critical high alarm. Set by comparing
> +			READ_TEMPERATURE_2 on page 0 with OT_FAULT_LIMIT if TEMP_OT_FAULT
> +			status is set.
> +temp2_input		Measured temperature. From READ_TEMPERATURE_2 register on page 1.
> +temp2_alarm		Chip temperature alarm on page 1.

Unlikely that temp2 doesn't support any limits. If it does, the data can be added
with a separate patch, so I'll let it go for now.

> diff -uprN a/drivers/hwmon/pmbus/Kconfig b/drivers/hwmon/pmbus/Kconfig
> --- a/drivers/hwmon/pmbus/Kconfig	2014-06-27 10:07:38.728983000 +0200
> +++ b/drivers/hwmon/pmbus/Kconfig	2014-06-30 07:58:32.017883000 +0200
> @@ -20,8 +20,7 @@ config SENSORS_PMBUS
>  	help
>  	  If you say yes here you get hardware monitoring support for generic
>  	  PMBus devices, including but not limited to ADP4000, BMR453, BMR454,
> -	  MDT040, NCP4200, NCP4208, PDT003, PDT006, PDT012, UDT020, TPS40400,
> -	  and TPS40422.
> +	  MDT040, NCP4200, NCP4208, PDT003, PDT006, PDT012, UDT020, and TPS40400.
>  
>  	  This driver can also be built as a module. If so, the module will
>  	  be called pmbus.
> @@ -87,6 +86,16 @@ config SENSORS_MAX8688
>  	  This driver can also be built as a module. If so, the module will
>  	  be called max8688.
>  
> +config SENSORS_TPS40422
> +	tristate "TI TPS40422"
> +	default n
> +	help
> +	  If you say yes here you get hardware monitoring support for TI
> +	  TPS40422.
> +
> +	  This driver can also be built as a module. If so, the module will
> +	  be called tps40422.
> +
>  config SENSORS_UCD9000
>  	tristate "TI UCD90120, UCD90124, UCD9090, UCD90910"
>  	default n
> diff -uprN a/drivers/hwmon/pmbus/Makefile b/drivers/hwmon/pmbus/Makefile
> --- a/drivers/hwmon/pmbus/Makefile	2014-06-27 10:07:38.716971000 +0200
> +++ b/drivers/hwmon/pmbus/Makefile	2014-06-30 07:29:31.045045000 +0200
> @@ -10,6 +10,7 @@ obj-$(CONFIG_SENSORS_LTC2978)	+= ltc2978
>  obj-$(CONFIG_SENSORS_MAX16064)	+= max16064.o
>  obj-$(CONFIG_SENSORS_MAX34440)	+= max34440.o
>  obj-$(CONFIG_SENSORS_MAX8688)	+= max8688.o
> +obj-$(CONFIG_SENSORS_TPS40422)	+= tps40422.o
>  obj-$(CONFIG_SENSORS_UCD9000)	+= ucd9000.o
>  obj-$(CONFIG_SENSORS_UCD9200)	+= ucd9200.o
>  obj-$(CONFIG_SENSORS_ZL6100)	+= zl6100.o
> diff -uprN a/drivers/hwmon/pmbus/pmbus.c b/drivers/hwmon/pmbus/pmbus.c
> --- a/drivers/hwmon/pmbus/pmbus.c	2014-06-27 10:07:38.748979000 +0200
> +++ b/drivers/hwmon/pmbus/pmbus.c	2014-06-27 10:08:20.023123000 +0200
> @@ -193,7 +193,6 @@ static const struct i2c_device_id pmbus_
>  	{"pdt012", 1},
>  	{"pmbus", 0},
>  	{"tps40400", 1},
> -	{"tps40422", 2},
>  	{"udt020", 1},
>  	{}
>  };
> diff -uprN a/drivers/hwmon/pmbus/tps40422.c b/drivers/hwmon/pmbus/tps40422.c
> --- a/drivers/hwmon/pmbus/tps40422.c	1970-01-01 01:00:00.000000000 +0100
> +++ b/drivers/hwmon/pmbus/tps40422.c	2014-07-01 04:35:28.639334000 +0200
> @@ -0,0 +1,68 @@
> +/*
> + * Hardware monitoring driver for TI TPS40422
> + *
> + * Copyright (c) 2014 Nokia Solutions and Networks.
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License as published by
> + * the Free Software Foundation; either version 2 of the License, or
> + * (at your option) any later version.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> + * GNU General Public License for more details.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with this program; if not, write to the Free Software
> + * Foundation, Inc.

I dropped this paragraph; checkpatch complains about it, and it is 
unnecessary.

> + */
> +
> +#include <linux/kernel.h>
> +#include <linux/module.h>
> +#include <linux/init.h>
> +#include <linux/err.h>
> +#include <linux/i2c.h>
> +#include "pmbus.h"
> +
> +static struct pmbus_driver_info tps40422_info = {
> +	.pages = 2,
> +	.format[PSC_VOLTAGE_IN] = linear,
> +	.format[PSC_VOLTAGE_OUT] = linear,
> +	.format[PSC_TEMPERATURE] = linear,
> +	.func[0] = PMBUS_HAVE_VOUT | PMBUS_HAVE_TEMP2
> +		| PMBUS_HAVE_STATUS_VOUT | PMBUS_HAVE_STATUS_TEMP
> +		| PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT,
> +	.func[1] = PMBUS_HAVE_VOUT | PMBUS_HAVE_TEMP2
> +		| PMBUS_HAVE_STATUS_VOUT | PMBUS_HAVE_STATUS_TEMP
> +		| PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT,
> +};
> +
> +static int tps40422_probe(struct i2c_client *client,
> +			  const struct i2c_device_id *id)
> +{
> +	return pmbus_do_probe(client, id, &tps40422_info);
> +}
> +
> +static const struct i2c_device_id tps40422_id[] = {
> +	{"tps40422", 0},
> +	{}
> +};
> +
> +MODULE_DEVICE_TABLE(i2c, tps40422_id);
> +
> +/* This is the driver that will be inserted */
> +static struct i2c_driver tps40422_driver = {
> +	.driver = {
> +		   .name = "tps40422",
> +		   },
> +	.probe = tps40422_probe,
> +	.remove = pmbus_do_remove,
> +	.id_table = tps40422_id,
> +};
> +
> +module_i2c_driver(tps40422_driver);
> +
> +MODULE_AUTHOR("Zhu Laiwen <richard.zhu@xxxxxxx>");
> +MODULE_DESCRIPTION("PMBus driver for TI TPS40422");
> +MODULE_LICENSE("GPL");
> 

_______________________________________________
lm-sensors mailing list
lm-sensors@xxxxxxxxxxxxxx
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors




[Index of Archives]     [Linux Kernel]     [Linux Hardware Monitoring]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux