mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-28 20:02:17 +00:00
![Erik Rosen](/assets/img/avatar_default.png)
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_ */
|