Atmel Software Framework

CPU - PM - Power Manager

The Power Manager (PM) controls the oscillators and PLLs, and generates the clocks and resets in the device.

Modules

 Power Clocks Library
 

Data Structures

struct  pm_freq_param_t
 Input and output parameters when initializing PM clocks using pm_configure_clocks(). More...
 

Macros

#define PM_FREQ_STATUS_FAIL   (-1)
 
#define PM_FREQ_STATUS_OK   (0)
 

Functions

void pm_bod_clear_irq (volatile avr32_pm_t *pm)
 Clears the Brown-Out Detector interrupt flag. More...
 
void pm_bod_disable_irq (volatile avr32_pm_t *pm)
 Disables the Brown-Out Detector interrupt. More...
 
void pm_bod_enable_irq (volatile avr32_pm_t *pm)
 Enables the Brown-Out Detector interrupt. More...
 
unsigned long pm_bod_get_irq_enable_bit (volatile avr32_pm_t *pm)
 Gets the Brown-Out Detector interrupt enable status. More...
 
unsigned long pm_bod_get_irq_status (volatile avr32_pm_t *pm)
 Gets the Brown-Out Detector interrupt flag. More...
 
unsigned long pm_bod_get_level (volatile avr32_pm_t *pm)
 Gets the triggering threshold of the Brown-Out Detector. More...
 
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)
 This function will select all the power manager clocks. More...
 
void pm_cksel_get (volatile avr32_pm_t *pm, unsigned long *p_cksel)
 This function returns the cksel (Clock Select). More...
 
void pm_cksel_set (volatile avr32_pm_t *pm, unsigned long cksel)
 This function set the cksel (Clock Select). More...
 
int pm_configure_clocks (pm_freq_param_t *param)
 Automatically configure the CPU, PBA, PBB, and HSB clocks according to the user wishes. More...
 
void pm_configure_usb_clock (void)
 Automatically configure the USB clock. More...
 
void pm_disable_clk0 (volatile avr32_pm_t *pm)
 This function will disable the oscillator 0. More...
 
void pm_disable_clk1 (volatile avr32_pm_t *pm)
 This function will disable the oscillator 1. More...
 
void pm_disable_clk32 (volatile avr32_pm_t *pm)
 This function will disable the oscillator 32. More...
 
long pm_disable_module (volatile avr32_pm_t *pm, unsigned long module)
 Disable the clock of a module. More...
 
void pm_enable_clk0 (volatile avr32_pm_t *pm, unsigned int startup)
 This function will enable the oscillator 0 to be used with a startup time. More...
 
void pm_enable_clk0_no_wait (volatile avr32_pm_t *pm, unsigned int startup)
 This function will enable the oscillator 0 to be used with no startup time. More...
 
void pm_enable_clk1 (volatile avr32_pm_t *pm, unsigned int startup)
 This function will enable the oscillator 1 to be used with a startup time. More...
 
void pm_enable_clk1_no_wait (volatile avr32_pm_t *pm, unsigned int startup)
 This function will enable the oscillator 1 to be used with no startup time. More...
 
void pm_enable_clk32 (volatile avr32_pm_t *pm, unsigned int startup)
 This function will enable the oscillator 32 to be used with a startup time. More...
 
void pm_enable_clk32_no_wait (volatile avr32_pm_t *pm, unsigned int startup)
 This function will enable the oscillator 32 to be used with no startup time. More...
 
long pm_enable_module (volatile avr32_pm_t *pm, unsigned long module)
 Enable the clock of a module. More...
 
void pm_enable_osc0_crystal (volatile avr32_pm_t *pm, unsigned int fosc0)
 This function will enable the crystal mode of the oscillator 0. More...
 
void pm_enable_osc0_ext_clock (volatile avr32_pm_t *pm)
 This function will enable the external clock mode of the oscillator 0. More...
 
void pm_enable_osc1_crystal (volatile avr32_pm_t *pm, unsigned int fosc1)
 This function will enable the crystal mode of the oscillator 1. More...
 
void pm_enable_osc1_ext_clock (volatile avr32_pm_t *pm)
 This function will enable the external clock mode of the oscillator 1. More...
 
