00001
00002
00003
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
00045
00046 #ifndef _PM_H_
00047 #define _PM_H_
00048
00049 #include <avr32/io.h>
00050 #include "compiler.h"
00051 #include "preprocessor.h"
00052
00053
00064 #define SLEEP(mode) {__asm__ __volatile__ ("sleep "STRINGZ(mode));}
00065
00066
00074 #if __GNUC__
00075 __attribute__((__always_inline__))
00076 #endif
00077 extern __inline__ unsigned int pm_get_reset_cause(volatile avr32_pm_t *pm)
00078 {
00079 return pm->rcause;
00080 }
00081
00082
00087 extern void pm_enable_osc0_ext_clock(volatile avr32_pm_t *pm);
00088
00089
00095 extern void pm_enable_osc0_crystal(volatile avr32_pm_t *pm, unsigned int fosc0);
00096
00097
00103 extern void pm_enable_clk0(volatile avr32_pm_t *pm, unsigned int startup);
00104
00105
00110 extern void pm_disable_clk0(volatile avr32_pm_t *pm);
00111
00112
00118 extern void pm_enable_clk0_no_wait(volatile avr32_pm_t *pm, unsigned int startup);
00119
00120
00125 extern void pm_wait_for_clk0_ready(volatile avr32_pm_t *pm);
00126
00127
00132 extern void pm_enable_osc1_ext_clock(volatile avr32_pm_t *pm);
00133
00134
00140 extern void pm_enable_osc1_crystal(volatile avr32_pm_t *pm, unsigned int fosc1);
00141
00142
00148 extern void pm_enable_clk1(volatile avr32_pm_t *pm, unsigned int startup);
00149
00150
00155 extern void pm_disable_clk1(volatile avr32_pm_t *pm);
00156
00157
00163 extern void pm_enable_clk1_no_wait(volatile avr32_pm_t *pm, unsigned int startup);
00164
00165
00170 extern void pm_wait_for_clk1_ready(volatile avr32_pm_t *pm);
00171
00172
00177 extern void pm_enable_osc32_ext_clock(volatile avr32_pm_t *pm);
00178
00179
00184 extern void pm_enable_osc32_crystal(volatile avr32_pm_t *pm);
00185
00186
00192 extern void pm_enable_clk32(volatile avr32_pm_t *pm, unsigned int startup);
00193
00194
00199 extern void pm_disable_clk32(volatile avr32_pm_t *pm);
00200
00201
00207 extern void pm_enable_clk32_no_wait(volatile avr32_pm_t *pm, unsigned int startup);
00208
00209
00214 extern void pm_wait_for_clk32_ready(volatile avr32_pm_t *pm);
00215
00216
00217
00228 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);
00229
00230
00240 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);
00241
00242
00248 extern void pm_gc_enable(volatile avr32_pm_t *pm, unsigned int gc);
00249
00250
00256 extern void pm_gc_disable(volatile avr32_pm_t *pm, unsigned int gc);
00257
00258
00259
00269 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);
00270
00271
00272
00281 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);
00282
00283
00284
00291 extern unsigned int pm_pll_get_option(volatile avr32_pm_t *pm, unsigned int pll);
00292
00293
00299 extern void pm_pll_enable(volatile avr32_pm_t *pm, unsigned int pll);
00300
00301
00307 extern void pm_pll_disable(volatile avr32_pm_t *pm, unsigned int pll);
00308
00309
00314 extern void pm_wait_for_pll0_locked(volatile avr32_pm_t *pm);
00315
00316
00321 extern void pm_wait_for_pll1_locked(volatile avr32_pm_t *pm);
00322
00323
00329 extern void pm_switch_to_clock(volatile avr32_pm_t *pm, unsigned long clock);
00330
00331
00338 extern void pm_switch_to_osc0(volatile avr32_pm_t *pm, unsigned int fosc0, unsigned int startup);
00339
00340
00341 #endif // _PM_H_