diff options
author | Linus Walleij <linus.walleij@stericsson.com> | 2010-08-19 07:36:01 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2010-09-02 10:46:21 -0400 |
commit | e3726fcf263adf764a4f1b9428082837662a41c4 (patch) | |
tree | 080ffcc6a184e3afa723abcd901d305ba063e439 /arch/arm/mach-ux500/include | |
parent | 008f8a2f7ff4d63559b7ba7a6f7073efef9b1e08 (diff) |
ARM: 6336/1: U8500 PRCMU driver
Add an initial driver for communicating with the Power, Reset and
Clock Management Unit (PRCMU) firmware in U8500.
This initial version supports AB8500 communication only.
Signed-off-by: Mattias Nilsson <mattias.i.nilsson@stericsson.com>
Signed-off-by: Mattias Wallin <mattias.wallin@stericsson.com>
Signed-off-by: Linus Walleij <linus.walleij@stericsson.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mach-ux500/include')
-rw-r--r-- | arch/arm/mach-ux500/include/mach/irqs.h | 1 | ||||
-rw-r--r-- | arch/arm/mach-ux500/include/mach/prcmu-regs.h | 91 | ||||
-rw-r--r-- | arch/arm/mach-ux500/include/mach/prcmu.h | 15 |
3 files changed, 107 insertions, 0 deletions
diff --git a/arch/arm/mach-ux500/include/mach/irqs.h b/arch/arm/mach-ux500/include/mach/irqs.h index 10385bdc2b77..0e7a2cec1994 100644 --- a/arch/arm/mach-ux500/include/mach/irqs.h +++ b/arch/arm/mach-ux500/include/mach/irqs.h | |||
@@ -41,6 +41,7 @@ | |||
41 | #define IRQ_HSIR_CH2_OVRRUN (IRQ_SHPI_START + 34) | 41 | #define IRQ_HSIR_CH2_OVRRUN (IRQ_SHPI_START + 34) |
42 | #define IRQ_HSIR_CH3_OVRRUN (IRQ_SHPI_START + 35) | 42 | #define IRQ_HSIR_CH3_OVRRUN (IRQ_SHPI_START + 35) |
43 | #define IRQ_AB4500 (IRQ_SHPI_START + 40) | 43 | #define IRQ_AB4500 (IRQ_SHPI_START + 40) |
44 | #define IRQ_PRCMU (IRQ_SHPI_START + 47) | ||
44 | #define IRQ_DISP (IRQ_SHPI_START + 48) | 45 | #define IRQ_DISP (IRQ_SHPI_START + 48) |
45 | #define IRQ_SiPI3 (IRQ_SHPI_START + 49) | 46 | #define IRQ_SiPI3 (IRQ_SHPI_START + 49) |
46 | #define IRQ_I2C4 (IRQ_SHPI_START + 51) | 47 | #define IRQ_I2C4 (IRQ_SHPI_START + 51) |
diff --git a/arch/arm/mach-ux500/include/mach/prcmu-regs.h b/arch/arm/mach-ux500/include/mach/prcmu-regs.h new file mode 100644 index 000000000000..8885f39a6421 --- /dev/null +++ b/arch/arm/mach-ux500/include/mach/prcmu-regs.h | |||
@@ -0,0 +1,91 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2009 ST-Ericsson SA | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License version 2 | ||
6 | * as published by the Free Software Foundation. | ||
7 | */ | ||
8 | #ifndef __MACH_PRCMU_REGS_H | ||
9 | #define __MACH_PRCMU_REGS_H | ||
10 | |||
11 | #include <mach/hardware.h> | ||
12 | |||
13 | #define _PRCMU_BASE IO_ADDRESS(U8500_PRCMU_BASE) | ||
14 | |||
15 | #define PRCM_ARM_PLLDIVPS (_PRCMU_BASE + 0x118) | ||
16 | #define PRCM_ARM_CHGCLKREQ (_PRCMU_BASE + 0x114) | ||
17 | #define PRCM_PLLARM_ENABLE (_PRCMU_BASE + 0x98) | ||
18 | #define PRCM_ARMCLKFIX_MGT (_PRCMU_BASE + 0x0) | ||
19 | #define PRCM_A9_RESETN_CLR (_PRCMU_BASE + 0x1f4) | ||
20 | #define PRCM_A9_RESETN_SET (_PRCMU_BASE + 0x1f0) | ||
21 | #define PRCM_ARM_LS_CLAMP (_PRCMU_BASE + 0x30c) | ||
22 | #define PRCM_SRAM_A9 (_PRCMU_BASE + 0x308) | ||
23 | |||
24 | /* ARM WFI Standby signal register */ | ||
25 | #define PRCM_ARM_WFI_STANDBY (_PRCMU_BASE + 0x130) | ||
26 | #define PRCMU_IOCR (_PRCMU_BASE + 0x310) | ||
27 | |||
28 | /* CPU mailbox registers */ | ||
29 | #define PRCM_MBOX_CPU_VAL (_PRCMU_BASE + 0x0fc) | ||
30 | #define PRCM_MBOX_CPU_SET (_PRCMU_BASE + 0x100) | ||
31 | #define PRCM_MBOX_CPU_CLR (_PRCMU_BASE + 0x104) | ||
32 | |||
33 | /* Dual A9 core interrupt management unit registers */ | ||
34 | #define PRCM_A9_MASK_REQ (_PRCMU_BASE + 0x328) | ||
35 | #define PRCM_A9_MASK_ACK (_PRCMU_BASE + 0x32c) | ||
36 | #define PRCM_ARMITMSK31TO0 (_PRCMU_BASE + 0x11c) | ||
37 | #define PRCM_ARMITMSK63TO32 (_PRCMU_BASE + 0x120) | ||
38 | #define PRCM_ARMITMSK95TO64 (_PRCMU_BASE + 0x124) | ||
39 | #define PRCM_ARMITMSK127TO96 (_PRCMU_BASE + 0x128) | ||
40 | #define PRCM_POWER_STATE_VAL (_PRCMU_BASE + 0x25C) | ||
41 | #define PRCM_ARMITVAL31TO0 (_PRCMU_BASE + 0x260) | ||
42 | #define PRCM_ARMITVAL63TO32 (_PRCMU_BASE + 0x264) | ||
43 | #define PRCM_ARMITVAL95TO64 (_PRCMU_BASE + 0x268) | ||
44 | #define PRCM_ARMITVAL127TO96 (_PRCMU_BASE + 0x26C) | ||
45 | |||
46 | #define PRCM_HOSTACCESS_REQ (_PRCMU_BASE + 0x334) | ||
47 | #define ARM_WAKEUP_MODEM 0x1 | ||
48 | |||
49 | #define PRCM_ARM_IT1_CLEAR (_PRCMU_BASE + 0x48C) | ||
50 | #define PRCM_ARM_IT1_VAL (_PRCMU_BASE + 0x494) | ||
51 | #define PRCM_HOLD_EVT (_PRCMU_BASE + 0x174) | ||
52 | |||
53 | #define PRCM_ITSTATUS0 (_PRCMU_BASE + 0x148) | ||
54 | #define PRCM_ITSTATUS1 (_PRCMU_BASE + 0x150) | ||
55 | #define PRCM_ITSTATUS2 (_PRCMU_BASE + 0x158) | ||
56 | #define PRCM_ITSTATUS3 (_PRCMU_BASE + 0x160) | ||
57 | #define PRCM_ITSTATUS4 (_PRCMU_BASE + 0x168) | ||
58 | #define PRCM_ITSTATUS5 (_PRCMU_BASE + 0x484) | ||
59 | #define PRCM_ITCLEAR5 (_PRCMU_BASE + 0x488) | ||
60 | #define PRCM_ARMIT_MASKXP70_IT (_PRCMU_BASE + 0x1018) | ||
61 | |||
62 | /* System reset register */ | ||
63 | #define PRCM_APE_SOFTRST (_PRCMU_BASE + 0x228) | ||
64 | |||
65 | /* Level shifter and clamp control registers */ | ||
66 | #define PRCM_MMIP_LS_CLAMP_SET (_PRCMU_BASE + 0x420) | ||
67 | #define PRCM_MMIP_LS_CLAMP_CLR (_PRCMU_BASE + 0x424) | ||
68 | |||
69 | /* PRCMU clock/PLL/reset registers */ | ||
70 | #define PRCM_PLLDSI_FREQ (_PRCMU_BASE + 0x500) | ||
71 | #define PRCM_PLLDSI_ENABLE (_PRCMU_BASE + 0x504) | ||
72 | #define PRCM_LCDCLK_MGT (_PRCMU_BASE + 0x044) | ||
73 | #define PRCM_MCDECLK_MGT (_PRCMU_BASE + 0x064) | ||
74 | #define PRCM_HDMICLK_MGT (_PRCMU_BASE + 0x058) | ||
75 | #define PRCM_TVCLK_MGT (_PRCMU_BASE + 0x07c) | ||
76 | #define PRCM_DSI_PLLOUT_SEL (_PRCMU_BASE + 0x530) | ||
77 | #define PRCM_DSITVCLK_DIV (_PRCMU_BASE + 0x52C) | ||
78 | #define PRCM_APE_RESETN_SET (_PRCMU_BASE + 0x1E4) | ||
79 | #define PRCM_APE_RESETN_CLR (_PRCMU_BASE + 0x1E8) | ||
80 | |||
81 | /* ePOD and memory power signal control registers */ | ||
82 | #define PRCM_EPOD_C_SET (_PRCMU_BASE + 0x410) | ||
83 | #define PRCM_SRAM_LS_SLEEP (_PRCMU_BASE + 0x304) | ||
84 | |||
85 | /* Debug power control unit registers */ | ||
86 | #define PRCM_POWER_STATE_SET (_PRCMU_BASE + 0x254) | ||
87 | |||
88 | /* Miscellaneous unit registers */ | ||
89 | #define PRCM_DSI_SW_RESET (_PRCMU_BASE + 0x324) | ||
90 | |||
91 | #endif /* __MACH_PRCMU__REGS_H */ | ||
diff --git a/arch/arm/mach-ux500/include/mach/prcmu.h b/arch/arm/mach-ux500/include/mach/prcmu.h new file mode 100644 index 000000000000..549843ff6dbe --- /dev/null +++ b/arch/arm/mach-ux500/include/mach/prcmu.h | |||
@@ -0,0 +1,15 @@ | |||
1 | /* | ||
2 | * Copyright (C) STMicroelectronics 2009 | ||
3 | * Copyright (C) ST-Ericsson SA 2010 | ||
4 | * | ||
5 | * License Terms: GNU General Public License v2 | ||
6 | * | ||
7 | * PRCMU f/w APIs | ||
8 | */ | ||
9 | #ifndef __MACH_PRCMU_H | ||
10 | #define __MACH_PRCMU_H | ||
11 | |||
12 | int prcmu_abb_read(u8 slave, u8 reg, u8 *value, u8 size); | ||
13 | int prcmu_abb_write(u8 slave, u8 reg, u8 *value, u8 size); | ||
14 | |||
15 | #endif /* __MACH_PRCMU_H */ | ||