void pm_enable_osc32_crystal (volatile avr32_pm_t *pm)
 This function will enable the crystal mode of the 32-kHz oscillator. More...
 
void pm_enable_osc32_ext_clock (volatile avr32_pm_t *pm)
 This function will enable the external clock mode of the 32-kHz oscillator. More...
 
void pm_gc_disable (volatile avr32_pm_t *pm, unsigned int gc)
 This function will disable a generic clock. More...
 
void pm_gc_enable (volatile avr32_pm_t *pm, unsigned int gc)
 This function will enable a generic clock. More...
 
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)
 This function will setup a generic clock. More...
 
unsigned long pm_get_clock (volatile avr32_pm_t *pm)
 This function returns the power manager main clock. More...
 
static __always_inline unsigned int pm_get_reset_cause (volatile avr32_pm_t *pm)
 Gets the MCU reset cause. More...
 
void pm_pll_disable (volatile avr32_pm_t *pm, unsigned int pll)
 This function will disable a PLL. More...
 
void pm_pll_enable (volatile avr32_pm_t *pm, unsigned int pll)
 This function will enable a PLL. More...
 
unsigned int pm_pll_get_option (volatile avr32_pm_t *pm, unsigned int pll)
 This function will get a PLL option. More...
 
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)
 This function will set a PLL option. More...
 
void pm_pll_setup (volatile avr32_pm_t *pm, unsigned int pll, unsigned int mul, unsigned int div, unsigned int osc, unsigned int lockcount)
 This function will setup a PLL. More...
 
unsigned long pm_read_gplp (volatile avr32_pm_t *pm, unsigned long gplp)
 Read the content of the PM GPLP registers. More...
 
void pm_switch_to_clock (volatile avr32_pm_t *pm, unsigned long clock)
 This function will switch the power manager main clock. More...
 
void pm_switch_to_osc0 (volatile avr32_pm_t *pm, unsigned int fosc0, unsigned int startup)
 Switch main clock to clock Osc0 (crystal mode) More...
 
void pm_wait_for_clk0_ready (volatile avr32_pm_t *pm)
 This function will wait until the Osc0 clock is ready. More...
 
void pm_wait_for_clk1_ready (volatile avr32_pm_t *pm)
 This function will wait until the Osc1 clock is ready. More...
 
void pm_wait_for_clk32_ready (volatile avr32_pm_t *pm)
 This function will wait until the osc32 clock is ready. More...
 
void pm_wait_for_pll0_locked (volatile avr32_pm_t *pm)
 This function will wait for PLL0 locked. More...
 
void pm_wait_for_pll1_locked (volatile avr32_pm_t *pm)
 This function will wait for PLL1 locked. More...
 
void pm_write_gplp (volatile avr32_pm_t *pm, unsigned long gplp, unsigned long value)
 Write into the PM GPLP registers. More...
 

Sleep Functions

static __always_inline void pm_asyn_wake_up_enable (unsigned long awen_mask)
 Enable one or several asynchronous wake-up source. More...
 
static __always_inline void pm_asyn_wake_up_disable (unsigned long awen_mask)
 Disable one or several asynchronous wake-up sources. More...
 
#define SLEEP(mode)   {__asm__ __volatile__ ("sleep "STRINGZ(mode));}
 Sets the MCU in the specified sleep mode. More...
 

#define PM_FREQ_STATUS_FAIL   (-1)

Referenced by pm_configure_clocks().

#define PM_FREQ_STATUS_OK   (0)

Referenced by pm_configure_clocks().

#define SLEEP (   mode)    {__asm__ __volatile__ ("sleep "STRINGZ(mode));}

Sets the MCU in the specified sleep mode.

Parameters
modeSleep mode:
  • AVR32_PM_SMODE_IDLE: Idle;
  • AVR32_PM_SMODE_FROZEN: Frozen;
  • AVR32_PM_SMODE_STANDBY: Standby;
  • AVR32_PM_SMODE_STOP: Stop;
  • AVR32_PM_SMODE_DEEP_STOP: DeepStop;
  • AVR32_PM_SMODE_STATIC: Static.

Referenced by pm_sleep().

static __always_inline void pm_asyn_wake_up_disable ( unsigned long  awen_mask)
static

Disable one or several asynchronous wake-up sources.

