00001
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044 #ifndef _PM_H_
00045 #define _PM_H_
00046
00047 #include <arch/avr32.h>
00048 #include <avr32/io.h>
00049
00050
00051
00062 #define SLEEP(mode) {__asm__ __volatile__ ("sleep "STRINGZ(mode));}
00063
00064
00072 extern INLINE unsigned int pm_get_reset_cause(volatile avr32_pm_t *pm)
00073 {
00074 return pm->rcause;
00075 }
00076
00077
00082 extern void pm_enable_osc0_ext_clock(volatile avr32_pm_t *pm);
00083
00084
00090 extern void pm_enable_osc0_crystal(volatile avr32_pm_t *pm, unsigned int fosc0);
00091
00092
00098 extern void pm_enable_clk0(volatile avr32_pm_t *pm, unsigned int startup);
00099
00100
00105 extern void pm_disable_clk0(volatile avr32_pm_t *pm);
00106
00107
00113 extern void pm_enable_clk0_no_wait(volatile avr32_pm_t *pm, unsigned int startup);
00114
00115
00120 extern void pm_wait_for_clk0_ready(volatile avr32_pm_t *pm);
00121
00122
00127 extern void pm_enable_osc1_ext_clock(volatile avr32_pm_t *pm);
00128
00129
00135 extern void pm_enable_osc1_crystal(volatile avr32_pm_t *pm, unsigned int fosc1);
00136
00137
00143 extern void pm_enable_clk1(volatile avr32_pm_t *pm, unsigned int startup);
00144
00145
00150 extern void pm_disable_clk1(volatile avr32_pm_t *pm);
00151
00152
00158 extern void pm_enable_clk1_no_wait(volatile avr32_pm_t *pm, unsigned int startup);
00159
00160
00165 extern void pm_wait_for_clk1_ready(volatile avr32_pm_t *pm);
00166
00167
00172 extern void pm_enable_osc32_ext_clock(volatile avr32_pm_t *pm);
00173
00174
00179 extern void pm_enable_osc32_crystal(volatile avr32_pm_t *pm);
00180
00181
00187 extern void pm_enable_clk32(volatile avr32_pm_t *pm, unsigned int startup);
00188
00189
00194 extern void pm_disable_clk32(volatile avr32_pm_t *pm);
00195
00196
00202 extern void pm_enable_clk32_no_wait(volatile avr32_pm_t *pm, unsigned int startup);
00203
00204
00209 extern void pm_wait_for_clk32_ready(volatile avr32_pm_t *pm);
00210
00211
00222 extern void pm_cksel(volatile avr32_pm_t *pm, unsigned int pbadiv, unsigned int pbasel, unsigned int pbbdiv, unsigned int pbbsel, unsigned int hsbdiv, unsigned int hsbsel);
00223
00224
00234 extern void pm_gc_setup(volatile avr32_pm_t *pm, unsigned int gc, unsigned int osc_or_pll, unsigned int pll_osc, unsigned int diven, unsigned int div);
00235
00236
00242 extern void pm_gc_enable(volatile avr32_pm_t *pm, unsigned int gc);
00243
00244
00250 extern void pm_gc_disable(volatile avr32_pm_t *pm, unsigned int gc);
00251
00252
00262 extern void pm_pll_setup(volatile avr32_pm_t *pm, unsigned int pll, unsigned int mul, unsigned int div, unsigned int osc, unsigned int lockcount);
00263
00264
00273 extern void pm_pll_set_option(volatile avr32_pm_t *pm, unsigned int pll, unsigned int pll_freq, unsigned int pll_div2, unsigned int pll_wbwdisable);
00274
00275
00282 extern unsigned int pm_pll_get_option(volatile avr32_pm_t *pm, unsigned int pll);
00283
00284
00290 extern void pm_pll_enable(volatile avr32_pm_t *pm, unsigned int pll);
00291
00292
00298 extern void pm_pll_disable(volatile avr32_pm_t *pm, unsigned int pll);
00299
00300
00305 extern void pm_wait_for_pll0_locked(volatile avr32_pm_t *pm);
00306
00307
00312 extern void pm_wait_for_pll1_locked(volatile avr32_pm_t *pm);
00313
00314
00320 extern void pm_switch_to_clock(volatile avr32_pm_t *pm, unsigned long clock);
00321
00322
00329 extern void pm_switch_to_osc0(volatile avr32_pm_t *pm, unsigned int fosc0, unsigned int startup);
00330
00331
00332 #endif // _PM_H_