Commit 9c717cf3 authored by Alexandre Torgue's avatar Alexandre Torgue Committed by Lee Jones
Browse files

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: default avatarLinus Walleij <linus.walleij@linaro.org>
Signed-off-by: default avatarJulien Delacou <julien.delacou@stericsson.com>
Signed-off-by: default avatarAlexandre Torgue <alexandre.torgue@st.com>
Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
parent 28091265
Loading
Loading
Loading
Loading
+47 −8
Original line number Diff line number Diff line
@@ -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[] = {
	{
		.name	= "ONKEY_DBF",
@@ -1276,11 +1291,6 @@ static struct mfd_cell ab8540_devs[] = {
		.num_resources = ARRAY_SIZE(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",
		.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,
				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,
				ARRAY_SIZE(ab9540_devs), NULL,
				ab8500->irq_base, ab8500->domain);
	else if (is_ab8540(ab8500))
	else if (is_ab8540(ab8500)) {
		ret = mfd_add_devices(ab8500->dev, 0, ab8540_devs,
			      ARRAY_SIZE(ab8540_devs), NULL,
			      ab8500->irq_base, ab8500->domain);
	else if (is_ab8505(ab8500))
			      ab8500->irq_base, NULL);
		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,
			      ARRAY_SIZE(ab8505_devs), NULL,
			      ab8500->irq_base, ab8500->domain);
+2 −0
Original line number Diff line number Diff line
@@ -291,6 +291,8 @@ enum ab8500_version {
#define AB8540_INT_FSYNC2R		213
#define AB8540_INT_BITCLK2F		214
#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