Parameters
awen_maskMask of asynchronous wake-up sources (use one of the defines AVR32_PM_AWEN_xxxxWEN_MASK in the part-specific header file under "toolchain folder"/avr32/inc(lude)/avr32/)
static __always_inline void pm_asyn_wake_up_enable ( unsigned long  awen_mask)
static

Enable one or several asynchronous wake-up source.

Parameters
awen_maskMask of asynchronous wake-up sources (use one of the defines AVR32_PM_AWEN_xxxxWEN_MASK in the part-specific header file under "toolchain folder"/avr32/inc(lude)/avr32/)
void pm_bod_clear_irq ( volatile avr32_pm_t *  pm)

Clears the Brown-Out Detector interrupt flag.

Parameters
pmBase address of the Power Manager (i.e. &AVR32_PM).

Referenced by pm_get_reset_cause().

void pm_bod_disable_irq ( volatile avr32_pm_t *  pm)

Disables the Brown-Out Detector interrupt.

Parameters
pmBase address of the Power Manager (i.e. &AVR32_PM).

References cpu_irq_disable, cpu_irq_enable, and cpu_irq_is_enabled.

Referenced by pm_get_reset_cause().

void pm_bod_enable_irq ( volatile avr32_pm_t *  pm)

Enables the Brown-Out Detector interrupt.

Parameters
pmBase address of the Power Manager (i.e. &AVR32_PM).

Referenced by pm_get_reset_cause().

unsigned long pm_bod_get_irq_enable_bit ( volatile avr32_pm_t *  pm)

Gets the Brown-Out Detector interrupt enable status.

Parameters
pmBase address of the Power Manager (i.e. &AVR32_PM).
Return values
0BOD interrupt disabled.
1BOD interrupt enabled.

Referenced by pm_get_reset_cause().

unsigned long pm_bod_get_irq_status ( volatile avr32_pm_t *  pm)

Gets the Brown-Out Detector interrupt flag.

Parameters
pmBase address of the Power Manager (i.e. &AVR32_PM).
Return values
0No BOD interrupt.
1BOD interrupt pending.

Referenced by pm_get_reset_cause().

unsigned long pm_bod_get_level ( volatile avr32_pm_t *  pm)

Gets the triggering threshold of the Brown-Out Detector.

Parameters
pmBase address of the Power Manager (i.e. &AVR32_PM).
Returns
Triggering threshold of the BOD. See the electrical characteristics in the part datasheet for actual voltage levels.

Referenced by pm_get_reset_cause().

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 
)

This function will select all the power manager clocks.

Parameters
pmBase address of the Power Manager (i.e. &AVR32_PM)
pbadivPeripheral Bus A clock divisor enable
pbaselPeripheral Bus A select
pbbdivPeripheral Bus B clock divisor enable
pbbselPeripheral Bus B select
hsbdivHigh Speed Bus clock divisor enable (CPU clock = HSB clock)
hsbselHigh Speed Bus select (CPU clock = HSB clock )

References u_avr32_pm_cksel_t::cksel, and u_avr32_pm_cksel_t::CKSEL.

Referenced by pm_configure_clocks(), and pm_get_reset_cause().

void pm_cksel_get ( volatile avr32_pm_t *  pm,
unsigned long *  p_cksel 
)

This function returns the cksel (Clock Select).

Parameters
pmBase address of the Power Manager (i.e. &AVR32_PM)
p_ckseloutput cksel value

Referenced by pm_get_reset_cause().

void pm_cksel_set ( volatile avr32_pm_t *  pm,
unsigned long  cksel 
)

This function set the cksel (Clock Select).

Parameters
pmBase address of the Power Manager (i.e. &AVR32_PM)
ckselThe cksel value.

Referenced by pm_get_reset_cause().

int pm_configure_clocks ( pm_freq_param_t param)

Automatically configure the CPU, PBA, PBB, and HSB clocks according to the user wishes.

This function needs some parameters stored in a pm_freq_param_t structure:

  • cpu_f and pba_f are the wanted frequencies,
  • osc0_f is the oscillator 0 on-board frequency (e.g. FOSC0),
  • osc0_startup is the oscillator 0 startup time (e.g. OSC0_STARTUP).

