xref: /rk3399_ARM-atf/plat/mediatek/drivers/audio/mt8196/audio_domain.c (revision c52ef2a0e5603c98930e8ce76f389f0fcf23ba02)
1 /*
2  * Copyright (c) 2025, Mediatek Inc. All rights reserved.
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 
7 #include <errno.h>
8 #include <common/debug.h>
9 
10 #include <audio.h>
11 #include <mt_audio_private.h>
12 #include <platform_def.h>
13 
14 #define AUDIO_PWR_ACK_BITS 0xC0000000
15 #define AFE_SE_DOMAIN_SIDEBAND0_VAL 0xCCCCCCCC
16 #define AFE_SE_DOMAIN_SIDEBAND1_VAL 0xCCCCCCCC
17 #define AFE_SE_DOMAIN_SIDEBAND2_VAL 0xCCCCCCCC
18 #define AFE_SE_DOMAIN_SIDEBAND3_VAL 0xCCCCCCCC
19 #define AFE_SE_DOMAIN_SIDEBAND4_VAL 0xCCCCCCCC
20 #define AFE_SE_DOMAIN_SIDEBAND5_VAL 0xCCCCCCCC
21 #define AFE_SE_DOMAIN_SIDEBAND6_VAL 0xCCCCCCCC
22 #define AFE_SE_DOMAIN_SIDEBAND7_VAL 0xCCCCCCCC
23 #define AFE_SE_DOMAIN_SIDEBAND8_VAL 0xCCCCCCCC
24 #define AFE_SE_DOMAIN_SIDEBAND9_VAL 0xCCCCCCCC
25 
set_audio_domain_sidebands(void)26 int32_t set_audio_domain_sidebands(void)
27 {
28 	uint32_t val;
29 
30 	val = mmio_read_32(SPM_AUDIO_PWR_CON);
31 
32 	if ((val & AUDIO_PWR_ACK_BITS) != AUDIO_PWR_ACK_BITS) {
33 		ERROR("%s: %s, pwr_status=0x%x.\n", MODULE_TAG, __func__, val);
34 		return -EIO;
35 	}
36 
37 	mmio_write_32(AFE_SE_DOMAIN_SIDEBAND0, AFE_SE_DOMAIN_SIDEBAND0_VAL);
38 	mmio_write_32(AFE_SE_DOMAIN_SIDEBAND1, AFE_SE_DOMAIN_SIDEBAND1_VAL);
39 	mmio_write_32(AFE_SE_DOMAIN_SIDEBAND2, AFE_SE_DOMAIN_SIDEBAND2_VAL);
40 	mmio_write_32(AFE_SE_DOMAIN_SIDEBAND3, AFE_SE_DOMAIN_SIDEBAND3_VAL);
41 	mmio_write_32(AFE_SE_DOMAIN_SIDEBAND4, AFE_SE_DOMAIN_SIDEBAND4_VAL);
42 	mmio_write_32(AFE_SE_DOMAIN_SIDEBAND5, AFE_SE_DOMAIN_SIDEBAND5_VAL);
43 	mmio_write_32(AFE_SE_DOMAIN_SIDEBAND6, AFE_SE_DOMAIN_SIDEBAND6_VAL);
44 	mmio_write_32(AFE_SE_DOMAIN_SIDEBAND7, AFE_SE_DOMAIN_SIDEBAND7_VAL);
45 	mmio_write_32(AFE_SE_DOMAIN_SIDEBAND8, AFE_SE_DOMAIN_SIDEBAND8_VAL);
46 	mmio_write_32(AFE_SE_DOMAIN_SIDEBAND9, AFE_SE_DOMAIN_SIDEBAND9_VAL);
47 
48 	VERBOSE("%s: %s, SIDEBAND0 0x%x, SIDEBAND1 0x%x, SIDEBAND2 0x%x\n",
49 		MODULE_TAG,
50 		__func__,
51 		mmio_read_32(AFE_SE_DOMAIN_SIDEBAND0_MON),
52 		mmio_read_32(AFE_SE_DOMAIN_SIDEBAND1_MON),
53 		mmio_read_32(AFE_SE_DOMAIN_SIDEBAND2_MON));
54 
55 	return 0;
56 }
57