diff options
author | Arnd Bergmann <arnd@arndb.de> | 2016-03-02 17:30:17 -0500 |
---|---|---|
committer | Arnd Bergmann <arnd@arndb.de> | 2016-03-02 17:30:17 -0500 |
commit | f3a186fbfd413f2453c511da2dbcdc594c87dbde (patch) | |
tree | 7a35123458eb9904f8027c3bc15057e607707c2d | |
parent | e91fb3bd757569aca48785358a4adbf41334d382 (diff) | |
parent | d2443b2e6167e80eca9a068d5ecc0e6f081b3ca4 (diff) |
Merge tag 'imx-soc-4.6' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux into next/soc
Merge "i.MX SoC update for 4.6" from Shawn Guo:
- Enable big endian mode support for i.MX platform
- Add support for i.MX6QP SoC which is the latest i.MX6 family addition
- Add basic suspend/resume support for i.MX25
- A couple of i.MX7D support updates
- A few random code cleanups
* tag 'imx-soc-4.6' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux:
ARM: imx: Make reset_control_ops const
ARM: imx: Do L2 errata only if the L2 cache isn't enabled
ARM: imx: select ARM_CPU_SUSPEND only for imx6
ARM: mx25: Add basic suspend/resume support
ARM: imx: Add msl code support for imx6qp
ARM: imx: enable big endian mode
ARM: imx: use endian-safe readl/readw/writel/writew
ARM: imx7d: correct chip version information
ARM: imx: select HAVE_ARM_ARCH_TIMER if selected i.MX7D
ARM: imx6: fix cleanup path in imx6q_suspend_init()
33 files changed, 203 insertions, 132 deletions
diff --git a/arch/arm/include/debug/imx.S b/arch/arm/include/debug/imx.S index 619d8cc1ac12..92c44760d656 100644 --- a/arch/arm/include/debug/imx.S +++ b/arch/arm/include/debug/imx.S | |||
@@ -11,6 +11,7 @@ | |||
11 | * | 11 | * |
12 | */ | 12 | */ |
13 | 13 | ||
14 | #include <asm/assembler.h> | ||
14 | #include "imx-uart.h" | 15 | #include "imx-uart.h" |
15 | 16 | ||
16 | /* | 17 | /* |
@@ -34,6 +35,7 @@ | |||
34 | .endm | 35 | .endm |
35 | 36 | ||
36 | .macro senduart,rd,rx | 37 | .macro senduart,rd,rx |
38 | ARM_BE8(rev \rd, \rd) | ||
37 | str \rd, [\rx, #0x40] @ TXDATA | 39 | str \rd, [\rx, #0x40] @ TXDATA |
38 | .endm | 40 | .endm |
39 | 41 | ||
@@ -42,6 +44,7 @@ | |||
42 | 44 | ||
43 | .macro busyuart,rd,rx | 45 | .macro busyuart,rd,rx |
44 | 1002: ldr \rd, [\rx, #0x98] @ SR2 | 46 | 1002: ldr \rd, [\rx, #0x98] @ SR2 |
47 | ARM_BE8(rev \rd, \rd) | ||
45 | tst \rd, #1 << 3 @ TXDC | 48 | tst \rd, #1 << 3 @ TXDC |
46 | beq 1002b @ wait until transmit done | 49 | beq 1002b @ wait until transmit done |
47 | .endm | 50 | .endm |
diff --git a/arch/arm/mach-imx/3ds_debugboard.c b/arch/arm/mach-imx/3ds_debugboard.c index 16496a071ecb..cda330c93d61 100644 --- a/arch/arm/mach-imx/3ds_debugboard.c +++ b/arch/arm/mach-imx/3ds_debugboard.c | |||
@@ -94,8 +94,8 @@ static void mxc_expio_irq_handler(struct irq_desc *desc) | |||
94 | /* irq = gpio irq number */ | 94 | /* irq = gpio irq number */ |
95 | desc->irq_data.chip->irq_mask(&desc->irq_data); | 95 | desc->irq_data.chip->irq_mask(&desc->irq_data); |
96 | 96 | ||
97 | imr_val = __raw_readw(brd_io + INTR_MASK_REG); | 97 | imr_val = imx_readw(brd_io + INTR_MASK_REG); |
98 | int_valid = __raw_readw(brd_io + INTR_STATUS_REG) & ~imr_val; | 98 | int_valid = imx_readw(brd_io + INTR_STATUS_REG) & ~imr_val; |
99 | 99 | ||
100 | expio_irq = 0; | 100 | expio_irq = 0; |
101 | for (; int_valid != 0; int_valid >>= 1, expio_irq++) { | 101 | for (; int_valid != 0; int_valid >>= 1, expio_irq++) { |
@@ -117,17 +117,17 @@ static void expio_mask_irq(struct irq_data *d) | |||
117 | u16 reg; | 117 | u16 reg; |
118 | u32 expio = d->hwirq; | 118 | u32 expio = d->hwirq; |
119 | 119 | ||
120 | reg = __raw_readw(brd_io + INTR_MASK_REG); | 120 | reg = imx_readw(brd_io + INTR_MASK_REG); |
121 | reg |= (1 << expio); | 121 | reg |= (1 << expio); |
122 | __raw_writew(reg, brd_io + INTR_MASK_REG); | 122 | imx_writew(reg, brd_io + INTR_MASK_REG); |
123 | } | 123 | } |
124 | 124 | ||
125 | static void expio_ack_irq(struct irq_data *d) | 125 | static void expio_ack_irq(struct irq_data *d) |
126 | { | 126 | { |
127 | u32 expio = d->hwirq; | 127 | u32 expio = d->hwirq; |
128 | 128 | ||
129 | __raw_writew(1 << expio, brd_io + INTR_RESET_REG); | 129 | imx_writew(1 << expio, brd_io + INTR_RESET_REG); |
130 | __raw_writew(0, brd_io + INTR_RESET_REG); | 130 | imx_writew(0, brd_io + INTR_RESET_REG); |
131 | expio_mask_irq(d); | 131 | expio_mask_irq(d); |
132 | } | 132 | } |
133 | 133 | ||
@@ -136,9 +136,9 @@ static void expio_unmask_irq(struct irq_data *d) | |||
136 | u16 reg; | 136 | u16 reg; |
137 | u32 expio = d->hwirq; | 137 | u32 expio = d->hwirq; |
138 | 138 | ||
139 | reg = __raw_readw(brd_io + INTR_MASK_REG); | 139 | reg = imx_readw(brd_io + INTR_MASK_REG); |
140 | reg &= ~(1 << expio); | 140 | reg &= ~(1 << expio); |
141 | __raw_writew(reg, brd_io + INTR_MASK_REG); | 141 | imx_writew(reg, brd_io + INTR_MASK_REG); |
142 | } | 142 | } |
143 | 143 | ||
144 | static struct irq_chip expio_irq_chip = { | 144 | static struct irq_chip expio_irq_chip = { |
@@ -162,9 +162,9 @@ int __init mxc_expio_init(u32 base, u32 intr_gpio) | |||
162 | if (brd_io == NULL) | 162 | if (brd_io == NULL) |
163 | return -ENOMEM; | 163 | return -ENOMEM; |
164 | 164 | ||
165 | if ((__raw_readw(brd_io + MAGIC_NUMBER1_REG) != 0xAAAA) || | 165 | if ((imx_readw(brd_io + MAGIC_NUMBER1_REG) != 0xAAAA) || |
166 | (__raw_readw(brd_io + MAGIC_NUMBER2_REG) != 0x5555) || | 166 | (imx_readw(brd_io + MAGIC_NUMBER2_REG) != 0x5555) || |
167 | (__raw_readw(brd_io + MAGIC_NUMBER3_REG) != 0xCAFE)) { | 167 | (imx_readw(brd_io + MAGIC_NUMBER3_REG) != 0xCAFE)) { |
168 | pr_info("3-Stack Debug board not detected\n"); | 168 | pr_info("3-Stack Debug board not detected\n"); |
169 | iounmap(brd_io); | 169 | iounmap(brd_io); |
170 | brd_io = NULL; | 170 | brd_io = NULL; |
@@ -181,10 +181,10 @@ int __init mxc_expio_init(u32 base, u32 intr_gpio) | |||
181 | gpio_direction_input(intr_gpio); | 181 | gpio_direction_input(intr_gpio); |
182 | 182 | ||
183 | /* disable the interrupt and clear the status */ | 183 | /* disable the interrupt and clear the status */ |
184 | __raw_writew(0, brd_io + INTR_MASK_REG); | 184 | imx_writew(0, brd_io + INTR_MASK_REG); |
185 | __raw_writew(0xFFFF, brd_io + INTR_RESET_REG); | 185 | imx_writew(0xFFFF, brd_io + INTR_RESET_REG); |
186 | __raw_writew(0, brd_io + INTR_RESET_REG); | 186 | imx_writew(0, brd_io + INTR_RESET_REG); |
187 | __raw_writew(0x1F, brd_io + INTR_MASK_REG); | 187 | imx_writew(0x1F, brd_io + INTR_MASK_REG); |
188 | 188 | ||
189 | irq_base = irq_alloc_descs(-1, 0, MXC_MAX_EXP_IO_LINES, numa_node_id()); | 189 | irq_base = irq_alloc_descs(-1, 0, MXC_MAX_EXP_IO_LINES, numa_node_id()); |
190 | WARN_ON(irq_base < 0); | 190 | WARN_ON(irq_base < 0); |
diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig index 15df34fbdf44..8973fae25436 100644 --- a/arch/arm/mach-imx/Kconfig +++ b/arch/arm/mach-imx/Kconfig | |||
@@ -2,7 +2,7 @@ menuconfig ARCH_MXC | |||
2 | bool "Freescale i.MX family" | 2 | bool "Freescale i.MX family" |
3 | depends on ARCH_MULTI_V4_V5 || ARCH_MULTI_V6_V7 || ARM_SINGLE_ARMV7M | 3 | depends on ARCH_MULTI_V4_V5 || ARCH_MULTI_V6_V7 || ARM_SINGLE_ARMV7M |
4 | select ARCH_REQUIRE_GPIOLIB | 4 | select ARCH_REQUIRE_GPIOLIB |
5 | select ARM_CPU_SUSPEND if PM | 5 | select ARCH_SUPPORTS_BIG_ENDIAN |
6 | select CLKSRC_IMX_GPT | 6 | select CLKSRC_IMX_GPT |
7 | select GENERIC_IRQ_CHIP | 7 | select GENERIC_IRQ_CHIP |
8 | select PINCTRL | 8 | select PINCTRL |
@@ -511,6 +511,7 @@ config SOC_IMX53 | |||
511 | 511 | ||
512 | config SOC_IMX6 | 512 | config SOC_IMX6 |
513 | bool | 513 | bool |
514 | select ARM_CPU_SUSPEND if PM | ||
514 | select ARM_ERRATA_754322 | 515 | select ARM_ERRATA_754322 |
515 | select ARM_ERRATA_775420 | 516 | select ARM_ERRATA_775420 |
516 | select ARM_GIC | 517 | select ARM_GIC |
@@ -561,6 +562,7 @@ config SOC_IMX7D | |||
561 | bool "i.MX7 Dual support" | 562 | bool "i.MX7 Dual support" |
562 | select PINCTRL_IMX7D | 563 | select PINCTRL_IMX7D |
563 | select ARM_GIC | 564 | select ARM_GIC |
565 | select HAVE_ARM_ARCH_TIMER | ||
564 | select HAVE_IMX_ANATOP | 566 | select HAVE_IMX_ANATOP |
565 | select HAVE_IMX_MMDC | 567 | select HAVE_IMX_MMDC |
566 | select HAVE_IMX_SRC | 568 | select HAVE_IMX_SRC |
diff --git a/arch/arm/mach-imx/Makefile b/arch/arm/mach-imx/Makefile index fb689d813b09..9fbe624a5ef9 100644 --- a/arch/arm/mach-imx/Makefile +++ b/arch/arm/mach-imx/Makefile | |||
@@ -3,7 +3,7 @@ obj-y := cpu.o system.o irq-common.o | |||
3 | obj-$(CONFIG_SOC_IMX1) += mm-imx1.o | 3 | obj-$(CONFIG_SOC_IMX1) += mm-imx1.o |
4 | obj-$(CONFIG_SOC_IMX21) += mm-imx21.o | 4 | obj-$(CONFIG_SOC_IMX21) += mm-imx21.o |
5 | 5 | ||
6 | obj-$(CONFIG_SOC_IMX25) += cpu-imx25.o mach-imx25.o | 6 | obj-$(CONFIG_SOC_IMX25) += cpu-imx25.o mach-imx25.o pm-imx25.o |
7 | 7 | ||
8 | obj-$(CONFIG_SOC_IMX27) += cpu-imx27.o pm-imx27.o | 8 | obj-$(CONFIG_SOC_IMX27) += cpu-imx27.o pm-imx27.o |
9 | obj-$(CONFIG_SOC_IMX27) += mm-imx27.o ehci-imx27.o | 9 | obj-$(CONFIG_SOC_IMX27) += mm-imx27.o ehci-imx27.o |
diff --git a/arch/arm/mach-imx/anatop.c b/arch/arm/mach-imx/anatop.c index 231bb250c571..649a84c251ad 100644 --- a/arch/arm/mach-imx/anatop.c +++ b/arch/arm/mach-imx/anatop.c | |||
@@ -129,7 +129,14 @@ void __init imx_init_revision_from_anatop(void) | |||
129 | 129 | ||
130 | switch (digprog & 0xff) { | 130 | switch (digprog & 0xff) { |
131 | case 0: | 131 | case 0: |
132 | revision = IMX_CHIP_REVISION_1_0; | 132 | /* |
133 | * For i.MX6QP, most of the code for i.MX6Q can be resued, | ||
134 | * so internally, we identify it as i.MX6Q Rev 2.0 | ||
135 | */ | ||
136 | if (digprog >> 8 & 0x01) | ||
137 | revision = IMX_CHIP_REVISION_2_0; | ||
138 | else | ||
139 | revision = IMX_CHIP_REVISION_1_0; | ||
133 | break; | 140 | break; |
134 | case 1: | 141 | case 1: |
135 | revision = IMX_CHIP_REVISION_1_1; | 142 | revision = IMX_CHIP_REVISION_1_1; |
@@ -151,7 +158,14 @@ void __init imx_init_revision_from_anatop(void) | |||
151 | revision = IMX_CHIP_REVISION_1_5; | 158 | revision = IMX_CHIP_REVISION_1_5; |
152 | break; | 159 | break; |
153 | default: | 160 | default: |
154 | revision = IMX_CHIP_REVISION_UNKNOWN; | 161 | /* |
162 | * Fail back to return raw register value instead of 0xff. | ||
163 | * It will be easy to know version information in SOC if it | ||
164 | * can't be recognized by known version. And some chip's (i.MX7D) | ||
165 | * digprog value match linux version format, so it needn't map | ||
166 | * again and we can use register value directly. | ||
167 | */ | ||
168 | revision = digprog & 0xff; | ||
155 | } | 169 | } |
156 | 170 | ||
157 | mxc_set_cpu_type(digprog >> 16 & 0xff); | 171 | mxc_set_cpu_type(digprog >> 16 & 0xff); |
diff --git a/arch/arm/mach-imx/avic.c b/arch/arm/mach-imx/avic.c index 1a8932335b21..7fa176e792bd 100644 --- a/arch/arm/mach-imx/avic.c +++ b/arch/arm/mach-imx/avic.c | |||
@@ -66,12 +66,12 @@ static int avic_set_irq_fiq(unsigned int irq, unsigned int type) | |||
66 | return -EINVAL; | 66 | return -EINVAL; |
67 | 67 | ||
68 | if (irq < AVIC_NUM_IRQS / 2) { | 68 | if (irq < AVIC_NUM_IRQS / 2) { |
69 | irqt = __raw_readl(avic_base + AVIC_INTTYPEL) & ~(1 << irq); | 69 | irqt = imx_readl(avic_base + AVIC_INTTYPEL) & ~(1 << irq); |
70 | __raw_writel(irqt | (!!type << irq), avic_base + AVIC_INTTYPEL); | 70 | imx_writel(irqt | (!!type << irq), avic_base + AVIC_INTTYPEL); |
71 | } else { | 71 | } else { |
72 | irq -= AVIC_NUM_IRQS / 2; | 72 | irq -= AVIC_NUM_IRQS / 2; |
73 | irqt = __raw_readl(avic_base + AVIC_INTTYPEH) & ~(1 << irq); | 73 | irqt = imx_readl(avic_base + AVIC_INTTYPEH) & ~(1 << irq); |
74 | __raw_writel(irqt | (!!type << irq), avic_base + AVIC_INTTYPEH); | 74 | imx_writel(irqt | (!!type << irq), avic_base + AVIC_INTTYPEH); |
75 | } | 75 | } |
76 | 76 | ||
77 | return 0; | 77 | return 0; |
@@ -94,8 +94,8 @@ static void avic_irq_suspend(struct irq_data *d) | |||
94 | struct irq_chip_type *ct = gc->chip_types; | 94 | struct irq_chip_type *ct = gc->chip_types; |
95 | int idx = d->hwirq >> 5; | 95 | int idx = d->hwirq >> 5; |
96 | 96 | ||
97 | avic_saved_mask_reg[idx] = __raw_readl(avic_base + ct->regs.mask); | 97 | avic_saved_mask_reg[idx] = imx_readl(avic_base + ct->regs.mask); |
98 | __raw_writel(gc->wake_active, avic_base + ct->regs.mask); | 98 | imx_writel(gc->wake_active, avic_base + ct->regs.mask); |
99 | } | 99 | } |
100 | 100 | ||
101 | static void avic_irq_resume(struct irq_data *d) | 101 | static void avic_irq_resume(struct irq_data *d) |
@@ -104,7 +104,7 @@ static void avic_irq_resume(struct irq_data *d) | |||
104 | struct irq_chip_type *ct = gc->chip_types; | 104 | struct irq_chip_type *ct = gc->chip_types; |
105 | int idx = d->hwirq >> 5; | 105 | int idx = d->hwirq >> 5; |
106 | 106 | ||
107 | __raw_writel(avic_saved_mask_reg[idx], avic_base + ct->regs.mask); | 107 | imx_writel(avic_saved_mask_reg[idx], avic_base + ct->regs.mask); |
108 | } | 108 | } |
109 | 109 | ||
110 | #else | 110 | #else |
@@ -140,7 +140,7 @@ static void __exception_irq_entry avic_handle_irq(struct pt_regs *regs) | |||
140 | u32 nivector; | 140 | u32 nivector; |
141 | 141 | ||
142 | do { | 142 | do { |
143 | nivector = __raw_readl(avic_base + AVIC_NIVECSR) >> 16; | 143 | nivector = imx_readl(avic_base + AVIC_NIVECSR) >> 16; |
144 | if (nivector == 0xffff) | 144 | if (nivector == 0xffff) |
145 | break; | 145 | break; |
146 | 146 | ||
@@ -164,16 +164,16 @@ void __init mxc_init_irq(void __iomem *irqbase) | |||
164 | /* put the AVIC into the reset value with | 164 | /* put the AVIC into the reset value with |
165 | * all interrupts disabled | 165 | * all interrupts disabled |
166 | */ | 166 | */ |
167 | __raw_writel(0, avic_base + AVIC_INTCNTL); | 167 | imx_writel(0, avic_base + AVIC_INTCNTL); |
168 | __raw_writel(0x1f, avic_base + AVIC_NIMASK); | 168 | imx_writel(0x1f, avic_base + AVIC_NIMASK); |
169 | 169 | ||
170 | /* disable all interrupts */ | 170 | /* disable all interrupts */ |
171 | __raw_writel(0, avic_base + AVIC_INTENABLEH); | 171 | imx_writel(0, avic_base + AVIC_INTENABLEH); |
172 | __raw_writel(0, avic_base + AVIC_INTENABLEL); | 172 | imx_writel(0, avic_base + AVIC_INTENABLEL); |
173 | 173 | ||
174 | /* all IRQ no FIQ */ | 174 | /* all IRQ no FIQ */ |
175 | __raw_writel(0, avic_base + AVIC_INTTYPEH); | 175 | imx_writel(0, avic_base + AVIC_INTTYPEH); |
176 | __raw_writel(0, avic_base + AVIC_INTTYPEL); | 176 | imx_writel(0, avic_base + AVIC_INTTYPEL); |
177 | 177 | ||
178 | irq_base = irq_alloc_descs(-1, 0, AVIC_NUM_IRQS, numa_node_id()); | 178 | irq_base = irq_alloc_descs(-1, 0, AVIC_NUM_IRQS, numa_node_id()); |
179 | WARN_ON(irq_base < 0); | 179 | WARN_ON(irq_base < 0); |
@@ -188,7 +188,7 @@ void __init mxc_init_irq(void __iomem *irqbase) | |||
188 | 188 | ||
189 | /* Set default priority value (0) for all IRQ's */ | 189 | /* Set default priority value (0) for all IRQ's */ |
190 | for (i = 0; i < 8; i++) | 190 | for (i = 0; i < 8; i++) |
191 | __raw_writel(0, avic_base + AVIC_NIPRIORITY(i)); | 191 | imx_writel(0, avic_base + AVIC_NIPRIORITY(i)); |
192 | 192 | ||
193 | set_handle_irq(avic_handle_irq); | 193 | set_handle_irq(avic_handle_irq); |
194 | 194 | ||
diff --git a/arch/arm/mach-imx/common.h b/arch/arm/mach-imx/common.h index 32b83f09da18..58a38464480d 100644 --- a/arch/arm/mach-imx/common.h +++ b/arch/arm/mach-imx/common.h | |||
@@ -66,6 +66,7 @@ void imx_gpc_check_dt(void); | |||
66 | void imx_gpc_set_arm_power_in_lpm(bool power_off); | 66 | void imx_gpc_set_arm_power_in_lpm(bool power_off); |
67 | void imx_gpc_set_arm_power_up_timing(u32 sw2iso, u32 sw); | 67 | void imx_gpc_set_arm_power_up_timing(u32 sw2iso, u32 sw); |
68 | void imx_gpc_set_arm_power_down_timing(u32 sw2iso, u32 sw); | 68 | void imx_gpc_set_arm_power_down_timing(u32 sw2iso, u32 sw); |
69 | void imx25_pm_init(void); | ||
69 | 70 | ||
70 | enum mxc_cpu_pwr_mode { | 71 | enum mxc_cpu_pwr_mode { |
71 | WAIT_CLOCKED, /* wfi only */ | 72 | WAIT_CLOCKED, /* wfi only */ |
diff --git a/arch/arm/mach-imx/cpu-imx27.c b/arch/arm/mach-imx/cpu-imx27.c index fe8d36f7e30e..8d2ae4091465 100644 --- a/arch/arm/mach-imx/cpu-imx27.c +++ b/arch/arm/mach-imx/cpu-imx27.c | |||
@@ -39,8 +39,7 @@ static int mx27_read_cpu_rev(void) | |||
39 | * the silicon revision very early we read it here to | 39 | * the silicon revision very early we read it here to |
40 | * avoid any further hooks | 40 | * avoid any further hooks |
41 | */ | 41 | */ |
42 | val = __raw_readl(MX27_IO_ADDRESS(MX27_SYSCTRL_BASE_ADDR | 42 | val = imx_readl(MX27_IO_ADDRESS(MX27_SYSCTRL_BASE_ADDR + SYS_CHIP_ID)); |
43 | + SYS_CHIP_ID)); | ||
44 | 43 | ||
45 | mx27_cpu_partnumber = (int)((val >> 12) & 0xFFFF); | 44 | mx27_cpu_partnumber = (int)((val >> 12) & 0xFFFF); |
46 | 45 | ||
diff --git a/arch/arm/mach-imx/cpu-imx31.c b/arch/arm/mach-imx/cpu-imx31.c index fde1860a2521..3daf1959a2f0 100644 --- a/arch/arm/mach-imx/cpu-imx31.c +++ b/arch/arm/mach-imx/cpu-imx31.c | |||
@@ -39,7 +39,7 @@ static int mx31_read_cpu_rev(void) | |||
39 | u32 i, srev; | 39 | u32 i, srev; |
40 | 40 | ||
41 | /* read SREV register from IIM module */ | 41 | /* read SREV register from IIM module */ |
42 | srev = __raw_readl(MX31_IO_ADDRESS(MX31_IIM_BASE_ADDR + MXC_IIMSREV)); | 42 | srev = imx_readl(MX31_IO_ADDRESS(MX31_IIM_BASE_ADDR + MXC_IIMSREV)); |
43 | srev &= 0xff; | 43 | srev &= 0xff; |
44 | 44 | ||
45 | for (i = 0; i < ARRAY_SIZE(mx31_cpu_type); i++) | 45 | for (i = 0; i < ARRAY_SIZE(mx31_cpu_type); i++) |
diff --git a/arch/arm/mach-imx/cpu-imx35.c b/arch/arm/mach-imx/cpu-imx35.c index ec3aaa098c17..8a54234df23b 100644 --- a/arch/arm/mach-imx/cpu-imx35.c +++ b/arch/arm/mach-imx/cpu-imx35.c | |||
@@ -20,7 +20,7 @@ static int mx35_read_cpu_rev(void) | |||
20 | { | 20 | { |
21 | u32 rev; | 21 | u32 rev; |
22 | 22 | ||
23 | rev = __raw_readl(MX35_IO_ADDRESS(MX35_IIM_BASE_ADDR + MXC_IIMSREV)); | 23 | rev = imx_readl(MX35_IO_ADDRESS(MX35_IIM_BASE_ADDR + MXC_IIMSREV)); |
24 | switch (rev) { | 24 | switch (rev) { |
25 | case 0x00: | 25 | case 0x00: |
26 | return IMX_CHIP_REVISION_1_0; | 26 | return IMX_CHIP_REVISION_1_0; |
diff --git a/arch/arm/mach-imx/cpu.c b/arch/arm/mach-imx/cpu.c index 5b0f752d5507..6a96b7cf468f 100644 --- a/arch/arm/mach-imx/cpu.c +++ b/arch/arm/mach-imx/cpu.c | |||
@@ -45,20 +45,20 @@ void __init imx_set_aips(void __iomem *base) | |||
45 | * Set all MPROTx to be non-bufferable, trusted for R/W, | 45 | * Set all MPROTx to be non-bufferable, trusted for R/W, |
46 | * not forced to user-mode. | 46 | * not forced to user-mode. |
47 | */ | 47 | */ |
48 | __raw_writel(0x77777777, base + 0x0); | 48 | imx_writel(0x77777777, base + 0x0); |
49 | __raw_writel(0x77777777, base + 0x4); | 49 | imx_writel(0x77777777, base + 0x4); |
50 | 50 | ||
51 | /* | 51 | /* |
52 | * Set all OPACRx to be non-bufferable, to not require | 52 | * Set all OPACRx to be non-bufferable, to not require |
53 | * supervisor privilege level for access, allow for | 53 | * supervisor privilege level for access, allow for |
54 | * write access and untrusted master access. | 54 | * write access and untrusted master access. |
55 | */ | 55 | */ |
56 | __raw_writel(0x0, base + 0x40); | 56 | imx_writel(0x0, base + 0x40); |
57 | __raw_writel(0x0, base + 0x44); | 57 | imx_writel(0x0, base + 0x44); |
58 | __raw_writel(0x0, base + 0x48); | 58 | imx_writel(0x0, base + 0x48); |
59 | __raw_writel(0x0, base + 0x4C); | 59 | imx_writel(0x0, base + 0x4C); |
60 | reg = __raw_readl(base + 0x50) & 0x00FFFFFF; | 60 | reg = imx_readl(base + 0x50) & 0x00FFFFFF; |
61 | __raw_writel(reg, base + 0x50); | 61 | imx_writel(reg, base + 0x50); |
62 | } | 62 | } |
63 | 63 | ||
64 | void __init imx_aips_allow_unprivileged_access( | 64 | void __init imx_aips_allow_unprivileged_access( |
diff --git a/arch/arm/mach-imx/epit.c b/arch/arm/mach-imx/epit.c index 08ce20771bb3..fb9a73a57d00 100644 --- a/arch/arm/mach-imx/epit.c +++ b/arch/arm/mach-imx/epit.c | |||
@@ -64,23 +64,23 @@ static inline void epit_irq_disable(void) | |||
64 | { | 64 | { |
65 | u32 val; | 65 | u32 val; |
66 | 66 | ||
67 | val = __raw_readl(timer_base + EPITCR); | 67 | val = imx_readl(timer_base + EPITCR); |
68 | val &= ~EPITCR_OCIEN; | 68 | val &= ~EPITCR_OCIEN; |
69 | __raw_writel(val, timer_base + EPITCR); | 69 | imx_writel(val, timer_base + EPITCR); |
70 | } | 70 | } |
71 | 71 | ||
72 | static inline void epit_irq_enable(void) | 72 | static inline void epit_irq_enable(void) |
73 | { | 73 | { |
74 | u32 val; | 74 | u32 val; |
75 | 75 | ||
76 | val = __raw_readl(timer_base + EPITCR); | 76 | val = imx_readl(timer_base + EPITCR); |
77 | val |= EPITCR_OCIEN; | 77 | val |= EPITCR_OCIEN; |
78 | __raw_writel(val, timer_base + EPITCR); | 78 | imx_writel(val, timer_base + EPITCR); |
79 | } | 79 | } |
80 | 80 | ||
81 | static void epit_irq_acknowledge(void) | 81 | static void epit_irq_acknowledge(void) |
82 | { | 82 | { |
83 | __raw_writel(EPITSR_OCIF, timer_base + EPITSR); | 83 | imx_writel(EPITSR_OCIF, timer_base + EPITSR); |
84 | } | 84 | } |
85 | 85 | ||
86 | static int __init epit_clocksource_init(struct clk *timer_clk) | 86 | static int __init epit_clocksource_init(struct clk *timer_clk) |
@@ -98,9 +98,9 @@ static int epit_set_next_event(unsigned long evt, | |||
98 | { | 98 | { |
99 | unsigned long tcmp; | 99 | unsigned long tcmp; |
100 | 100 | ||
101 | tcmp = __raw_readl(timer_base + EPITCNR); | 101 | tcmp = imx_readl(timer_base + EPITCNR); |
102 | 102 | ||
103 | __raw_writel(tcmp - evt, timer_base + EPITCMPR); | 103 | imx_writel(tcmp - evt, timer_base + EPITCMPR); |
104 | 104 | ||
105 | return 0; | 105 | return 0; |
106 | } | 106 | } |
@@ -213,11 +213,11 @@ void __init epit_timer_init(void __iomem *base, int irq) | |||
213 | /* | 213 | /* |
214 | * Initialise to a known state (all timers off, and timing reset) | 214 | * Initialise to a known state (all timers off, and timing reset) |
215 | */ | 215 | */ |
216 | __raw_writel(0x0, timer_base + EPITCR); | 216 | imx_writel(0x0, timer_base + EPITCR); |
217 | 217 | ||
218 | __raw_writel(0xffffffff, timer_base + EPITLR); | 218 | imx_writel(0xffffffff, timer_base + EPITLR); |
219 | __raw_writel(EPITCR_EN | EPITCR_CLKSRC_REF_HIGH | EPITCR_WAITEN, | 219 | imx_writel(EPITCR_EN | EPITCR_CLKSRC_REF_HIGH | EPITCR_WAITEN, |
220 | timer_base + EPITCR); | 220 | timer_base + EPITCR); |
221 | 221 | ||
222 | /* init and register the timer to the framework */ | 222 | /* init and register the timer to the framework */ |
223 | epit_clocksource_init(timer_clk); | 223 | epit_clocksource_init(timer_clk); |
diff --git a/arch/arm/mach-imx/headsmp.S b/arch/arm/mach-imx/headsmp.S index b5e976816b63..6c28d28b3c64 100644 --- a/arch/arm/mach-imx/headsmp.S +++ b/arch/arm/mach-imx/headsmp.S | |||
@@ -12,6 +12,7 @@ | |||
12 | 12 | ||
13 | #include <linux/linkage.h> | 13 | #include <linux/linkage.h> |
14 | #include <linux/init.h> | 14 | #include <linux/init.h> |
15 | #include <asm/assembler.h> | ||
15 | 16 | ||
16 | diag_reg_offset: | 17 | diag_reg_offset: |
17 | .word g_diag_reg - . | 18 | .word g_diag_reg - . |
@@ -25,6 +26,7 @@ diag_reg_offset: | |||
25 | .endm | 26 | .endm |
26 | 27 | ||
27 | ENTRY(v7_secondary_startup) | 28 | ENTRY(v7_secondary_startup) |
29 | ARM_BE8(setend be) @ go BE8 if entered LE | ||
28 | set_diag_reg | 30 | set_diag_reg |
29 | b secondary_startup | 31 | b secondary_startup |
30 | ENDPROC(v7_secondary_startup) | 32 | ENDPROC(v7_secondary_startup) |
diff --git a/arch/arm/mach-imx/iomux-imx31.c b/arch/arm/mach-imx/iomux-imx31.c index 0b5ba4bf572a..3982e91b2f3e 100644 --- a/arch/arm/mach-imx/iomux-imx31.c +++ b/arch/arm/mach-imx/iomux-imx31.c | |||
@@ -57,10 +57,10 @@ void mxc_iomux_mode(unsigned int pin_mode) | |||
57 | 57 | ||
58 | spin_lock(&gpio_mux_lock); | 58 | spin_lock(&gpio_mux_lock); |
59 | 59 | ||
60 | l = __raw_readl(reg); | 60 | l = imx_readl(reg); |
61 | l &= ~(0xff << (field * 8)); | 61 | l &= ~(0xff << (field * 8)); |
62 | l |= mode << (field * 8); | 62 | l |= mode << (field * 8); |
63 | __raw_writel(l, reg); | 63 | imx_writel(l, reg); |
64 | 64 | ||
65 | spin_unlock(&gpio_mux_lock); | 65 | spin_unlock(&gpio_mux_lock); |
66 | } | 66 | } |
@@ -82,10 +82,10 @@ void mxc_iomux_set_pad(enum iomux_pins pin, u32 config) | |||
82 | 82 | ||
83 | spin_lock(&gpio_mux_lock); | 83 | spin_lock(&gpio_mux_lock); |
84 | 84 | ||
85 | l = __raw_readl(reg); | 85 | l = imx_readl(reg); |
86 | l &= ~(0x1ff << (field * 10)); | 86 | l &= ~(0x1ff << (field * 10)); |
87 | l |= config << (field * 10); | 87 | l |= config << (field * 10); |
88 | __raw_writel(l, reg); | 88 | imx_writel(l, reg); |
89 | 89 | ||
90 | spin_unlock(&gpio_mux_lock); | 90 | spin_unlock(&gpio_mux_lock); |
91 | } | 91 | } |
@@ -163,12 +163,12 @@ void mxc_iomux_set_gpr(enum iomux_gp_func gp, bool en) | |||
163 | u32 l; | 163 | u32 l; |
164 | 164 | ||
165 | spin_lock(&gpio_mux_lock); | 165 | spin_lock(&gpio_mux_lock); |
166 | l = __raw_readl(IOMUXGPR); | 166 | l = imx_readl(IOMUXGPR); |
167 | if (en) | 167 | if (en) |
168 | l |= gp; | 168 | l |= gp; |
169 | else | 169 | else |
170 | l &= ~gp; | 170 | l &= ~gp; |
171 | 171 | ||
172 | __raw_writel(l, IOMUXGPR); | 172 | imx_writel(l, IOMUXGPR); |
173 | spin_unlock(&gpio_mux_lock); | 173 | spin_unlock(&gpio_mux_lock); |
174 | } | 174 | } |
diff --git a/arch/arm/mach-imx/iomux-v1.c b/arch/arm/mach-imx/iomux-v1.c index ecd543664644..7aa90c863ad9 100644 --- a/arch/arm/mach-imx/iomux-v1.c +++ b/arch/arm/mach-imx/iomux-v1.c | |||
@@ -38,12 +38,12 @@ static unsigned imx_iomuxv1_numports; | |||
38 | 38 | ||
39 | static inline unsigned long imx_iomuxv1_readl(unsigned offset) | 39 | static inline unsigned long imx_iomuxv1_readl(unsigned offset) |
40 | { | 40 | { |
41 | return __raw_readl(imx_iomuxv1_baseaddr + offset); | 41 | return imx_readl(imx_iomuxv1_baseaddr + offset); |
42 | } | 42 | } |
43 | 43 | ||
44 | static inline void imx_iomuxv1_writel(unsigned long val, unsigned offset) | 44 | static inline void imx_iomuxv1_writel(unsigned long val, unsigned offset) |
45 | { | 45 | { |
46 | __raw_writel(val, imx_iomuxv1_baseaddr + offset); | 46 | imx_writel(val, imx_iomuxv1_baseaddr + offset); |
47 | } | 47 | } |
48 | 48 | ||
49 | static inline void imx_iomuxv1_rmwl(unsigned offset, | 49 | static inline void imx_iomuxv1_rmwl(unsigned offset, |
diff --git a/arch/arm/mach-imx/iomux-v3.c b/arch/arm/mach-imx/iomux-v3.c index a53b2e64f98d..ca59d5f2ec92 100644 --- a/arch/arm/mach-imx/iomux-v3.c +++ b/arch/arm/mach-imx/iomux-v3.c | |||
@@ -45,13 +45,13 @@ int mxc_iomux_v3_setup_pad(iomux_v3_cfg_t pad) | |||
45 | u32 pad_ctrl = (pad & MUX_PAD_CTRL_MASK) >> MUX_PAD_CTRL_SHIFT; | 45 | u32 pad_ctrl = (pad & MUX_PAD_CTRL_MASK) >> MUX_PAD_CTRL_SHIFT; |
46 | 46 | ||
47 | if (mux_ctrl_ofs) | 47 | if (mux_ctrl_ofs) |
48 | __raw_writel(mux_mode, base + mux_ctrl_ofs); | 48 | imx_writel(mux_mode, base + mux_ctrl_ofs); |
49 | 49 | ||
50 | if (sel_input_ofs) | 50 | if (sel_input_ofs) |
51 | __raw_writel(sel_input, base + sel_input_ofs); | 51 | imx_writel(sel_input, base + sel_input_ofs); |
52 | 52 | ||
53 | if (!(pad_ctrl & NO_PAD_CTRL) && pad_ctrl_ofs) | 53 | if (!(pad_ctrl & NO_PAD_CTRL) && pad_ctrl_ofs) |
54 | __raw_writel(pad_ctrl, base + pad_ctrl_ofs); | 54 | imx_writel(pad_ctrl, base + pad_ctrl_ofs); |
55 | 55 | ||
56 | return 0; | 56 | return 0; |
57 | } | 57 | } |
diff --git a/arch/arm/mach-imx/mach-armadillo5x0.c b/arch/arm/mach-imx/mach-armadillo5x0.c index f2060523ba48..eaee47a2fcc0 100644 --- a/arch/arm/mach-imx/mach-armadillo5x0.c +++ b/arch/arm/mach-imx/mach-armadillo5x0.c | |||
@@ -525,8 +525,8 @@ static void __init armadillo5x0_init(void) | |||
525 | imx31_add_mxc_nand(&armadillo5x0_nand_board_info); | 525 | imx31_add_mxc_nand(&armadillo5x0_nand_board_info); |
526 | 526 | ||
527 | /* set NAND page size to 2k if not configured via boot mode pins */ | 527 | /* set NAND page size to 2k if not configured via boot mode pins */ |
528 | __raw_writel(__raw_readl(mx3_ccm_base + MXC_CCM_RCSR) | | 528 | imx_writel(imx_readl(mx3_ccm_base + MXC_CCM_RCSR) | (1 << 30), |
529 | (1 << 30), mx3_ccm_base + MXC_CCM_RCSR); | 529 | mx3_ccm_base + MXC_CCM_RCSR); |
530 | 530 | ||
531 | /* RTC */ | 531 | /* RTC */ |
532 | /* Get RTC IRQ and register the chip */ | 532 | /* Get RTC IRQ and register the chip */ |
diff --git a/arch/arm/mach-imx/mach-imx25.c b/arch/arm/mach-imx/mach-imx25.c index 9379fd0a7b4d..32dcb5e99e23 100644 --- a/arch/arm/mach-imx/mach-imx25.c +++ b/arch/arm/mach-imx/mach-imx25.c | |||
@@ -41,6 +41,7 @@ static const char * const imx25_dt_board_compat[] __initconst = { | |||
41 | 41 | ||
42 | DT_MACHINE_START(IMX25_DT, "Freescale i.MX25 (Device Tree Support)") | 42 | DT_MACHINE_START(IMX25_DT, "Freescale i.MX25 (Device Tree Support)") |
43 | .init_early = imx25_init_early, | 43 | .init_early = imx25_init_early, |
44 | .init_late = imx25_pm_init, | ||
44 | .init_irq = mx25_init_irq, | 45 | .init_irq = mx25_init_irq, |
45 | .dt_compat = imx25_dt_board_compat, | 46 | .dt_compat = imx25_dt_board_compat, |
46 | MACHINE_END | 47 | MACHINE_END |
diff --git a/arch/arm/mach-imx/mach-imx51.c b/arch/arm/mach-imx/mach-imx51.c index b015129e4045..6883fbaf9484 100644 --- a/arch/arm/mach-imx/mach-imx51.c +++ b/arch/arm/mach-imx/mach-imx51.c | |||
@@ -40,11 +40,10 @@ static void __init imx51_ipu_mipi_setup(void) | |||
40 | WARN_ON(!hsc_addr); | 40 | WARN_ON(!hsc_addr); |
41 | 41 | ||
42 | /* setup MIPI module to legacy mode */ | 42 | /* setup MIPI module to legacy mode */ |
43 | __raw_writel(0xf00, hsc_addr); | 43 | imx_writel(0xf00, hsc_addr); |
44 | 44 | ||
45 | /* CSI mode: reserved; DI control mode: legacy (from Freescale BSP) */ | 45 | /* CSI mode: reserved; DI control mode: legacy (from Freescale BSP) */ |
46 | __raw_writel(__raw_readl(hsc_addr + 0x800) | 0x30ff, | 46 | imx_writel(imx_readl(hsc_addr + 0x800) | 0x30ff, hsc_addr + 0x800); |
47 | hsc_addr + 0x800); | ||
48 | 47 | ||
49 | iounmap(hsc_addr); | 48 | iounmap(hsc_addr); |
50 | } | 49 | } |
diff --git a/arch/arm/mach-imx/mach-imx6q.c b/arch/arm/mach-imx/mach-imx6q.c index 3878494bd118..cb27d566d5ab 100644 --- a/arch/arm/mach-imx/mach-imx6q.c +++ b/arch/arm/mach-imx/mach-imx6q.c | |||
@@ -266,8 +266,11 @@ static void __init imx6q_init_machine(void) | |||
266 | { | 266 | { |
267 | struct device *parent; | 267 | struct device *parent; |
268 | 268 | ||
269 | imx_print_silicon_rev(cpu_is_imx6dl() ? "i.MX6DL" : "i.MX6Q", | 269 | if (cpu_is_imx6q() && imx_get_soc_revision() == IMX_CHIP_REVISION_2_0) |
270 | imx_get_soc_revision()); | 270 | imx_print_silicon_rev("i.MX6QP", IMX_CHIP_REVISION_1_0); |
271 | else | ||
272 | imx_print_silicon_rev(cpu_is_imx6dl() ? "i.MX6DL" : "i.MX6Q", | ||
273 | imx_get_soc_revision()); | ||
271 | 274 | ||
272 | parent = imx_soc_device_init(); | 275 | parent = imx_soc_device_init(); |
273 | if (parent == NULL) | 276 | if (parent == NULL) |
@@ -399,6 +402,7 @@ static void __init imx6q_init_irq(void) | |||
399 | static const char * const imx6q_dt_compat[] __initconst = { | 402 | static const char * const imx6q_dt_compat[] __initconst = { |
400 | "fsl,imx6dl", | 403 | "fsl,imx6dl", |
401 | "fsl,imx6q", | 404 | "fsl,imx6q", |
405 | "fsl,imx6qp", | ||
402 | NULL, | 406 | NULL, |
403 | }; | 407 | }; |
404 | 408 | ||
diff --git a/arch/arm/mach-imx/mach-mx27ads.c b/arch/arm/mach-imx/mach-mx27ads.c index eb1c3477c48a..267fad23b225 100644 --- a/arch/arm/mach-imx/mach-mx27ads.c +++ b/arch/arm/mach-imx/mach-mx27ads.c | |||
@@ -202,9 +202,9 @@ static struct i2c_board_info mx27ads_i2c_devices[] = { | |||
202 | static void vgpio_set(struct gpio_chip *chip, unsigned offset, int value) | 202 | static void vgpio_set(struct gpio_chip *chip, unsigned offset, int value) |
203 | { | 203 | { |
204 | if (value) | 204 | if (value) |
205 | __raw_writew(PBC_BCTRL1_LCDON, PBC_BCTRL1_SET_REG); | 205 | imx_writew(PBC_BCTRL1_LCDON, PBC_BCTRL1_SET_REG); |
206 | else | 206 | else |
207 | __raw_writew(PBC_BCTRL1_LCDON, PBC_BCTRL1_CLEAR_REG); | 207 | imx_writew(PBC_BCTRL1_LCDON, PBC_BCTRL1_CLEAR_REG); |
208 | } | 208 | } |
209 | 209 | ||
210 | static int vgpio_dir_out(struct gpio_chip *chip, unsigned offset, int value) | 210 | static int vgpio_dir_out(struct gpio_chip *chip, unsigned offset, int value) |
@@ -364,7 +364,7 @@ static void __init mx27ads_timer_init(void) | |||
364 | { | 364 | { |
365 | unsigned long fref = 26000000; | 365 | unsigned long fref = 26000000; |
366 | 366 | ||
367 | if ((__raw_readw(PBC_VERSION_REG) & CKIH_27MHZ_BIT_SET) == 0) | 367 | if ((imx_readw(PBC_VERSION_REG) & CKIH_27MHZ_BIT_SET) == 0) |
368 | fref = 27000000; | 368 | fref = 27000000; |
369 | 369 | ||
370 | mx27_clocks_init(fref); | 370 | mx27_clocks_init(fref); |
diff --git a/arch/arm/mach-imx/mach-mx31ads.c b/arch/arm/mach-imx/mach-mx31ads.c index 2b147e4bf9c9..4f2c56d44ba1 100644 --- a/arch/arm/mach-imx/mach-mx31ads.c +++ b/arch/arm/mach-imx/mach-mx31ads.c | |||
@@ -160,8 +160,8 @@ static void mx31ads_expio_irq_handler(struct irq_desc *desc) | |||
160 | u32 int_valid; | 160 | u32 int_valid; |
161 | u32 expio_irq; | 161 | u32 expio_irq; |
162 | 162 | ||
163 | imr_val = __raw_readw(PBC_INTMASK_SET_REG); | 163 | imr_val = imx_readw(PBC_INTMASK_SET_REG); |
164 | int_valid = __raw_readw(PBC_INTSTATUS_REG) & imr_val; | 164 | int_valid = imx_readw(PBC_INTSTATUS_REG) & imr_val; |
165 | 165 | ||
166 | expio_irq = 0; | 166 | expio_irq = 0; |
167 | for (; int_valid != 0; int_valid >>= 1, expio_irq++) { | 167 | for (; int_valid != 0; int_valid >>= 1, expio_irq++) { |
@@ -180,8 +180,8 @@ static void expio_mask_irq(struct irq_data *d) | |||
180 | { | 180 | { |
181 | u32 expio = d->hwirq; | 181 | u32 expio = d->hwirq; |
182 | /* mask the interrupt */ | 182 | /* mask the interrupt */ |
183 | __raw_writew(1 << expio, PBC_INTMASK_CLEAR_REG); | 183 | imx_writew(1 << expio, PBC_INTMASK_CLEAR_REG); |
184 | __raw_readw(PBC_INTMASK_CLEAR_REG); | 184 | imx_readw(PBC_INTMASK_CLEAR_REG); |
185 | } | 185 | } |
186 | 186 | ||
187 | /* | 187 | /* |
@@ -192,7 +192,7 @@ static void expio_ack_irq(struct irq_data *d) | |||
192 | { | 192 | { |
193 | u32 expio = d->hwirq; | 193 | u32 expio = d->hwirq; |
194 | /* clear the interrupt status */ | 194 | /* clear the interrupt status */ |
195 | __raw_writew(1 << expio, PBC_INTSTATUS_REG); | 195 | imx_writew(1 << expio, PBC_INTSTATUS_REG); |
196 | } | 196 | } |
197 | 197 | ||
198 | /* | 198 | /* |
@@ -203,7 +203,7 @@ static void expio_unmask_irq(struct irq_data *d) | |||
203 | { | 203 | { |
204 | u32 expio = d->hwirq; | 204 | u32 expio = d->hwirq; |
205 | /* unmask the interrupt */ | 205 | /* unmask the interrupt */ |
206 | __raw_writew(1 << expio, PBC_INTMASK_SET_REG); | 206 | imx_writew(1 << expio, PBC_INTMASK_SET_REG); |
207 | } | 207 | } |
208 | 208 | ||
209 | static struct irq_chip expio_irq_chip = { | 209 | static struct irq_chip expio_irq_chip = { |
@@ -226,8 +226,8 @@ static void __init mx31ads_init_expio(void) | |||
226 | mxc_iomux_alloc_pin(IOMUX_MODE(MX31_PIN_GPIO1_4, IOMUX_CONFIG_GPIO), "expio"); | 226 | mxc_iomux_alloc_pin(IOMUX_MODE(MX31_PIN_GPIO1_4, IOMUX_CONFIG_GPIO), "expio"); |
227 | 227 | ||
228 | /* disable the interrupt and clear the status */ | 228 | /* disable the interrupt and clear the status */ |
229 | __raw_writew(0xFFFF, PBC_INTMASK_CLEAR_REG); | 229 | imx_writew(0xFFFF, PBC_INTMASK_CLEAR_REG); |
230 | __raw_writew(0xFFFF, PBC_INTSTATUS_REG); | 230 | imx_writew(0xFFFF, PBC_INTSTATUS_REG); |
231 | 231 | ||
232 | irq_base = irq_alloc_descs(-1, 0, MXC_MAX_EXP_IO_LINES, numa_node_id()); | 232 | irq_base = irq_alloc_descs(-1, 0, MXC_MAX_EXP_IO_LINES, numa_node_id()); |
233 | WARN_ON(irq_base < 0); | 233 | WARN_ON(irq_base < 0); |
diff --git a/arch/arm/mach-imx/mach-mx31moboard.c b/arch/arm/mach-imx/mach-mx31moboard.c index bb6f8a52a6b8..4f2d99888afd 100644 --- a/arch/arm/mach-imx/mach-mx31moboard.c +++ b/arch/arm/mach-imx/mach-mx31moboard.c | |||
@@ -509,7 +509,7 @@ static void mx31moboard_poweroff(void) | |||
509 | 509 | ||
510 | mxc_iomux_mode(MX31_PIN_WATCHDOG_RST__WATCHDOG_RST); | 510 | mxc_iomux_mode(MX31_PIN_WATCHDOG_RST__WATCHDOG_RST); |
511 | 511 | ||
512 | __raw_writew(1 << 6 | 1 << 2, MX31_IO_ADDRESS(MX31_WDOG_BASE_ADDR)); | 512 | imx_writew(1 << 6 | 1 << 2, MX31_IO_ADDRESS(MX31_WDOG_BASE_ADDR)); |
513 | } | 513 | } |
514 | 514 | ||
515 | static int mx31moboard_baseboard; | 515 | static int mx31moboard_baseboard; |
diff --git a/arch/arm/mach-imx/mach-qong.c b/arch/arm/mach-imx/mach-qong.c index 5c2764604727..34df64f133ed 100644 --- a/arch/arm/mach-imx/mach-qong.c +++ b/arch/arm/mach-imx/mach-qong.c | |||
@@ -190,9 +190,9 @@ static struct platform_device qong_nand_device = { | |||
190 | static void __init qong_init_nand_mtd(void) | 190 | static void __init qong_init_nand_mtd(void) |
191 | { | 191 | { |
192 | /* init CS */ | 192 | /* init CS */ |
193 | __raw_writel(0x00004f00, MX31_IO_ADDRESS(MX31_WEIM_CSCRxU(3))); | 193 | imx_writel(0x00004f00, MX31_IO_ADDRESS(MX31_WEIM_CSCRxU(3))); |
194 | __raw_writel(0x20013b31, MX31_IO_ADDRESS(MX31_WEIM_CSCRxL(3))); | 194 | imx_writel(0x20013b31, MX31_IO_ADDRESS(MX31_WEIM_CSCRxL(3))); |
195 | __raw_writel(0x00020800, MX31_IO_ADDRESS(MX31_WEIM_CSCRxA(3))); | 195 | imx_writel(0x00020800, MX31_IO_ADDRESS(MX31_WEIM_CSCRxA(3))); |
196 | 196 | ||
197 | mxc_iomux_set_gpr(MUX_SDCTL_CSD1_SEL, true); | 197 | mxc_iomux_set_gpr(MUX_SDCTL_CSD1_SEL, true); |
198 | 198 | ||
diff --git a/arch/arm/mach-imx/mxc.h b/arch/arm/mach-imx/mxc.h index a5b1af6d7441..d32704256781 100644 --- a/arch/arm/mach-imx/mxc.h +++ b/arch/arm/mach-imx/mxc.h | |||
@@ -193,4 +193,9 @@ extern struct cpu_op *(*get_cpu_op)(int *op); | |||
193 | #define cpu_is_mx3() (cpu_is_mx31() || cpu_is_mx35()) | 193 | #define cpu_is_mx3() (cpu_is_mx31() || cpu_is_mx35()) |
194 | #define cpu_is_mx2() (cpu_is_mx21() || cpu_is_mx27()) | 194 | #define cpu_is_mx2() (cpu_is_mx21() || cpu_is_mx27()) |
195 | 195 | ||
196 | #define imx_readl readl_relaxed | ||
197 | #define imx_readw readw_relaxed | ||
198 | #define imx_writel writel_relaxed | ||
199 | #define imx_writew writew_relaxed | ||
200 | |||
196 | #endif /* __ASM_ARCH_MXC_H__ */ | 201 | #endif /* __ASM_ARCH_MXC_H__ */ |
diff --git a/arch/arm/mach-imx/pm-imx25.c b/arch/arm/mach-imx/pm-imx25.c new file mode 100644 index 000000000000..8bba9fcd96f6 --- /dev/null +++ b/arch/arm/mach-imx/pm-imx25.c | |||
@@ -0,0 +1,37 @@ | |||
1 | /* | ||
2 | * Copyright 2016 NXP Semiconductors | ||
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 as | ||
6 | * published by the Free Software Foundation. | ||
7 | */ | ||
8 | |||
9 | #include <linux/kernel.h> | ||
10 | #include <linux/suspend.h> | ||
11 | #include <linux/io.h> | ||
12 | |||
13 | static int imx25_suspend_enter(suspend_state_t state) | ||
14 | { | ||
15 | if (!IS_ENABLED(CONFIG_PM)) | ||
16 | return 0; | ||
17 | |||
18 | switch (state) { | ||
19 | case PM_SUSPEND_MEM: | ||
20 | cpu_do_idle(); | ||
21 | break; | ||
22 | default: | ||
23 | return -EINVAL; | ||
24 | } | ||
25 | |||
26 | return 0; | ||
27 | } | ||
28 | |||
29 | static const struct platform_suspend_ops imx25_suspend_ops = { | ||
30 | .enter = imx25_suspend_enter, | ||
31 | .valid = suspend_valid_only_mem, | ||
32 | }; | ||
33 | |||
34 | void __init imx25_pm_init(void) | ||
35 | { | ||
36 | suspend_set_ops(&imx25_suspend_ops); | ||
37 | } | ||
diff --git a/arch/arm/mach-imx/pm-imx27.c b/arch/arm/mach-imx/pm-imx27.c index 56d02d064fbf..43096c8990d4 100644 --- a/arch/arm/mach-imx/pm-imx27.c +++ b/arch/arm/mach-imx/pm-imx27.c | |||
@@ -19,9 +19,9 @@ static int mx27_suspend_enter(suspend_state_t state) | |||
19 | switch (state) { | 19 | switch (state) { |
20 | case PM_SUSPEND_MEM: | 20 | case PM_SUSPEND_MEM: |
21 | /* Clear MPEN and SPEN to disable MPLL/SPLL */ | 21 | /* Clear MPEN and SPEN to disable MPLL/SPLL */ |
22 | cscr = __raw_readl(MX27_IO_ADDRESS(MX27_CCM_BASE_ADDR)); | 22 | cscr = imx_readl(MX27_IO_ADDRESS(MX27_CCM_BASE_ADDR)); |
23 | cscr &= 0xFFFFFFFC; | 23 | cscr &= 0xFFFFFFFC; |
24 | __raw_writel(cscr, MX27_IO_ADDRESS(MX27_CCM_BASE_ADDR)); | 24 | imx_writel(cscr, MX27_IO_ADDRESS(MX27_CCM_BASE_ADDR)); |
25 | /* Executes WFI */ | 25 | /* Executes WFI */ |
26 | cpu_do_idle(); | 26 | cpu_do_idle(); |
27 | break; | 27 | break; |
diff --git a/arch/arm/mach-imx/pm-imx3.c b/arch/arm/mach-imx/pm-imx3.c index 6a07006ff0f4..94c0898751d8 100644 --- a/arch/arm/mach-imx/pm-imx3.c +++ b/arch/arm/mach-imx/pm-imx3.c | |||
@@ -22,14 +22,14 @@ | |||
22 | */ | 22 | */ |
23 | void mx3_cpu_lp_set(enum mx3_cpu_pwr_mode mode) | 23 | void mx3_cpu_lp_set(enum mx3_cpu_pwr_mode mode) |
24 | { | 24 | { |
25 | int reg = __raw_readl(mx3_ccm_base + MXC_CCM_CCMR); | 25 | int reg = imx_readl(mx3_ccm_base + MXC_CCM_CCMR); |
26 | reg &= ~MXC_CCM_CCMR_LPM_MASK; | 26 | reg &= ~MXC_CCM_CCMR_LPM_MASK; |
27 | 27 | ||
28 | switch (mode) { | 28 | switch (mode) { |
29 | case MX3_WAIT: | 29 | case MX3_WAIT: |
30 | if (cpu_is_mx35()) | 30 | if (cpu_is_mx35()) |
31 | reg |= MXC_CCM_CCMR_LPM_WAIT_MX35; | 31 | reg |= MXC_CCM_CCMR_LPM_WAIT_MX35; |
32 | __raw_writel(reg, mx3_ccm_base + MXC_CCM_CCMR); | 32 | imx_writel(reg, mx3_ccm_base + MXC_CCM_CCMR); |
33 | break; | 33 | break; |
34 | default: | 34 | default: |
35 | pr_err("Unknown cpu power mode: %d\n", mode); | 35 | pr_err("Unknown cpu power mode: %d\n", mode); |
diff --git a/arch/arm/mach-imx/pm-imx5.c b/arch/arm/mach-imx/pm-imx5.c index 532d4b08276d..868781fd460c 100644 --- a/arch/arm/mach-imx/pm-imx5.c +++ b/arch/arm/mach-imx/pm-imx5.c | |||
@@ -153,15 +153,15 @@ static void mx5_cpu_lp_set(enum mxc_cpu_pwr_mode mode) | |||
153 | int stop_mode = 0; | 153 | int stop_mode = 0; |
154 | 154 | ||
155 | /* always allow platform to issue a deep sleep mode request */ | 155 | /* always allow platform to issue a deep sleep mode request */ |
156 | plat_lpc = __raw_readl(cortex_base + MXC_CORTEXA8_PLAT_LPC) & | 156 | plat_lpc = imx_readl(cortex_base + MXC_CORTEXA8_PLAT_LPC) & |
157 | ~(MXC_CORTEXA8_PLAT_LPC_DSM); | 157 | ~(MXC_CORTEXA8_PLAT_LPC_DSM); |
158 | ccm_clpcr = __raw_readl(ccm_base + MXC_CCM_CLPCR) & | 158 | ccm_clpcr = imx_readl(ccm_base + MXC_CCM_CLPCR) & |
159 | ~(MXC_CCM_CLPCR_LPM_MASK); | 159 | ~(MXC_CCM_CLPCR_LPM_MASK); |
160 | arm_srpgcr = __raw_readl(gpc_base + MXC_SRPG_ARM_SRPGCR) & | 160 | arm_srpgcr = imx_readl(gpc_base + MXC_SRPG_ARM_SRPGCR) & |
161 | ~(MXC_SRPGCR_PCR); | 161 | ~(MXC_SRPGCR_PCR); |
162 | empgc0 = __raw_readl(gpc_base + MXC_SRPG_EMPGC0_SRPGCR) & | 162 | empgc0 = imx_readl(gpc_base + MXC_SRPG_EMPGC0_SRPGCR) & |
163 | ~(MXC_SRPGCR_PCR); | 163 | ~(MXC_SRPGCR_PCR); |
164 | empgc1 = __raw_readl(gpc_base + MXC_SRPG_EMPGC1_SRPGCR) & | 164 | empgc1 = imx_readl(gpc_base + MXC_SRPG_EMPGC1_SRPGCR) & |
165 | ~(MXC_SRPGCR_PCR); | 165 | ~(MXC_SRPGCR_PCR); |
166 | 166 | ||
167 | switch (mode) { | 167 | switch (mode) { |
@@ -196,17 +196,17 @@ static void mx5_cpu_lp_set(enum mxc_cpu_pwr_mode mode) | |||
196 | return; | 196 | return; |
197 | } | 197 | } |
198 | 198 | ||
199 | __raw_writel(plat_lpc, cortex_base + MXC_CORTEXA8_PLAT_LPC); | 199 | imx_writel(plat_lpc, cortex_base + MXC_CORTEXA8_PLAT_LPC); |
200 | __raw_writel(ccm_clpcr, ccm_base + MXC_CCM_CLPCR); | 200 | imx_writel(ccm_clpcr, ccm_base + MXC_CCM_CLPCR); |
201 | __raw_writel(arm_srpgcr, gpc_base + MXC_SRPG_ARM_SRPGCR); | 201 | imx_writel(arm_srpgcr, gpc_base + MXC_SRPG_ARM_SRPGCR); |
202 | __raw_writel(arm_srpgcr, gpc_base + MXC_SRPG_NEON_SRPGCR); | 202 | imx_writel(arm_srpgcr, gpc_base + MXC_SRPG_NEON_SRPGCR); |
203 | 203 | ||
204 | if (stop_mode) { | 204 | if (stop_mode) { |
205 | empgc0 |= MXC_SRPGCR_PCR; | 205 | empgc0 |= MXC_SRPGCR_PCR; |
206 | empgc1 |= MXC_SRPGCR_PCR; | 206 | empgc1 |= MXC_SRPGCR_PCR; |
207 | 207 | ||
208 | __raw_writel(empgc0, gpc_base + MXC_SRPG_EMPGC0_SRPGCR); | 208 | imx_writel(empgc0, gpc_base + MXC_SRPG_EMPGC0_SRPGCR); |
209 | __raw_writel(empgc1, gpc_base + MXC_SRPG_EMPGC1_SRPGCR); | 209 | imx_writel(empgc1, gpc_base + MXC_SRPG_EMPGC1_SRPGCR); |
210 | } | 210 | } |
211 | } | 211 | } |
212 | 212 | ||
@@ -228,8 +228,8 @@ static int mx5_suspend_enter(suspend_state_t state) | |||
228 | flush_cache_all(); | 228 | flush_cache_all(); |
229 | 229 | ||
230 | /*clear the EMPGC0/1 bits */ | 230 | /*clear the EMPGC0/1 bits */ |
231 | __raw_writel(0, gpc_base + MXC_SRPG_EMPGC0_SRPGCR); | 231 | imx_writel(0, gpc_base + MXC_SRPG_EMPGC0_SRPGCR); |
232 | __raw_writel(0, gpc_base + MXC_SRPG_EMPGC1_SRPGCR); | 232 | imx_writel(0, gpc_base + MXC_SRPG_EMPGC1_SRPGCR); |
233 | 233 | ||
234 | if (imx5_suspend_in_ocram_fn) | 234 | if (imx5_suspend_in_ocram_fn) |
235 | imx5_suspend_in_ocram_fn(suspend_ocram_base); | 235 | imx5_suspend_in_ocram_fn(suspend_ocram_base); |
diff --git a/arch/arm/mach-imx/pm-imx6.c b/arch/arm/mach-imx/pm-imx6.c index 4470376af5f8..58924b3844df 100644 --- a/arch/arm/mach-imx/pm-imx6.c +++ b/arch/arm/mach-imx/pm-imx6.c | |||
@@ -561,13 +561,13 @@ static int __init imx6q_suspend_init(const struct imx6_pm_socdata *socdata) | |||
561 | goto put_node; | 561 | goto put_node; |
562 | 562 | ||
563 | pl310_cache_map_failed: | 563 | pl310_cache_map_failed: |
564 | iounmap(&pm_info->gpc_base.vbase); | 564 | iounmap(pm_info->gpc_base.vbase); |
565 | gpc_map_failed: | 565 | gpc_map_failed: |
566 | iounmap(&pm_info->iomuxc_base.vbase); | 566 | iounmap(pm_info->iomuxc_base.vbase); |
567 | iomuxc_map_failed: | 567 | iomuxc_map_failed: |
568 | iounmap(&pm_info->src_base.vbase); | 568 | iounmap(pm_info->src_base.vbase); |
569 | src_map_failed: | 569 | src_map_failed: |
570 | iounmap(&pm_info->mmdc_base.vbase); | 570 | iounmap(pm_info->mmdc_base.vbase); |
571 | put_node: | 571 | put_node: |
572 | of_node_put(node); | 572 | of_node_put(node); |
573 | 573 | ||
diff --git a/arch/arm/mach-imx/src.c b/arch/arm/mach-imx/src.c index 45f7f4e0a447..70b083fe934a 100644 --- a/arch/arm/mach-imx/src.c +++ b/arch/arm/mach-imx/src.c | |||
@@ -73,7 +73,7 @@ static int imx_src_reset_module(struct reset_controller_dev *rcdev, | |||
73 | return 0; | 73 | return 0; |
74 | } | 74 | } |
75 | 75 | ||
76 | static struct reset_control_ops imx_src_ops = { | 76 | static const struct reset_control_ops imx_src_ops = { |
77 | .reset = imx_src_reset_module, | 77 | .reset = imx_src_reset_module, |
78 | }; | 78 | }; |
79 | 79 | ||
diff --git a/arch/arm/mach-imx/system.c b/arch/arm/mach-imx/system.c index 51c35013b673..105d1ce4ed9d 100644 --- a/arch/arm/mach-imx/system.c +++ b/arch/arm/mach-imx/system.c | |||
@@ -54,7 +54,7 @@ void mxc_restart(enum reboot_mode mode, const char *cmd) | |||
54 | wcr_enable = (1 << 2); | 54 | wcr_enable = (1 << 2); |
55 | 55 | ||
56 | /* Assert SRS signal */ | 56 | /* Assert SRS signal */ |
57 | __raw_writew(wcr_enable, wdog_base); | 57 | imx_writew(wcr_enable, wdog_base); |
58 | /* | 58 | /* |
59 | * Due to imx6q errata ERR004346 (WDOG: WDOG SRS bit requires to be | 59 | * Due to imx6q errata ERR004346 (WDOG: WDOG SRS bit requires to be |
60 | * written twice), we add another two writes to ensure there must be at | 60 | * written twice), we add another two writes to ensure there must be at |
@@ -62,8 +62,8 @@ void mxc_restart(enum reboot_mode mode, const char *cmd) | |||
62 | * the target check here, since the writes shouldn't be a huge burden | 62 | * the target check here, since the writes shouldn't be a huge burden |
63 | * for other platforms. | 63 | * for other platforms. |
64 | */ | 64 | */ |
65 | __raw_writew(wcr_enable, wdog_base); | 65 | imx_writew(wcr_enable, wdog_base); |
66 | __raw_writew(wcr_enable, wdog_base); | 66 | imx_writew(wcr_enable, wdog_base); |
67 | 67 | ||
68 | /* wait for reset to assert... */ | 68 | /* wait for reset to assert... */ |
69 | mdelay(500); | 69 | mdelay(500); |
@@ -106,6 +106,9 @@ void __init imx_init_l2cache(void) | |||
106 | goto out; | 106 | goto out; |
107 | } | 107 | } |
108 | 108 | ||
109 | if (readl_relaxed(l2x0_base + L2X0_CTRL) & L2X0_CTRL_EN) | ||
110 | goto skip_if_enabled; | ||
111 | |||
109 | /* Configure the L2 PREFETCH and POWER registers */ | 112 | /* Configure the L2 PREFETCH and POWER registers */ |
110 | val = readl_relaxed(l2x0_base + L310_PREFETCH_CTRL); | 113 | val = readl_relaxed(l2x0_base + L310_PREFETCH_CTRL); |
111 | val |= 0x70800000; | 114 | val |= 0x70800000; |
@@ -122,6 +125,7 @@ void __init imx_init_l2cache(void) | |||
122 | val &= ~(1 << 30 | 1 << 23); | 125 | val &= ~(1 << 30 | 1 << 23); |
123 | writel_relaxed(val, l2x0_base + L310_PREFETCH_CTRL); | 126 | writel_relaxed(val, l2x0_base + L310_PREFETCH_CTRL); |
124 | 127 | ||
128 | skip_if_enabled: | ||
125 | iounmap(l2x0_base); | 129 | iounmap(l2x0_base); |
126 | of_node_put(np); | 130 | of_node_put(np); |
127 | 131 | ||
diff --git a/arch/arm/mach-imx/tzic.c b/arch/arm/mach-imx/tzic.c index 4de65eeda1eb..ae23d50f7861 100644 --- a/arch/arm/mach-imx/tzic.c +++ b/arch/arm/mach-imx/tzic.c | |||
@@ -65,10 +65,10 @@ static int tzic_set_irq_fiq(unsigned int irq, unsigned int type) | |||
65 | return -EINVAL; | 65 | return -EINVAL; |
66 | mask = 1U << (irq & 0x1F); | 66 | mask = 1U << (irq & 0x1F); |
67 | 67 | ||
68 | value = __raw_readl(tzic_base + TZIC_INTSEC0(index)) | mask; | 68 | value = imx_readl(tzic_base + TZIC_INTSEC0(index)) | mask; |
69 | if (type) | 69 | if (type) |
70 | value &= ~mask; | 70 | value &= ~mask; |
71 | __raw_writel(value, tzic_base + TZIC_INTSEC0(index)); | 71 | imx_writel(value, tzic_base + TZIC_INTSEC0(index)); |
72 | 72 | ||
73 | return 0; | 73 | return 0; |
74 | } | 74 | } |
@@ -82,15 +82,15 @@ static void tzic_irq_suspend(struct irq_data *d) | |||
82 | struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d); | 82 | struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d); |
83 | int idx = d->hwirq >> 5; | 83 | int idx = d->hwirq >> 5; |
84 | 84 | ||
85 | __raw_writel(gc->wake_active, tzic_base + TZIC_WAKEUP0(idx)); | 85 | imx_writel(gc->wake_active, tzic_base + TZIC_WAKEUP0(idx)); |
86 | } | 86 | } |
87 | 87 | ||
88 | static void tzic_irq_resume(struct irq_data *d) | 88 | static void tzic_irq_resume(struct irq_data *d) |
89 | { | 89 | { |
90 | int idx = d->hwirq >> 5; | 90 | int idx = d->hwirq >> 5; |
91 | 91 | ||
92 | __raw_writel(__raw_readl(tzic_base + TZIC_ENSET0(idx)), | 92 | imx_writel(imx_readl(tzic_base + TZIC_ENSET0(idx)), |
93 | tzic_base + TZIC_WAKEUP0(idx)); | 93 | tzic_base + TZIC_WAKEUP0(idx)); |
94 | } | 94 | } |
95 | 95 | ||
96 | #else | 96 | #else |
@@ -135,8 +135,8 @@ static void __exception_irq_entry tzic_handle_irq(struct pt_regs *regs) | |||
135 | handled = 0; | 135 | handled = 0; |
136 | 136 | ||
137 | for (i = 0; i < 4; i++) { | 137 | for (i = 0; i < 4; i++) { |
138 | stat = __raw_readl(tzic_base + TZIC_HIPND(i)) & | 138 | stat = imx_readl(tzic_base + TZIC_HIPND(i)) & |
139 | __raw_readl(tzic_base + TZIC_INTSEC0(i)); | 139 | imx_readl(tzic_base + TZIC_INTSEC0(i)); |
140 | 140 | ||
141 | while (stat) { | 141 | while (stat) { |
142 | handled = 1; | 142 | handled = 1; |
@@ -166,18 +166,18 @@ void __init tzic_init_irq(void) | |||
166 | /* put the TZIC into the reset value with | 166 | /* put the TZIC into the reset value with |
167 | * all interrupts disabled | 167 | * all interrupts disabled |
168 | */ | 168 | */ |
169 | i = __raw_readl(tzic_base + TZIC_INTCNTL); | 169 | i = imx_readl(tzic_base + TZIC_INTCNTL); |
170 | 170 | ||
171 | __raw_writel(0x80010001, tzic_base + TZIC_INTCNTL); | 171 | imx_writel(0x80010001, tzic_base + TZIC_INTCNTL); |
172 | __raw_writel(0x1f, tzic_base + TZIC_PRIOMASK); | 172 | imx_writel(0x1f, tzic_base + TZIC_PRIOMASK); |
173 | __raw_writel(0x02, tzic_base + TZIC_SYNCCTRL); | 173 | imx_writel(0x02, tzic_base + TZIC_SYNCCTRL); |
174 | 174 | ||
175 | for (i = 0; i < 4; i++) | 175 | for (i = 0; i < 4; i++) |
176 | __raw_writel(0xFFFFFFFF, tzic_base + TZIC_INTSEC0(i)); | 176 | imx_writel(0xFFFFFFFF, tzic_base + TZIC_INTSEC0(i)); |
177 | 177 | ||
178 | /* disable all interrupts */ | 178 | /* disable all interrupts */ |
179 | for (i = 0; i < 4; i++) | 179 | for (i = 0; i < 4; i++) |
180 | __raw_writel(0xFFFFFFFF, tzic_base + TZIC_ENCLEAR0(i)); | 180 | imx_writel(0xFFFFFFFF, tzic_base + TZIC_ENCLEAR0(i)); |
181 | 181 | ||
182 | /* all IRQ no FIQ Warning :: No selection */ | 182 | /* all IRQ no FIQ Warning :: No selection */ |
183 | 183 | ||
@@ -214,13 +214,13 @@ int tzic_enable_wake(void) | |||
214 | { | 214 | { |
215 | unsigned int i; | 215 | unsigned int i; |
216 | 216 | ||
217 | __raw_writel(1, tzic_base + TZIC_DSMINT); | 217 | imx_writel(1, tzic_base + TZIC_DSMINT); |
218 | if (unlikely(__raw_readl(tzic_base + TZIC_DSMINT) == 0)) | 218 | if (unlikely(imx_readl(tzic_base + TZIC_DSMINT) == 0)) |
219 | return -EAGAIN; | 219 | return -EAGAIN; |
220 | 220 | ||
221 | for (i = 0; i < 4; i++) | 221 | for (i = 0; i < 4; i++) |
222 | __raw_writel(__raw_readl(tzic_base + TZIC_ENSET0(i)), | 222 | imx_writel(imx_readl(tzic_base + TZIC_ENSET0(i)), |
223 | tzic_base + TZIC_WAKEUP0(i)); | 223 | tzic_base + TZIC_WAKEUP0(i)); |
224 | 224 | ||
225 | return 0; | 225 | return 0; |
226 | } | 226 | } |