The function will then configure the clocks using the following rules:

  • It first try to find a valid PLL frequency (the highest possible value to avoid jitter) in order to satisfy the CPU frequency,
  • It optimizes the configuration depending the various divide stages,
  • Then, the PBA frequency is configured from the CPU freq.
  • Note that HSB and PBB are configured with the same frequency as CPU.
  • Note also that the number of wait states of the flash read accesses is automatically set-up depending the CPU frequency. As a consequence, the application needs the FLASHC driver to compile.

The CPU, HSB and PBA frequencies programmed after configuration are stored back into cpu_f and pba_f.

Parameters
parampointer on the configuration structure.
Return values
PM_FREQ_STATUS_OKMode successfully initialized.
PM_FREQ_STATUS_FAILThe configuration can not be done.

References AVR32_PM_PBA_MAX_FREQ, pm_freq_param_t::cpu_f, flashc_issue_command(), flashc_set_wait_state(), pm_freq_param_t::osc0_f, pm_freq_param_t::osc0_startup, pm_freq_param_t::pba_f, pm_cksel(), PM_FREQ_STATUS_FAIL, PM_FREQ_STATUS_OK, PM_MAX_MUL, pm_pll_enable(), pm_pll_set_option(), pm_pll_setup(), pm_switch_to_clock(), pm_switch_to_osc0(), and pm_wait_for_pll0_locked().

Referenced by pcl_configure_clocks(), and pm_get_reset_cause().

void pm_configure_usb_clock ( void  )

Automatically configure the USB clock.

USB clock is configured to 48MHz, using the PLL1 from the Oscillator0, assuming a 12 MHz crystal is connected to it.

References pm_gc_enable(), pm_gc_setup(), pm_pll_enable(), pm_pll_set_option(), pm_pll_setup(), and pm_wait_for_pll1_locked().

Referenced by pcl_configure_usb_clock(), and pm_get_reset_cause().

void pm_disable_clk0 ( volatile avr32_pm_t *  pm)

This function will disable the oscillator 0.

Parameters
pmBase address of the Power Manager (i.e. &AVR32_PM)

Referenced by pm_get_reset_cause().

void pm_disable_clk1 ( volatile avr32_pm_t *  pm)

This function will disable the oscillator 1.

Parameters
pmBase address of the Power Manager (i.e. &AVR32_PM)

Referenced by pm_get_reset_cause().

void pm_disable_clk32 ( volatile avr32_pm_t *  pm)

This function will disable the oscillator 32.

Parameters
pmBase address of the Power Manager (i.e. &AVR32_PM)

Referenced by pm_get_reset_cause().

long pm_disable_module ( volatile avr32_pm_t *  pm,
unsigned long  module 
)

Disable the clock of a module.

Parameters
pmBase address of the Power Manager (i.e. &AVR32_PM)
moduleThe module to shut down (use one of the defines in the part-specific header file under "toolchain folder"/avr32/inc(lude)/avr32/; depending on the clock domain, look for the sections "CPU clocks", "HSB clocks", "PBx clocks")
Returns
Status.
Return values
0Success.
<0An error occurred.

References PASS.

Referenced by pm_get_reset_cause().

void pm_enable_clk0 ( volatile avr32_pm_t *  pm,
unsigned int  startup 
)

This function will enable the oscillator 0 to be used with a startup time.

Parameters
pmBase address of the Power Manager (i.e. &AVR32_PM)
startupClock 0 startup time. AVR32_PM_OSCCTRL0_STARTUP_x_RCOSC.

References pm_enable_clk0_no_wait(), and pm_wait_for_clk0_ready().

Referenced by pm_get_reset_cause(), and pm_switch_to_osc0().

void pm_enable_clk0_no_wait ( volatile avr32_pm_t *  pm,
unsigned int  startup 
)

This function will enable the oscillator 0 to be used with no startup time.

Parameters
pmBase address of the Power Manager (i.e. &AVR32_PM)
startupClock 0 startup time, for which the function does not wait. AVR32_PM_OSCCTRL0_STARTUP_x_RCOSC.

References u_avr32_pm_oscctrl0_t::oscctrl0, and u_avr32_pm_oscctrl0_t::OSCCTRL0.

