diff options
Diffstat (limited to 'firmware/target/arm')
-rw-r--r-- | firmware/target/arm/imx31/dvfs_dptc-imx31.c | 48 | ||||
-rw-r--r-- | firmware/target/arm/imx31/dvfs_dptc-imx31.h | 30 | ||||
-rw-r--r-- | firmware/target/arm/imx31/gigabeat-s/kernel-imx31.c | 2 | ||||
-rw-r--r-- | firmware/target/arm/imx31/gigabeat-s/system-imx31.c | 2 |
4 files changed, 82 insertions, 0 deletions
diff --git a/firmware/target/arm/imx31/dvfs_dptc-imx31.c b/firmware/target/arm/imx31/dvfs_dptc-imx31.c new file mode 100644 index 0000000000..8f32fd0fba --- /dev/null +++ b/firmware/target/arm/imx31/dvfs_dptc-imx31.c | |||
@@ -0,0 +1,48 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___. | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * $Id$ | ||
9 | * | ||
10 | * Copyright (C) 2010 by Michael Sevakis | ||
11 | * | ||
12 | * i.MX31 DVFS and DPTC drivers | ||
13 | * | ||
14 | * This program is free software; you can redistribute it and/or | ||
15 | * modify it under the terms of the GNU General Public License | ||
16 | * as published by the Free Software Foundation; either version 2 | ||
17 | * of the License, or (at your option) any later version. | ||
18 | * | ||
19 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
20 | * KIND, either express or implied. | ||
21 | * | ||
22 | ****************************************************************************/ | ||
23 | #include "config.h" | ||
24 | #include "system.h" | ||
25 | #include "ccm-imx31.h" | ||
26 | #include "mc13783.h" | ||
27 | |||
28 | /* Most of the code in here is based upon the Linux BSP provided by Freescale | ||
29 | * Copyright 2004-2008 Freescale Semiconductor, Inc. All Rights Reserved. */ | ||
30 | |||
31 | void dvfs_dptc_start(void) | ||
32 | { | ||
33 | /* For now, just set the regulator voltage off of overdrive mode */ | ||
34 | /* For 264 MHz, DPTC is not needed and lower V can be used */ | ||
35 | |||
36 | mc13783_write_masked(MC13783_SWITCHERS0, | ||
37 | MC13783_SW_1_350 << MC13783_SW1A_POS, | ||
38 | MC13783_SW1A); | ||
39 | imx31_regmod32(&CCM_PMCR0, CCM_PMCR0_DVS1_0_DVS0_0, | ||
40 | CCM_PMCR0_DVSUP_DVS); | ||
41 | } | ||
42 | |||
43 | |||
44 | void dvfs_dptc_stop(void) | ||
45 | { | ||
46 | /* Nothing for now */ | ||
47 | } | ||
48 | |||
diff --git a/firmware/target/arm/imx31/dvfs_dptc-imx31.h b/firmware/target/arm/imx31/dvfs_dptc-imx31.h new file mode 100644 index 0000000000..8f6f5da98d --- /dev/null +++ b/firmware/target/arm/imx31/dvfs_dptc-imx31.h | |||
@@ -0,0 +1,30 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___. | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * $Id$ | ||
9 | * | ||
10 | * Copyright (C) 2010 by Michael Sevakis | ||
11 | * | ||
12 | * i.MX31 DVFS and DPTC driver declarations | ||
13 | * | ||
14 | * This program is free software; you can redistribute it and/or | ||
15 | * modify it under the terms of the GNU General Public License | ||
16 | * as published by the Free Software Foundation; either version 2 | ||
17 | * of the License, or (at your option) any later version. | ||
18 | * | ||
19 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
20 | * KIND, either express or implied. | ||
21 | * | ||
22 | ****************************************************************************/ | ||
23 | |||
24 | #ifndef _DVFS_DPTC_IMX31_H_ | ||
25 | #define _DVFS_DPTC_IMX31_H_ | ||
26 | |||
27 | void dvfs_dptc_start(void); | ||
28 | void dvfs_dptc_stop(void); | ||
29 | |||
30 | #endif /* _DVFS_DPTC_IMX31_H_ */ | ||
diff --git a/firmware/target/arm/imx31/gigabeat-s/kernel-imx31.c b/firmware/target/arm/imx31/gigabeat-s/kernel-imx31.c index 775f5cebf0..8e81447bd3 100644 --- a/firmware/target/arm/imx31/gigabeat-s/kernel-imx31.c +++ b/firmware/target/arm/imx31/gigabeat-s/kernel-imx31.c | |||
@@ -25,6 +25,7 @@ | |||
25 | #include "mc13783.h" | 25 | #include "mc13783.h" |
26 | #include "ccm-imx31.h" | 26 | #include "ccm-imx31.h" |
27 | #include "sdma-imx31.h" | 27 | #include "sdma-imx31.h" |
28 | #include "dvfs_dptc-imx31.h" | ||
28 | #include "kernel.h" | 29 | #include "kernel.h" |
29 | #include "thread.h" | 30 | #include "thread.h" |
30 | 31 | ||
@@ -69,6 +70,7 @@ void kernel_device_init(void) | |||
69 | sdma_init(); | 70 | sdma_init(); |
70 | spi_init(); | 71 | spi_init(); |
71 | mc13783_init(); | 72 | mc13783_init(); |
73 | dvfs_dptc_start(); | ||
72 | } | 74 | } |
73 | 75 | ||
74 | #ifdef BOOTLOADER | 76 | #ifdef BOOTLOADER |
diff --git a/firmware/target/arm/imx31/gigabeat-s/system-imx31.c b/firmware/target/arm/imx31/gigabeat-s/system-imx31.c index 65299cb8d0..cd684e77ac 100644 --- a/firmware/target/arm/imx31/gigabeat-s/system-imx31.c +++ b/firmware/target/arm/imx31/gigabeat-s/system-imx31.c | |||
@@ -31,6 +31,7 @@ | |||
31 | #include "debug.h" | 31 | #include "debug.h" |
32 | #include "ccm-imx31.h" | 32 | #include "ccm-imx31.h" |
33 | #include "mc13783.h" | 33 | #include "mc13783.h" |
34 | #include "dvfs_dptc-imx31.h" | ||
34 | 35 | ||
35 | static unsigned long product_rev; | 36 | static unsigned long product_rev; |
36 | static unsigned long system_rev; | 37 | static unsigned long system_rev; |
@@ -241,6 +242,7 @@ void __attribute__((naked)) imx31_regclr32(volatile uint32_t *reg_p, | |||
241 | #ifdef BOOTLOADER | 242 | #ifdef BOOTLOADER |
242 | void system_prepare_fw_start(void) | 243 | void system_prepare_fw_start(void) |
243 | { | 244 | { |
245 | dvfs_dptc_stop(); | ||
244 | disable_interrupt(IRQ_FIQ_STATUS); | 246 | disable_interrupt(IRQ_FIQ_STATUS); |
245 | avic_disable_int(INT_ALL); | 247 | avic_disable_int(INT_ALL); |
246 | mc13783_close(); | 248 | mc13783_close(); |