diff options
-rw-r--r-- | arch/arm/mach-davinci/da850.c | 39 | ||||
-rw-r--r-- | arch/arm/mach-davinci/include/mach/da8xx.h | 4 | ||||
-rw-r--r-- | arch/arm/mach-davinci/include/mach/mux.h | 1 |
3 files changed, 44 insertions, 0 deletions
diff --git a/arch/arm/mach-davinci/da850.c b/arch/arm/mach-davinci/da850.c index 1ac8f6318c1b..b9a7b3bc36b2 100644 --- a/arch/arm/mach-davinci/da850.c +++ b/arch/arm/mach-davinci/da850.c | |||
@@ -26,6 +26,7 @@ | |||
26 | #include <mach/time.h> | 26 | #include <mach/time.h> |
27 | #include <mach/da8xx.h> | 27 | #include <mach/da8xx.h> |
28 | #include <mach/cpufreq.h> | 28 | #include <mach/cpufreq.h> |
29 | #include <mach/pm.h> | ||
29 | 30 | ||
30 | #include "clock.h" | 31 | #include "clock.h" |
31 | #include "mux.h" | 32 | #include "mux.h" |
@@ -536,6 +537,7 @@ static const struct mux_config da850_pins[] = { | |||
536 | MUX_CFG(DA850, GPIO2_15, 5, 0, 15, 8, false) | 537 | MUX_CFG(DA850, GPIO2_15, 5, 0, 15, 8, false) |
537 | MUX_CFG(DA850, GPIO4_0, 10, 28, 15, 8, false) | 538 | MUX_CFG(DA850, GPIO4_0, 10, 28, 15, 8, false) |
538 | MUX_CFG(DA850, GPIO4_1, 10, 24, 15, 8, false) | 539 | MUX_CFG(DA850, GPIO4_1, 10, 24, 15, 8, false) |
540 | MUX_CFG(DA850, RTC_ALARM, 0, 28, 15, 2, false) | ||
539 | #endif | 541 | #endif |
540 | }; | 542 | }; |
541 | 543 | ||
@@ -1029,6 +1031,43 @@ static int da850_round_armrate(struct clk *clk, unsigned long rate) | |||
1029 | } | 1031 | } |
1030 | #endif | 1032 | #endif |
1031 | 1033 | ||
1034 | int da850_register_pm(struct platform_device *pdev) | ||
1035 | { | ||
1036 | int ret; | ||
1037 | struct davinci_pm_config *pdata = pdev->dev.platform_data; | ||
1038 | |||
1039 | ret = davinci_cfg_reg(DA850_RTC_ALARM); | ||
1040 | if (ret) | ||
1041 | return ret; | ||
1042 | |||
1043 | pdata->ddr2_ctlr_base = da8xx_get_mem_ctlr(); | ||
1044 | pdata->deepsleep_reg = DA8XX_SYSCFG1_VIRT(DA8XX_DEEPSLEEP_REG); | ||
1045 | pdata->ddrpsc_num = DA8XX_LPSC1_EMIF3C; | ||
1046 | |||
1047 | pdata->cpupll_reg_base = ioremap(DA8XX_PLL0_BASE, SZ_4K); | ||
1048 | if (!pdata->cpupll_reg_base) | ||
1049 | return -ENOMEM; | ||
1050 | |||
1051 | pdata->ddrpll_reg_base = ioremap(DA8XX_PLL1_BASE, SZ_4K); | ||
1052 | if (!pdata->ddrpll_reg_base) { | ||
1053 | ret = -ENOMEM; | ||
1054 | goto no_ddrpll_mem; | ||
1055 | } | ||
1056 | |||
1057 | pdata->ddrpsc_reg_base = ioremap(DA8XX_PSC1_BASE, SZ_4K); | ||
1058 | if (!pdata->ddrpsc_reg_base) { | ||
1059 | ret = -ENOMEM; | ||
1060 | goto no_ddrpsc_mem; | ||
1061 | } | ||
1062 | |||
1063 | return platform_device_register(pdev); | ||
1064 | |||
1065 | no_ddrpsc_mem: | ||
1066 | iounmap(pdata->ddrpll_reg_base); | ||
1067 | no_ddrpll_mem: | ||
1068 | iounmap(pdata->cpupll_reg_base); | ||
1069 | return ret; | ||
1070 | } | ||
1032 | 1071 | ||
1033 | static struct davinci_soc_info davinci_soc_info_da850 = { | 1072 | static struct davinci_soc_info davinci_soc_info_da850 = { |
1034 | .io_desc = da850_io_desc, | 1073 | .io_desc = da850_io_desc, |
diff --git a/arch/arm/mach-davinci/include/mach/da8xx.h b/arch/arm/mach-davinci/include/mach/da8xx.h index d9a7f11894c4..cc9be7fee627 100644 --- a/arch/arm/mach-davinci/include/mach/da8xx.h +++ b/arch/arm/mach-davinci/include/mach/da8xx.h | |||
@@ -20,6 +20,7 @@ | |||
20 | #include <mach/asp.h> | 20 | #include <mach/asp.h> |
21 | #include <mach/mmc.h> | 21 | #include <mach/mmc.h> |
22 | #include <mach/usb.h> | 22 | #include <mach/usb.h> |
23 | #include <mach/pm.h> | ||
23 | 24 | ||
24 | extern void __iomem *da8xx_syscfg0_base; | 25 | extern void __iomem *da8xx_syscfg0_base; |
25 | extern void __iomem *da8xx_syscfg1_base; | 26 | extern void __iomem *da8xx_syscfg1_base; |
@@ -44,6 +45,7 @@ extern void __iomem *da8xx_syscfg1_base; | |||
44 | 45 | ||
45 | #define DA8XX_SYSCFG1_BASE (IO_PHYS + 0x22C000) | 46 | #define DA8XX_SYSCFG1_BASE (IO_PHYS + 0x22C000) |
46 | #define DA8XX_SYSCFG1_VIRT(x) (da8xx_syscfg1_base + (x)) | 47 | #define DA8XX_SYSCFG1_VIRT(x) (da8xx_syscfg1_base + (x)) |
48 | #define DA8XX_DEEPSLEEP_REG 0x8 | ||
47 | 49 | ||
48 | #define DA8XX_PSC0_BASE 0x01c10000 | 50 | #define DA8XX_PSC0_BASE 0x01c10000 |
49 | #define DA8XX_PLL0_BASE 0x01c11000 | 51 | #define DA8XX_PLL0_BASE 0x01c11000 |
@@ -52,6 +54,7 @@ extern void __iomem *da8xx_syscfg1_base; | |||
52 | #define DA8XX_GPIO_BASE 0x01e26000 | 54 | #define DA8XX_GPIO_BASE 0x01e26000 |
53 | #define DA8XX_PSC1_BASE 0x01e27000 | 55 | #define DA8XX_PSC1_BASE 0x01e27000 |
54 | #define DA8XX_LCD_CNTRL_BASE 0x01e13000 | 56 | #define DA8XX_LCD_CNTRL_BASE 0x01e13000 |
57 | #define DA8XX_PLL1_BASE 0x01e1a000 | ||
55 | #define DA8XX_MMCSD0_BASE 0x01c40000 | 58 | #define DA8XX_MMCSD0_BASE 0x01c40000 |
56 | #define DA8XX_AEMIF_CS2_BASE 0x60000000 | 59 | #define DA8XX_AEMIF_CS2_BASE 0x60000000 |
57 | #define DA8XX_AEMIF_CS3_BASE 0x62000000 | 60 | #define DA8XX_AEMIF_CS3_BASE 0x62000000 |
@@ -96,6 +99,7 @@ int da8xx_register_rtc(void); | |||
96 | int da850_register_cpufreq(void); | 99 | int da850_register_cpufreq(void); |
97 | int da8xx_register_cpuidle(void); | 100 | int da8xx_register_cpuidle(void); |
98 | void __iomem * __init da8xx_get_mem_ctlr(void); | 101 | void __iomem * __init da8xx_get_mem_ctlr(void); |
102 | int da850_register_pm(struct platform_device *pdev); | ||
99 | 103 | ||
100 | extern struct platform_device da8xx_serial_device; | 104 | extern struct platform_device da8xx_serial_device; |
101 | extern struct emac_platform_data da8xx_emac_pdata; | 105 | extern struct emac_platform_data da8xx_emac_pdata; |
diff --git a/arch/arm/mach-davinci/include/mach/mux.h b/arch/arm/mach-davinci/include/mach/mux.h index b60c693985ff..137bfba51d1f 100644 --- a/arch/arm/mach-davinci/include/mach/mux.h +++ b/arch/arm/mach-davinci/include/mach/mux.h | |||
@@ -899,6 +899,7 @@ enum davinci_da850_index { | |||
899 | DA850_GPIO2_15, | 899 | DA850_GPIO2_15, |
900 | DA850_GPIO4_0, | 900 | DA850_GPIO4_0, |
901 | DA850_GPIO4_1, | 901 | DA850_GPIO4_1, |
902 | DA850_RTC_ALARM, | ||
902 | }; | 903 | }; |
903 | 904 | ||
904 | #ifdef CONFIG_DAVINCI_MUX | 905 | #ifdef CONFIG_DAVINCI_MUX |