2019-05-27 09:55:01 +03:00
// SPDX-License-Identifier: GPL-2.0-or-later
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
/*
2009-12-13 23:36:49 +03:00
* twl - regulator . c - - support regulators in twl4030 / twl6030 family chips
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
*
* Copyright ( C ) 2008 David Brownell
*/
# include <linux/module.h>
2012-08-16 09:16:05 +04:00
# include <linux/string.h>
# include <linux/slab.h>
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
# include <linux/init.h>
# include <linux/err.h>
# include <linux/platform_device.h>
2012-02-28 13:39:11 +04:00
# include <linux/of.h>
# include <linux/of_device.h>
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
# include <linux/regulator/driver.h>
# include <linux/regulator/machine.h>
2012-02-28 13:39:11 +04:00
# include <linux/regulator/of_regulator.h>
2017-08-14 19:34:24 +03:00
# include <linux/mfd/twl.h>
2016-03-26 11:28:13 +03:00
# include <linux/delay.h>
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
/*
2016-11-12 15:42:15 +03:00
* The TWL4030 / TW5030 / TPS659x0 family chips include power management , a
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
* USB OTG transceiver , an RTC , ADC , PWM , and lots more . Some versions
* include an audio codec , battery charger , and more voltage regulators .
* These chips are often used in OMAP - based systems .
*
* This driver implements software - based resource control for various
* voltage regulators . This is usually augmented with state machine
* based control .
*/
struct twlreg_info {
/* start of regulator's PM_RECEIVER control register bank */
u8 base ;
2009-12-13 23:36:49 +03:00
/* twl resource ID, for resource control state machine */
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
u8 id ;
/* voltage in mV = table[VSEL]; table_len must be a power-of-two */
u8 table_len ;
const u16 * table ;
2009-12-16 15:49:52 +03:00
/* State REMAP default configuration */
u8 remap ;
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
/* used by regulator core */
struct regulator_desc desc ;
2011-05-23 00:21:23 +04:00
/* chip specific features */
2014-01-08 05:04:48 +04:00
unsigned long features ;
2012-02-16 14:27:52 +04:00
/* data passed from board for external get/set voltage */
void * data ;
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
} ;
/* LDO control registers ... offset is from the base of its register bank.
* The first three registers of all power resource banks help hardware to
* manage the various resource groups .
*/
2009-12-14 00:19:23 +03:00
/* Common offset in TWL4030/6030 */
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
# define VREG_GRP 0
2009-12-14 00:19:23 +03:00
/* TWL4030 register offsets */
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
# define VREG_TYPE 1
# define VREG_REMAP 2
# define VREG_DEDICATED 3 /* LDO control */
2011-11-28 18:53:19 +04:00
# define VREG_VOLTAGE_SMPS_4030 9
2009-12-14 00:19:23 +03:00
/* TWL6030 register offsets */
# define VREG_TRANS 1
# define VREG_STATE 2
# define VREG_VOLTAGE 3
2011-05-23 00:21:23 +04:00
# define VREG_VOLTAGE_SMPS 4
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
static inline int
2009-12-14 00:19:23 +03:00
twlreg_read ( struct twlreg_info * info , unsigned slave_subgp , unsigned offset )
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
{
u8 value ;
int status ;
2009-12-14 00:19:23 +03:00
status = twl_i2c_read_u8 ( slave_subgp ,
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
& value , info - > base + offset ) ;
return ( status < 0 ) ? status : value ;
}
static inline int
2009-12-14 00:19:23 +03:00
twlreg_write ( struct twlreg_info * info , unsigned slave_subgp , unsigned offset ,
u8 value )
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
{
2009-12-14 00:19:23 +03:00
return twl_i2c_write_u8 ( slave_subgp ,
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
value , info - > base + offset ) ;
}
/*----------------------------------------------------------------------*/
/* generic power resource operations, which work on all regulators */
2009-12-13 23:36:49 +03:00
static int twlreg_grp ( struct regulator_dev * rdev )
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
{
2009-12-14 00:19:23 +03:00
return twlreg_read ( rdev_get_drvdata ( rdev ) , TWL_MODULE_PM_RECEIVER ,
VREG_GRP ) ;
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
}
/*
* Enable / disable regulators by joining / leaving the P1 ( processor ) group .
* We assume nobody else is updating the DEV_GRP registers .
*/
2009-12-14 00:19:23 +03:00
/* definition for 4030 family */
# define P3_GRP_4030 BIT(7) /* "peripherals" */
# define P2_GRP_4030 BIT(6) /* secondary processor, modem, etc */
# define P1_GRP_4030 BIT(5) /* CPU/Linux */
/* definition for 6030 family */
# define P3_GRP_6030 BIT(2) /* secondary processor, modem, etc */
# define P2_GRP_6030 BIT(1) /* "peripherals" */
# define P1_GRP_6030 BIT(0) /* CPU/Linux */
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
2011-04-01 08:52:44 +04:00
static int twl4030reg_is_enabled ( struct regulator_dev * rdev )
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
{
2009-12-13 23:36:49 +03:00
int state = twlreg_grp ( rdev ) ;
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
if ( state < 0 )
return state ;
2011-04-01 08:52:44 +04:00
return state & P1_GRP_4030 ;
}
2016-03-26 11:28:13 +03:00
# define PB_I2C_BUSY BIT(0)
# define PB_I2C_BWEN BIT(1)
/* Wait until buffer empty/ready to send a word on power bus. */
static int twl4030_wait_pb_ready ( void )
{
int ret ;
int timeout = 10 ;
u8 val ;
do {
ret = twl_i2c_read_u8 ( TWL_MODULE_PM_MASTER , & val ,
TWL4030_PM_MASTER_PB_CFG ) ;
if ( ret < 0 )
return ret ;
if ( ! ( val & PB_I2C_BUSY ) )
return 0 ;
mdelay ( 1 ) ;
timeout - - ;
} while ( timeout ) ;
return - ETIMEDOUT ;
}
/* Send a word over the powerbus */
static int twl4030_send_pb_msg ( unsigned msg )
{
u8 val ;
int ret ;
/* save powerbus configuration */
ret = twl_i2c_read_u8 ( TWL_MODULE_PM_MASTER , & val ,
TWL4030_PM_MASTER_PB_CFG ) ;
if ( ret < 0 )
return ret ;
/* Enable i2c access to powerbus */
ret = twl_i2c_write_u8 ( TWL_MODULE_PM_MASTER , val | PB_I2C_BWEN ,
TWL4030_PM_MASTER_PB_CFG ) ;
if ( ret < 0 )
return ret ;
ret = twl4030_wait_pb_ready ( ) ;
if ( ret < 0 )
return ret ;
ret = twl_i2c_write_u8 ( TWL_MODULE_PM_MASTER , msg > > 8 ,
TWL4030_PM_MASTER_PB_WORD_MSB ) ;
if ( ret < 0 )
return ret ;
ret = twl_i2c_write_u8 ( TWL_MODULE_PM_MASTER , msg & 0xff ,
TWL4030_PM_MASTER_PB_WORD_LSB ) ;
if ( ret < 0 )
return ret ;
ret = twl4030_wait_pb_ready ( ) ;
if ( ret < 0 )
return ret ;
/* Restore powerbus configuration */
return twl_i2c_write_u8 ( TWL_MODULE_PM_MASTER , val ,
2016-04-06 09:06:03 +03:00
TWL4030_PM_MASTER_PB_CFG ) ;
2016-03-26 11:28:13 +03:00
}
2011-05-20 17:33:51 +04:00
static int twl4030reg_enable ( struct regulator_dev * rdev )
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
{
struct twlreg_info * info = rdev_get_drvdata ( rdev ) ;
int grp ;
2009-12-16 15:55:26 +03:00
int ret ;
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
2012-04-11 07:07:17 +04:00
grp = twlreg_grp ( rdev ) ;
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
if ( grp < 0 )
return grp ;
2011-05-20 17:33:51 +04:00
grp | = P1_GRP_4030 ;
2009-12-14 00:19:23 +03:00
2009-12-16 15:55:26 +03:00
ret = twlreg_write ( info , TWL_MODULE_PM_RECEIVER , VREG_GRP , grp ) ;
2011-05-20 17:33:51 +04:00
return ret ;
}
2011-05-20 17:33:52 +04:00
static int twl4030reg_disable ( struct regulator_dev * rdev )
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
{
struct twlreg_info * info = rdev_get_drvdata ( rdev ) ;
int grp ;
2011-04-01 08:52:42 +04:00
int ret ;
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
2012-04-11 07:07:17 +04:00
grp = twlreg_grp ( rdev ) ;
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
if ( grp < 0 )
return grp ;
2011-05-20 17:33:52 +04:00
grp & = ~ ( P1_GRP_4030 | P2_GRP_4030 | P3_GRP_4030 ) ;
2009-12-14 00:19:23 +03:00
2011-04-01 08:52:42 +04:00
ret = twlreg_write ( info , TWL_MODULE_PM_RECEIVER , VREG_GRP , grp ) ;
2011-05-20 17:33:52 +04:00
return ret ;
}
2011-04-01 08:52:45 +04:00
static int twl4030reg_get_status ( struct regulator_dev * rdev )
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
{
2009-12-13 23:36:49 +03:00
int state = twlreg_grp ( rdev ) ;
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
if ( state < 0 )
return state ;
state & = 0x0f ;
/* assume state != WARM_RESET; we'd not be running... */
if ( ! state )
return REGULATOR_STATUS_OFF ;
return ( state & BIT ( 3 ) )
? REGULATOR_STATUS_NORMAL
: REGULATOR_STATUS_STANDBY ;
}
2011-04-01 08:52:46 +04:00
static int twl4030reg_set_mode ( struct regulator_dev * rdev , unsigned mode )
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
{
struct twlreg_info * info = rdev_get_drvdata ( rdev ) ;
unsigned message ;
/* We can only set the mode through state machine commands... */
switch ( mode ) {
case REGULATOR_MODE_NORMAL :
message = MSG_SINGULAR ( DEV_GRP_P1 , info - > id , RES_STATE_ACTIVE ) ;
break ;
case REGULATOR_MODE_STANDBY :
message = MSG_SINGULAR ( DEV_GRP_P1 , info - > id , RES_STATE_SLEEP ) ;
break ;
default :
return - EINVAL ;
}
2016-03-26 11:28:13 +03:00
return twl4030_send_pb_msg ( message ) ;
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
}
2016-04-05 08:59:34 +03:00
static inline unsigned int twl4030reg_map_mode ( unsigned int mode )
{
switch ( mode ) {
case RES_STATE_ACTIVE :
return REGULATOR_MODE_NORMAL ;
case RES_STATE_SLEEP :
return REGULATOR_MODE_STANDBY ;
default :
2018-04-18 18:54:18 +03:00
return REGULATOR_MODE_INVALID ;
2016-04-05 08:59:34 +03:00
}
}
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
/*----------------------------------------------------------------------*/
/*
* Support for adjustable - voltage LDOs uses a four bit ( or less ) voltage
* select field in its control register . We use tables indexed by VSEL
* to record voltages in milliVolts . ( Accuracy is about three percent . )
*
* Note that VSEL values for VAUX2 changed in twl5030 and newer silicon ;
* currently handled by listing two slightly different VAUX2 regulators ,
* only one of which will be configured .
*
* VSEL values documented as " TI cannot support these values " are flagged
* in these tables as UNSUP ( ) values ; we normally won ' t assign them .
2009-03-06 15:51:30 +03:00
*
* VAUX3 at 3 V is incorrectly listed in some TI manuals as unsupported .
* TI are revising the twl5030 / tps659x0 specs to support that 3.0 V setting .
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
*/
# define UNSUP_MASK 0x8000
# define UNSUP(x) (UNSUP_MASK | (x))
2012-05-08 23:44:00 +04:00
# define IS_UNSUP(info, x) \
( ( UNSUP_MASK & ( x ) ) & & \
! ( ( info ) - > features & TWL4030_ALLOW_UNSUPPORTED ) )
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
# define LDO_MV(x) (~UNSUP_MASK & (x))
static const u16 VAUX1_VSEL_table [ ] = {
UNSUP ( 1500 ) , UNSUP ( 1800 ) , 2500 , 2800 ,
3000 , 3000 , 3000 , 3000 ,
} ;
static const u16 VAUX2_4030_VSEL_table [ ] = {
UNSUP ( 1000 ) , UNSUP ( 1000 ) , UNSUP ( 1200 ) , 1300 ,
1500 , 1800 , UNSUP ( 1850 ) , 2500 ,
UNSUP ( 2600 ) , 2800 , UNSUP ( 2850 ) , UNSUP ( 3000 ) ,
UNSUP ( 3150 ) , UNSUP ( 3150 ) , UNSUP ( 3150 ) , UNSUP ( 3150 ) ,
} ;
static const u16 VAUX2_VSEL_table [ ] = {
1700 , 1700 , 1900 , 1300 ,
1500 , 1800 , 2000 , 2500 ,
2100 , 2800 , 2200 , 2300 ,
2400 , 2400 , 2400 , 2400 ,
} ;
static const u16 VAUX3_VSEL_table [ ] = {
1500 , 1800 , 2500 , 2800 ,
2009-03-06 15:51:30 +03:00
3000 , 3000 , 3000 , 3000 ,
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
} ;
static const u16 VAUX4_VSEL_table [ ] = {
700 , 1000 , 1200 , UNSUP ( 1300 ) ,
1500 , 1800 , UNSUP ( 1850 ) , 2500 ,
2009-03-10 22:51:15 +03:00
UNSUP ( 2600 ) , 2800 , UNSUP ( 2850 ) , UNSUP ( 3000 ) ,
UNSUP ( 3150 ) , UNSUP ( 3150 ) , UNSUP ( 3150 ) , UNSUP ( 3150 ) ,
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
} ;
static const u16 VMMC1_VSEL_table [ ] = {
1850 , 2850 , 3000 , 3150 ,
} ;
static const u16 VMMC2_VSEL_table [ ] = {
UNSUP ( 1000 ) , UNSUP ( 1000 ) , UNSUP ( 1200 ) , UNSUP ( 1300 ) ,
UNSUP ( 1500 ) , UNSUP ( 1800 ) , 1850 , UNSUP ( 2500 ) ,
2600 , 2800 , 2850 , 3000 ,
3150 , 3150 , 3150 , 3150 ,
} ;
static const u16 VPLL1_VSEL_table [ ] = {
1000 , 1200 , 1300 , 1800 ,
UNSUP ( 2800 ) , UNSUP ( 3000 ) , UNSUP ( 3000 ) , UNSUP ( 3000 ) ,
} ;
static const u16 VPLL2_VSEL_table [ ] = {
700 , 1000 , 1200 , 1300 ,
UNSUP ( 1500 ) , 1800 , UNSUP ( 1850 ) , UNSUP ( 2500 ) ,
UNSUP ( 2600 ) , UNSUP ( 2800 ) , UNSUP ( 2850 ) , UNSUP ( 3000 ) ,
UNSUP ( 3150 ) , UNSUP ( 3150 ) , UNSUP ( 3150 ) , UNSUP ( 3150 ) ,
} ;
static const u16 VSIM_VSEL_table [ ] = {
UNSUP ( 1000 ) , UNSUP ( 1200 ) , UNSUP ( 1300 ) , 1800 ,
2800 , 3000 , 3000 , 3000 ,
} ;
static const u16 VDAC_VSEL_table [ ] = {
1200 , 1300 , 1800 , 1800 ,
} ;
2009-12-16 16:27:55 +03:00
static const u16 VIO_VSEL_table [ ] = {
1800 , 1850 ,
} ;
static const u16 VINTANA2_VSEL_table [ ] = {
2500 , 2750 ,
} ;
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
2019-08-15 00:43:19 +03:00
/* 600mV to 1450mV in 12.5 mV steps */
2020-05-08 18:43:36 +03:00
static const struct linear_range VDD1_ranges [ ] = {
2019-08-15 00:43:19 +03:00
REGULATOR_LINEAR_RANGE ( 600000 , 0 , 68 , 12500 )
} ;
/* 600mV to 1450mV in 12.5 mV steps, everything above = 1500mV */
2020-05-08 18:43:36 +03:00
static const struct linear_range VDD2_ranges [ ] = {
2019-08-15 00:43:19 +03:00
REGULATOR_LINEAR_RANGE ( 600000 , 0 , 68 , 12500 ) ,
REGULATOR_LINEAR_RANGE ( 1500000 , 69 , 69 , 12500 )
} ;
2010-04-22 12:48:32 +04:00
static int twl4030ldo_list_voltage ( struct regulator_dev * rdev , unsigned index )
2009-02-26 22:50:14 +03:00
{
struct twlreg_info * info = rdev_get_drvdata ( rdev ) ;
int mV = info - > table [ index ] ;
2012-05-08 23:44:00 +04:00
return IS_UNSUP ( info , mV ) ? 0 : ( LDO_MV ( mV ) * 1000 ) ;
2009-02-26 22:50:14 +03:00
}
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
static int
2012-03-26 05:30:06 +04:00
twl4030ldo_set_voltage_sel ( struct regulator_dev * rdev , unsigned selector )
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
{
struct twlreg_info * info = rdev_get_drvdata ( rdev ) ;
2012-03-26 05:30:06 +04:00
return twlreg_write ( info , TWL_MODULE_PM_RECEIVER , VREG_VOLTAGE ,
selector ) ;
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
}
2013-02-16 06:09:54 +04:00
static int twl4030ldo_get_voltage_sel ( struct regulator_dev * rdev )
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
{
struct twlreg_info * info = rdev_get_drvdata ( rdev ) ;
2013-02-16 06:09:54 +04:00
int vsel = twlreg_read ( info , TWL_MODULE_PM_RECEIVER , VREG_VOLTAGE ) ;
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
if ( vsel < 0 )
return vsel ;
vsel & = info - > table_len - 1 ;
2013-02-16 06:09:54 +04:00
return vsel ;
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
}
2019-04-03 02:41:54 +03:00
static const struct regulator_ops twl4030ldo_ops = {
2010-04-22 12:48:32 +04:00
. list_voltage = twl4030ldo_list_voltage ,
2009-02-26 22:50:14 +03:00
2012-03-26 05:30:06 +04:00
. set_voltage_sel = twl4030ldo_set_voltage_sel ,
2013-02-16 06:09:54 +04:00
. get_voltage_sel = twl4030ldo_get_voltage_sel ,
2010-04-22 12:48:32 +04:00
2011-05-20 17:33:51 +04:00
. enable = twl4030reg_enable ,
2011-05-20 17:33:52 +04:00
. disable = twl4030reg_disable ,
2011-04-01 08:52:44 +04:00
. is_enabled = twl4030reg_is_enabled ,
2010-04-22 12:48:32 +04:00
2011-04-01 08:52:46 +04:00
. set_mode = twl4030reg_set_mode ,
2010-04-22 12:48:32 +04:00
2011-04-01 08:52:45 +04:00
. get_status = twl4030reg_get_status ,
2010-04-22 12:48:32 +04:00
} ;
2011-11-28 18:53:19 +04:00
static int
twl4030smps_set_voltage ( struct regulator_dev * rdev , int min_uV , int max_uV ,
unsigned * selector )
{
struct twlreg_info * info = rdev_get_drvdata ( rdev ) ;
int vsel = DIV_ROUND_UP ( min_uV - 600000 , 12500 ) ;
2016-11-12 15:42:13 +03:00
twlreg_write ( info , TWL_MODULE_PM_RECEIVER , VREG_VOLTAGE_SMPS_4030 , vsel ) ;
2012-02-16 14:27:52 +04:00
2011-11-28 18:53:19 +04:00
return 0 ;
}
static int twl4030smps_get_voltage ( struct regulator_dev * rdev )
{
struct twlreg_info * info = rdev_get_drvdata ( rdev ) ;
2012-02-16 14:27:52 +04:00
int vsel ;
vsel = twlreg_read ( info , TWL_MODULE_PM_RECEIVER ,
2011-11-28 18:53:19 +04:00
VREG_VOLTAGE_SMPS_4030 ) ;
return vsel * 12500 + 600000 ;
}
2019-04-03 02:41:54 +03:00
static const struct regulator_ops twl4030smps_ops = {
2019-08-15 00:43:19 +03:00
. list_voltage = regulator_list_voltage_linear_range ,
2011-11-28 18:53:19 +04:00
. set_voltage = twl4030smps_set_voltage ,
. get_voltage = twl4030smps_get_voltage ,
} ;
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
/*----------------------------------------------------------------------*/
2019-04-03 02:41:54 +03:00
static const struct regulator_ops twl4030fixed_ops = {
2012-12-22 09:31:19 +04:00
. list_voltage = regulator_list_voltage_linear ,
2011-04-01 08:52:44 +04:00
2011-05-20 17:33:51 +04:00
. enable = twl4030reg_enable ,
2011-05-20 17:33:52 +04:00
. disable = twl4030reg_disable ,
2011-04-01 08:52:44 +04:00
. is_enabled = twl4030reg_is_enabled ,
2011-04-01 08:52:46 +04:00
. set_mode = twl4030reg_set_mode ,
2011-04-01 08:52:44 +04:00
2011-04-01 08:52:45 +04:00
. get_status = twl4030reg_get_status ,
2011-04-01 08:52:44 +04:00
} ;
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
/*----------------------------------------------------------------------*/
2012-02-28 13:39:11 +04:00
# define TWL4030_ADJUSTABLE_LDO(label, offset, num, turnon_delay, remap_conf) \
2012-08-14 16:41:50 +04:00
static const struct twlreg_info TWL4030_INFO_ # # label = { \
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
. base = offset , \
. id = num , \
. table_len = ARRAY_SIZE ( label # # _VSEL_table ) , \
. table = label # # _VSEL_table , \
2009-12-16 15:49:52 +03:00
. remap = remap_conf , \
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
. desc = { \
. name = # label , \
2010-04-22 12:48:32 +04:00
. id = TWL4030_REG_ # # label , \
2009-02-26 22:50:14 +03:00
. n_voltages = ARRAY_SIZE ( label # # _VSEL_table ) , \
2010-04-22 12:48:32 +04:00
. ops = & twl4030ldo_ops , \
. type = REGULATOR_VOLTAGE , \
. owner = THIS_MODULE , \
2012-07-04 06:46:34 +04:00
. enable_time = turnon_delay , \
2016-04-05 08:59:34 +03:00
. of_map_mode = twl4030reg_map_mode , \
2010-04-22 12:48:32 +04:00
} , \
}
2019-08-15 00:43:19 +03:00
# define TWL4030_ADJUSTABLE_SMPS(label, offset, num, turnon_delay, remap_conf, \
n_volt ) \
2012-08-14 16:41:50 +04:00
static const struct twlreg_info TWL4030_INFO_ # # label = { \
2011-11-28 18:53:19 +04:00
. base = offset , \
. id = num , \
. remap = remap_conf , \
. desc = { \
. name = # label , \
. id = TWL4030_REG_ # # label , \
. ops = & twl4030smps_ops , \
. type = REGULATOR_VOLTAGE , \
. owner = THIS_MODULE , \
2012-07-04 06:46:34 +04:00
. enable_time = turnon_delay , \
2016-04-05 08:59:34 +03:00
. of_map_mode = twl4030reg_map_mode , \
2019-08-15 00:43:19 +03:00
. n_voltages = n_volt , \
. n_linear_ranges = ARRAY_SIZE ( label # # _ranges ) , \
. linear_ranges = label # # _ranges , \
2011-11-28 18:53:19 +04:00
} , \
}
2016-11-12 15:42:14 +03:00
# define TWL4030_FIXED_LDO(label, offset, mVolts, num, turnon_delay, \
remap_conf ) \
2012-08-14 16:41:50 +04:00
static const struct twlreg_info TWLFIXED_INFO_ # # label = { \
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
. base = offset , \
. id = num , \
2009-12-16 15:49:52 +03:00
. remap = remap_conf , \
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
. desc = { \
. name = # label , \
2016-11-12 15:42:14 +03:00
. id = TWL4030 # # _REG_ # # label , \
2009-02-26 22:50:14 +03:00
. n_voltages = 1 , \
2016-11-12 15:42:14 +03:00
. ops = & twl4030fixed_ops , \
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
. type = REGULATOR_VOLTAGE , \
. owner = THIS_MODULE , \
2012-12-22 09:31:19 +04:00
. min_uV = mVolts * 1000 , \
2012-07-04 06:46:34 +04:00
. enable_time = turnon_delay , \
2016-11-12 15:42:14 +03:00
. of_map_mode = twl4030reg_map_mode , \
2011-02-10 16:14:50 +03:00
} , \
}
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
/*
* We list regulators here if systems need some level of
* software control over them after boot .
*/
2012-02-28 13:39:11 +04:00
TWL4030_ADJUSTABLE_LDO ( VAUX1 , 0x17 , 1 , 100 , 0x08 ) ;
TWL4030_ADJUSTABLE_LDO ( VAUX2_4030 , 0x1b , 2 , 100 , 0x08 ) ;
TWL4030_ADJUSTABLE_LDO ( VAUX2 , 0x1b , 2 , 100 , 0x08 ) ;
TWL4030_ADJUSTABLE_LDO ( VAUX3 , 0x1f , 3 , 100 , 0x08 ) ;
TWL4030_ADJUSTABLE_LDO ( VAUX4 , 0x23 , 4 , 100 , 0x08 ) ;
TWL4030_ADJUSTABLE_LDO ( VMMC1 , 0x27 , 5 , 100 , 0x08 ) ;
TWL4030_ADJUSTABLE_LDO ( VMMC2 , 0x2b , 6 , 100 , 0x08 ) ;
TWL4030_ADJUSTABLE_LDO ( VPLL1 , 0x2f , 7 , 100 , 0x00 ) ;
TWL4030_ADJUSTABLE_LDO ( VPLL2 , 0x33 , 8 , 100 , 0x08 ) ;
TWL4030_ADJUSTABLE_LDO ( VSIM , 0x37 , 9 , 100 , 0x00 ) ;
TWL4030_ADJUSTABLE_LDO ( VDAC , 0x3b , 10 , 100 , 0x08 ) ;
TWL4030_ADJUSTABLE_LDO ( VINTANA2 , 0x43 , 12 , 100 , 0x08 ) ;
TWL4030_ADJUSTABLE_LDO ( VIO , 0x4b , 14 , 1000 , 0x08 ) ;
2019-08-15 00:43:19 +03:00
TWL4030_ADJUSTABLE_SMPS ( VDD1 , 0x55 , 15 , 1000 , 0x08 , 68 ) ;
TWL4030_ADJUSTABLE_SMPS ( VDD2 , 0x63 , 16 , 1000 , 0x08 , 69 ) ;
2012-02-28 13:39:11 +04:00
/* VUSBCP is managed *only* by the USB subchip */
2012-08-15 02:10:04 +04:00
TWL4030_FIXED_LDO ( VINTANA1 , 0x3f , 1500 , 11 , 100 , 0x08 ) ;
2012-02-28 13:39:11 +04:00
TWL4030_FIXED_LDO ( VINTDIG , 0x47 , 1500 , 13 , 100 , 0x08 ) ;
TWL4030_FIXED_LDO ( VUSB1V5 , 0x71 , 1500 , 17 , 100 , 0x08 ) ;
TWL4030_FIXED_LDO ( VUSB1V8 , 0x74 , 1800 , 18 , 100 , 0x08 ) ;
TWL4030_FIXED_LDO ( VUSB3V1 , 0x77 , 3100 , 19 , 150 , 0x08 ) ;
2011-05-23 00:21:23 +04:00
2012-02-28 13:39:11 +04:00
# define TWL_OF_MATCH(comp, family, label) \
{ \
. compatible = comp , \
. data = & family # # _INFO_ # # label , \
}
# define TWL4030_OF_MATCH(comp, label) TWL_OF_MATCH(comp, TWL4030, label)
# define TWL6030_OF_MATCH(comp, label) TWL_OF_MATCH(comp, TWL6030, label)
2013-06-19 16:24:02 +04:00
# define TWL6032_OF_MATCH(comp, label) TWL_OF_MATCH(comp, TWL6032, label)
2012-02-28 13:39:11 +04:00
# define TWLFIXED_OF_MATCH(comp, label) TWL_OF_MATCH(comp, TWLFIXED, label)
# define TWLSMPS_OF_MATCH(comp, label) TWL_OF_MATCH(comp, TWLSMPS, label)
2012-12-22 01:26:06 +04:00
static const struct of_device_id twl_of_match [ ] = {
2012-02-28 13:39:11 +04:00
TWL4030_OF_MATCH ( " ti,twl4030-vaux1 " , VAUX1 ) ,
TWL4030_OF_MATCH ( " ti,twl4030-vaux2 " , VAUX2_4030 ) ,
TWL4030_OF_MATCH ( " ti,twl5030-vaux2 " , VAUX2 ) ,
TWL4030_OF_MATCH ( " ti,twl4030-vaux3 " , VAUX3 ) ,
TWL4030_OF_MATCH ( " ti,twl4030-vaux4 " , VAUX4 ) ,
TWL4030_OF_MATCH ( " ti,twl4030-vmmc1 " , VMMC1 ) ,
TWL4030_OF_MATCH ( " ti,twl4030-vmmc2 " , VMMC2 ) ,
TWL4030_OF_MATCH ( " ti,twl4030-vpll1 " , VPLL1 ) ,
TWL4030_OF_MATCH ( " ti,twl4030-vpll2 " , VPLL2 ) ,
TWL4030_OF_MATCH ( " ti,twl4030-vsim " , VSIM ) ,
TWL4030_OF_MATCH ( " ti,twl4030-vdac " , VDAC ) ,
TWL4030_OF_MATCH ( " ti,twl4030-vintana2 " , VINTANA2 ) ,
TWL4030_OF_MATCH ( " ti,twl4030-vio " , VIO ) ,
TWL4030_OF_MATCH ( " ti,twl4030-vdd1 " , VDD1 ) ,
TWL4030_OF_MATCH ( " ti,twl4030-vdd2 " , VDD2 ) ,
2012-08-15 02:10:04 +04:00
TWLFIXED_OF_MATCH ( " ti,twl4030-vintana1 " , VINTANA1 ) ,
2012-02-28 13:39:11 +04:00
TWLFIXED_OF_MATCH ( " ti,twl4030-vintdig " , VINTDIG ) ,
TWLFIXED_OF_MATCH ( " ti,twl4030-vusb1v5 " , VUSB1V5 ) ,
TWLFIXED_OF_MATCH ( " ti,twl4030-vusb1v8 " , VUSB1V8 ) ,
TWLFIXED_OF_MATCH ( " ti,twl4030-vusb3v1 " , VUSB3V1 ) ,
{ } ,
} ;
MODULE_DEVICE_TABLE ( of , twl_of_match ) ;
2012-11-19 22:22:22 +04:00
static int twlreg_probe ( struct platform_device * pdev )
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
{
2016-11-12 15:42:13 +03:00
int id ;
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
struct twlreg_info * info ;
2012-08-14 16:41:50 +04:00
const struct twlreg_info * template ;
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
struct regulator_init_data * initdata ;
struct regulation_constraints * c ;
struct regulator_dev * rdev ;
2012-04-04 03:50:22 +04:00
struct regulator_config config = { } ;
2012-02-28 13:39:11 +04:00
2019-01-19 15:41:35 +03:00
template = of_device_get_match_data ( & pdev - > dev ) ;
2012-08-14 16:41:50 +04:00
if ( ! template )
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
return - ENODEV ;
2016-11-12 15:42:12 +03:00
id = template - > desc . id ;
initdata = of_get_regulator_init_data ( & pdev - > dev , pdev - > dev . of_node ,
& template - > desc ) ;
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
if ( ! initdata )
return - EINVAL ;
2014-06-16 05:44:20 +04:00
info = devm_kmemdup ( & pdev - > dev , template , sizeof ( * info ) , GFP_KERNEL ) ;
2012-08-14 16:41:50 +04:00
if ( ! info )
return - ENOMEM ;
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
/* Constrain board-specific capabilities according to what
* this driver and the chip itself can actually do .
*/
c = & initdata - > constraints ;
c - > valid_modes_mask & = REGULATOR_MODE_NORMAL | REGULATOR_MODE_STANDBY ;
c - > valid_ops_mask & = REGULATOR_CHANGE_VOLTAGE
| REGULATOR_CHANGE_MODE
| REGULATOR_CHANGE_STATUS ;
2012-02-28 13:39:11 +04:00
switch ( id ) {
2009-12-16 16:27:56 +03:00
case TWL4030_REG_VIO :
case TWL4030_REG_VDD1 :
case TWL4030_REG_VDD2 :
case TWL4030_REG_VPLL1 :
case TWL4030_REG_VINTANA1 :
case TWL4030_REG_VINTANA2 :
case TWL4030_REG_VINTDIG :
c - > always_on = true ;
break ;
default :
break ;
}
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
2012-04-04 03:50:22 +04:00
config . dev = & pdev - > dev ;
config . init_data = initdata ;
config . driver_data = info ;
config . of_node = pdev - > dev . of_node ;
2013-09-30 04:59:04 +04:00
rdev = devm_regulator_register ( & pdev - > dev , & info - > desc , & config ) ;
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
if ( IS_ERR ( rdev ) ) {
dev_err ( & pdev - > dev , " can't register %s, %ld \n " ,
info - > desc . name , PTR_ERR ( rdev ) ) ;
return PTR_ERR ( rdev ) ;
}
platform_set_drvdata ( pdev , rdev ) ;
2016-11-12 15:42:15 +03:00
twlreg_write ( info , TWL_MODULE_PM_RECEIVER , VREG_REMAP , info - > remap ) ;
2009-12-16 16:27:58 +03:00
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
/* NOTE: many regulators support short-circuit IRQs (presentable
* as REGULATOR_OVER_CURRENT notifications ? ) configured via :
* - SC_CONFIG
* - SC_DETECT1 ( vintana2 , vmmc1 / 2 , vaux1 / 2 / 3 / 4 )
* - SC_DETECT2 ( vusb , vdac , vio , vdd1 / 2 , vpll2 )
* - IT_CONFIG
*/
return 0 ;
}
2016-11-12 15:42:15 +03:00
MODULE_ALIAS ( " platform:twl4030_reg " ) ;
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
2009-12-13 23:36:49 +03:00
static struct platform_driver twlreg_driver = {
. probe = twlreg_probe ,
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
/* NOTE: short name, to work around driver model truncation of
2009-12-13 23:36:49 +03:00
* " twl_regulator.12 " ( and friends ) to " twl_regulator.1 " .
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
*/
2012-02-28 13:39:11 +04:00
. driver = {
2016-11-12 15:42:15 +03:00
. name = " twl4030_reg " ,
2012-02-28 13:39:11 +04:00
. of_match_table = of_match_ptr ( twl_of_match ) ,
} ,
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
} ;
2009-12-13 23:36:49 +03:00
static int __init twlreg_init ( void )
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
{
2009-12-13 23:36:49 +03:00
return platform_driver_register ( & twlreg_driver ) ;
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
}
2009-12-13 23:36:49 +03:00
subsys_initcall ( twlreg_init ) ;
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
2009-12-13 23:36:49 +03:00
static void __exit twlreg_exit ( void )
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
{
2009-12-13 23:36:49 +03:00
platform_driver_unregister ( & twlreg_driver ) ;
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
}
2009-12-13 23:36:49 +03:00
module_exit ( twlreg_exit )
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
2016-11-12 15:42:15 +03:00
MODULE_DESCRIPTION ( " TWL4030 regulator driver " ) ;
regulator: twl4030 regulators
Support most of the LDO regulators in the twl4030 family chips.
In the case of LDOs supporting MMC/SD, the voltage controls are
used; but in most other cases, the regulator framework is only
used to enable/disable a supplies, conserving power when a given
voltage rail is not needed.
The drivers/mfd/twl4030-core.c code already sets up the various
regulators according to board-specific configuration, and knows
that some chips don't provide the full set of voltage rails.
The omitted regulators are intended to be under hardware control,
such as during the hardware-mediated system powerup, powerdown,
and suspend states. Unless/until software hooks are known to
be safe, they won't be exported here.
These regulators implement the new get_status() operation, but
can't realistically implement get_mode(); the status output is
effectively the result of a vote, with the relevant hardware
inputs not exposed.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2009-02-08 21:37:06 +03:00
MODULE_LICENSE ( " GPL " ) ;