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 68e8e00c83SErik Rosen /* 69e8e00c83SErik Rosen * PMBUS_USE_COEFFICIENTS_CMD 70e8e00c83SErik Rosen * 71e8e00c83SErik Rosen * When this flag is set the PMBus core driver will use the COEFFICIENTS 72e8e00c83SErik Rosen * register to initialize the coefficients for the direct mode format. 73e8e00c83SErik Rosen */ 74e8e00c83SErik Rosen #define PMBUS_USE_COEFFICIENTS_CMD BIT(5) 75e8e00c83SErik Rosen 76*f4045257SJerome Brunet /* 77*f4045257SJerome Brunet * PMBUS_OP_PROTECTED 78*f4045257SJerome Brunet * Set if the chip OPERATION command is protected and protection is not 79*f4045257SJerome Brunet * determined by the standard WRITE_PROTECT command. 80*f4045257SJerome Brunet */ 81*f4045257SJerome Brunet #define PMBUS_OP_PROTECTED BIT(6) 82*f4045257SJerome Brunet 83*f4045257SJerome Brunet /* 84*f4045257SJerome Brunet * PMBUS_VOUT_PROTECTED 85*f4045257SJerome Brunet * Set if the chip VOUT_COMMAND command is protected and protection is not 86*f4045257SJerome Brunet * determined by the standard WRITE_PROTECT command. 87*f4045257SJerome Brunet */ 88*f4045257SJerome Brunet #define PMBUS_VOUT_PROTECTED BIT(7) 89*f4045257SJerome Brunet 904ba1bb12SWolfram Sang struct pmbus_platform_data { 914ba1bb12SWolfram Sang u32 flags; /* Device specific flags */ 924ba1bb12SWolfram Sang 934ba1bb12SWolfram Sang /* regulator support */ 944ba1bb12SWolfram Sang int num_regulators; 954ba1bb12SWolfram Sang struct regulator_init_data *reg_init_data; 964ba1bb12SWolfram Sang }; 974ba1bb12SWolfram Sang 984ba1bb12SWolfram Sang #endif /* _PMBUS_H_ */ 99