Referenced by pm_enable_clk0(), and pm_get_reset_cause().

void pm_enable_clk1 ( volatile avr32_pm_t *  pm,
unsigned int  startup 
)

This function will enable the oscillator 1 to be used with a startup time.

Parameters
pmBase address of the Power Manager (i.e. &AVR32_PM)
startupClock 1 startup time. AVR32_PM_OSCCTRL1_STARTUP_x_RCOSC.

References pm_enable_clk1_no_wait(), and pm_wait_for_clk1_ready().

Referenced by pm_get_reset_cause().

void pm_enable_clk1_no_wait ( volatile avr32_pm_t *  pm,
unsigned int  startup 
)

This function will enable the oscillator 1 to be used with no startup time.

Parameters
pmBase address of the Power Manager (i.e. &AVR32_PM)
startupClock 1 startup time, for which the function does not wait. AVR32_PM_OSCCTRL1_STARTUP_x_RCOSC.

References u_avr32_pm_oscctrl1_t::oscctrl1, and u_avr32_pm_oscctrl1_t::OSCCTRL1.

Referenced by pm_enable_clk1(), and pm_get_reset_cause().

void pm_enable_clk32 ( volatile avr32_pm_t *  pm,
unsigned int  startup 
)

This function will enable the oscillator 32 to be used with a startup time.

Parameters
pmBase address of the Power Manager (i.e. &AVR32_PM)
startupClock 32 kHz startup time. AVR32_PM_OSCCTRL32_STARTUP_x_RCOSC.

References pm_enable_clk32_no_wait(), and pm_wait_for_clk32_ready().

Referenced by pm_get_reset_cause().

void pm_enable_clk32_no_wait ( volatile avr32_pm_t *  pm,
unsigned int  startup 
)

This function will enable the oscillator 32 to be used with no startup time.

Parameters
pmBase address of the Power Manager (i.e. &AVR32_PM)
startupClock 32 kHz startup time, for which the function does not wait. AVR32_PM_OSCCTRL32_STARTUP_x_RCOSC.

References u_avr32_pm_oscctrl32_t::oscctrl32, and u_avr32_pm_oscctrl32_t::OSCCTRL32.

Referenced by pm_enable_clk32(), and pm_get_reset_cause().

long pm_enable_module ( volatile avr32_pm_t *  pm,
unsigned long  module 
)

Enable the clock of a module.

Parameters
pmBase address of the Power Manager (i.e. &AVR32_PM)
moduleThe module to clock (use one of the defines in the part-specific header file under "toolchain folder"/avr32/inc(lude)/avr32/; depending on the clock domain, look for the sections "CPU clocks", "HSB clocks", "PBx clocks")
Returns
Status.
Return values
0Success.
<0An error occurred.

References PASS.

Referenced by pm_get_reset_cause().

void pm_enable_osc0_crystal ( volatile avr32_pm_t *  pm,
unsigned int  fosc0 
)

This function will enable the crystal mode of the oscillator 0.

Parameters
pmBase address of the Power Manager (i.e. &AVR32_PM)
fosc0Oscillator 0 crystal frequency (Hz)

References pm_set_osc0_mode().

Referenced by pm_get_reset_cause(), and pm_switch_to_osc0().

void pm_enable_osc0_ext_clock ( volatile avr32_pm_t *  pm)

This function will enable the external clock mode of the oscillator 0.

Parameters
pmBase address of the Power Manager (i.e. &AVR32_PM)

References pm_set_osc0_mode().

Referenced by pm_get_reset_cause().

void pm_enable_osc1_crystal ( volatile avr32_pm_t *  pm,
unsigned int  fosc1 
)

This function will enable the crystal mode of the oscillator 1.

Parameters
pmBase address of the Power Manager (i.e. &AVR32_PM)
fosc1Oscillator 1 crystal frequency (Hz)

References pm_set_osc1_mode().

Referenced by pm_get_reset_cause().

void pm_enable_osc1_ext_clock ( volatile avr32_pm_t *  pm)

This function will enable the external clock mode of the oscillator 1.

Parameters
pmBase address of the Power Manager (i.e. &AVR32_PM)

References pm_set_osc1_mode().

Referenced by pm_get_reset_cause().

