Path: blob/master/sound/soc/mediatek/mt8195/mt8195-afe-clk.h
26488 views
/* SPDX-License-Identifier: GPL-2.0 */1/*2* mt8195-afe-clk.h -- Mediatek 8195 afe clock ctrl definition3*4* Copyright (c) 2021 MediaTek Inc.5* Author: Bicycle Tsai <[email protected]>6* Trevor Wu <[email protected]>7*/89#ifndef _MT8195_AFE_CLK_H_10#define _MT8195_AFE_CLK_H_1112enum {13/* xtal */14MT8195_CLK_XTAL_26M,15/* divider */16MT8195_CLK_TOP_APLL1,17MT8195_CLK_TOP_APLL2,18MT8195_CLK_TOP_APLL12_DIV0,19MT8195_CLK_TOP_APLL12_DIV1,20MT8195_CLK_TOP_APLL12_DIV2,21MT8195_CLK_TOP_APLL12_DIV3,22MT8195_CLK_TOP_APLL12_DIV9,23/* mux */24MT8195_CLK_TOP_A1SYS_HP_SEL,25MT8195_CLK_TOP_AUD_INTBUS_SEL,26MT8195_CLK_TOP_AUDIO_H_SEL,27MT8195_CLK_TOP_AUDIO_LOCAL_BUS_SEL,28MT8195_CLK_TOP_DPTX_M_SEL,29MT8195_CLK_TOP_I2SO1_M_SEL,30MT8195_CLK_TOP_I2SO2_M_SEL,31MT8195_CLK_TOP_I2SI1_M_SEL,32MT8195_CLK_TOP_I2SI2_M_SEL,33/* clock gate */34MT8195_CLK_INFRA_AO_AUDIO_26M_B,35MT8195_CLK_SCP_ADSP_AUDIODSP,36MT8195_CLK_AUD_AFE,37MT8195_CLK_AUD_APLL1_TUNER,38MT8195_CLK_AUD_APLL2_TUNER,39MT8195_CLK_AUD_APLL,40MT8195_CLK_AUD_APLL2,41MT8195_CLK_AUD_DAC,42MT8195_CLK_AUD_ADC,43MT8195_CLK_AUD_DAC_HIRES,44MT8195_CLK_AUD_A1SYS_HP,45MT8195_CLK_AUD_ADC_HIRES,46MT8195_CLK_AUD_ADDA6_ADC,47MT8195_CLK_AUD_ADDA6_ADC_HIRES,48MT8195_CLK_AUD_I2SIN,49MT8195_CLK_AUD_TDM_IN,50MT8195_CLK_AUD_I2S_OUT,51MT8195_CLK_AUD_TDM_OUT,52MT8195_CLK_AUD_HDMI_OUT,53MT8195_CLK_AUD_ASRC11,54MT8195_CLK_AUD_ASRC12,55MT8195_CLK_AUD_A1SYS,56MT8195_CLK_AUD_A2SYS,57MT8195_CLK_AUD_PCMIF,58MT8195_CLK_AUD_MEMIF_UL1,59MT8195_CLK_AUD_MEMIF_UL2,60MT8195_CLK_AUD_MEMIF_UL3,61MT8195_CLK_AUD_MEMIF_UL4,62MT8195_CLK_AUD_MEMIF_UL5,63MT8195_CLK_AUD_MEMIF_UL6,64MT8195_CLK_AUD_MEMIF_UL8,65MT8195_CLK_AUD_MEMIF_UL9,66MT8195_CLK_AUD_MEMIF_UL10,67MT8195_CLK_AUD_MEMIF_DL2,68MT8195_CLK_AUD_MEMIF_DL3,69MT8195_CLK_AUD_MEMIF_DL6,70MT8195_CLK_AUD_MEMIF_DL7,71MT8195_CLK_AUD_MEMIF_DL8,72MT8195_CLK_AUD_MEMIF_DL10,73MT8195_CLK_AUD_MEMIF_DL11,74MT8195_CLK_NUM,75};7677enum {78MT8195_MCK_SEL_26M,79MT8195_MCK_SEL_APLL1,80MT8195_MCK_SEL_APLL2,81MT8195_MCK_SEL_APLL3,82MT8195_MCK_SEL_APLL4,83MT8195_MCK_SEL_APLL5,84MT8195_MCK_SEL_HDMIRX_APLL,85MT8195_MCK_SEL_NUM,86};8788enum {89MT8195_AUD_PLL1,90MT8195_AUD_PLL2,91MT8195_AUD_PLL3,92MT8195_AUD_PLL4,93MT8195_AUD_PLL5,94MT8195_AUD_PLL_NUM,95};9697struct mtk_base_afe;9899int mt8195_afe_get_mclk_source_clk_id(int sel);100int mt8195_afe_get_mclk_source_rate(struct mtk_base_afe *afe, int apll);101int mt8195_afe_get_default_mclk_source_by_rate(int rate);102int mt8195_afe_init_clock(struct mtk_base_afe *afe);103int mt8195_afe_enable_clk(struct mtk_base_afe *afe, struct clk *clk);104void mt8195_afe_disable_clk(struct mtk_base_afe *afe, struct clk *clk);105int mt8195_afe_prepare_clk(struct mtk_base_afe *afe, struct clk *clk);106void mt8195_afe_unprepare_clk(struct mtk_base_afe *afe, struct clk *clk);107int mt8195_afe_enable_clk_atomic(struct mtk_base_afe *afe, struct clk *clk);108void mt8195_afe_disable_clk_atomic(struct mtk_base_afe *afe, struct clk *clk);109int mt8195_afe_set_clk_rate(struct mtk_base_afe *afe, struct clk *clk,110unsigned int rate);111int mt8195_afe_set_clk_parent(struct mtk_base_afe *afe, struct clk *clk,112struct clk *parent);113int mt8195_afe_enable_main_clock(struct mtk_base_afe *afe);114int mt8195_afe_disable_main_clock(struct mtk_base_afe *afe);115int mt8195_afe_enable_reg_rw_clk(struct mtk_base_afe *afe);116int mt8195_afe_disable_reg_rw_clk(struct mtk_base_afe *afe);117118#endif119120121