mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-09 15:29:16 +00:00
mfd: ab8500-core: Add device for new RTC version for AB8540 cut2
AB8540 RTC have changed between AB8540_cut1 and AB8540_cut2.Different ressources to define for those two version. Acked-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Julien Delacou <julien.delacou@stericsson.com> Signed-off-by: Alexandre Torgue <alexandre.torgue@st.com> Signed-off-by: Lee Jones <lee.jones@linaro.org>
This commit is contained in:
parent
2809126512
commit
9c717cf3fa
@ -650,6 +650,21 @@ static struct resource ab8500_rtc_resources[] = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct resource ab8540_rtc_resources[] = {
|
||||||
|
{
|
||||||
|
.name = "1S",
|
||||||
|
.start = AB8540_INT_RTC_1S,
|
||||||
|
.end = AB8540_INT_RTC_1S,
|
||||||
|
.flags = IORESOURCE_IRQ,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.name = "ALARM",
|
||||||
|
.start = AB8500_INT_RTC_ALARM,
|
||||||
|
.end = AB8500_INT_RTC_ALARM,
|
||||||
|
.flags = IORESOURCE_IRQ,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
static struct resource ab8500_poweronkey_db_resources[] = {
|
static struct resource ab8500_poweronkey_db_resources[] = {
|
||||||
{
|
{
|
||||||
.name = "ONKEY_DBF",
|
.name = "ONKEY_DBF",
|
||||||
@ -1276,11 +1291,6 @@ static struct mfd_cell ab8540_devs[] = {
|
|||||||
.num_resources = ARRAY_SIZE(ab8505_gpadc_resources),
|
.num_resources = ARRAY_SIZE(ab8505_gpadc_resources),
|
||||||
.resources = ab8505_gpadc_resources,
|
.resources = ab8505_gpadc_resources,
|
||||||
},
|
},
|
||||||
{
|
|
||||||
.name = "ab8500-rtc",
|
|
||||||
.num_resources = ARRAY_SIZE(ab8500_rtc_resources),
|
|
||||||
.resources = ab8500_rtc_resources,
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
.name = "ab8500-acc-det",
|
.name = "ab8500-acc-det",
|
||||||
.num_resources = ARRAY_SIZE(ab8500_av_acc_detect_resources),
|
.num_resources = ARRAY_SIZE(ab8500_av_acc_detect_resources),
|
||||||
@ -1318,6 +1328,24 @@ static struct mfd_cell ab8540_devs[] = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct mfd_cell ab8540_cut1_devs[] = {
|
||||||
|
{
|
||||||
|
.name = "ab8500-rtc",
|
||||||
|
.of_compatible = "stericsson,ab8500-rtc",
|
||||||
|
.num_resources = ARRAY_SIZE(ab8500_rtc_resources),
|
||||||
|
.resources = ab8500_rtc_resources,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct mfd_cell ab8540_cut2_devs[] = {
|
||||||
|
{
|
||||||
|
.name = "ab8540-rtc",
|
||||||
|
.of_compatible = "stericsson,ab8540-rtc",
|
||||||
|
.num_resources = ARRAY_SIZE(ab8540_rtc_resources),
|
||||||
|
.resources = ab8540_rtc_resources,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
static ssize_t show_chip_id(struct device *dev,
|
static ssize_t show_chip_id(struct device *dev,
|
||||||
struct device_attribute *attr, char *buf)
|
struct device_attribute *attr, char *buf)
|
||||||
{
|
{
|
||||||
@ -1721,11 +1749,22 @@ static int ab8500_probe(struct platform_device *pdev)
|
|||||||
ret = mfd_add_devices(ab8500->dev, 0, ab9540_devs,
|
ret = mfd_add_devices(ab8500->dev, 0, ab9540_devs,
|
||||||
ARRAY_SIZE(ab9540_devs), NULL,
|
ARRAY_SIZE(ab9540_devs), NULL,
|
||||||
ab8500->irq_base, ab8500->domain);
|
ab8500->irq_base, ab8500->domain);
|
||||||
else if (is_ab8540(ab8500))
|
else if (is_ab8540(ab8500)) {
|
||||||
ret = mfd_add_devices(ab8500->dev, 0, ab8540_devs,
|
ret = mfd_add_devices(ab8500->dev, 0, ab8540_devs,
|
||||||
ARRAY_SIZE(ab8540_devs), NULL,
|
ARRAY_SIZE(ab8540_devs), NULL,
|
||||||
ab8500->irq_base, ab8500->domain);
|
ab8500->irq_base, NULL);
|
||||||
else if (is_ab8505(ab8500))
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
if (is_ab8540_1p2_or_earlier(ab8500))
|
||||||
|
ret = mfd_add_devices(ab8500->dev, 0, ab8540_cut1_devs,
|
||||||
|
ARRAY_SIZE(ab8540_cut1_devs), NULL,
|
||||||
|
ab8500->irq_base, NULL);
|
||||||
|
else /* ab8540 >= cut2 */
|
||||||
|
ret = mfd_add_devices(ab8500->dev, 0, ab8540_cut2_devs,
|
||||||
|
ARRAY_SIZE(ab8540_cut2_devs), NULL,
|
||||||
|
ab8500->irq_base, NULL);
|
||||||
|
} else if (is_ab8505(ab8500))
|
||||||
ret = mfd_add_devices(ab8500->dev, 0, ab8505_devs,
|
ret = mfd_add_devices(ab8500->dev, 0, ab8505_devs,
|
||||||
ARRAY_SIZE(ab8505_devs), NULL,
|
ARRAY_SIZE(ab8505_devs), NULL,
|
||||||
ab8500->irq_base, ab8500->domain);
|
ab8500->irq_base, ab8500->domain);
|
||||||
|
@ -291,6 +291,8 @@ enum ab8500_version {
|
|||||||
#define AB8540_INT_FSYNC2R 213
|
#define AB8540_INT_FSYNC2R 213
|
||||||
#define AB8540_INT_BITCLK2F 214
|
#define AB8540_INT_BITCLK2F 214
|
||||||
#define AB8540_INT_BITCLK2R 215
|
#define AB8540_INT_BITCLK2R 215
|
||||||
|
/* ab8540_irq_regoffset[27] -> IT[Source|Latch|Mask]33 */
|
||||||
|
#define AB8540_INT_RTC_1S 216
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* AB8500_AB9540_NR_IRQS is used when configuring the IRQ numbers for the
|
* AB8500_AB9540_NR_IRQS is used when configuring the IRQ numbers for the
|
||||||
|
Loading…
x
Reference in New Issue
Block a user