/* * Copyright (c) 2011-2012, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and * only version 2 as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ #ifndef __ARCH_ARM_MACH_MSM_PROCCOMM_REGULATOR_H__ #define __ARCH_ARM_MACH_MSM_PROCCOMM_REGULATOR_H__ #include #define PROCCOMM_REGULATOR_DEV_NAME "proccomm-regulator" /** * struct proccomm_regulator_info - A description of one proccomm regulator * @init_data: Initialization data for the regulator. * Must contain: * - A list of struct regulator_consumer_supply indicating * supply names for the regulator * - A filled out struct regulation_constraints containing: * - The name of the regulator * - The minimum and maximum voltages supported * - The supported modes (REGULATOR_MODE_NORMAL) * - The supported operations, currently limited to: * REGULATOR_CHANGE_STATUS * REGULATOR_CHANGE_VOLTAGE * - The input voltage, if the regulator is powered by another * - Properly set always_on, boot_on, and apply_uV flags * - The name of the supply regulator, if applicable * @id: The proccomm ID of this regulator. * @rise_time: The time that the regulator takes to initialize, * in microseconds. Set to 0 to disable rise-time checking. * @pulldown: Whether the regulator should be pulled down when off. * 1 to pull down the regulator. * 0 to leave the regulator floating. * -1 to indicate no preference. */ struct proccomm_regulator_info { struct regulator_init_data init_data; int id; int rise_time; int pulldown; int negative; int n_voltages; }; /** * struct proccomm_regulator_platform_data - proccomm driver platform data. * * Contains a description of a set of proccomm-controlled regulators. * Pass this in the platform_data field when instantiating the driver. * * @regs: An array of struct proccomm_regulator_info describing * the regulators to register. * @nregs: The number of regulators to register. */ struct proccomm_regulator_platform_data { struct proccomm_regulator_info *regs; size_t nregs; }; #if defined(CONFIG_MSM_VREG_SWITCH_INVERTED) #define VREG_SWITCH_ENABLE 0 #define VREG_SWITCH_DISABLE 1 #else #define VREG_SWITCH_ENABLE 1 #define VREG_SWITCH_DISABLE 0 #endif #endif