soc: intel_s1000: add audio master clock config
Added a SOC level routine to configure master clock outputs if CONFIG_AUDIO is defined. Signed-off-by: Sathish Kuttan <sathish.k.kuttan@intel.com>
This commit is contained in:
parent
8edcbb76bc
commit
66d0898a21
2 changed files with 33 additions and 1 deletions
|
@ -184,6 +184,24 @@ u32_t soc_get_ref_clk_freq(void)
|
||||||
return ref_clk_freq;
|
return ref_clk_freq;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void soc_set_audio_mclk(void)
|
||||||
|
{
|
||||||
|
#if (CONFIG_AUDIO)
|
||||||
|
int mclk;
|
||||||
|
volatile struct soc_mclk_control_regs *mclk_regs =
|
||||||
|
(volatile struct soc_mclk_control_regs *)SOC_MCLK_DIV_CTRL_BASE;
|
||||||
|
|
||||||
|
for (mclk = 0; mclk < SOC_NUM_MCLK_OUTPUTS; mclk++) {
|
||||||
|
/*
|
||||||
|
* set divider to bypass mode which makes MCLK output frequency
|
||||||
|
* to be the same as referece clock frequency
|
||||||
|
*/
|
||||||
|
mclk_regs->mdivxr[mclk] = SOC_MDIVXR_SET_DIVIDER_BYPASS;
|
||||||
|
mclk_regs->mdivctrl |= SOC_MDIVCTRL_MCLK_OUT_EN(mclk);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
static inline void soc_set_dmic_power(void)
|
static inline void soc_set_dmic_power(void)
|
||||||
{
|
{
|
||||||
#if (CONFIG_AUDIO_INTEL_DMIC)
|
#if (CONFIG_AUDIO_INTEL_DMIC)
|
||||||
|
@ -228,6 +246,7 @@ static inline void soc_set_power_and_clock(void)
|
||||||
|
|
||||||
soc_set_dmic_power();
|
soc_set_dmic_power();
|
||||||
soc_set_gna_power();
|
soc_set_gna_power();
|
||||||
|
soc_set_audio_mclk();
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void soc_read_bootstraps(void)
|
static inline void soc_read_bootstraps(void)
|
||||||
|
|
|
@ -99,7 +99,20 @@
|
||||||
#define SSP_SIZE 0x0000200
|
#define SSP_SIZE 0x0000200
|
||||||
#define SSP_BASE(x) (0x00077000 + (x) * SSP_SIZE)
|
#define SSP_BASE(x) (0x00077000 + (x) * SSP_SIZE)
|
||||||
#define SSP_MN_DIV_SIZE (8)
|
#define SSP_MN_DIV_SIZE (8)
|
||||||
#define SSP_MN_DIV_BASE(x) (0x00078D00 + ((x) * SSP_MN_DIV_SIZE))
|
#define SSP_MN_DIV_BASE(x) \
|
||||||
|
(0x00078D00 + ((x) * SSP_MN_DIV_SIZE))
|
||||||
|
|
||||||
|
/* MCLK control */
|
||||||
|
#define SOC_MCLK_DIV_CTRL_BASE 0x78C00
|
||||||
|
#define SOC_NUM_MCLK_OUTPUTS 2
|
||||||
|
#define SOC_MDIVCTRL_MCLK_OUT_EN(mclk) BIT(mclk)
|
||||||
|
#define SOC_MDIVXR_SET_DIVIDER_BYPASS BIT_MASK(12)
|
||||||
|
|
||||||
|
struct soc_mclk_control_regs {
|
||||||
|
u32_t mdivctrl;
|
||||||
|
u32_t reserved[31];
|
||||||
|
u32_t mdivxr[SOC_NUM_MCLK_OUTPUTS];
|
||||||
|
};
|
||||||
|
|
||||||
#define PDM_BASE 0x00010000
|
#define PDM_BASE 0x00010000
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue