Clock and Reset module. More...
|
Data Structures | |
| struct | crm_env_tag |
| CRM driver context structure. More... | |
| struct | clk_config |
| Clock configuration structure. More... | |
Defines | |
| #define | MDM_CONF_0_9 1 |
| This macro shall be set to one if the MDM is supporting confs 8 and 9 and to 0 otherwise. | |
| #define | CRM_CLKCONF_UNDEFINED ((uint8_t)-1) |
| Undefined value for the clock configuration. | |
| #define | CLKOUT0 0x08 |
| Address of output0. | |
| #define | CLKOUT1 0x0A |
| Address of output1. | |
| #define | CLKOUT2 0x0C |
| Address of output2. | |
| #define | CLKOUT3 0x0E |
| Address of output3. | |
| #define | CLKOUT4 0x10 |
| Address of output4. | |
| #define | CLKOUT5 0x06 |
| Address of output5. | |
| #define | CLKOUT6 0x12 |
| Address of output6. | |
| #define | CLKOUTFB 0x14 |
| Address of feedback output. | |
| #define | MMCM_REG1(mmcm, out) |
Address to configure clkreg1 reg for output out of mmcm mmcm note: use KARST_DYNCFGMMC_xxx defined assuming that FPGAA_DYNCFGMMC_xxx have the same values. | |
| #define | MMCM_VCO_MULT(clk_ref_freq, vco_freq) |
Multiplier to apply to clk_ref_freq to get vco_freq. | |
| #define | MMCM_VCO_DIV(vco_freq, target_freq) |
Divider to apply to vco_freq to get target_freq. | |
| #define | MMCM_VCO_TO_NUM_DIV(vco_div) (((vco_div & 0x0FC0) >> 6) + (vco_div & 0x3F)) |
Convert a VCO divider vco_div to its corresponding numeric value. | |
Functions | |
| void | crm_init (void) |
| Initial clock settings (e.g. | |
| uint8_t | crm_get_mac_freq (void) |
| Return the frequency of the MAC core clock in case it would have been adjusted depending on the PHY properties. | |
| uint32_t | crm_get_cpu_freq (void) |
| Return the frequency of the CPU clock. | |
| bool | crm_fe_160m (void) |
| Indicate whether the RF front-end is configured at 160MHz or not. | |
| void | crm_clk_set (uint8_t chan_type) |
| Set the different clocks depending on the chosen channel bandwidth. | |
| void | crm_mdm_reset (void) |
| Reset the MODEM and the AGC. | |
| static int | reg_poll (uint32_t reg, uint32_t val) |
| Poll register until bits are set. | |
| static void | udelay (uint32_t us) |
| Active wait. | |
| static void | crm_mmc_clk_set (uint32_t addr, uint16_t data) |
| Configure one clock source. | |
| static int | crm_clk_conf (uint8_t chan_type) |
| Select clock configuration index. | |
Variables | |
| static struct crm_env_tag | crm_env |
| CRM driver context. | |
| static struct clk_config | clk_config [10] |
| Table of all possible clock configurations. | |
Clock and Reset module.
| #define MMCM_REG1 | ( | mmcm, | |||
| out | ) |
| #define MMCM_VCO_DIV | ( | vco_freq, | |||
| target_freq | ) |
| #define MMCM_VCO_MULT | ( | clk_ref_freq, | |||
| vco_freq | ) |
((((vco_freq/clk_ref_freq) + 1) / 2) << 6 | \
(((vco_freq/clk_ref_freq)) / 2) | \
0x1000)
Multiplier to apply to clk_ref_freq to get vco_freq.
Definition at line 156 of file crm.c.
Referenced by crm_clk_set().
| static int crm_clk_conf | ( | uint8_t | chan_type | ) | [static] |
Select clock configuration index.
| [in] | chan_type | Channel bandwidth |
Definition at line 487 of file crm.c.
References ASSERT_ERR, PHY_CHNL_BW_20, PHY_CHNL_BW_40, PHY_CHNL_BW_80, and phy_vht_supported().
Referenced by crm_clk_set(), and crm_init().
| void crm_clk_set | ( | uint8_t | chan_type | ) |
Set the different clocks depending on the chosen channel bandwidth.
| [in] | chan_type | Channel bandwidth |
Definition at line 552 of file crm.c.
References clk_config::bd_div, crm_env_tag::clk_conf, crm_clk_conf(), crm_env, crm_mmc_clk_set(), clk_config::fe_div, MMCM_VCO_MULT, clk_config::phy_div, reg_poll(), and udelay().
Referenced by phy_hw_set_channel().
| bool crm_fe_160m | ( | void | ) |
Indicate whether the RF front-end is configured at 160MHz or not.
Definition at line 630 of file crm.c.
References crm_env_tag::clk_conf, CRM_CLKCONF_UNDEFINED, crm_env, and clk_config::fe_div.
| uint32_t crm_get_cpu_freq | ( | void | ) |
Return the frequency of the CPU clock.
Definition at line 645 of file crm.c.
References crm_env_tag::cpu_freq, and crm_env.
| uint8_t crm_get_mac_freq | ( | void | ) |
Return the frequency of the MAC core clock in case it would have been adjusted depending on the PHY properties.
Definition at line 640 of file crm.c.
References crm_env, and crm_env_tag::mac_freq.
| void crm_init | ( | void | ) |
Initial clock settings (e.g.
MPIF and MAC core clock value depending on the PHY capabilities)
Definition at line 585 of file crm.c.
References crm_env_tag::clk_conf, crm_env_tag::cpu_freq, crm_clk_conf(), CRM_CLKCONF_UNDEFINED, crm_env, crm_mmc_clk_set(), clk_config::mac, clk_config::mac_config::mac_div, crm_env_tag::mac_freq, and clk_config::mpif.
| void crm_mdm_reset | ( | void | ) |
Reset the MODEM and the AGC.
Definition at line 650 of file crm.c.
References udelay().
Referenced by mdm_init(), mdm_set_channel(), and phy_rc_isr().
| static void crm_mmc_clk_set | ( | uint32_t | addr, | |
| uint16_t | data | |||
| ) | [static] |
Configure one clock source.
| [in] | addr | Address of the register |
| [in] | data | Value to apply |
Definition at line 458 of file crm.c.
References reg_poll().
Referenced by crm_clk_set(), and crm_init().
| static int reg_poll | ( | uint32_t | reg, | |
| uint32_t | val | |||
| ) | [static] |
Poll register until bits are set.
| [in] | reg | Register to poll |
| [in] | val | Bits to wait |
Definition at line 76 of file crm.c.
References D_ERR, D_PHY, dbg, and REG_PL_RD.
Referenced by crm_clk_set(), and crm_mmc_clk_set().
| static void udelay | ( | uint32_t | us | ) | [inline, static] |
Active wait.
| [in] | us | Waiting duration (in us) |
Definition at line 97 of file crm.c.
Referenced by crm_clk_set(), and crm_mdm_reset().
1.6.1