void pm_enable_osc32_crystal ( volatile avr32_pm_t *  pm)

This function will enable the crystal mode of the 32-kHz oscillator.

Parameters
pmBase address of the Power Manager (i.e. &AVR32_PM)

References pm_set_osc32_mode().

Referenced by pm_get_reset_cause().

void pm_enable_osc32_ext_clock ( volatile avr32_pm_t *  pm)

This function will enable the external clock mode of the 32-kHz oscillator.

Parameters
pmBase address of the Power Manager (i.e. &AVR32_PM)

References pm_set_osc32_mode().

Referenced by pm_get_reset_cause().

void pm_gc_disable ( volatile avr32_pm_t *  pm,
unsigned int  gc 
)

This function will disable a generic clock.

Parameters
pmBase address of the Power Manager (i.e. &AVR32_PM)
gcgeneric clock number (0 for gc0...)

Referenced by pm_get_reset_cause().

void pm_gc_enable ( volatile avr32_pm_t *  pm,
unsigned int  gc 
)

This function will enable a generic clock.

Parameters
pmBase address of the Power Manager (i.e. &AVR32_PM)
gcgeneric clock number (0 for gc0...)

Referenced by pm_configure_usb_clock(), and pm_get_reset_cause().

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 
)

This function will setup a generic clock.

Parameters
pmBase address of the Power Manager (i.e. &AVR32_PM)
gcgeneric clock number (0 for gc0...)
osc_or_pllUse OSC (=0) or PLL (=1)
pll_oscSelect Osc0/PLL0 or Osc1/PLL1
divenGeneric clock divisor enable
divGeneric clock divisor

References u_avr32_pm_gcctrl_t::gcctrl, and u_avr32_pm_gcctrl_t::GCCTRL.

Referenced by pm_configure_usb_clock(), and pm_get_reset_cause().

unsigned long pm_get_clock ( volatile avr32_pm_t *  pm)

This function returns the power manager main clock.

Parameters
pmBase address of the Power Manager (i.e. &AVR32_PM)
Return values
Themain clock value.

References u_avr32_pm_mcctrl_t::mcctrl, and u_avr32_pm_mcctrl_t::MCCTRL.

Referenced by pm_get_reset_cause().

void pm_pll_disable ( volatile avr32_pm_t *  pm,
unsigned int  pll 
)

This function will disable a PLL.

Parameters
pmBase address of the Power Manager (i.e. &AVR32_PM)
pllPLL number(0 for PLL0, 1 for PLL1)

Referenced by pm_get_reset_cause().

void pm_pll_enable ( volatile avr32_pm_t *  pm,
unsigned int  pll 
)

This function will enable a PLL.

Parameters
pmBase address of the Power Manager (i.e. &AVR32_PM)
pllPLL number(0 for PLL0, 1 for PLL1)

Referenced by pm_configure_clocks(), pm_configure_usb_clock(), and pm_get_reset_cause().

unsigned int pm_pll_get_option ( volatile avr32_pm_t *  pm,
unsigned int  pll 
)

This function will get a PLL option.

Parameters
pmBase address of the Power Manager (i.e. &AVR32_PM)
pllPLL number(0 for PLL0, 1 for PLL1)
Returns
Option

Referenced by pm_get_reset_cause().

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 
)

This function will set a PLL option.

Parameters
pmBase address of the Power Manager (i.e. &AVR32_PM)
pllPLL number(0 for PLL0, 1 for PLL1)
pll_freqSet to 1 for VCO frequency range 80-180MHz, set to 0 for VCO frequency range 160-240Mhz.
pll_div2Divide the PLL output frequency by 2 (this settings does not change the FVCO value)
pll_wbwdisable1 Disable the Wide-Bandith Mode (Wide-Bandwith mode allow a faster startup time and out-of-lock time). 0 to enable the Wide-Bandith Mode.

References u_avr32_pm_pll_t::pll, and u_avr32_pm_pll_t::PLL.

Referenced by pm_configure_clocks(), pm_configure_usb_clock(), and pm_get_reset_cause().

void pm_pll_setup ( volatile avr32_pm_t *  pm,
unsigned int  pll,
unsigned int  mul,
unsigned int  div,
unsigned int  osc,
unsigned int  lockcount 
)

