forked from mirrors/linux
		
	 e8e00c83a2
			
		
	
	
		e8e00c83a2
		
	
	
	
	
		
			
			Add support for reading and decoding direct format coefficients to the PMBus core driver. If the new flag PMBUS_USE_COEFFICIENTS_CMD is set, the driver will use the COEFFICIENTS register together with the information in the pmbus_sensor_attr structs to initialize relevant coefficients for the direct mode format. Signed-off-by: Erik Rosen <erik.rosen@metormote.com> [groeck: Initialize ret with -EINVAL in pmbus_init_coefficients()] Signed-off-by: Guenter Roeck <linux@roeck-us.net>
		
			
				
	
	
		
			84 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* SPDX-License-Identifier: GPL-2.0-or-later */
 | |
| /*
 | |
|  * Hardware monitoring driver for PMBus devices
 | |
|  *
 | |
|  * Copyright (c) 2010, 2011 Ericsson AB.
 | |
|  */
 | |
| 
 | |
| #ifndef _PMBUS_H_
 | |
| #define _PMBUS_H_
 | |
| 
 | |
| #include <linux/bits.h>
 | |
| 
 | |
| /* flags */
 | |
| 
 | |
| /*
 | |
|  * PMBUS_SKIP_STATUS_CHECK
 | |
|  *
 | |
|  * During register detection, skip checking the status register for
 | |
|  * communication or command errors.
 | |
|  *
 | |
|  * Some PMBus chips respond with valid data when trying to read an unsupported
 | |
|  * register. For such chips, checking the status register is mandatory when
 | |
|  * trying to determine if a chip register exists or not.
 | |
|  * Other PMBus chips don't support the STATUS_CML register, or report
 | |
|  * communication errors for no explicable reason. For such chips, checking
 | |
|  * the status register must be disabled.
 | |
|  */
 | |
| #define PMBUS_SKIP_STATUS_CHECK	BIT(0)
 | |
| 
 | |
| /*
 | |
|  * PMBUS_WRITE_PROTECTED
 | |
|  * Set if the chip is write protected and write protection is not determined
 | |
|  * by the standard WRITE_PROTECT command.
 | |
|  */
 | |
| #define PMBUS_WRITE_PROTECTED	BIT(1)
 | |
| 
 | |
| /*
 | |
|  * PMBUS_NO_CAPABILITY
 | |
|  *
 | |
|  * Some PMBus chips don't respond with valid data when reading the CAPABILITY
 | |
|  * register. For such chips, this flag should be set so that the PMBus core
 | |
|  * driver doesn't use CAPABILITY to determine it's behavior.
 | |
|  */
 | |
| #define PMBUS_NO_CAPABILITY			BIT(2)
 | |
| 
 | |
| /*
 | |
|  * PMBUS_READ_STATUS_AFTER_FAILED_CHECK
 | |
|  *
 | |
|  * Some PMBus chips end up in an undefined state when trying to read an
 | |
|  * unsupported register. For such chips, it is necessary to reset the
 | |
|  * chip pmbus controller to a known state after a failed register check.
 | |
|  * This can be done by reading a known register. By setting this flag the
 | |
|  * driver will try to read the STATUS register after each failed
 | |
|  * register check. This read may fail, but it will put the chip in a
 | |
|  * known state.
 | |
|  */
 | |
| #define PMBUS_READ_STATUS_AFTER_FAILED_CHECK	BIT(3)
 | |
| 
 | |
| /*
 | |
|  * PMBUS_NO_WRITE_PROTECT
 | |
|  *
 | |
|  * Some PMBus chips respond with invalid data when reading the WRITE_PROTECT
 | |
|  * register. For such chips, this flag should be set so that the PMBus core
 | |
|  * driver doesn't use the WRITE_PROTECT command to determine its behavior.
 | |
|  */
 | |
| #define PMBUS_NO_WRITE_PROTECT			BIT(4)
 | |
| 
 | |
| /*
 | |
|  * PMBUS_USE_COEFFICIENTS_CMD
 | |
|  *
 | |
|  * When this flag is set the PMBus core driver will use the COEFFICIENTS
 | |
|  * register to initialize the coefficients for the direct mode format.
 | |
|  */
 | |
| #define PMBUS_USE_COEFFICIENTS_CMD		BIT(5)
 | |
| 
 | |
| struct pmbus_platform_data {
 | |
| 	u32 flags;		/* Device specific flags */
 | |
| 
 | |
| 	/* regulator support */
 | |
| 	int num_regulators;
 | |
| 	struct regulator_init_data *reg_init_data;
 | |
| };
 | |
| 
 | |
| #endif /* _PMBUS_H_ */
 |