blob: 515c6f04b461a386bba188b97c42695acb2cbd76 [file] [log] [blame]
// Copyright 2022 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <zircon/assert.h>
#include <soc/aml-common/aml-audio-regs.h>
// It follows up `S905D2 Datasheet`
// - Page908(EE_AUDIO_MCLK_A_CTRL)
// - Page920(EE_AUDIO_CLK_PDMIN_CTRL0)
// - Page920(EE_AUDIO_CLK_PDMIN_CTRL1)
// and also`A311D Datasheet`
// - Page1174(EE_AUDIO_MCLK_A_CTRL)
// - Page1185(EE_AUDIO_CLK_PDMIN_CTRL0)
// - Page1186(EE_AUDIO_CLK_PDMIN_CTRL1)
uint8_t ToS905D2AndA311DAudioClkSrcSel(ee_audio_mclk_src_t clk_src) {
switch (clk_src) {
case MP0_PLL:
return 0;
case MP1_PLL:
return 1;
case MP2_PLL:
return 2;
case MP3_PLL:
return 3;
case HIFI_PLL:
return 4;
case FCLK_DIV3:
return 5;
case FCLK_DIV4:
return 6;
case GP0_PLL:
return 7;
default:
break;
}
ZX_PANIC("Unsupported clk_src: %d", clk_src);
}
// It follows up `S905D3G Datasheet`
// - Page814(EE_AUDIO_MCLK_A_CTRL)
// - Page823(EE_AUDIO_CLK_PDMIN_CTRL0)
// - Page823(EE_AUDIO_CLK_PDMIN_CTRL1)
uint8_t ToS905D3GAudioClkSrcSel(ee_audio_mclk_src_t clk_src) {
switch (clk_src) {
case MP0_PLL:
return 0;
case MP1_PLL:
return 1;
case MP2_PLL:
return 2;
case MP3_PLL:
return 3;
case HIFI_PLL:
return 4;
case FCLK_DIV3:
return 5;
case FCLK_DIV4:
return 6;
default:
break;
}
ZX_PANIC("Unsupport clk_src: %d", clk_src);
}
// It follows up `A113X2 Datasheet`
// - Page293(EE_AUDIO_MCLK_A_CTRL)
// - Page375(EE_AUDIO2_CLK_PDMIN_CRTL0)
// - Page375(EE_AUDIO2_CLK_PDMIN_CTRL1)
uint8_t ToA5AudioClkSrcSel(ee_audio_mclk_src_t clk_src) {
switch (clk_src) {
case MP0_PLL:
return 0;
case MP1_PLL:
return 1;
case MP2_PLL:
return 2;
case HIFI_PLL:
return 4;
case FCLK_DIV4:
return 6;
default:
break;
}
ZX_PANIC("Unsupport clk_src: %d", clk_src);
}
// It follows up `A113L Datasheet`
// - Page153(EE_AUDIO_MCLK_A_CTRL)
// - Page224(EE_AUDIO2_CLK_PDMIN_CRTL0)
// - Page224(EE_AUDIO2_CLK_PDMIN_CTRL1)
uint8_t ToA1AudioClkSrcSel(ee_audio_mclk_src_t clk_src) {
switch (clk_src) {
case HIFI_PLL:
return 3;
default:
break;
}
ZX_PANIC("Unsupport clk_src: %d", clk_src);
}