0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 #include <linux/linkage.h>
0013 #include <asm/assembler.h>
0014 #include "map.h"
0015
0016 #undef S3C64XX_VA_GPIO
0017 #define S3C64XX_VA_GPIO (0x0)
0018
0019 #include "regs-gpio.h"
0020
0021 #define LL_UART (S3C_PA_UART + (0x400 * CONFIG_S3C_LOWLEVEL_UART_PORT))
0022
0023 .text
0024
0025
0026
0027
0028 .word 0x2bedf00d
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039 ENTRY(s3c_cpu_resume)
0040 msr cpsr_c, #PSR_I_BIT | PSR_F_BIT | SVC_MODE
0041 ldr r2, =LL_UART
0042
0043 #ifdef CONFIG_S3C_PM_DEBUG_LED_SMDK
0044
0045 #define S3C64XX_GPNCON (S3C64XX_GPN_BASE + 0x00)
0046 #define S3C64XX_GPNDAT (S3C64XX_GPN_BASE + 0x04)
0047
0048 #define S3C64XX_GPN_CONMASK(__gpio) (0x3 << ((__gpio) * 2))
0049 #define S3C64XX_GPN_OUTPUT(__gpio) (0x1 << ((__gpio) * 2))
0050
0051
0052
0053
0054
0055
0056 ldr r3, =S3C64XX_PA_GPIO
0057 ldr r0, [ r3, #S3C64XX_GPNCON ]
0058 bic r0, r0, #(S3C64XX_GPN_CONMASK(12) | S3C64XX_GPN_CONMASK(13) | \
0059 S3C64XX_GPN_CONMASK(14) | S3C64XX_GPN_CONMASK(15))
0060 orr r0, r0, #(S3C64XX_GPN_OUTPUT(12) | S3C64XX_GPN_OUTPUT(13) | \
0061 S3C64XX_GPN_OUTPUT(14) | S3C64XX_GPN_OUTPUT(15))
0062 str r0, [ r3, #S3C64XX_GPNCON ]
0063
0064 ldr r0, [ r3, #S3C64XX_GPNDAT ]
0065 bic r0, r0, #0xf << 12 @ GPN12..15
0066 orr r0, r0, #1 << 15 @ GPN15
0067 str r0, [ r3, #S3C64XX_GPNDAT ]
0068 #endif
0069 b cpu_resume