blob: 8a08e3e35c569368dd05f75b067da18c6d2af22e [file] [log] [blame]
/*
* 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 <linux/regulator/machine.h>
#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