This function will setup a PLL.

Parameters
pmBase address of the Power Manager (i.e. &AVR32_PM)
pllPLL number(0 for PLL0, 1 for PLL1)
mulPLL MUL in the PLL formula
divPLL DIV in the PLL formula
oscOSC number (0 for osc0, 1 for osc1)
lockcountPLL lock count

References u_avr32_pm_pll_t::pll, and u_avr32_pm_pll_t::PLL.

Referenced by pm_configure_clocks(), pm_configure_usb_clock(), and pm_get_reset_cause().

unsigned long pm_read_gplp ( volatile avr32_pm_t *  pm,
unsigned long  gplp 
)

Read the content of the PM GPLP registers.

Parameters
pmBase address of the Power Manager (i.e. &AVR32_PM)
gplpGPLP register index (0,1,... depending on the number of GPLP registers for a given part)
Returns
The content of the chosen GPLP register.

Referenced by pcl_configure_usb_clock(), and pm_get_reset_cause().

void pm_switch_to_clock ( volatile avr32_pm_t *  pm,
unsigned long  clock 
)

This function will switch the power manager main clock.

Parameters
pmBase address of the Power Manager (i.e. &AVR32_PM)
clockClock to be switched on. AVR32_PM_MCSEL_SLOW for RCOsc, AVR32_PM_MCSEL_OSC0 for Osc0, AVR32_PM_MCSEL_PLL0 for PLL0.

References u_avr32_pm_mcctrl_t::mcctrl, and u_avr32_pm_mcctrl_t::MCCTRL.

Referenced by pm_configure_clocks(), pm_get_reset_cause(), and pm_switch_to_osc0().

void pm_switch_to_osc0 ( volatile avr32_pm_t *  pm,
unsigned int  fosc0,
unsigned int  startup 
)

Switch main clock to clock Osc0 (crystal mode)

Parameters
pmBase address of the Power Manager (i.e. &AVR32_PM)
fosc0Oscillator 0 crystal frequency (Hz)
startupCrystal 0 startup time. AVR32_PM_OSCCTRL0_STARTUP_x_RCOSC.

References AVR32_PM_MCSEL_OSC0, pm_enable_clk0(), pm_enable_osc0_crystal(), and pm_switch_to_clock().

Referenced by pcl_switch_to_osc(), pm_configure_clocks(), and pm_get_reset_cause().

void pm_wait_for_clk0_ready ( volatile avr32_pm_t *  pm)

This function will wait until the Osc0 clock is ready.

Parameters
pmBase address of the Power Manager (i.e. &AVR32_PM)

Referenced by pm_enable_clk0(), and pm_get_reset_cause().

void pm_wait_for_clk1_ready ( volatile avr32_pm_t *  pm)

This function will wait until the Osc1 clock is ready.

Parameters
pmBase address of the Power Manager (i.e. &AVR32_PM)

Referenced by pm_enable_clk1(), and pm_get_reset_cause().

void pm_wait_for_clk32_ready ( volatile avr32_pm_t *  pm)

This function will wait until the osc32 clock is ready.

Parameters
pmBase address of the Power Manager (i.e. &AVR32_PM)

Referenced by pm_enable_clk32(), and pm_get_reset_cause().

void pm_wait_for_pll0_locked ( volatile avr32_pm_t *  pm)

This function will wait for PLL0 locked.

Parameters
pmBase address of the Power Manager (i.e. &AVR32_PM)

Referenced by pm_configure_clocks(), and pm_get_reset_cause().

void pm_wait_for_pll1_locked ( volatile avr32_pm_t *  pm)

This function will wait for PLL1 locked.

Parameters
pmBase address of the Power Manager (i.e. &AVR32_PM)

Referenced by pm_configure_usb_clock(), and pm_get_reset_cause().

void pm_write_gplp ( volatile avr32_pm_t *  pm,
unsigned long  gplp,
unsigned long  value 
)

Write into the PM GPLP registers.

Parameters
pmBase address of the Power Manager (i.e. &AVR32_PM)
gplpGPLP register index (0,1,... depending on the number of GPLP registers for a given part)
valueValue to write

Referenced by pcl_configure_usb_clock(), and pm_get_reset_cause().