aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-mxs
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-mxs')
-rw-r--r--arch/arm/mach-mxs/Kconfig6
-rw-r--r--arch/arm/mach-mxs/clock-mx28.c8
-rw-r--r--arch/arm/mach-mxs/devices-mx23.h2
-rw-r--r--arch/arm/mach-mxs/devices-mx28.h5
-rw-r--r--arch/arm/mach-mxs/devices/Kconfig6
-rw-r--r--arch/arm/mach-mxs/devices/Makefile2
-rw-r--r--arch/arm/mach-mxs/devices/platform-mxs-saif.c60
-rw-r--r--arch/arm/mach-mxs/devices/platform-rtc-stmp3xxx.c51
-rw-r--r--arch/arm/mach-mxs/include/mach/devices-common.h12
-rw-r--r--arch/arm/mach-mxs/mach-mx23evk.c1
-rw-r--r--arch/arm/mach-mxs/mach-mx28evk.c80
-rw-r--r--arch/arm/mach-mxs/mach-stmp378x_devb.c1
-rw-r--r--arch/arm/mach-mxs/mach-tx28.c1
13 files changed, 233 insertions, 2 deletions
diff --git a/arch/arm/mach-mxs/Kconfig b/arch/arm/mach-mxs/Kconfig
index ea5ec0f3b5b1..cf00b3e3be85 100644
--- a/arch/arm/mach-mxs/Kconfig
+++ b/arch/arm/mach-mxs/Kconfig
@@ -23,6 +23,7 @@ config MACH_STMP378X_DEVB
23 select MXS_HAVE_AMBA_DUART 23 select MXS_HAVE_AMBA_DUART
24 select MXS_HAVE_PLATFORM_AUART 24 select MXS_HAVE_PLATFORM_AUART
25 select MXS_HAVE_PLATFORM_MXS_MMC 25 select MXS_HAVE_PLATFORM_MXS_MMC
26 select MXS_HAVE_PLATFORM_RTC_STMP3XXX
26 help 27 help
27 Include support for STMP378x-devb platform. This includes specific 28 Include support for STMP378x-devb platform. This includes specific
28 configurations for the board and its peripherals. 29 configurations for the board and its peripherals.
@@ -34,6 +35,7 @@ config MACH_MX23EVK
34 select MXS_HAVE_PLATFORM_AUART 35 select MXS_HAVE_PLATFORM_AUART
35 select MXS_HAVE_PLATFORM_MXS_MMC 36 select MXS_HAVE_PLATFORM_MXS_MMC
36 select MXS_HAVE_PLATFORM_MXSFB 37 select MXS_HAVE_PLATFORM_MXSFB
38 select MXS_HAVE_PLATFORM_RTC_STMP3XXX
37 help 39 help
38 Include support for MX23EVK platform. This includes specific 40 Include support for MX23EVK platform. This includes specific
39 configurations for the board and its peripherals. 41 configurations for the board and its peripherals.
@@ -48,6 +50,9 @@ config MACH_MX28EVK
48 select MXS_HAVE_PLATFORM_FLEXCAN 50 select MXS_HAVE_PLATFORM_FLEXCAN
49 select MXS_HAVE_PLATFORM_MXS_MMC 51 select MXS_HAVE_PLATFORM_MXS_MMC
50 select MXS_HAVE_PLATFORM_MXSFB 52 select MXS_HAVE_PLATFORM_MXSFB
53 select MXS_HAVE_PLATFORM_MXS_SAIF
54 select MXS_HAVE_PLATFORM_MXS_I2C
55 select MXS_HAVE_PLATFORM_RTC_STMP3XXX
51 select MXS_OCOTP 56 select MXS_OCOTP
52 help 57 help
53 Include support for MX28EVK platform. This includes specific 58 Include support for MX28EVK platform. This includes specific
@@ -63,6 +68,7 @@ config MODULE_TX28
63 select MXS_HAVE_PLATFORM_MXS_I2C 68 select MXS_HAVE_PLATFORM_MXS_I2C
64 select MXS_HAVE_PLATFORM_MXS_MMC 69 select MXS_HAVE_PLATFORM_MXS_MMC
65 select MXS_HAVE_PLATFORM_MXS_PWM 70 select MXS_HAVE_PLATFORM_MXS_PWM
71 select MXS_HAVE_PLATFORM_RTC_STMP3XXX
66 72
67config MODULE_M28 73config MODULE_M28
68 bool 74 bool
diff --git a/arch/arm/mach-mxs/clock-mx28.c b/arch/arm/mach-mxs/clock-mx28.c
index 7fa1ac4de7d8..229ae3494216 100644
--- a/arch/arm/mach-mxs/clock-mx28.c
+++ b/arch/arm/mach-mxs/clock-mx28.c
@@ -640,6 +640,8 @@ static struct clk_lookup lookups[] = {
640 _REGISTER_CLOCK(NULL, "lradc", lradc_clk) 640 _REGISTER_CLOCK(NULL, "lradc", lradc_clk)
641 _REGISTER_CLOCK(NULL, "spdif", spdif_clk) 641 _REGISTER_CLOCK(NULL, "spdif", spdif_clk)
642 _REGISTER_CLOCK("imx28-fb", NULL, lcdif_clk) 642 _REGISTER_CLOCK("imx28-fb", NULL, lcdif_clk)
643 _REGISTER_CLOCK("mxs-saif.0", NULL, saif0_clk)
644 _REGISTER_CLOCK("mxs-saif.1", NULL, saif1_clk)
643}; 645};
644 646
645static int clk_misc_init(void) 647static int clk_misc_init(void)
@@ -708,11 +710,11 @@ static int clk_misc_init(void)
708 710
709 /* SAIF has to use frac div for functional operation */ 711 /* SAIF has to use frac div for functional operation */
710 reg = __raw_readl(CLKCTRL_BASE_ADDR + HW_CLKCTRL_SAIF0); 712 reg = __raw_readl(CLKCTRL_BASE_ADDR + HW_CLKCTRL_SAIF0);
711 reg &= ~BM_CLKCTRL_SAIF0_DIV_FRAC_EN; 713 reg |= BM_CLKCTRL_SAIF0_DIV_FRAC_EN;
712 __raw_writel(reg, CLKCTRL_BASE_ADDR + HW_CLKCTRL_SAIF0); 714 __raw_writel(reg, CLKCTRL_BASE_ADDR + HW_CLKCTRL_SAIF0);
713 715
714 reg = __raw_readl(CLKCTRL_BASE_ADDR + HW_CLKCTRL_SAIF1); 716 reg = __raw_readl(CLKCTRL_BASE_ADDR + HW_CLKCTRL_SAIF1);
715 reg &= ~BM_CLKCTRL_SAIF1_DIV_FRAC_EN; 717 reg |= BM_CLKCTRL_SAIF1_DIV_FRAC_EN;
716 __raw_writel(reg, CLKCTRL_BASE_ADDR + HW_CLKCTRL_SAIF1); 718 __raw_writel(reg, CLKCTRL_BASE_ADDR + HW_CLKCTRL_SAIF1);
717 719
718 /* 720 /*
@@ -780,6 +782,8 @@ int __init mx28_clocks_init(void)
780 clk_enable(&uart_clk); 782 clk_enable(&uart_clk);
781 783
782 clk_set_parent(&lcdif_clk, &ref_pix_clk); 784 clk_set_parent(&lcdif_clk, &ref_pix_clk);
785 clk_set_parent(&saif0_clk, &pll0_clk);
786 clk_set_parent(&saif1_clk, &pll0_clk);
783 787
784 clkdev_add_table(lookups, ARRAY_SIZE(lookups)); 788 clkdev_add_table(lookups, ARRAY_SIZE(lookups));
785 789
diff --git a/arch/arm/mach-mxs/devices-mx23.h b/arch/arm/mach-mxs/devices-mx23.h
index c6f345febd39..3fa651d2c994 100644
--- a/arch/arm/mach-mxs/devices-mx23.h
+++ b/arch/arm/mach-mxs/devices-mx23.h
@@ -29,3 +29,5 @@ extern const struct mxs_mxs_mmc_data mx23_mxs_mmc_data[] __initconst;
29 29
30struct platform_device *__init mx23_add_mxsfb( 30struct platform_device *__init mx23_add_mxsfb(
31 const struct mxsfb_platform_data *pdata); 31 const struct mxsfb_platform_data *pdata);
32
33struct platform_device *__init mx23_add_rtc_stmp3xxx(void);
diff --git a/arch/arm/mach-mxs/devices-mx28.h b/arch/arm/mach-mxs/devices-mx28.h
index 79b94523954a..c8887103f0e3 100644
--- a/arch/arm/mach-mxs/devices-mx28.h
+++ b/arch/arm/mach-mxs/devices-mx28.h
@@ -45,3 +45,8 @@ extern const struct mxs_mxs_mmc_data mx28_mxs_mmc_data[] __initconst;
45 45
46struct platform_device *__init mx28_add_mxsfb( 46struct platform_device *__init mx28_add_mxsfb(
47 const struct mxsfb_platform_data *pdata); 47 const struct mxsfb_platform_data *pdata);
48
49extern const struct mxs_saif_data mx28_saif_data[] __initconst;
50#define mx28_add_saif(id) mxs_add_saif(&mx28_saif_data[id])
51
52struct platform_device *__init mx28_add_rtc_stmp3xxx(void);
diff --git a/arch/arm/mach-mxs/devices/Kconfig b/arch/arm/mach-mxs/devices/Kconfig
index acf9eea124c0..18b6bf526a27 100644
--- a/arch/arm/mach-mxs/devices/Kconfig
+++ b/arch/arm/mach-mxs/devices/Kconfig
@@ -23,3 +23,9 @@ config MXS_HAVE_PLATFORM_MXS_PWM
23 23
24config MXS_HAVE_PLATFORM_MXSFB 24config MXS_HAVE_PLATFORM_MXSFB
25 bool 25 bool
26
27config MXS_HAVE_PLATFORM_MXS_SAIF
28 bool
29
30config MXS_HAVE_PLATFORM_RTC_STMP3XXX
31 bool
diff --git a/arch/arm/mach-mxs/devices/Makefile b/arch/arm/mach-mxs/devices/Makefile
index 351915c683ff..f52e3e53baec 100644
--- a/arch/arm/mach-mxs/devices/Makefile
+++ b/arch/arm/mach-mxs/devices/Makefile
@@ -8,3 +8,5 @@ obj-$(CONFIG_MXS_HAVE_PLATFORM_MXS_MMC) += platform-mxs-mmc.o
8obj-$(CONFIG_MXS_HAVE_PLATFORM_MXS_PWM) += platform-mxs-pwm.o 8obj-$(CONFIG_MXS_HAVE_PLATFORM_MXS_PWM) += platform-mxs-pwm.o
9obj-y += platform-gpio-mxs.o 9obj-y += platform-gpio-mxs.o
10obj-$(CONFIG_MXS_HAVE_PLATFORM_MXSFB) += platform-mxsfb.o 10obj-$(CONFIG_MXS_HAVE_PLATFORM_MXSFB) += platform-mxsfb.o
11obj-$(CONFIG_MXS_HAVE_PLATFORM_MXS_SAIF) += platform-mxs-saif.o
12obj-$(CONFIG_MXS_HAVE_PLATFORM_RTC_STMP3XXX) += platform-rtc-stmp3xxx.o
diff --git a/arch/arm/mach-mxs/devices/platform-mxs-saif.c b/arch/arm/mach-mxs/devices/platform-mxs-saif.c
new file mode 100644
index 000000000000..1ec965e9fe92
--- /dev/null
+++ b/arch/arm/mach-mxs/devices/platform-mxs-saif.c
@@ -0,0 +1,60 @@
1/*
2 * Copyright 2011 Freescale Semiconductor, Inc. All Rights Reserved.
3 *
4 * This program is free software; you can redistribute it and/or modify it under
5 * the terms of the GNU General Public License version 2 as published by the
6 * Free Software Foundation.
7 */
8#include <linux/compiler.h>
9#include <linux/err.h>
10#include <linux/init.h>
11
12#include <mach/mx23.h>
13#include <mach/mx28.h>
14#include <mach/devices-common.h>
15
16#define mxs_saif_data_entry_single(soc, _id) \
17 { \
18 .id = _id, \
19 .iobase = soc ## _SAIF ## _id ## _BASE_ADDR, \
20 .irq = soc ## _INT_SAIF ## _id, \
21 .dma = soc ## _DMA_SAIF ## _id, \
22 .dmairq = soc ## _INT_SAIF ## _id ##_DMA, \
23 }
24
25#define mxs_saif_data_entry(soc, _id) \
26 [_id] = mxs_saif_data_entry_single(soc, _id)
27
28#ifdef CONFIG_SOC_IMX28
29const struct mxs_saif_data mx28_saif_data[] __initconst = {
30 mxs_saif_data_entry(MX28, 0),
31 mxs_saif_data_entry(MX28, 1),
32};
33#endif
34
35struct platform_device *__init mxs_add_saif(const struct mxs_saif_data *data)
36{
37 struct resource res[] = {
38 {
39 .start = data->iobase,
40 .end = data->iobase + SZ_4K - 1,
41 .flags = IORESOURCE_MEM,
42 }, {
43 .start = data->irq,
44 .end = data->irq,
45 .flags = IORESOURCE_IRQ,
46 }, {
47 .start = data->dma,
48 .end = data->dma,
49 .flags = IORESOURCE_DMA,
50 }, {
51 .start = data->dmairq,
52 .end = data->dmairq,
53 .flags = IORESOURCE_IRQ,
54 },
55
56 };
57
58 return mxs_add_platform_device("mxs-saif", data->id, res,
59 ARRAY_SIZE(res), NULL, 0);
60}
diff --git a/arch/arm/mach-mxs/devices/platform-rtc-stmp3xxx.c b/arch/arm/mach-mxs/devices/platform-rtc-stmp3xxx.c
new file mode 100644
index 000000000000..639eaee15553
--- /dev/null
+++ b/arch/arm/mach-mxs/devices/platform-rtc-stmp3xxx.c
@@ -0,0 +1,51 @@
1/*
2 * Copyright (C) 2011 Pengutronix, Wolfram Sang <w.sang@pengutronix.de>
3 *
4 * This program is free software; you can redistribute it and/or modify it under
5 * the terms of the GNU General Public License version 2 as published by the
6 * Free Software Foundation.
7 */
8#include <asm/sizes.h>
9#include <mach/mx23.h>
10#include <mach/mx28.h>
11#include <mach/devices-common.h>
12
13#ifdef CONFIG_SOC_IMX23
14struct platform_device *__init mx23_add_rtc_stmp3xxx(void)
15{
16 struct resource res[] = {
17 {
18 .start = MX23_RTC_BASE_ADDR,
19 .end = MX23_RTC_BASE_ADDR + SZ_8K - 1,
20 .flags = IORESOURCE_MEM,
21 }, {
22 .start = MX23_INT_RTC_ALARM,
23 .end = MX23_INT_RTC_ALARM,
24 .flags = IORESOURCE_IRQ,
25 },
26 };
27
28 return mxs_add_platform_device("stmp3xxx-rtc", 0, res, ARRAY_SIZE(res),
29 NULL, 0);
30}
31#endif /* CONFIG_SOC_IMX23 */
32
33#ifdef CONFIG_SOC_IMX28
34struct platform_device *__init mx28_add_rtc_stmp3xxx(void)
35{
36 struct resource res[] = {
37 {
38 .start = MX28_RTC_BASE_ADDR,
39 .end = MX28_RTC_BASE_ADDR + SZ_8K - 1,
40 .flags = IORESOURCE_MEM,
41 }, {
42 .start = MX28_INT_RTC_ALARM,
43 .end = MX28_INT_RTC_ALARM,
44 .flags = IORESOURCE_IRQ,
45 },
46 };
47
48 return mxs_add_platform_device("stmp3xxx-rtc", 0, res, ARRAY_SIZE(res),
49 NULL, 0);
50}
51#endif /* CONFIG_SOC_IMX28 */
diff --git a/arch/arm/mach-mxs/include/mach/devices-common.h b/arch/arm/mach-mxs/include/mach/devices-common.h
index 812d7a813a78..a8080f44c03d 100644
--- a/arch/arm/mach-mxs/include/mach/devices-common.h
+++ b/arch/arm/mach-mxs/include/mach/devices-common.h
@@ -92,3 +92,15 @@ struct platform_device *__init mxs_add_mxs_mmc(
92/* pwm */ 92/* pwm */
93struct platform_device *__init mxs_add_mxs_pwm( 93struct platform_device *__init mxs_add_mxs_pwm(
94 resource_size_t iobase, int id); 94 resource_size_t iobase, int id);
95
96/* saif */
97struct mxs_saif_data {
98 int id;
99 resource_size_t iobase;
100 resource_size_t irq;
101 resource_size_t dma;
102 resource_size_t dmairq;
103};
104
105struct platform_device *__init mxs_add_saif(
106 const struct mxs_saif_data *data);
diff --git a/arch/arm/mach-mxs/mach-mx23evk.c b/arch/arm/mach-mxs/mach-mx23evk.c
index 69e218de536e..c325fbe4e4c6 100644
--- a/arch/arm/mach-mxs/mach-mx23evk.c
+++ b/arch/arm/mach-mxs/mach-mx23evk.c
@@ -166,6 +166,7 @@ static void __init mx23evk_init(void)
166 gpio_set_value(MX23EVK_BL_ENABLE, 1); 166 gpio_set_value(MX23EVK_BL_ENABLE, 1);
167 167
168 mx23_add_mxsfb(&mx23evk_mxsfb_pdata); 168 mx23_add_mxsfb(&mx23evk_mxsfb_pdata);
169 mx23_add_rtc_stmp3xxx();
169} 170}
170 171
171static void __init mx23evk_timer_init(void) 172static void __init mx23evk_timer_init(void)
diff --git a/arch/arm/mach-mxs/mach-mx28evk.c b/arch/arm/mach-mxs/mach-mx28evk.c
index 0173c3bce4ef..ac2316d53d3c 100644
--- a/arch/arm/mach-mxs/mach-mx28evk.c
+++ b/arch/arm/mach-mxs/mach-mx28evk.c
@@ -17,6 +17,9 @@
17#include <linux/gpio.h> 17#include <linux/gpio.h>
18#include <linux/leds.h> 18#include <linux/leds.h>
19#include <linux/clk.h> 19#include <linux/clk.h>
20#include <linux/i2c.h>
21#include <linux/regulator/machine.h>
22#include <linux/regulator/fixed.h>
20 23
21#include <asm/mach-types.h> 24#include <asm/mach-types.h>
22#include <asm/mach/arch.h> 25#include <asm/mach/arch.h>
@@ -182,6 +185,24 @@ static const iomux_cfg_t mx28evk_pads[] __initconst = {
182 185
183 /* led */ 186 /* led */
184 MX28_PAD_AUART1_TX__GPIO_3_5 | MXS_PAD_CTRL, 187 MX28_PAD_AUART1_TX__GPIO_3_5 | MXS_PAD_CTRL,
188
189 /* I2C */
190 MX28_PAD_I2C0_SCL__I2C0_SCL |
191 (MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_PULLUP),
192 MX28_PAD_I2C0_SDA__I2C0_SDA |
193 (MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_PULLUP),
194
195 /* saif0 & saif1 */
196 MX28_PAD_SAIF0_MCLK__SAIF0_MCLK |
197 (MXS_PAD_12MA | MXS_PAD_3V3 | MXS_PAD_PULLUP),
198 MX28_PAD_SAIF0_LRCLK__SAIF0_LRCLK |
199 (MXS_PAD_12MA | MXS_PAD_3V3 | MXS_PAD_PULLUP),
200 MX28_PAD_SAIF0_BITCLK__SAIF0_BITCLK |
201 (MXS_PAD_12MA | MXS_PAD_3V3 | MXS_PAD_PULLUP),
202 MX28_PAD_SAIF0_SDATA0__SAIF0_SDATA0 |
203 (MXS_PAD_12MA | MXS_PAD_3V3 | MXS_PAD_PULLUP),
204 MX28_PAD_SAIF1_SDATA0__SAIF1_SDATA0 |
205 (MXS_PAD_12MA | MXS_PAD_3V3 | MXS_PAD_PULLUP),
185}; 206};
186 207
187/* led */ 208/* led */
@@ -351,6 +372,50 @@ static struct mxs_mmc_platform_data mx28evk_mmc_pdata[] __initdata = {
351 }, 372 },
352}; 373};
353 374
375static struct i2c_board_info mxs_i2c0_board_info[] __initdata = {
376 {
377 I2C_BOARD_INFO("sgtl5000", 0x0a),
378 },
379};
380
381#if defined(CONFIG_REGULATOR_FIXED_VOLTAGE) || defined(CONFIG_REGULATOR_FIXED_VOLTAGE_MODULE)
382static struct regulator_consumer_supply mx28evk_audio_consumer_supplies[] = {
383 REGULATOR_SUPPLY("VDDA", "0-000a"),
384 REGULATOR_SUPPLY("VDDIO", "0-000a"),
385};
386
387static struct regulator_init_data mx28evk_vdd_reg_init_data = {
388 .constraints = {
389 .name = "3V3",
390 .always_on = 1,
391 },
392 .consumer_supplies = mx28evk_audio_consumer_supplies,
393 .num_consumer_supplies = ARRAY_SIZE(mx28evk_audio_consumer_supplies),
394};
395
396static struct fixed_voltage_config mx28evk_vdd_pdata = {
397 .supply_name = "board-3V3",
398 .microvolts = 3300000,
399 .gpio = -EINVAL,
400 .enabled_at_boot = 1,
401 .init_data = &mx28evk_vdd_reg_init_data,
402};
403static struct platform_device mx28evk_voltage_regulator = {
404 .name = "reg-fixed-voltage",
405 .id = -1,
406 .num_resources = 0,
407 .dev = {
408 .platform_data = &mx28evk_vdd_pdata,
409 },
410};
411static void __init mx28evk_add_regulators(void)
412{
413 platform_device_register(&mx28evk_voltage_regulator);
414}
415#else
416static void __init mx28evk_add_regulators(void) {}
417#endif
418
354static struct gpio mx28evk_lcd_gpios[] = { 419static struct gpio mx28evk_lcd_gpios[] = {
355 { MX28EVK_LCD_ENABLE, GPIOF_OUT_INIT_HIGH, "lcd-enable" }, 420 { MX28EVK_LCD_ENABLE, GPIOF_OUT_INIT_HIGH, "lcd-enable" },
356 { MX28EVK_BL_ENABLE, GPIOF_OUT_INIT_HIGH, "bl-enable" }, 421 { MX28EVK_BL_ENABLE, GPIOF_OUT_INIT_HIGH, "bl-enable" },
@@ -389,6 +454,18 @@ static void __init mx28evk_init(void)
389 else 454 else
390 mx28_add_mxsfb(&mx28evk_mxsfb_pdata); 455 mx28_add_mxsfb(&mx28evk_mxsfb_pdata);
391 456
457 mx28_add_saif(0);
458 mx28_add_saif(1);
459
460 mx28_add_mxs_i2c(0);
461 i2c_register_board_info(0, mxs_i2c0_board_info,
462 ARRAY_SIZE(mxs_i2c0_board_info));
463
464 mx28evk_add_regulators();
465
466 mxs_add_platform_device("mxs-sgtl5000", 0, NULL, 0,
467 NULL, 0);
468
392 /* power on mmc slot by writing 0 to the gpio */ 469 /* power on mmc slot by writing 0 to the gpio */
393 ret = gpio_request_one(MX28EVK_MMC0_SLOT_POWER, GPIOF_OUT_INIT_LOW, 470 ret = gpio_request_one(MX28EVK_MMC0_SLOT_POWER, GPIOF_OUT_INIT_LOW,
394 "mmc0-slot-power"); 471 "mmc0-slot-power");
@@ -403,6 +480,9 @@ static void __init mx28evk_init(void)
403 else 480 else
404 mx28_add_mxs_mmc(1, &mx28evk_mmc_pdata[1]); 481 mx28_add_mxs_mmc(1, &mx28evk_mmc_pdata[1]);
405 482
483 mx28_add_mxs_mmc(1, &mx28evk_mmc_pdata[1]);
484 mx28_add_rtc_stmp3xxx();
485
406 gpio_led_register_device(0, &mx28evk_led_data); 486 gpio_led_register_device(0, &mx28evk_led_data);
407} 487}
408 488
diff --git a/arch/arm/mach-mxs/mach-stmp378x_devb.c b/arch/arm/mach-mxs/mach-stmp378x_devb.c
index 3fe5dd532145..177e53123a02 100644
--- a/arch/arm/mach-mxs/mach-stmp378x_devb.c
+++ b/arch/arm/mach-mxs/mach-stmp378x_devb.c
@@ -90,6 +90,7 @@ static void __init stmp378x_dvb_init(void)
90 90
91 mx23_add_duart(); 91 mx23_add_duart();
92 mx23_add_auart0(); 92 mx23_add_auart0();
93 mx23_add_rtc_stmp3xxx();
93 94
94 /* power on mmc slot */ 95 /* power on mmc slot */
95 ret = gpio_request_one(STMP378X_DEVB_MMC0_SLOT_POWER, 96 ret = gpio_request_one(STMP378X_DEVB_MMC0_SLOT_POWER,
diff --git a/arch/arm/mach-mxs/mach-tx28.c b/arch/arm/mach-mxs/mach-tx28.c
index 955593806fd2..9a1f0e7a338e 100644
--- a/arch/arm/mach-mxs/mach-tx28.c
+++ b/arch/arm/mach-mxs/mach-tx28.c
@@ -161,6 +161,7 @@ static void __init tx28_stk5v3_init(void)
161 i2c_register_board_info(0, tx28_stk5v3_i2c_boardinfo, 161 i2c_register_board_info(0, tx28_stk5v3_i2c_boardinfo,
162 ARRAY_SIZE(tx28_stk5v3_i2c_boardinfo)); 162 ARRAY_SIZE(tx28_stk5v3_i2c_boardinfo));
163 mx28_add_mxs_mmc(0, &tx28_mmc0_pdata); 163 mx28_add_mxs_mmc(0, &tx28_mmc0_pdata);
164 mx28_add_rtc_stmp3xxx();
164} 165}
165 166
166static void __init tx28_timer_init(void) 167static void __init tx28_timer_init(void)