aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/arm/mach-ux500/cpu-db8500.c2
-rw-r--r--arch/arm/mach-ux500/cpu.c2
-rw-r--r--arch/arm/mach-ux500/include/mach/hardware.h2
-rw-r--r--drivers/mfd/db8500-prcmu.c47
-rw-r--r--drivers/mfd/dbx500-prcmu-regs.h208
5 files changed, 131 insertions, 130 deletions
diff --git a/arch/arm/mach-ux500/cpu-db8500.c b/arch/arm/mach-ux500/cpu-db8500.c
index 19235cf7bbe3..8c58dffe52d5 100644
--- a/arch/arm/mach-ux500/cpu-db8500.c
+++ b/arch/arm/mach-ux500/cpu-db8500.c
@@ -94,8 +94,6 @@ void __init u8500_map_io(void)
94 iotable_init(u9540_io_desc, ARRAY_SIZE(u9540_io_desc)); 94 iotable_init(u9540_io_desc, ARRAY_SIZE(u9540_io_desc));
95 else 95 else
96 iotable_init(u8500_io_desc, ARRAY_SIZE(u8500_io_desc)); 96 iotable_init(u8500_io_desc, ARRAY_SIZE(u8500_io_desc));
97
98 _PRCMU_BASE = __io_address(U8500_PRCMU_BASE);
99} 97}
100 98
101static struct resource db8500_pmu_resources[] = { 99static struct resource db8500_pmu_resources[] = {
diff --git a/arch/arm/mach-ux500/cpu.c b/arch/arm/mach-ux500/cpu.c
index 6d3b57d61835..6f8e152226e3 100644
--- a/arch/arm/mach-ux500/cpu.c
+++ b/arch/arm/mach-ux500/cpu.c
@@ -30,8 +30,6 @@
30#include "board-mop500.h" 30#include "board-mop500.h"
31#include "id.h" 31#include "id.h"
32 32
33void __iomem *_PRCMU_BASE;
34
35/* 33/*
36 * FIXME: Should we set up the GPIO domain here? 34 * FIXME: Should we set up the GPIO domain here?
37 * 35 *
diff --git a/arch/arm/mach-ux500/include/mach/hardware.h b/arch/arm/mach-ux500/include/mach/hardware.h
index 5201ddace503..4eece2af1898 100644
--- a/arch/arm/mach-ux500/include/mach/hardware.h
+++ b/arch/arm/mach-ux500/include/mach/hardware.h
@@ -39,8 +39,6 @@
39 39
40#ifndef __ASSEMBLY__ 40#ifndef __ASSEMBLY__
41 41
42extern void __iomem *_PRCMU_BASE;
43
44#define ARRAY_AND_SIZE(x) (x), ARRAY_SIZE(x) 42#define ARRAY_AND_SIZE(x) (x), ARRAY_SIZE(x)
45 43
46#endif /* __ASSEMBLY__ */ 44#endif /* __ASSEMBLY__ */
diff --git a/drivers/mfd/db8500-prcmu.c b/drivers/mfd/db8500-prcmu.c
index 0d0cc91f30e8..75a60c4721ff 100644
--- a/drivers/mfd/db8500-prcmu.c
+++ b/drivers/mfd/db8500-prcmu.c
@@ -422,9 +422,10 @@ static DEFINE_SPINLOCK(clkout_lock);
422 422
423/* Global var to runtime determine TCDM base for v2 or v1 */ 423/* Global var to runtime determine TCDM base for v2 or v1 */
424static __iomem void *tcdm_base; 424static __iomem void *tcdm_base;
425static __iomem void *prcmu_base;
425 426
426struct clk_mgt { 427struct clk_mgt {
427 void __iomem *reg; 428 u32 offset;
428 u32 pllsw; 429 u32 pllsw;
429 int branch; 430 int branch;
430 bool clk38div; 431 bool clk38div;
@@ -599,9 +600,9 @@ int db8500_prcmu_set_display_clocks(void)
599 while ((readl(PRCM_SEM) & PRCM_SEM_PRCM_SEM) != 0) 600 while ((readl(PRCM_SEM) & PRCM_SEM_PRCM_SEM) != 0)
600 cpu_relax(); 601 cpu_relax();
601 602
602 writel(PRCMU_DSI_CLOCK_SETTING, PRCM_HDMICLK_MGT); 603 writel(PRCMU_DSI_CLOCK_SETTING, prcmu_base + PRCM_HDMICLK_MGT);
603 writel(PRCMU_DSI_LP_CLOCK_SETTING, PRCM_TVCLK_MGT); 604 writel(PRCMU_DSI_LP_CLOCK_SETTING, prcmu_base + PRCM_TVCLK_MGT);
604 writel(PRCMU_DPI_CLOCK_SETTING, PRCM_LCDCLK_MGT); 605 writel(PRCMU_DPI_CLOCK_SETTING, prcmu_base + PRCM_LCDCLK_MGT);
605 606
606 /* Release the HW semaphore. */ 607 /* Release the HW semaphore. */
607 writel(0, PRCM_SEM); 608 writel(0, PRCM_SEM);
@@ -613,7 +614,7 @@ int db8500_prcmu_set_display_clocks(void)
613 614
614u32 db8500_prcmu_read(unsigned int reg) 615u32 db8500_prcmu_read(unsigned int reg)
615{ 616{
616 return readl(_PRCMU_BASE + reg); 617 return readl(prcmu_base + reg);
617} 618}
618 619
619void db8500_prcmu_write(unsigned int reg, u32 value) 620void db8500_prcmu_write(unsigned int reg, u32 value)
@@ -621,7 +622,7 @@ void db8500_prcmu_write(unsigned int reg, u32 value)
621 unsigned long flags; 622 unsigned long flags;
622 623
623 spin_lock_irqsave(&prcmu_lock, flags); 624 spin_lock_irqsave(&prcmu_lock, flags);
624 writel(value, (_PRCMU_BASE + reg)); 625 writel(value, (prcmu_base + reg));
625 spin_unlock_irqrestore(&prcmu_lock, flags); 626 spin_unlock_irqrestore(&prcmu_lock, flags);
626} 627}
627 628
@@ -631,9 +632,9 @@ void db8500_prcmu_write_masked(unsigned int reg, u32 mask, u32 value)
631 unsigned long flags; 632 unsigned long flags;
632 633
633 spin_lock_irqsave(&prcmu_lock, flags); 634 spin_lock_irqsave(&prcmu_lock, flags);
634 val = readl(_PRCMU_BASE + reg); 635 val = readl(prcmu_base + reg);
635 val = ((val & ~mask) | (value & mask)); 636 val = ((val & ~mask) | (value & mask));
636 writel(val, (_PRCMU_BASE + reg)); 637 writel(val, (prcmu_base + reg));
637 spin_unlock_irqrestore(&prcmu_lock, flags); 638 spin_unlock_irqrestore(&prcmu_lock, flags);
638} 639}
639 640
@@ -1059,7 +1060,7 @@ int db8500_prcmu_set_ddr_opp(u8 opp)
1059/* Divide the frequency of certain clocks by 2 for APE_50_PARTLY_25_OPP. */ 1060/* Divide the frequency of certain clocks by 2 for APE_50_PARTLY_25_OPP. */
1060static void request_even_slower_clocks(bool enable) 1061static void request_even_slower_clocks(bool enable)
1061{ 1062{
1062 void __iomem *clock_reg[] = { 1063 u32 clock_reg[] = {
1063 PRCM_ACLK_MGT, 1064 PRCM_ACLK_MGT,
1064 PRCM_DMACLK_MGT 1065 PRCM_DMACLK_MGT
1065 }; 1066 };
@@ -1076,7 +1077,7 @@ static void request_even_slower_clocks(bool enable)
1076 u32 val; 1077 u32 val;
1077 u32 div; 1078 u32 div;
1078 1079
1079 val = readl(clock_reg[i]); 1080 val = readl(prcmu_base + clock_reg[i]);
1080 div = (val & PRCM_CLK_MGT_CLKPLLDIV_MASK); 1081 div = (val & PRCM_CLK_MGT_CLKPLLDIV_MASK);
1081 if (enable) { 1082 if (enable) {
1082 if ((div <= 1) || (div > 15)) { 1083 if ((div <= 1) || (div > 15)) {
@@ -1092,7 +1093,7 @@ static void request_even_slower_clocks(bool enable)
1092 } 1093 }
1093 val = ((val & ~PRCM_CLK_MGT_CLKPLLDIV_MASK) | 1094 val = ((val & ~PRCM_CLK_MGT_CLKPLLDIV_MASK) |
1094 (div & PRCM_CLK_MGT_CLKPLLDIV_MASK)); 1095 (div & PRCM_CLK_MGT_CLKPLLDIV_MASK));
1095 writel(val, clock_reg[i]); 1096 writel(val, prcmu_base + clock_reg[i]);
1096 } 1097 }
1097 1098
1098unlock_and_return: 1099unlock_and_return:
@@ -1446,14 +1447,14 @@ static int request_clock(u8 clock, bool enable)
1446 while ((readl(PRCM_SEM) & PRCM_SEM_PRCM_SEM) != 0) 1447 while ((readl(PRCM_SEM) & PRCM_SEM_PRCM_SEM) != 0)
1447 cpu_relax(); 1448 cpu_relax();
1448 1449
1449 val = readl(clk_mgt[clock].reg); 1450 val = readl(prcmu_base + clk_mgt[clock].offset);
1450 if (enable) { 1451 if (enable) {
1451 val |= (PRCM_CLK_MGT_CLKEN | clk_mgt[clock].pllsw); 1452 val |= (PRCM_CLK_MGT_CLKEN | clk_mgt[clock].pllsw);
1452 } else { 1453 } else {
1453 clk_mgt[clock].pllsw = (val & PRCM_CLK_MGT_CLKPLLSW_MASK); 1454 clk_mgt[clock].pllsw = (val & PRCM_CLK_MGT_CLKPLLSW_MASK);
1454 val &= ~(PRCM_CLK_MGT_CLKEN | PRCM_CLK_MGT_CLKPLLSW_MASK); 1455 val &= ~(PRCM_CLK_MGT_CLKEN | PRCM_CLK_MGT_CLKPLLSW_MASK);
1455 } 1456 }
1456 writel(val, clk_mgt[clock].reg); 1457 writel(val, prcmu_base + clk_mgt[clock].offset);
1457 1458
1458 /* Release the HW semaphore. */ 1459 /* Release the HW semaphore. */
1459 writel(0, PRCM_SEM); 1460 writel(0, PRCM_SEM);
@@ -1629,7 +1630,7 @@ static unsigned long clock_rate(u8 clock)
1629 u32 pllsw; 1630 u32 pllsw;
1630 unsigned long rate = ROOT_CLOCK_RATE; 1631 unsigned long rate = ROOT_CLOCK_RATE;
1631 1632
1632 val = readl(clk_mgt[clock].reg); 1633 val = readl(prcmu_base + clk_mgt[clock].offset);
1633 1634
1634 if (val & PRCM_CLK_MGT_CLK38) { 1635 if (val & PRCM_CLK_MGT_CLK38) {
1635 if (clk_mgt[clock].clk38div && (val & PRCM_CLK_MGT_CLK38DIV)) 1636 if (clk_mgt[clock].clk38div && (val & PRCM_CLK_MGT_CLK38DIV))
@@ -1785,7 +1786,7 @@ static long round_clock_rate(u8 clock, unsigned long rate)
1785 unsigned long src_rate; 1786 unsigned long src_rate;
1786 long rounded_rate; 1787 long rounded_rate;
1787 1788
1788 val = readl(clk_mgt[clock].reg); 1789 val = readl(prcmu_base + clk_mgt[clock].offset);
1789 src_rate = clock_source_rate((val | clk_mgt[clock].pllsw), 1790 src_rate = clock_source_rate((val | clk_mgt[clock].pllsw),
1790 clk_mgt[clock].branch); 1791 clk_mgt[clock].branch);
1791 div = clock_divider(src_rate, rate); 1792 div = clock_divider(src_rate, rate);
@@ -1933,7 +1934,7 @@ static void set_clock_rate(u8 clock, unsigned long rate)
1933 while ((readl(PRCM_SEM) & PRCM_SEM_PRCM_SEM) != 0) 1934 while ((readl(PRCM_SEM) & PRCM_SEM_PRCM_SEM) != 0)
1934 cpu_relax(); 1935 cpu_relax();
1935 1936
1936 val = readl(clk_mgt[clock].reg); 1937 val = readl(prcmu_base + clk_mgt[clock].offset);
1937 src_rate = clock_source_rate((val | clk_mgt[clock].pllsw), 1938 src_rate = clock_source_rate((val | clk_mgt[clock].pllsw),
1938 clk_mgt[clock].branch); 1939 clk_mgt[clock].branch);
1939 div = clock_divider(src_rate, rate); 1940 div = clock_divider(src_rate, rate);
@@ -1961,7 +1962,7 @@ static void set_clock_rate(u8 clock, unsigned long rate)
1961 val &= ~PRCM_CLK_MGT_CLKPLLDIV_MASK; 1962 val &= ~PRCM_CLK_MGT_CLKPLLDIV_MASK;
1962 val |= min(div, (u32)31); 1963 val |= min(div, (u32)31);
1963 } 1964 }
1964 writel(val, clk_mgt[clock].reg); 1965 writel(val, prcmu_base + clk_mgt[clock].offset);
1965 1966
1966 /* Release the HW semaphore. */ 1967 /* Release the HW semaphore. */
1967 writel(0, PRCM_SEM); 1968 writel(0, PRCM_SEM);
@@ -3163,8 +3164,18 @@ static int db8500_prcmu_probe(struct platform_device *pdev)
3163 int irq = 0, err = 0, i; 3164 int irq = 0, err = 0, i;
3164 struct resource *res; 3165 struct resource *res;
3165 3166
3167 res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "prcmu");
3168 if (!res) {
3169 dev_err(&pdev->dev, "no prcmu memory region provided\n");
3170 return -ENOENT;
3171 }
3172 prcmu_base = devm_ioremap(&pdev->dev, res->start, resource_size(res));
3173 if (!prcmu_base) {
3174 dev_err(&pdev->dev,
3175 "failed to ioremap prcmu register memory\n");
3176 return -ENOENT;
3177 }
3166 init_prcm_registers(); 3178 init_prcm_registers();
3167
3168 dbx500_fw_version_init(pdev, pdata->version_offset); 3179 dbx500_fw_version_init(pdev, pdata->version_offset);
3169 res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "prcmu-tcdm"); 3180 res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "prcmu-tcdm");
3170 if (!res) { 3181 if (!res) {
diff --git a/drivers/mfd/dbx500-prcmu-regs.h b/drivers/mfd/dbx500-prcmu-regs.h
index 79c76ebdba52..439254d23d56 100644
--- a/drivers/mfd/dbx500-prcmu-regs.h
+++ b/drivers/mfd/dbx500-prcmu-regs.h
@@ -13,136 +13,132 @@
13#ifndef __DB8500_PRCMU_REGS_H 13#ifndef __DB8500_PRCMU_REGS_H
14#define __DB8500_PRCMU_REGS_H 14#define __DB8500_PRCMU_REGS_H
15 15
16#include <mach/hardware.h>
17
18#define BITS(_start, _end) ((BIT(_end) - BIT(_start)) + BIT(_end)) 16#define BITS(_start, _end) ((BIT(_end) - BIT(_start)) + BIT(_end))
19 17
20#define PRCM_CLK_MGT(_offset) (void __iomem *)(IO_ADDRESS(U8500_PRCMU_BASE) \ 18#define PRCM_ACLK_MGT (0x004)
21 + _offset) 19#define PRCM_SVACLK_MGT (0x008)
22#define PRCM_ACLK_MGT PRCM_CLK_MGT(0x004) 20#define PRCM_SIACLK_MGT (0x00C)
23#define PRCM_SVACLK_MGT PRCM_CLK_MGT(0x008) 21#define PRCM_SGACLK_MGT (0x014)
24#define PRCM_SIACLK_MGT PRCM_CLK_MGT(0x00C) 22#define PRCM_UARTCLK_MGT (0x018)
25#define PRCM_SGACLK_MGT PRCM_CLK_MGT(0x014) 23#define PRCM_MSP02CLK_MGT (0x01C)
26#define PRCM_UARTCLK_MGT PRCM_CLK_MGT(0x018) 24#define PRCM_I2CCLK_MGT (0x020)
27#define PRCM_MSP02CLK_MGT PRCM_CLK_MGT(0x01C) 25#define PRCM_SDMMCCLK_MGT (0x024)
28#define PRCM_I2CCLK_MGT PRCM_CLK_MGT(0x020) 26#define PRCM_SLIMCLK_MGT (0x028)
29#define PRCM_SDMMCCLK_MGT PRCM_CLK_MGT(0x024) 27#define PRCM_PER1CLK_MGT (0x02C)
30#define PRCM_SLIMCLK_MGT PRCM_CLK_MGT(0x028) 28#define PRCM_PER2CLK_MGT (0x030)
31#define PRCM_PER1CLK_MGT PRCM_CLK_MGT(0x02C) 29#define PRCM_PER3CLK_MGT (0x034)
32#define PRCM_PER2CLK_MGT PRCM_CLK_MGT(0x030) 30#define PRCM_PER5CLK_MGT (0x038)
33#define PRCM_PER3CLK_MGT PRCM_CLK_MGT(0x034) 31#define PRCM_PER6CLK_MGT (0x03C)
34#define PRCM_PER5CLK_MGT PRCM_CLK_MGT(0x038) 32#define PRCM_PER7CLK_MGT (0x040)
35#define PRCM_PER6CLK_MGT PRCM_CLK_MGT(0x03C) 33#define PRCM_LCDCLK_MGT (0x044)
36#define PRCM_PER7CLK_MGT PRCM_CLK_MGT(0x040) 34#define PRCM_BMLCLK_MGT (0x04C)
37#define PRCM_LCDCLK_MGT PRCM_CLK_MGT(0x044) 35#define PRCM_HSITXCLK_MGT (0x050)
38#define PRCM_BMLCLK_MGT PRCM_CLK_MGT(0x04C) 36#define PRCM_HSIRXCLK_MGT (0x054)
39#define PRCM_HSITXCLK_MGT PRCM_CLK_MGT(0x050) 37#define PRCM_HDMICLK_MGT (0x058)
40#define PRCM_HSIRXCLK_MGT PRCM_CLK_MGT(0x054) 38#define PRCM_APEATCLK_MGT (0x05C)
41#define PRCM_HDMICLK_MGT PRCM_CLK_MGT(0x058) 39#define PRCM_APETRACECLK_MGT (0x060)
42#define PRCM_APEATCLK_MGT PRCM_CLK_MGT(0x05C) 40#define PRCM_MCDECLK_MGT (0x064)
43#define PRCM_APETRACECLK_MGT PRCM_CLK_MGT(0x060) 41#define PRCM_IPI2CCLK_MGT (0x068)
44#define PRCM_MCDECLK_MGT PRCM_CLK_MGT(0x064) 42#define PRCM_DSIALTCLK_MGT (0x06C)
45#define PRCM_IPI2CCLK_MGT PRCM_CLK_MGT(0x068) 43#define PRCM_DMACLK_MGT (0x074)
46#define PRCM_DSIALTCLK_MGT PRCM_CLK_MGT(0x06C) 44#define PRCM_B2R2CLK_MGT (0x078)
47#define PRCM_DMACLK_MGT PRCM_CLK_MGT(0x074) 45#define PRCM_TVCLK_MGT (0x07C)
48#define PRCM_B2R2CLK_MGT PRCM_CLK_MGT(0x078) 46#define PRCM_UNIPROCLK_MGT (0x278)
49#define PRCM_TVCLK_MGT PRCM_CLK_MGT(0x07C) 47#define PRCM_SSPCLK_MGT (0x280)
50#define PRCM_UNIPROCLK_MGT PRCM_CLK_MGT(0x278) 48#define PRCM_RNGCLK_MGT (0x284)
51#define PRCM_SSPCLK_MGT PRCM_CLK_MGT(0x280) 49#define PRCM_UICCCLK_MGT (0x27C)
52#define PRCM_RNGCLK_MGT PRCM_CLK_MGT(0x284) 50#define PRCM_MSP1CLK_MGT (0x288)
53#define PRCM_UICCCLK_MGT PRCM_CLK_MGT(0x27C) 51
54#define PRCM_MSP1CLK_MGT PRCM_CLK_MGT(0x288) 52#define PRCM_ARM_PLLDIVPS (prcmu_base + 0x118)
55
56#define PRCM_ARM_PLLDIVPS (_PRCMU_BASE + 0x118)
57#define PRCM_ARM_PLLDIVPS_ARM_BRM_RATE 0x3f 53#define PRCM_ARM_PLLDIVPS_ARM_BRM_RATE 0x3f
58#define PRCM_ARM_PLLDIVPS_MAX_MASK 0xf 54#define PRCM_ARM_PLLDIVPS_MAX_MASK 0xf
59 55
60#define PRCM_PLLARM_LOCKP (_PRCMU_BASE + 0x0a8) 56#define PRCM_PLLARM_LOCKP (prcmu_base + 0x0a8)
61#define PRCM_PLLARM_LOCKP_PRCM_PLLARM_LOCKP3 0x2 57#define PRCM_PLLARM_LOCKP_PRCM_PLLARM_LOCKP3 0x2
62 58
63#define PRCM_ARM_CHGCLKREQ (_PRCMU_BASE + 0x114) 59#define PRCM_ARM_CHGCLKREQ (prcmu_base + 0x114)
64#define PRCM_ARM_CHGCLKREQ_PRCM_ARM_CHGCLKREQ BIT(0) 60#define PRCM_ARM_CHGCLKREQ_PRCM_ARM_CHGCLKREQ BIT(0)
65#define PRCM_ARM_CHGCLKREQ_PRCM_ARM_DIVSEL BIT(16) 61#define PRCM_ARM_CHGCLKREQ_PRCM_ARM_DIVSEL BIT(16)
66 62
67#define PRCM_PLLARM_ENABLE (_PRCMU_BASE + 0x98) 63#define PRCM_PLLARM_ENABLE (prcmu_base + 0x98)
68#define PRCM_PLLARM_ENABLE_PRCM_PLLARM_ENABLE 0x1 64#define PRCM_PLLARM_ENABLE_PRCM_PLLARM_ENABLE 0x1
69#define PRCM_PLLARM_ENABLE_PRCM_PLLARM_COUNTON 0x100 65#define PRCM_PLLARM_ENABLE_PRCM_PLLARM_COUNTON 0x100
70 66
71#define PRCM_ARMCLKFIX_MGT (_PRCMU_BASE + 0x0) 67#define PRCM_ARMCLKFIX_MGT (prcmu_base + 0x0)
72#define PRCM_A9PL_FORCE_CLKEN (_PRCMU_BASE + 0x19C) 68#define PRCM_A9PL_FORCE_CLKEN (prcmu_base + 0x19C)
73#define PRCM_A9_RESETN_CLR (_PRCMU_BASE + 0x1f4) 69#define PRCM_A9_RESETN_CLR (prcmu_base + 0x1f4)
74#define PRCM_A9_RESETN_SET (_PRCMU_BASE + 0x1f0) 70#define PRCM_A9_RESETN_SET (prcmu_base + 0x1f0)
75#define PRCM_ARM_LS_CLAMP (_PRCMU_BASE + 0x30c) 71#define PRCM_ARM_LS_CLAMP (prcmu_base + 0x30c)
76#define PRCM_SRAM_A9 (_PRCMU_BASE + 0x308) 72#define PRCM_SRAM_A9 (prcmu_base + 0x308)
77 73
78#define PRCM_A9PL_FORCE_CLKEN_PRCM_A9PL_FORCE_CLKEN BIT(0) 74#define PRCM_A9PL_FORCE_CLKEN_PRCM_A9PL_FORCE_CLKEN BIT(0)
79#define PRCM_A9PL_FORCE_CLKEN_PRCM_A9AXI_FORCE_CLKEN BIT(1) 75#define PRCM_A9PL_FORCE_CLKEN_PRCM_A9AXI_FORCE_CLKEN BIT(1)
80 76
81/* ARM WFI Standby signal register */ 77/* ARM WFI Standby signal register */
82#define PRCM_ARM_WFI_STANDBY (_PRCMU_BASE + 0x130) 78#define PRCM_ARM_WFI_STANDBY (prcmu_base + 0x130)
83#define PRCM_ARM_WFI_STANDBY_WFI0 0x08 79#define PRCM_ARM_WFI_STANDBY_WFI0 0x08
84#define PRCM_ARM_WFI_STANDBY_WFI1 0x10 80#define PRCM_ARM_WFI_STANDBY_WFI1 0x10
85#define PRCM_IOCR (_PRCMU_BASE + 0x310) 81#define PRCM_IOCR (prcmu_base + 0x310)
86#define PRCM_IOCR_IOFORCE 0x1 82#define PRCM_IOCR_IOFORCE 0x1
87 83
88/* CPU mailbox registers */ 84/* CPU mailbox registers */
89#define PRCM_MBOX_CPU_VAL (_PRCMU_BASE + 0x0fc) 85#define PRCM_MBOX_CPU_VAL (prcmu_base + 0x0fc)
90#define PRCM_MBOX_CPU_SET (_PRCMU_BASE + 0x100) 86#define PRCM_MBOX_CPU_SET (prcmu_base + 0x100)
91#define PRCM_MBOX_CPU_CLR (_PRCMU_BASE + 0x104) 87#define PRCM_MBOX_CPU_CLR (prcmu_base + 0x104)
92 88
93/* Dual A9 core interrupt management unit registers */ 89/* Dual A9 core interrupt management unit registers */
94#define PRCM_A9_MASK_REQ (_PRCMU_BASE + 0x328) 90#define PRCM_A9_MASK_REQ (prcmu_base + 0x328)
95#define PRCM_A9_MASK_REQ_PRCM_A9_MASK_REQ 0x1 91#define PRCM_A9_MASK_REQ_PRCM_A9_MASK_REQ 0x1
96 92
97#define PRCM_A9_MASK_ACK (_PRCMU_BASE + 0x32c) 93#define PRCM_A9_MASK_ACK (prcmu_base + 0x32c)
98#define PRCM_ARMITMSK31TO0 (_PRCMU_BASE + 0x11c) 94#define PRCM_ARMITMSK31TO0 (prcmu_base + 0x11c)
99#define PRCM_ARMITMSK63TO32 (_PRCMU_BASE + 0x120) 95#define PRCM_ARMITMSK63TO32 (prcmu_base + 0x120)
100#define PRCM_ARMITMSK95TO64 (_PRCMU_BASE + 0x124) 96#define PRCM_ARMITMSK95TO64 (prcmu_base + 0x124)
101#define PRCM_ARMITMSK127TO96 (_PRCMU_BASE + 0x128) 97#define PRCM_ARMITMSK127TO96 (prcmu_base + 0x128)
102#define PRCM_POWER_STATE_VAL (_PRCMU_BASE + 0x25C) 98#define PRCM_POWER_STATE_VAL (prcmu_base + 0x25C)
103#define PRCM_ARMITVAL31TO0 (_PRCMU_BASE + 0x260) 99#define PRCM_ARMITVAL31TO0 (prcmu_base + 0x260)
104#define PRCM_ARMITVAL63TO32 (_PRCMU_BASE + 0x264) 100#define PRCM_ARMITVAL63TO32 (prcmu_base + 0x264)
105#define PRCM_ARMITVAL95TO64 (_PRCMU_BASE + 0x268) 101#define PRCM_ARMITVAL95TO64 (prcmu_base + 0x268)
106#define PRCM_ARMITVAL127TO96 (_PRCMU_BASE + 0x26C) 102#define PRCM_ARMITVAL127TO96 (prcmu_base + 0x26C)
107 103
108#define PRCM_HOSTACCESS_REQ (_PRCMU_BASE + 0x334) 104#define PRCM_HOSTACCESS_REQ (prcmu_base + 0x334)
109#define PRCM_HOSTACCESS_REQ_HOSTACCESS_REQ 0x1 105#define PRCM_HOSTACCESS_REQ_HOSTACCESS_REQ 0x1
110#define PRCM_HOSTACCESS_REQ_WAKE_REQ BIT(16) 106#define PRCM_HOSTACCESS_REQ_WAKE_REQ BIT(16)
111#define ARM_WAKEUP_MODEM 0x1 107#define ARM_WAKEUP_MODEM 0x1
112 108
113#define PRCM_ARM_IT1_CLR (_PRCMU_BASE + 0x48C) 109#define PRCM_ARM_IT1_CLR (prcmu_base + 0x48C)
114#define PRCM_ARM_IT1_VAL (_PRCMU_BASE + 0x494) 110#define PRCM_ARM_IT1_VAL (prcmu_base + 0x494)
115#define PRCM_HOLD_EVT (_PRCMU_BASE + 0x174) 111#define PRCM_HOLD_EVT (prcmu_base + 0x174)
116 112
117#define PRCM_MOD_AWAKE_STATUS (_PRCMU_BASE + 0x4A0) 113#define PRCM_MOD_AWAKE_STATUS (prcmu_base + 0x4A0)
118#define PRCM_MOD_AWAKE_STATUS_PRCM_MOD_COREPD_AWAKE BIT(0) 114#define PRCM_MOD_AWAKE_STATUS_PRCM_MOD_COREPD_AWAKE BIT(0)
119#define PRCM_MOD_AWAKE_STATUS_PRCM_MOD_AAPD_AWAKE BIT(1) 115#define PRCM_MOD_AWAKE_STATUS_PRCM_MOD_AAPD_AWAKE BIT(1)
120#define PRCM_MOD_AWAKE_STATUS_PRCM_MOD_VMODEM_OFF_ISO BIT(2) 116#define PRCM_MOD_AWAKE_STATUS_PRCM_MOD_VMODEM_OFF_ISO BIT(2)
121 117
122#define PRCM_ITSTATUS0 (_PRCMU_BASE + 0x148) 118#define PRCM_ITSTATUS0 (prcmu_base + 0x148)
123#define PRCM_ITSTATUS1 (_PRCMU_BASE + 0x150) 119#define PRCM_ITSTATUS1 (prcmu_base + 0x150)
124#define PRCM_ITSTATUS2 (_PRCMU_BASE + 0x158) 120#define PRCM_ITSTATUS2 (prcmu_base + 0x158)
125#define PRCM_ITSTATUS3 (_PRCMU_BASE + 0x160) 121#define PRCM_ITSTATUS3 (prcmu_base + 0x160)
126#define PRCM_ITSTATUS4 (_PRCMU_BASE + 0x168) 122#define PRCM_ITSTATUS4 (prcmu_base + 0x168)
127#define PRCM_ITSTATUS5 (_PRCMU_BASE + 0x484) 123#define PRCM_ITSTATUS5 (prcmu_base + 0x484)
128#define PRCM_ITCLEAR5 (_PRCMU_BASE + 0x488) 124#define PRCM_ITCLEAR5 (prcmu_base + 0x488)
129#define PRCM_ARMIT_MASKXP70_IT (_PRCMU_BASE + 0x1018) 125#define PRCM_ARMIT_MASKXP70_IT (prcmu_base + 0x1018)
130 126
131/* System reset register */ 127/* System reset register */
132#define PRCM_APE_SOFTRST (_PRCMU_BASE + 0x228) 128#define PRCM_APE_SOFTRST (prcmu_base + 0x228)
133 129
134/* Level shifter and clamp control registers */ 130/* Level shifter and clamp control registers */
135#define PRCM_MMIP_LS_CLAMP_SET (_PRCMU_BASE + 0x420) 131#define PRCM_MMIP_LS_CLAMP_SET (prcmu_base + 0x420)
136#define PRCM_MMIP_LS_CLAMP_CLR (_PRCMU_BASE + 0x424) 132#define PRCM_MMIP_LS_CLAMP_CLR (prcmu_base + 0x424)
137 133
138#define PRCM_MMIP_LS_CLAMP_DSIPLL_CLAMP BIT(11) 134#define PRCM_MMIP_LS_CLAMP_DSIPLL_CLAMP BIT(11)
139#define PRCM_MMIP_LS_CLAMP_DSIPLL_CLAMPI BIT(22) 135#define PRCM_MMIP_LS_CLAMP_DSIPLL_CLAMPI BIT(22)
140 136
141/* PRCMU clock/PLL/reset registers */ 137/* PRCMU clock/PLL/reset registers */
142#define PRCM_PLLSOC0_FREQ (_PRCMU_BASE + 0x080) 138#define PRCM_PLLSOC0_FREQ (prcmu_base + 0x080)
143#define PRCM_PLLSOC1_FREQ (_PRCMU_BASE + 0x084) 139#define PRCM_PLLSOC1_FREQ (prcmu_base + 0x084)
144#define PRCM_PLLARM_FREQ (_PRCMU_BASE + 0x088) 140#define PRCM_PLLARM_FREQ (prcmu_base + 0x088)
145#define PRCM_PLLDDR_FREQ (_PRCMU_BASE + 0x08C) 141#define PRCM_PLLDDR_FREQ (prcmu_base + 0x08C)
146#define PRCM_PLL_FREQ_D_SHIFT 0 142#define PRCM_PLL_FREQ_D_SHIFT 0
147#define PRCM_PLL_FREQ_D_MASK BITS(0, 7) 143#define PRCM_PLL_FREQ_D_MASK BITS(0, 7)
148#define PRCM_PLL_FREQ_N_SHIFT 8 144#define PRCM_PLL_FREQ_N_SHIFT 8
@@ -152,14 +148,14 @@
152#define PRCM_PLL_FREQ_SELDIV2 BIT(24) 148#define PRCM_PLL_FREQ_SELDIV2 BIT(24)
153#define PRCM_PLL_FREQ_DIV2EN BIT(25) 149#define PRCM_PLL_FREQ_DIV2EN BIT(25)
154 150
155#define PRCM_PLLDSI_FREQ (_PRCMU_BASE + 0x500) 151#define PRCM_PLLDSI_FREQ (prcmu_base + 0x500)
156#define PRCM_PLLDSI_ENABLE (_PRCMU_BASE + 0x504) 152#define PRCM_PLLDSI_ENABLE (prcmu_base + 0x504)
157#define PRCM_PLLDSI_LOCKP (_PRCMU_BASE + 0x508) 153#define PRCM_PLLDSI_LOCKP (prcmu_base + 0x508)
158#define PRCM_DSI_PLLOUT_SEL (_PRCMU_BASE + 0x530) 154#define PRCM_DSI_PLLOUT_SEL (prcmu_base + 0x530)
159#define PRCM_DSITVCLK_DIV (_PRCMU_BASE + 0x52C) 155#define PRCM_DSITVCLK_DIV (prcmu_base + 0x52C)
160#define PRCM_PLLDSI_LOCKP (_PRCMU_BASE + 0x508) 156#define PRCM_PLLDSI_LOCKP (prcmu_base + 0x508)
161#define PRCM_APE_RESETN_SET (_PRCMU_BASE + 0x1E4) 157#define PRCM_APE_RESETN_SET (prcmu_base + 0x1E4)
162#define PRCM_APE_RESETN_CLR (_PRCMU_BASE + 0x1E8) 158#define PRCM_APE_RESETN_CLR (prcmu_base + 0x1E8)
163 159
164#define PRCM_PLLDSI_ENABLE_PRCM_PLLDSI_ENABLE BIT(0) 160#define PRCM_PLLDSI_ENABLE_PRCM_PLLDSI_ENABLE BIT(0)
165 161
@@ -188,30 +184,30 @@
188 184
189#define PRCM_APE_RESETN_DSIPLL_RESETN BIT(14) 185#define PRCM_APE_RESETN_DSIPLL_RESETN BIT(14)
190 186
191#define PRCM_CLKOCR (_PRCMU_BASE + 0x1CC) 187#define PRCM_CLKOCR (prcmu_base + 0x1CC)
192#define PRCM_CLKOCR_CLKOUT0_REF_CLK (1 << 0) 188#define PRCM_CLKOCR_CLKOUT0_REF_CLK (1 << 0)
193#define PRCM_CLKOCR_CLKOUT0_MASK BITS(0, 13) 189#define PRCM_CLKOCR_CLKOUT0_MASK BITS(0, 13)
194#define PRCM_CLKOCR_CLKOUT1_REF_CLK (1 << 16) 190#define PRCM_CLKOCR_CLKOUT1_REF_CLK (1 << 16)
195#define PRCM_CLKOCR_CLKOUT1_MASK BITS(16, 29) 191#define PRCM_CLKOCR_CLKOUT1_MASK BITS(16, 29)
196 192
197/* ePOD and memory power signal control registers */ 193/* ePOD and memory power signal control registers */
198#define PRCM_EPOD_C_SET (_PRCMU_BASE + 0x410) 194#define PRCM_EPOD_C_SET (prcmu_base + 0x410)
199#define PRCM_SRAM_LS_SLEEP (_PRCMU_BASE + 0x304) 195#define PRCM_SRAM_LS_SLEEP (prcmu_base + 0x304)
200 196
201/* Debug power control unit registers */ 197/* Debug power control unit registers */
202#define PRCM_POWER_STATE_SET (_PRCMU_BASE + 0x254) 198#define PRCM_POWER_STATE_SET (prcmu_base + 0x254)
203 199
204/* Miscellaneous unit registers */ 200/* Miscellaneous unit registers */
205#define PRCM_DSI_SW_RESET (_PRCMU_BASE + 0x324) 201#define PRCM_DSI_SW_RESET (prcmu_base + 0x324)
206#define PRCM_GPIOCR (_PRCMU_BASE + 0x138) 202#define PRCM_GPIOCR (prcmu_base + 0x138)
207#define PRCM_GPIOCR_DBG_STM_MOD_CMD1 0x800 203#define PRCM_GPIOCR_DBG_STM_MOD_CMD1 0x800
208#define PRCM_GPIOCR_DBG_UARTMOD_CMD0 0x1 204#define PRCM_GPIOCR_DBG_UARTMOD_CMD0 0x1
209 205
210/* PRCMU HW semaphore */ 206/* PRCMU HW semaphore */
211#define PRCM_SEM (_PRCMU_BASE + 0x400) 207#define PRCM_SEM (prcmu_base + 0x400)
212#define PRCM_SEM_PRCM_SEM BIT(0) 208#define PRCM_SEM_PRCM_SEM BIT(0)
213 209
214#define PRCM_TCR (_PRCMU_BASE + 0x1C8) 210#define PRCM_TCR (prcmu_base + 0x1C8)
215#define PRCM_TCR_TENSEL_MASK BITS(0, 7) 211#define PRCM_TCR_TENSEL_MASK BITS(0, 7)
216#define PRCM_TCR_STOP_TIMERS BIT(16) 212#define PRCM_TCR_STOP_TIMERS BIT(16)
217#define PRCM_TCR_DOZE_MODE BIT(17) 213#define PRCM_TCR_DOZE_MODE BIT(17)
@@ -239,15 +235,15 @@
239/* GPIOCR register */ 235/* GPIOCR register */
240#define PRCM_GPIOCR_SPI2_SELECT BIT(23) 236#define PRCM_GPIOCR_SPI2_SELECT BIT(23)
241 237
242#define PRCM_DDR_SUBSYS_APE_MINBW (_PRCMU_BASE + 0x438) 238#define PRCM_DDR_SUBSYS_APE_MINBW (prcmu_base + 0x438)
243#define PRCM_CGATING_BYPASS (_PRCMU_BASE + 0x134) 239#define PRCM_CGATING_BYPASS (prcmu_base + 0x134)
244#define PRCM_CGATING_BYPASS_ICN2 BIT(6) 240#define PRCM_CGATING_BYPASS_ICN2 BIT(6)
245 241
246/* Miscellaneous unit registers */ 242/* Miscellaneous unit registers */
247#define PRCM_RESOUTN_SET (_PRCMU_BASE + 0x214) 243#define PRCM_RESOUTN_SET (prcmu_base + 0x214)
248#define PRCM_RESOUTN_CLR (_PRCMU_BASE + 0x218) 244#define PRCM_RESOUTN_CLR (prcmu_base + 0x218)
249 245
250/* System reset register */ 246/* System reset register */
251#define PRCM_APE_SOFTRST (_PRCMU_BASE + 0x228) 247#define PRCM_APE_SOFTRST (prcmu_base + 0x228)
252 248
253#endif /* __DB8500_PRCMU_REGS_H */ 249#endif /* __DB8500_PRCMU_REGS_H */