diff options
author | Robin Gong <B38343@freescale.com> | 2011-12-19 18:09:25 +0800 |
---|---|---|
committer | Jason Liu <r64343@freescale.com> | 2012-01-09 21:12:09 +0800 |
commit | 4298f78c83cf0a7f7e2b640641c02431dfa9beac (patch) | |
tree | 755712f5c058c8f9e0c357d6cf857e2b4f8ec25f /drivers/regulator/pfuze-regulator.h | |
parent | 9b1c100011041c9d3889334a5c339cdb7bd0fb3c (diff) |
ENGR00170255-3 MX6Q PFUZE100: add regulator driver of pfuze100
add new regulator driver for pfuze100 based on mfd structure
Signed-off-by: Robin Gong <B38343@freescale.com>
Diffstat (limited to 'drivers/regulator/pfuze-regulator.h')
-rw-r--r-- | drivers/regulator/pfuze-regulator.h | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/drivers/regulator/pfuze-regulator.h b/drivers/regulator/pfuze-regulator.h new file mode 100644 index 000000000000..0ce1c8b62e89 --- /dev/null +++ b/drivers/regulator/pfuze-regulator.h @@ -0,0 +1,86 @@ +/* + * Copyright (C) 2011 Freescale Semiconductor, Inc. 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 as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#ifndef __LINUX_REGULATOR_PFUZE_H +#define __LINUX_REGULATOR_PFUZE_H + +#include <linux/regulator/driver.h> + +struct pfuze_regulator { + struct regulator_desc desc; + unsigned int reg; + unsigned char enable_bit; + unsigned char vsel_shift; + unsigned char vsel_mask; + int const *voltages; +}; + +struct pfuze_regulator_priv { + struct mc_pfuze *pfuze; + struct pfuze_regulator *pfuze_regulators; + struct regulator_dev *regulators[]; +}; + +#define PFUZE_DEFINE(prefix, _name, _reg, _voltages, _ops) \ + [prefix ## _name] = { \ + .desc = { \ + .name = #prefix "_" #_name, \ + .n_voltages = ARRAY_SIZE(_voltages), \ + .ops = &_ops, \ + .type = REGULATOR_VOLTAGE, \ + .id = prefix ## _name, \ + .owner = THIS_MODULE, \ + }, \ + .reg = prefix ## _reg, \ + .enable_bit = prefix ## _reg ## _ ## EN, \ + .vsel_shift = prefix ## _reg ## _ ## VSEL,\ + .vsel_mask = prefix ## _reg ## _ ## VSEL_M,\ + .voltages = _voltages, \ + } +#define PFUZE_SW_DEFINE(prefix, _name, _reg, _voltages, _ops) \ + [prefix ## _name] = { \ + .desc = { \ + .name = #prefix "_" #_name, \ + .n_voltages = ARRAY_SIZE(_voltages), \ + .ops = &_ops, \ + .type = REGULATOR_VOLTAGE, \ + .id = prefix ## _name, \ + .owner = THIS_MODULE, \ + }, \ + .reg = prefix ## _reg, \ + .vsel_shift = prefix ## _reg ## _ ## VSEL,\ + .vsel_mask = prefix ## _reg ## _ ## VSEL_M,\ + .voltages = _voltages, \ + } + +#define PFUZE_FIXED_DEFINE(prefix, _name, _reg, _voltages, _ops) \ + [prefix ## _name] = { \ + .desc = { \ + .name = #prefix "_" #_name, \ + .n_voltages = ARRAY_SIZE(_voltages), \ + .ops = &_ops, \ + .type = REGULATOR_VOLTAGE, \ + .id = prefix ## _name, \ + .owner = THIS_MODULE, \ + }, \ + .reg = prefix ## _reg, \ + .enable_bit = prefix ## _reg ## _ ## EN, \ + .voltages = _voltages, \ + } + +#endif + |