ab8500-mfd: add regulator support to ab8500 mfd device
Acked-by: Linus Walleij <linus.walleij@stericsson.com> Acked-By: Mattias Wallin <mattias.wallin@stericsson.com> Acked-By: Bengt JONSSON <bengt.g.jonsson@stericsson.com> Signed-off-by: Sundar R Iyer <sundar.iyer@stericsson.com> Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Samuel Ortiz <sameo@linux.intel.com> Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
This commit is contained in:
parent
1880a2fc59
commit
549931f99e
3 changed files with 34 additions and 1 deletions
|
@ -16,6 +16,7 @@
|
|||
#include <linux/platform_device.h>
|
||||
#include <linux/mfd/core.h>
|
||||
#include <linux/mfd/ab8500.h>
|
||||
#include <linux/regulator/ab8500.h>
|
||||
|
||||
/*
|
||||
* Interrupt register offsets
|
||||
|
@ -352,6 +353,7 @@ static struct mfd_cell ab8500_devs[] = {
|
|||
{ .name = "ab8500-audio", },
|
||||
{ .name = "ab8500-usb", },
|
||||
{ .name = "ab8500-pwm", },
|
||||
{ .name = "ab8500-regulator", },
|
||||
};
|
||||
|
||||
int __devinit ab8500_init(struct ab8500 *ab8500)
|
||||
|
@ -411,7 +413,7 @@ int __devinit ab8500_init(struct ab8500 *ab8500)
|
|||
goto out_removeirq;
|
||||
}
|
||||
|
||||
ret = mfd_add_devices(ab8500->dev, -1, ab8500_devs,
|
||||
ret = mfd_add_devices(ab8500->dev, 0, ab8500_devs,
|
||||
ARRAY_SIZE(ab8500_devs), NULL,
|
||||
ab8500->irq_base);
|
||||
if (ret)
|
||||
|
|
|
@ -76,6 +76,8 @@
|
|||
#define AB8500_NR_IRQS 104
|
||||
#define AB8500_NUM_IRQ_REGS 13
|
||||
|
||||
#define AB8500_NUM_REGULATORS 15
|
||||
|
||||
/**
|
||||
* struct ab8500 - ab8500 internal structure
|
||||
* @dev: parent device
|
||||
|
@ -108,14 +110,18 @@ struct ab8500 {
|
|||
u8 oldmask[AB8500_NUM_IRQ_REGS];
|
||||
};
|
||||
|
||||
struct regulator_init_data;
|
||||
|
||||
/**
|
||||
* struct ab8500_platform_data - AB8500 platform data
|
||||
* @irq_base: start of AB8500 IRQs, AB8500_NR_IRQS will be used
|
||||
* @init: board-specific initialization after detection of ab8500
|
||||
* @regulator: machine-specific constraints for regulators
|
||||
*/
|
||||
struct ab8500_platform_data {
|
||||
int irq_base;
|
||||
void (*init) (struct ab8500 *);
|
||||
struct regulator_init_data *regulator[AB8500_NUM_REGULATORS];
|
||||
};
|
||||
|
||||
extern int ab8500_write(struct ab8500 *a8500, u16 addr, u8 data);
|
||||
|
|
25
include/linux/regulator/ab8500.h
Normal file
25
include/linux/regulator/ab8500.h
Normal file
|
@ -0,0 +1,25 @@
|
|||
/*
|
||||
* Copyright (C) ST-Ericsson SA 2010
|
||||
*
|
||||
* License Terms: GNU General Public License v2
|
||||
*
|
||||
* Author: Sundar Iyer <sundar.iyer@stericsson.com> for ST-Ericsson
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __LINUX_MFD_AB8500_REGULATOR_H
|
||||
#define __LINUX_MFD_AB8500_REGULATOR_H
|
||||
|
||||
/* AB8500 regulators */
|
||||
#define AB8500_LDO_AUX1 0
|
||||
#define AB8500_LDO_AUX2 1
|
||||
#define AB8500_LDO_AUX3 2
|
||||
#define AB8500_LDO_INTCORE 3
|
||||
#define AB8500_LDO_TVOUT 4
|
||||
#define AB8500_LDO_AUDIO 5
|
||||
#define AB8500_LDO_ANAMIC1 6
|
||||
#define AB8500_LDO_ANAMIC2 7
|
||||
#define AB8500_LDO_DMIC 8
|
||||
#define AB8500_LDO_ANA 9
|
||||
|
||||
#endif
|
Loading…
Reference in a new issue