Nut/OS  5.0.5
API Reference
pm.h
Go to the documentation of this file.
00001 
00037 /* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
00038 
00039 /*This file has been prepared for Doxygen automatic documentation generation.*/
00054 /* Copyright (c) 2009 Atmel Corporation. All rights reserved.
00055  *
00056  * Redistribution and use in source and binary forms, with or without
00057  * modification, are permitted provided that the following conditions are met:
00058  *
00059  * 1. Redistributions of source code must retain the above copyright notice, this
00060  * list of conditions and the following disclaimer.
00061  *
00062  * 2. Redistributions in binary form must reproduce the above copyright notice,
00063  * this list of conditions and the following disclaimer in the documentation
00064  * and/or other materials provided with the distribution.
00065  *
00066  * 3. The name of Atmel may not be used to endorse or promote products derived
00067  * from this software without specific prior written permission.
00068  *
00069  * 4. This software may only be redistributed and used in connection with an Atmel
00070  * AVR product.
00071  *
00072  * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
00073  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
00074  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
00075  * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR
00076  * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
00077  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
00078  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
00079  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
00080  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
00081  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
00082  *
00083  */
00084 
00085 #ifndef _PM_H_
00086 #define _PM_H_
00087 
00088 #include <arch/avr32.h>
00089 #include <avr32/io.h>
00090 #include "preprocessor.h"
00091 
00092 
00103 #define SLEEP(mode)   {__asm__ __volatile__ ("sleep "STRINGZ(mode));}
00104 
00110 extern void pm_enable_osc0_crystal(unsigned int fosc0);
00111 
00112 
00118 extern void pm_enable_clk0(unsigned int startup);
00119 
00120 
00125 extern void pm_disable_clk0(volatile avr32_pm_t *pm);
00126 
00127 
00133 extern void pm_enable_clk0_no_wait(volatile avr32_pm_t *pm, unsigned int startup);
00134 
00135 
00140 extern void pm_wait_for_clk0_ready(volatile avr32_pm_t *pm);
00141 
00142 
00147 extern void pm_enable_osc1_ext_clock(volatile avr32_pm_t *pm);
00148 
00149 
00155 extern void pm_enable_osc1_crystal(volatile avr32_pm_t *pm, unsigned int fosc1);
00156 
00157 
00163 extern void pm_enable_clk1(volatile avr32_pm_t *pm, unsigned int startup);
00164 
00165 
00170 extern void pm_disable_clk1(volatile avr32_pm_t *pm);
00171 
00172 
00178 extern void pm_enable_clk1_no_wait(volatile avr32_pm_t *pm, unsigned int startup);
00179 
00180 
00185 extern void pm_wait_for_clk1_ready(volatile avr32_pm_t *pm);
00186 
00187 
00192 extern void pm_enable_osc32_ext_clock(volatile avr32_pm_t *pm);
00193 
00194 
00199 extern void pm_enable_osc32_crystal(volatile avr32_pm_t *pm);
00200 
00201 
00207 extern void pm_enable_clk32(volatile avr32_pm_t *pm, unsigned int startup);
00208 
00209 
00214 extern void pm_disable_clk32(volatile avr32_pm_t *pm);
00215 
00216 
00222 extern void pm_enable_clk32_no_wait(volatile avr32_pm_t *pm, unsigned int startup);
00223 
00224 
00229 extern void pm_wait_for_clk32_ready(volatile avr32_pm_t *pm);
00230 
00231 
00242 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);
00243 
00244 
00245 
00255 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);
00256 
00257 
00266 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);
00267 
00268 
00275 extern unsigned int pm_pll_get_option(volatile avr32_pm_t *pm, unsigned int pll);
00276 
00277 
00283 extern void pm_pll_enable(volatile avr32_pm_t *pm, unsigned int pll);
00284 
00285 
00291 extern void pm_pll_disable(volatile avr32_pm_t *pm, unsigned int pll);
00292 
00293 
00298 extern void pm_wait_for_pll0_locked(volatile avr32_pm_t *pm);
00299 
00300 
00305 extern void pm_wait_for_pll1_locked(volatile avr32_pm_t *pm);
00306 
00307 
00313 extern void pm_switch_to_clock(unsigned long clock);
00314 
00315 
00322 extern void pm_switch_to_osc0(unsigned int fosc0, unsigned int startup);
00323 
00324 
00329 extern void pm_bod_enable_irq(volatile avr32_pm_t *pm);
00330 
00331 
00336 extern void pm_bod_disable_irq(volatile avr32_pm_t *pm);
00337 
00338 
00343 extern void pm_bod_clear_irq(volatile avr32_pm_t *pm);
00344 
00345 
00353 extern unsigned long pm_bod_get_irq_status(volatile avr32_pm_t *pm);
00354 
00355 
00363 extern unsigned long pm_bod_get_irq_enable_bit(volatile avr32_pm_t *pm);
00364 
00365 
00373 extern unsigned long pm_bod_get_level(volatile avr32_pm_t *pm);
00374 
00375 
00383 extern unsigned long pm_read_gplp(volatile avr32_pm_t *pm, unsigned long gplp);
00384 
00385 
00392 extern void pm_write_gplp(volatile avr32_pm_t *pm, unsigned long gplp, unsigned long value);
00393 
00394 
00406 extern long pm_enable_module(volatile avr32_pm_t *pm, unsigned long module);
00407 
00419 extern long pm_disable_module(volatile avr32_pm_t *pm, unsigned long module);
00420 
00426 extern void pm_configure_usb_clock(void);
00427 
00428 extern void Avr32InitClockTree(void);
00429 
00430 #endif  // _PM_H_