linux-loongson/include/linux/pmbus.h
Jerome Brunet f404525775 hwmon: (pmbus/core) improve handling of write protected regulators
Writing PMBus protected registers does succeed from the smbus perspective,
even if the write is ignored by the device and a communication fault is
raised. This fault will silently be caught and cleared by pmbus irq if one
has been registered.

This means that the regulator call may return succeed although the
operation was ignored.

With this change, the operation which are not supported will be properly
flagged as such and the regulator framework won't even try to execute them.

Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
[groeck: Adjust to EXPORT_SYMBOL_NS_GPL API change]
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2024-12-14 08:00:44 -08:00

99 lines
2.9 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)
/*
* PMBUS_OP_PROTECTED
* Set if the chip OPERATION command is protected and protection is not
* determined by the standard WRITE_PROTECT command.
*/
#define PMBUS_OP_PROTECTED BIT(6)
/*
* PMBUS_VOUT_PROTECTED
* Set if the chip VOUT_COMMAND command is protected and protection is not
* determined by the standard WRITE_PROTECT command.
*/
#define PMBUS_VOUT_PROTECTED BIT(7)
struct pmbus_platform_data {
u32 flags; /* Device specific flags */
/* regulator support */
int num_regulators;
struct regulator_init_data *reg_init_data;
};
#endif /* _PMBUS_H_ */