/*****************************************************************************
 * Clock Control
 *****************************************************************************/
#ifndef _SANGAM_CLK_CNTL_H_
#define _SANGAM_CLK_CNTL_H_

#if !defined(_DSL_HAL_API_)
#include <asm/avalanche/generic/avalanche_misc.h>
#endif /*--- #if !defined(_DSL_HAL_API_) ---*/

#define CLK_MHZ(x)    ( (x) * 1000000 )

/* The order of ENUMs here should not be altered since
 * the register addresses are derived from the order
 */

typedef enum AVALANCHE_CLKC_ID_tag
{
    CLKC_VBUS   = 0,
    CLKC_MIPS   = 1,
    CLKC_USB    = 2,
    CLKC_SYS    = 3,
    CLKC_ADSLSS = 4,
    CLKC_NUM    = 5  /*--- letzter, nicht wirklich vorhanden ---*/
} AVALANCHE_CLKC_ID_T;


void avalanche_clkc_init(unsigned int afe_clk,unsigned int refclk, unsigned int xtal3in);
int avalanche_clkc_set_freq(AVALANCHE_CLKC_ID_T clk_id, unsigned int output_freq);
unsigned int avalanche_clkc_get_freq(AVALANCHE_CLKC_ID_T clk_id);
#endif
