1*5d387d0dSPrzemyslaw Marczak /* 2*5d387d0dSPrzemyslaw Marczak * Copyright (C) 2015 Samsung Electronics 3*5d387d0dSPrzemyslaw Marczak * Przemyslaw Marczak <p.marczak@samsung.com> 4*5d387d0dSPrzemyslaw Marczak * 5*5d387d0dSPrzemyslaw Marczak * SPDX-License-Identifier: GPL-2.0+ 6*5d387d0dSPrzemyslaw Marczak */ 7*5d387d0dSPrzemyslaw Marczak 8*5d387d0dSPrzemyslaw Marczak #ifndef _SANDBOX_PMIC_H_ 9*5d387d0dSPrzemyslaw Marczak #define _SANDBOX_PMIC_H_ 10*5d387d0dSPrzemyslaw Marczak 11*5d387d0dSPrzemyslaw Marczak #define SANDBOX_LDO_DRIVER "sandbox_ldo" 12*5d387d0dSPrzemyslaw Marczak #define SANDBOX_OF_LDO_PREFIX "ldo" 13*5d387d0dSPrzemyslaw Marczak #define SANDBOX_BUCK_DRIVER "sandbox_buck" 14*5d387d0dSPrzemyslaw Marczak #define SANDBOX_OF_BUCK_PREFIX "buck" 15*5d387d0dSPrzemyslaw Marczak 16*5d387d0dSPrzemyslaw Marczak #define SANDBOX_BUCK_COUNT 2 17*5d387d0dSPrzemyslaw Marczak #define SANDBOX_LDO_COUNT 2 18*5d387d0dSPrzemyslaw Marczak /* 19*5d387d0dSPrzemyslaw Marczak * Sandbox PMIC registers: 20*5d387d0dSPrzemyslaw Marczak * We have only 12 significant registers, but we alloc 16 for padding. 21*5d387d0dSPrzemyslaw Marczak */ 22*5d387d0dSPrzemyslaw Marczak enum { 23*5d387d0dSPrzemyslaw Marczak SANDBOX_PMIC_REG_BUCK1_UV = 0, 24*5d387d0dSPrzemyslaw Marczak SANDBOX_PMIC_REG_BUCK1_UA, 25*5d387d0dSPrzemyslaw Marczak SANDBOX_PMIC_REG_BUCK1_OM, 26*5d387d0dSPrzemyslaw Marczak 27*5d387d0dSPrzemyslaw Marczak SANDBOX_PMIC_REG_BUCK2_UV, 28*5d387d0dSPrzemyslaw Marczak SANDBOX_PMIC_REG_BUCK2_UA, 29*5d387d0dSPrzemyslaw Marczak SANDBOX_PMIC_REG_BUCK2_OM, 30*5d387d0dSPrzemyslaw Marczak 31*5d387d0dSPrzemyslaw Marczak SANDBOX_PMIC_REG_LDO_OFFSET, 32*5d387d0dSPrzemyslaw Marczak SANDBOX_PMIC_REG_LDO1_UV = SANDBOX_PMIC_REG_LDO_OFFSET, 33*5d387d0dSPrzemyslaw Marczak SANDBOX_PMIC_REG_LDO1_UA, 34*5d387d0dSPrzemyslaw Marczak SANDBOX_PMIC_REG_LDO1_OM, 35*5d387d0dSPrzemyslaw Marczak 36*5d387d0dSPrzemyslaw Marczak SANDBOX_PMIC_REG_LDO2_UV, 37*5d387d0dSPrzemyslaw Marczak SANDBOX_PMIC_REG_LDO2_UA, 38*5d387d0dSPrzemyslaw Marczak SANDBOX_PMIC_REG_LDO2_OM, 39*5d387d0dSPrzemyslaw Marczak 40*5d387d0dSPrzemyslaw Marczak SANDBOX_PMIC_REG_COUNT = 16, 41*5d387d0dSPrzemyslaw Marczak }; 42*5d387d0dSPrzemyslaw Marczak 43*5d387d0dSPrzemyslaw Marczak /* Register offset for output: micro Volts, micro Amps, Operation Mode */ 44*5d387d0dSPrzemyslaw Marczak enum { 45*5d387d0dSPrzemyslaw Marczak OUT_REG_UV = 0, 46*5d387d0dSPrzemyslaw Marczak OUT_REG_UA, 47*5d387d0dSPrzemyslaw Marczak OUT_REG_OM, 48*5d387d0dSPrzemyslaw Marczak OUT_REG_COUNT, 49*5d387d0dSPrzemyslaw Marczak }; 50*5d387d0dSPrzemyslaw Marczak 51*5d387d0dSPrzemyslaw Marczak /* Buck operation modes */ 52*5d387d0dSPrzemyslaw Marczak enum { 53*5d387d0dSPrzemyslaw Marczak BUCK_OM_OFF = 0, 54*5d387d0dSPrzemyslaw Marczak BUCK_OM_ON, 55*5d387d0dSPrzemyslaw Marczak BUCK_OM_PWM, 56*5d387d0dSPrzemyslaw Marczak BUCK_OM_COUNT, 57*5d387d0dSPrzemyslaw Marczak }; 58*5d387d0dSPrzemyslaw Marczak 59*5d387d0dSPrzemyslaw Marczak /* Ldo operation modes */ 60*5d387d0dSPrzemyslaw Marczak enum { 61*5d387d0dSPrzemyslaw Marczak LDO_OM_OFF = 0, 62*5d387d0dSPrzemyslaw Marczak LDO_OM_ON, 63*5d387d0dSPrzemyslaw Marczak LDO_OM_SLEEP, 64*5d387d0dSPrzemyslaw Marczak LDO_OM_STANDBY, 65*5d387d0dSPrzemyslaw Marczak LDO_OM_COUNT, 66*5d387d0dSPrzemyslaw Marczak }; 67*5d387d0dSPrzemyslaw Marczak 68*5d387d0dSPrzemyslaw Marczak /* BUCK1 Voltage: min: 0.8V, step: 25mV, max 2.4V */ 69*5d387d0dSPrzemyslaw Marczak #define OUT_BUCK1_UV_MIN 800000 70*5d387d0dSPrzemyslaw Marczak #define OUT_BUCK1_UV_MAX 2400000 71*5d387d0dSPrzemyslaw Marczak #define OUT_BUCK1_UV_STEP 25000 72*5d387d0dSPrzemyslaw Marczak 73*5d387d0dSPrzemyslaw Marczak /* BUCK1 Amperage: min: 150mA, step: 25mA, max: 250mA */ 74*5d387d0dSPrzemyslaw Marczak #define OUT_BUCK1_UA_MIN 150000 75*5d387d0dSPrzemyslaw Marczak #define OUT_BUCK1_UA_MAX 250000 76*5d387d0dSPrzemyslaw Marczak #define OUT_BUCK1_UA_STEP 25000 77*5d387d0dSPrzemyslaw Marczak 78*5d387d0dSPrzemyslaw Marczak /* BUCK2 Voltage: min: 0.75V, step: 50mV, max 3.95V */ 79*5d387d0dSPrzemyslaw Marczak #define OUT_BUCK2_UV_MIN 750000 80*5d387d0dSPrzemyslaw Marczak #define OUT_BUCK2_UV_MAX 3950000 81*5d387d0dSPrzemyslaw Marczak #define OUT_BUCK2_UV_STEP 50000 82*5d387d0dSPrzemyslaw Marczak 83*5d387d0dSPrzemyslaw Marczak /* LDO1 Voltage: min: 0.8V, step: 25mV, max 2.4V */ 84*5d387d0dSPrzemyslaw Marczak #define OUT_LDO1_UV_MIN 800000 85*5d387d0dSPrzemyslaw Marczak #define OUT_LDO1_UV_MAX 2400000 86*5d387d0dSPrzemyslaw Marczak #define OUT_LDO1_UV_STEP 25000 87*5d387d0dSPrzemyslaw Marczak 88*5d387d0dSPrzemyslaw Marczak /* LDO1 Amperage: min: 100mA, step: 50mA, max: 200mA */ 89*5d387d0dSPrzemyslaw Marczak #define OUT_LDO1_UA_MIN 100000 90*5d387d0dSPrzemyslaw Marczak #define OUT_LDO1_UA_MAX 200000 91*5d387d0dSPrzemyslaw Marczak #define OUT_LDO1_UA_STEP 50000 92*5d387d0dSPrzemyslaw Marczak 93*5d387d0dSPrzemyslaw Marczak /* LDO2 Voltage: min: 0.75V, step: 50mV, max 3.95V */ 94*5d387d0dSPrzemyslaw Marczak #define OUT_LDO2_UV_MIN 750000 95*5d387d0dSPrzemyslaw Marczak #define OUT_LDO2_UV_MAX 3950000 96*5d387d0dSPrzemyslaw Marczak #define OUT_LDO2_UV_STEP 50000 97*5d387d0dSPrzemyslaw Marczak 98*5d387d0dSPrzemyslaw Marczak /* register <-> value conversion */ 99*5d387d0dSPrzemyslaw Marczak #define REG2VAL(min, step, reg) ((min) + ((step) * (reg))) 100*5d387d0dSPrzemyslaw Marczak #define VAL2REG(min, step, val) (((val) - (min)) / (step)) 101*5d387d0dSPrzemyslaw Marczak 102*5d387d0dSPrzemyslaw Marczak /* Operation mode id -> register value conversion */ 103*5d387d0dSPrzemyslaw Marczak #define OM2REG(x) (x) 104*5d387d0dSPrzemyslaw Marczak 105*5d387d0dSPrzemyslaw Marczak #endif 106