Files
kunlun/driver/inc/clk.h
2024-09-28 14:24:04 +08:00

87 lines
2.4 KiB
C

/****************************************************************************
Copyright(c) 2019 by Aerospace C.Power (Chongqing) Microelectronics. ALL RIGHTS RESERVED.
This Information is proprietary to Aerospace C.Power (Chongqing) Microelectronics and MAY NOT
be copied by any method or incorporated into another program without
the express written consent of Aerospace C.Power. This Information or any portion
thereof remains the property of Aerospace C.Power. The Information contained herein
is believed to be accurate and Aerospace C.Power assumes no responsibility or
liability for its use in any way and conveys no license or title under
any patent or copyright and makes no representation or warranty that this
Information is free from patent or copyright infringement.
****************************************************************************/
#ifndef _CLK_H
#define _CLK_H
#if HW_PLATFORM > HW_PLATFORM_SIMU
#include "clk_hw.h"
#else
typedef enum {
CPU_FREQ_25M = 0,
CPU_FREQ_75M,
CPU_FREQ_150M,
CPU_FREQ_160M,
CPU_FREQ_170M,
CPU_FREQ_180M,
CPU_FREQ_200M,
CPU_FREQ_MAX,
} CPU_FREQ;
#endif
extern uint32_t g_cpu_freq;
int clk_core_freq_set(uint32_t freq);
uint32_t clk_core_freq_get();
void clk_i2s_dev_set(uint32_t div, uint32_t m, uint32_t n);
void clk_core_freq_slip_25m_set();
void clk_core_freq_slip_150m_set();
uint32_t clk_pwm_src_freq_get(void);
void clk_pwm_src_freq_set(uint32_t frq);
/**
* @brief clk_core_init() - set clock source and frequency division coefficient.
* @return none.
*/
void clk_core_init(void);
/* Clock source type */
#define CLK_TYPE_XTL 1
#define CLK_TYPE_APB 2
#define CLK_TYPE_MPLL 3
#define CLK_TYPE_WPHY_FCLK 4
#define CLK_TYPE_PLC_ADC 5
#define CLK_TYPE_PLC_DAC 6
#define CLK_TYPE_TPID 7
#define CLK_TYPE_METER 8
#define CLK_TYPE_AHB 9
#define CLK_TYPE_PLC_50 10
#define CLK_TYPE_PLC_75 11
#define CLK_TYPE_PLC_150 12
/* Frequency division coefficient */
#define CLK_DIV1 0x0
#define CLK_DIV2 0x1
#define CLK_DIV4 0x3
#define CLK_DIV8 0x7
#define CLK_DIV16 0xF
/*
* Type : 1-XTL, 2-APB, 3-MPLL, 4-WPHY_FCLK, 5-PLC_ADC, 6-PLC_DAC, 7-TPID,
* 8-METER, 9-AHB, 10-PLC_50, 11-PLC_75, 12-PLC_150.
* div : 0x0 - DIV1, 0x1 - DIV2, 0x3 - DIV4, 0x7 - DIV8, 0xF - DIV16.
* gpio : gpio to output the selected clock.
*/
uint32_t clk_debug_output_set(uint32_t type, uint32_t div, uint32_t gpio);
#endif //_CLK_H