coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
clock.c File Reference
#include <assert.h>
#include <commonlib/helpers.h>
#include <device/mmio.h>
#include <soc/clock.h>
#include <types.h>
Include dependency graph for clock.c:

Go to the source code of this file.

Functions

static enum cb_err clock_configure_gpll0 (void)
 
void clock_configure_qspi (uint32_t hz)
 
void clock_enable_qup (int qup)
 
void clock_configure_sdcc1 (uint32_t hz)
 
void clock_configure_sdcc2 (uint32_t hz)
 
void clock_configure_dfsr (int qup)
 
static enum cb_err pll_init_and_set (struct sc7280_apss_clock *apss, u32 l_val)
 
enum cb_err clock_enable_gdsc (enum clk_gdsc gdsc_type)
 
enum cb_err mdss_clock_configure (enum clk_mdss clk_type, uint32_t hz, uint32_t source, uint32_t divider, uint32_t m, uint32_t n, uint32_t d_2)
 
enum cb_err mdss_clock_enable (enum clk_mdss clk_type)
 
enum cb_err clock_enable_pcie (enum clk_pcie clk_type)
 
enum cb_err clock_configure_mux (enum clk_pcie clk_type, u32 src_type)
 
static void speed_up_boot_cpu (void)
 
void clock_init (void)
 

Variables

static struct clock_freq_config qspi_core_cfg []
 
static struct clock_freq_config qupv3_wrap_cfg []
 
static struct clock_freq_config sdcc1_core_cfg []
 
static struct clock_freq_config sdcc2_core_cfg []
 
static struct pcie pcie_cfg []
 
static struct clock_freq_config mdss_mdp_cfg []
 
static struct clock_rcgmdss_clock [MDSS_CLK_COUNT]
 
static struct clock_rcg_mndmdss_clock_mnd [MDSS_CLK_COUNT]
 
static u32mdss_cbcr [MDSS_CLK_COUNT]
 
static u32gdsc [MAX_GDSC]
 

Function Documentation

◆ clock_configure_dfsr()

void clock_configure_dfsr ( int  qup)

Definition at line 335 of file clock.c.

References ARRAY_SIZE, clock_configure_dfsr_table(), and qupv3_wrap_cfg.

Here is the call graph for this function:

◆ clock_configure_gpll0()

static enum cb_err clock_configure_gpll0 ( void  )
static

Definition at line 245 of file clock.c.

References gcc, mdss, MDSS_CORE_GDSC, and PCIE_1_GDSC.

Referenced by clock_init().

Here is the caller graph for this function:

◆ clock_configure_mux()

enum cb_err clock_configure_mux ( enum clk_pcie  clk_type,
u32  src_type 
)

Definition at line 335 of file clock.c.

◆ clock_configure_qspi()

void clock_configure_qspi ( uint32_t  hz)

Definition at line 264 of file clock.c.

References ARRAY_SIZE, clock_configure(), clock_enable(), gcc, and qspi_core_cfg.

Referenced by quadspi_init().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ clock_configure_sdcc1()

◆ clock_configure_sdcc2()

◆ clock_enable_gdsc()

enum cb_err clock_enable_gdsc ( enum clk_gdsc  gdsc_type)

Definition at line 335 of file clock.c.

◆ clock_enable_pcie()

enum cb_err clock_enable_pcie ( enum clk_pcie  clk_type)

Definition at line 335 of file clock.c.

◆ clock_enable_qup()

void clock_enable_qup ( int  qup)

Definition at line 273 of file clock.c.

References qupv3_clock::cbcr, clock_enable_vote(), gcc, QUP_WRAP1_S0, QUP_WRAP1_S6, QUPV3_WRAP0_CLK_ENA_S, QUPV3_WRAP1_CLK_ENA_1_S, QUPV3_WRAP1_CLK_ENA_S, and s.

Here is the call graph for this function:

◆ clock_init()

◆ mdss_clock_configure()

