diff options
Diffstat (limited to 'arch/arm/mach-imx/clk-imx6q.c')
| -rw-r--r-- | arch/arm/mach-imx/clk-imx6q.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/arch/arm/mach-imx/clk-imx6q.c b/arch/arm/mach-imx/clk-imx6q.c index 7f2c10c7413a..540138c4606c 100644 --- a/arch/arm/mach-imx/clk-imx6q.c +++ b/arch/arm/mach-imx/clk-imx6q.c | |||
| @@ -54,9 +54,18 @@ | |||
| 54 | #define BM_CLPCR_MASK_SCU_IDLE (0x1 << 26) | 54 | #define BM_CLPCR_MASK_SCU_IDLE (0x1 << 26) |
| 55 | #define BM_CLPCR_MASK_L2CC_IDLE (0x1 << 27) | 55 | #define BM_CLPCR_MASK_L2CC_IDLE (0x1 << 27) |
| 56 | 56 | ||
| 57 | #define CGPR 0x64 | ||
| 58 | #define BM_CGPR_CHICKEN_BIT (0x1 << 17) | ||
| 59 | |||
| 57 | static void __iomem *ccm_base; | 60 | static void __iomem *ccm_base; |
| 58 | 61 | ||
| 59 | void __init imx6q_clock_map_io(void) { } | 62 | void imx6q_set_chicken_bit(void) |
| 63 | { | ||
| 64 | u32 val = readl_relaxed(ccm_base + CGPR); | ||
| 65 | |||
| 66 | val |= BM_CGPR_CHICKEN_BIT; | ||
| 67 | writel_relaxed(val, ccm_base + CGPR); | ||
| 68 | } | ||
| 60 | 69 | ||
| 61 | int imx6q_set_lpm(enum mxc_cpu_pwr_mode mode) | 70 | int imx6q_set_lpm(enum mxc_cpu_pwr_mode mode) |
| 62 | { | 71 | { |
| @@ -68,6 +77,7 @@ int imx6q_set_lpm(enum mxc_cpu_pwr_mode mode) | |||
| 68 | break; | 77 | break; |
| 69 | case WAIT_UNCLOCKED: | 78 | case WAIT_UNCLOCKED: |
| 70 | val |= 0x1 << BP_CLPCR_LPM; | 79 | val |= 0x1 << BP_CLPCR_LPM; |
| 80 | val |= BM_CLPCR_ARM_CLK_DIS_ON_LPM; | ||
| 71 | break; | 81 | break; |
| 72 | case STOP_POWER_ON: | 82 | case STOP_POWER_ON: |
| 73 | val |= 0x2 << BP_CLPCR_LPM; | 83 | val |= 0x2 << BP_CLPCR_LPM; |
| @@ -436,6 +446,9 @@ int __init mx6q_clocks_init(void) | |||
| 436 | for (i = 0; i < ARRAY_SIZE(clks_init_on); i++) | 446 | for (i = 0; i < ARRAY_SIZE(clks_init_on); i++) |
| 437 | clk_prepare_enable(clk[clks_init_on[i]]); | 447 | clk_prepare_enable(clk[clks_init_on[i]]); |
| 438 | 448 | ||
| 449 | /* Set initial power mode */ | ||
| 450 | imx6q_set_lpm(WAIT_CLOCKED); | ||
| 451 | |||
| 439 | np = of_find_compatible_node(NULL, NULL, "fsl,imx6q-gpt"); | 452 | np = of_find_compatible_node(NULL, NULL, "fsl,imx6q-gpt"); |
| 440 | base = of_iomap(np, 0); | 453 | base = of_iomap(np, 0); |
| 441 | WARN_ON(!base); | 454 | WARN_ON(!base); |
