xref: /openbmc/linux/include/linux/pmbus.h (revision e8e00c83)
174ba9207SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */
24ba1bb12SWolfram Sang /*
34ba1bb12SWolfram Sang  * Hardware monitoring driver for PMBus devices
44ba1bb12SWolfram Sang  *
54ba1bb12SWolfram Sang  * Copyright (c) 2010, 2011 Ericsson AB.
64ba1bb12SWolfram Sang  */
74ba1bb12SWolfram Sang 
84ba1bb12SWolfram Sang #ifndef _PMBUS_H_
94ba1bb12SWolfram Sang #define _PMBUS_H_
104ba1bb12SWolfram Sang 
119e347728SGuenter Roeck #include <linux/bits.h>
129e347728SGuenter Roeck 
134ba1bb12SWolfram Sang /* flags */
144ba1bb12SWolfram Sang 
154ba1bb12SWolfram Sang /*
164ba1bb12SWolfram Sang  * PMBUS_SKIP_STATUS_CHECK
174ba1bb12SWolfram Sang  *
184ba1bb12SWolfram Sang  * During register detection, skip checking the status register for
194ba1bb12SWolfram Sang  * communication or command errors.
204ba1bb12SWolfram Sang  *
214ba1bb12SWolfram Sang  * Some PMBus chips respond with valid data when trying to read an unsupported
224ba1bb12SWolfram Sang  * register. For such chips, checking the status register is mandatory when
234ba1bb12SWolfram Sang  * trying to determine if a chip register exists or not.
244ba1bb12SWolfram Sang  * Other PMBus chips don't support the STATUS_CML register, or report
254ba1bb12SWolfram Sang  * communication errors for no explicable reason. For such chips, checking
264ba1bb12SWolfram Sang  * the status register must be disabled.
274ba1bb12SWolfram Sang  */
289e347728SGuenter Roeck #define PMBUS_SKIP_STATUS_CHECK	BIT(0)
299e347728SGuenter Roeck 
309e347728SGuenter Roeck /*
319e347728SGuenter Roeck  * PMBUS_WRITE_PROTECTED
329e347728SGuenter Roeck  * Set if the chip is write protected and write protection is not determined
339e347728SGuenter Roeck  * by the standard WRITE_PROTECT command.
349e347728SGuenter Roeck  */
359e347728SGuenter Roeck #define PMBUS_WRITE_PROTECTED	BIT(1)
364ba1bb12SWolfram Sang 
37e5befc02SEddie James /*
38e5befc02SEddie James  * PMBUS_NO_CAPABILITY
39e5befc02SEddie James  *
40e5befc02SEddie James  * Some PMBus chips don't respond with valid data when reading the CAPABILITY
41e5befc02SEddie James  * register. For such chips, this flag should be set so that the PMBus core
42e5befc02SEddie James  * driver doesn't use CAPABILITY to determine it's behavior.
43e5befc02SEddie James  */
44e5befc02SEddie James #define PMBUS_NO_CAPABILITY			BIT(2)
45e5befc02SEddie James 
4686c908d9SErik Rosen /*
4786c908d9SErik Rosen  * PMBUS_READ_STATUS_AFTER_FAILED_CHECK
4886c908d9SErik Rosen  *
4986c908d9SErik Rosen  * Some PMBus chips end up in an undefined state when trying to read an
5086c908d9SErik Rosen  * unsupported register. For such chips, it is necessary to reset the
5186c908d9SErik Rosen  * chip pmbus controller to a known state after a failed register check.
5286c908d9SErik Rosen  * This can be done by reading a known register. By setting this flag the
5386c908d9SErik Rosen  * driver will try to read the STATUS register after each failed
5486c908d9SErik Rosen  * register check. This read may fail, but it will put the chip in a
5586c908d9SErik Rosen  * known state.
5686c908d9SErik Rosen  */
5786c908d9SErik Rosen #define PMBUS_READ_STATUS_AFTER_FAILED_CHECK	BIT(3)
5886c908d9SErik Rosen 
59dbc0860fSErik Rosen /*
60dbc0860fSErik Rosen  * PMBUS_NO_WRITE_PROTECT
61dbc0860fSErik Rosen  *
62dbc0860fSErik Rosen  * Some PMBus chips respond with invalid data when reading the WRITE_PROTECT
63dbc0860fSErik Rosen  * register. For such chips, this flag should be set so that the PMBus core
64dbc0860fSErik Rosen  * driver doesn't use the WRITE_PROTECT command to determine its behavior.
65dbc0860fSErik Rosen  */
66dbc0860fSErik Rosen #define PMBUS_NO_WRITE_PROTECT			BIT(4)
67dbc0860fSErik Rosen 
68*e8e00c83SErik Rosen /*
69*e8e00c83SErik Rosen  * PMBUS_USE_COEFFICIENTS_CMD
70*e8e00c83SErik Rosen  *
71*e8e00c83SErik Rosen  * When this flag is set the PMBus core driver will use the COEFFICIENTS
72*e8e00c83SErik Rosen  * register to initialize the coefficients for the direct mode format.
73*e8e00c83SErik Rosen  */
74*e8e00c83SErik Rosen #define PMBUS_USE_COEFFICIENTS_CMD		BIT(5)
75*e8e00c83SErik Rosen 
764ba1bb12SWolfram Sang struct pmbus_platform_data {
774ba1bb12SWolfram Sang 	u32 flags;		/* Device specific flags */
784ba1bb12SWolfram Sang 
794ba1bb12SWolfram Sang 	/* regulator support */
804ba1bb12SWolfram Sang 	int num_regulators;
814ba1bb12SWolfram Sang 	struct regulator_init_data *reg_init_data;
824ba1bb12SWolfram Sang };
834ba1bb12SWolfram Sang 
844ba1bb12SWolfram Sang #endif /* _PMBUS_H_ */
85