mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-18 02:38:56 +00:00
83d290c56f
When U-Boot started using SPDX tags we were among the early adopters and there weren't a lot of other examples to borrow from. So we picked the area of the file that usually had a full license text and replaced it with an appropriate SPDX-License-Identifier: entry. Since then, the Linux Kernel has adopted SPDX tags and they place it as the very first line in a file (except where shebangs are used, then it's second line) and with slightly different comment styles than us. In part due to community overlap, in part due to better tag visibility and in part for other minor reasons, switch over to that style. This commit changes all instances where we have a single declared license in the tag as both the before and after are identical in tag contents. There's also a few places where I found we did not have a tag and have introduced one. Signed-off-by: Tom Rini <trini@konsulko.com>
134 lines
3.9 KiB
C
134 lines
3.9 KiB
C
/* SPDX-License-Identifier: GPL-2.0+ */
|
|
/*
|
|
* clock.h
|
|
*
|
|
* clock header
|
|
*
|
|
* Copyright (C) 2011, Texas Instruments Incorporated - http://www.ti.com/
|
|
*/
|
|
|
|
#ifndef _CLOCKS_H_
|
|
#define _CLOCKS_H_
|
|
|
|
#include <asm/arch/clocks_am33xx.h>
|
|
#include <asm/arch/hardware.h>
|
|
|
|
#if defined(CONFIG_TI816X) || defined(CONFIG_TI814X)
|
|
#include <asm/arch/clock_ti81xx.h>
|
|
#endif
|
|
|
|
#define LDELAY 1000000
|
|
|
|
/*CM_<clock_domain>__CLKCTRL */
|
|
#define CD_CLKCTRL_CLKTRCTRL_SHIFT 0
|
|
#define CD_CLKCTRL_CLKTRCTRL_MASK 3
|
|
|
|
#define CD_CLKCTRL_CLKTRCTRL_NO_SLEEP 0
|
|
#define CD_CLKCTRL_CLKTRCTRL_SW_SLEEP 1
|
|
#define CD_CLKCTRL_CLKTRCTRL_SW_WKUP 2
|
|
|
|
/* CM_<clock_domain>_<module>_CLKCTRL */
|
|
#define MODULE_CLKCTRL_MODULEMODE_SHIFT 0
|
|
#define MODULE_CLKCTRL_MODULEMODE_MASK 3
|
|
#define MODULE_CLKCTRL_IDLEST_SHIFT 16
|
|
#define MODULE_CLKCTRL_IDLEST_MASK (3 << 16)
|
|
|
|
#define MODULE_CLKCTRL_MODULEMODE_SW_DISABLE 0
|
|
#define MODULE_CLKCTRL_MODULEMODE_SW_EXPLICIT_EN 2
|
|
|
|
#define MODULE_CLKCTRL_IDLEST_FULLY_FUNCTIONAL 0
|
|
#define MODULE_CLKCTRL_IDLEST_TRANSITIONING 1
|
|
#define MODULE_CLKCTRL_IDLEST_IDLE 2
|
|
#define MODULE_CLKCTRL_IDLEST_DISABLED 3
|
|
|
|
/* CM_CLKMODE_DPLL */
|
|
#define CM_CLKMODE_DPLL_SSC_EN_SHIFT 12
|
|
#define CM_CLKMODE_DPLL_SSC_EN_MASK (1 << 12)
|
|
#define CM_CLKMODE_DPLL_SSC_ACK_MASK (1 << 13)
|
|
#define CM_CLKMODE_DPLL_SSC_DOWNSPREAD_MASK (1 << 14)
|
|
#define CM_CLKMODE_DPLL_SSC_TYPE_MASK (1 << 15)
|
|
#define CM_CLKMODE_DPLL_REGM4XEN_SHIFT 11
|
|
#define CM_CLKMODE_DPLL_REGM4XEN_MASK (1 << 11)
|
|
#define CM_CLKMODE_DPLL_LPMODE_EN_SHIFT 10
|
|
#define CM_CLKMODE_DPLL_LPMODE_EN_MASK (1 << 10)
|
|
#define CM_CLKMODE_DPLL_RELOCK_RAMP_EN_SHIFT 9
|
|
#define CM_CLKMODE_DPLL_RELOCK_RAMP_EN_MASK (1 << 9)
|
|
#define CM_CLKMODE_DPLL_DRIFTGUARD_EN_SHIFT 8
|
|
#define CM_CLKMODE_DPLL_DRIFTGUARD_EN_MASK (1 << 8)
|
|
#define CM_CLKMODE_DPLL_RAMP_RATE_SHIFT 5
|
|
#define CM_CLKMODE_DPLL_RAMP_RATE_MASK (0x7 << 5)
|
|
#define CM_CLKMODE_DPLL_EN_SHIFT 0
|
|
#define CM_CLKMODE_DPLL_EN_MASK (0x7 << 0)
|
|
|
|
#define CM_CLKMODE_DPLL_DPLL_EN_SHIFT 0
|
|
#define CM_CLKMODE_DPLL_DPLL_EN_MASK 7
|
|
|
|
#define DPLL_EN_STOP 1
|
|
#define DPLL_EN_MN_BYPASS 4
|
|
#define DPLL_EN_LOW_POWER_BYPASS 5
|
|
#define DPLL_EN_LOCK 7
|
|
|
|
/* CM_IDLEST_DPLL fields */
|
|
#define ST_DPLL_CLK_MASK 1
|
|
|
|
/* CM_CLKSEL_DPLL */
|
|
#define CM_CLKSEL_DPLL_M_SHIFT 8
|
|
#define CM_CLKSEL_DPLL_M_MASK (0x7FF << 8)
|
|
#define CM_CLKSEL_DPLL_N_SHIFT 0
|
|
#define CM_CLKSEL_DPLL_N_MASK 0x7F
|
|
|
|
struct dpll_params {
|
|
u32 m;
|
|
u32 n;
|
|
s8 m2;
|
|
s8 m3;
|
|
s8 m4;
|
|
s8 m5;
|
|
s8 m6;
|
|
};
|
|
|
|
struct dpll_regs {
|
|
u32 cm_clkmode_dpll;
|
|
u32 cm_idlest_dpll;
|
|
u32 cm_autoidle_dpll;
|
|
u32 cm_clksel_dpll;
|
|
u32 cm_div_m2_dpll;
|
|
u32 cm_div_m3_dpll;
|
|
u32 cm_div_m4_dpll;
|
|
u32 cm_div_m5_dpll;
|
|
u32 cm_div_m6_dpll;
|
|
};
|
|
|
|
extern const struct dpll_regs dpll_mpu_regs;
|
|
extern const struct dpll_regs dpll_core_regs;
|
|
extern const struct dpll_regs dpll_per_regs;
|
|
extern const struct dpll_regs dpll_ddr_regs;
|
|
extern const struct dpll_regs dpll_disp_regs;
|
|
extern const struct dpll_params dpll_mpu_opp[NUM_CRYSTAL_FREQ][NUM_OPPS];
|
|
extern const struct dpll_params dpll_core_1000MHz[NUM_CRYSTAL_FREQ];
|
|
extern const struct dpll_params dpll_per_192MHz[NUM_CRYSTAL_FREQ];
|
|
extern const struct dpll_params dpll_ddr2_266MHz[NUM_CRYSTAL_FREQ];
|
|
extern const struct dpll_params dpll_ddr3_303MHz[NUM_CRYSTAL_FREQ];
|
|
extern const struct dpll_params dpll_ddr3_400MHz[NUM_CRYSTAL_FREQ];
|
|
|
|
extern struct cm_wkuppll *const cmwkup;
|
|
|
|
const struct dpll_params *get_dpll_mpu_params(void);
|
|
const struct dpll_params *get_dpll_core_params(void);
|
|
const struct dpll_params *get_dpll_per_params(void);
|
|
const struct dpll_params *get_dpll_ddr_params(void);
|
|
void scale_vcores(void);
|
|
void do_setup_dpll(const struct dpll_regs *, const struct dpll_params *);
|
|
void prcm_init(void);
|
|
void enable_basic_clocks(void);
|
|
|
|
void rtc_only_update_board_type(u32 btype);
|
|
u32 rtc_only_get_board_type(void);
|
|
void rtc_only_prcm_init(void);
|
|
void rtc_only_enable_basic_clocks(void);
|
|
|
|
void do_enable_clocks(u32 *const *, u32 *const *, u8);
|
|
void do_disable_clocks(u32 *const *, u32 *const *, u8);
|
|
|
|
void set_mpu_spreadspectrum(int permille);
|
|
#endif
|