enum cb_err mdss_clock_configure ( enum clk_mdss  clk_type,
uint32_t  hz,
uint32_t  source,
uint32_t  divider,
uint32_t  m,
uint32_t  n,
uint32_t  d_2 
)

Definition at line 335 of file clock.c.

◆ mdss_clock_enable()

enum cb_err mdss_clock_enable ( enum clk_mdss  clk_type)

Definition at line 335 of file clock.c.

◆ pll_init_and_set()

static enum cb_err pll_init_and_set ( struct sc7280_apss_clock apss,
u32  l_val 
)
static

Definition at line 335 of file clock.c.

Referenced by speed_up_boot_cpu().

Here is the caller graph for this function:

◆ speed_up_boot_cpu()

static void speed_up_boot_cpu ( void  )
static

Definition at line 473 of file clock.c.

References apss_l3, apss_silver, BIOS_DEBUG, L_VAL_1190P4MHz, L_VAL_1516P8MHz, pll_init_and_set(), and printk.

Referenced by clock_init().

Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ gdsc

u32* gdsc[MAX_GDSC]
static
Initial value:
= {
[PCIE_1_GDSC] = &gcc->pcie_1.gdscr,
[MDSS_CORE_GDSC] = &mdss->core_gdsc,
}
static struct qcs405_gcc *const gcc
Definition: clock.h:165
static struct sc7180_disp_cc *const mdss
Definition: clock.h:190
@ PCIE_1_GDSC
Definition: clock.h:296
@ MDSS_CORE_GDSC
Definition: clock.h:295

Definition at line 245 of file clock.c.

◆ mdss_cbcr

u32* mdss_cbcr[MDSS_CLK_COUNT]
static
Initial value:
= {
[GCC_DISP_AHB] = &gcc->disp_ahb_cbcr,
[GCC_DISP_HF_AXI] = &gcc->disp_hf_axi_cbcr,
[GCC_DISP_SF_AXI] = &gcc->disp_sf_axi_cbcr,
[GCC_EDP_CLKREF_EN] = &gcc->edp_clkref_en,
[MDSS_CLK_MDP] = &mdss->mdp_cbcr,
[MDSS_CLK_VSYNC] = &mdss->vsync_cbcr,
[MDSS_CLK_AHB] = &mdss->ahb_cbcr,
[MDSS_CLK_EDP_PIXEL] = &mdss->edp_pixel_cbcr,
[MDSS_CLK_EDP_LINK] = &mdss->edp_link_cbcr,
[MDSS_CLK_EDP_LINK_INTF] = &mdss->edp_link_intf_cbcr,
[MDSS_CLK_EDP_AUX] = &mdss->edp_aux_cbcr,
}
@ MDSS_CLK_ESC0
Definition: clock.h:124
@ MDSS_CLK_BYTE0
Definition: clock.h:126
@ MDSS_CLK_BYTE0_INTF
Definition: clock.h:127
@ MDSS_CLK_PCLK0
Definition: clock.h:125
@ MDSS_CLK_VSYNC
Definition: clock.h:307
@ MDSS_CLK_AHB
Definition: clock.h:311
@ GCC_EDP_CLKREF_EN
Definition: clock.h:304
@ MDSS_CLK_EDP_AUX
Definition: clock.h:315
@ MDSS_CLK_EDP_LINK_INTF
Definition: clock.h:314
@ GCC_DISP_HF_AXI
Definition: clock.h:302
@ MDSS_CLK_EDP_LINK
Definition: clock.h:313
@ GCC_DISP_SF_AXI
Definition: clock.h:303
@ MDSS_CLK_EDP_PIXEL
Definition: clock.h:312
@ MDSS_CLK_MDP
Definition: clock.h:306
@ GCC_DISP_AHB
Definition: clock.h:301
u32 byte0_cbcr
Definition: clock.h:108
u32 esc0_cbcr
Definition: clock.h:111
u32 pclk0_cbcr
Definition: clock.h:106
u32 byte0_intf_cbcr
Definition: clock.h:109

Definition at line 227 of file clock.c.

◆ mdss_clock

Initial value:
= {
[MDSS_CLK_MDP] = &mdss->mdp,
[MDSS_CLK_VSYNC] = &mdss->vsync,
[MDSS_CLK_AHB] = &mdss->mdss_ahb,
[MDSS_CLK_EDP_LINK] = &mdss->edp_link,
[MDSS_CLK_EDP_LINK_INTF] = &mdss->edp_link,
[MDSS_CLK_EDP_AUX] = &mdss->edp_aux,
}
struct clock_rcg_mnd byte0
Definition: clock.h:115
struct clock_rcg_mnd esc0
Definition: clock.h:117

Definition at line 210 of file clock.c.

◆ mdss_clock_mnd

struct clock_rcg_mnd* mdss_clock_mnd[MDSS_CLK_COUNT]
static
Initial value:
= {
[MDSS_CLK_EDP_PIXEL] = &mdss->edp_pixel,
}
struct clock_rcg_mnd pclk0
Definition: clock.h:113

Definition at line 222 of file clock.c.

◆ mdss_mdp_cfg

struct clock_freq_config mdss_mdp_cfg[]
static
Initial value:
= {
{
.hz = 200 * MHz,
.div = QCOM_CLOCK_DIV(3),
},
{
.hz = 300 * MHz,
.div = QCOM_CLOCK_DIV(2),
},
{
.hz = 400 * MHz,
.div = QCOM_CLOCK_DIV(1.5),
},
}
#define MHz
Definition: helpers.h:80
#define QCOM_CLOCK_DIV(div)
Definition: clock_common.h:6
@ SRC_GCC_DISP_GPLL0_CLK
Definition: clock.h:27

Definition at line 1 of file clock.c.

◆ pcie_cfg

struct pcie pcie_cfg[]
static

Definition at line 1 of file clock.c.

◆ qspi_core_cfg

struct clock_freq_config qspi_core_cfg[]
static
Initial value:
= {
{
.hz = SRC_XO_HZ,
.div = QCOM_CLOCK_DIV(1),
},
{
.hz = 100 * MHz,
.div = QCOM_CLOCK_DIV(6),
},
{
.hz = 150 * MHz,
.div = QCOM_CLOCK_DIV(4),
},
{
.hz = 200 * MHz,
.div = QCOM_CLOCK_DIV(3),
},
{
.hz = 400 * MHz,
.div = QCOM_CLOCK_DIV(1.5),
},
}
#define SRC_XO_19_2MHZ
Definition: clock.h:10
@ SRC_GPLL0_MAIN_600MHZ
Definition: clock.h:30
#define SRC_XO_HZ
Definition: clock.h:10

Definition at line 1 of file clock.c.

Referenced by clock_configure_qspi().

◆ qupv3_wrap_cfg

struct clock_freq_config qupv3_wrap_cfg[]
static

Definition at line 1 of file clock.c.

Referenced by clock_configure_dfsr().

◆ sdcc1_core_cfg

struct clock_freq_config sdcc1_core_cfg[]
static
Initial value:
= {
{
.hz = 100 * MHz,
.div = QCOM_CLOCK_DIV(3),
},
{
.hz = 192 * MHz,
.div = QCOM_CLOCK_DIV(2),
},
{
.hz = 384 * MHz,
.div = QCOM_CLOCK_DIV(1),
},
}
@ SRC_GPLL0_EVEN_300MHZ
Definition: clock.h:31
@ SRC_GPLL10_MAIN_384MHZ
Definition: clock.h:28

Definition at line 1 of file clock.c.

Referenced by clock_configure_sdcc1().

◆ sdcc2_core_cfg

struct clock_freq_config sdcc2_core_cfg[]
static
Initial value:
= {
{
.hz = 50 * MHz,
.div = QCOM_CLOCK_DIV(6),
},
{
.hz = 202 * MHz,
.div = QCOM_CLOCK_DIV(4),
},
}
@ SRC_GPLL9_MAIN_808MHZ
Definition: clock.h:26

Definition at line 1 of file clock.c.

Referenced by clock_configure_sdcc2().