1 /* SPDX-License-Identifier: GPL-2.0 */
6 /* Clock ID for Primary I2S IBIT */
7 #define Q6PRM_LPASS_CLK_ID_PRI_MI2S_IBIT 0x100
8 /* Clock ID for Primary I2S EBIT */
9 #define Q6PRM_LPASS_CLK_ID_PRI_MI2S_EBIT 0x101
10 /* Clock ID for Secondary I2S IBIT */
11 #define Q6PRM_LPASS_CLK_ID_SEC_MI2S_IBIT 0x102
12 /* Clock ID for Secondary I2S EBIT */
13 #define Q6PRM_LPASS_CLK_ID_SEC_MI2S_EBIT 0x103
14 /* Clock ID for Tertiary I2S IBIT */
15 #define Q6PRM_LPASS_CLK_ID_TER_MI2S_IBIT 0x104
16 /* Clock ID for Tertiary I2S EBIT */
17 #define Q6PRM_LPASS_CLK_ID_TER_MI2S_EBIT 0x105
18 /* Clock ID for Quartnery I2S IBIT */
19 #define Q6PRM_LPASS_CLK_ID_QUAD_MI2S_IBIT 0x106
20 /* Clock ID for Quartnery I2S EBIT */
21 #define Q6PRM_LPASS_CLK_ID_QUAD_MI2S_EBIT 0x107
22 /* Clock ID for Speaker I2S IBIT */
23 #define Q6PRM_LPASS_CLK_ID_SPEAKER_I2S_IBIT 0x108
24 /* Clock ID for Speaker I2S EBIT */
25 #define Q6PRM_LPASS_CLK_ID_SPEAKER_I2S_EBIT 0x109
26 /* Clock ID for Speaker I2S OSR */
27 #define Q6PRM_LPASS_CLK_ID_SPEAKER_I2S_OSR 0x10A
29 /* Clock ID for QUINARY I2S IBIT */
30 #define Q6PRM_LPASS_CLK_ID_QUI_MI2S_IBIT 0x10B
31 /* Clock ID for QUINARY I2S EBIT */
32 #define Q6PRM_LPASS_CLK_ID_QUI_MI2S_EBIT 0x10C
33 /* Clock ID for SENARY I2S IBIT */
34 #define Q6PRM_LPASS_CLK_ID_SEN_MI2S_IBIT 0x10D
35 /* Clock ID for SENARY I2S EBIT */
36 #define Q6PRM_LPASS_CLK_ID_SEN_MI2S_EBIT 0x10E
37 /* Clock ID for INT0 I2S IBIT */
38 #define Q6PRM_LPASS_CLK_ID_INT0_MI2S_IBIT 0x10F
39 /* Clock ID for INT1 I2S IBIT */
40 #define Q6PRM_LPASS_CLK_ID_INT1_MI2S_IBIT 0x110
41 /* Clock ID for INT2 I2S IBIT */
42 #define Q6PRM_LPASS_CLK_ID_INT2_MI2S_IBIT 0x111
43 /* Clock ID for INT3 I2S IBIT */
44 #define Q6PRM_LPASS_CLK_ID_INT3_MI2S_IBIT 0x112
45 /* Clock ID for INT4 I2S IBIT */
46 #define Q6PRM_LPASS_CLK_ID_INT4_MI2S_IBIT 0x113
47 /* Clock ID for INT5 I2S IBIT */
48 #define Q6PRM_LPASS_CLK_ID_INT5_MI2S_IBIT 0x114
49 /* Clock ID for INT6 I2S IBIT */
50 #define Q6PRM_LPASS_CLK_ID_INT6_MI2S_IBIT 0x115
52 /* Clock ID for QUINARY MI2S OSR CLK */
53 #define Q6PRM_LPASS_CLK_ID_QUI_MI2S_OSR 0x116
55 #define Q6PRM_LPASS_CLK_ID_WSA_CORE_MCLK 0x305
56 #define Q6PRM_LPASS_CLK_ID_WSA_CORE_NPL_MCLK 0x306
58 #define Q6PRM_LPASS_CLK_ID_VA_CORE_MCLK 0x307
59 #define Q6PRM_LPASS_CLK_ID_VA_CORE_2X_MCLK 0x308
61 #define Q6PRM_LPASS_CLK_ID_TX_CORE_MCLK 0x30c
62 #define Q6PRM_LPASS_CLK_ID_TX_CORE_NPL_MCLK 0x30d
64 #define Q6PRM_LPASS_CLK_ID_RX_CORE_MCLK 0x30e
65 #define Q6PRM_LPASS_CLK_ID_RX_CORE_NPL_MCLK 0x30f
67 /* Clock ID for MCLK for WSA2 core */
68 #define Q6PRM_LPASS_CLK_ID_WSA2_CORE_MCLK 0x310
69 /* Clock ID for NPL MCLK for WSA2 core */
70 #define Q6PRM_LPASS_CLK_ID_WSA2_CORE_2X_MCLK 0x311
71 /* Clock ID for RX Core TX MCLK */
72 #define Q6PRM_LPASS_CLK_ID_RX_CORE_TX_MCLK 0x312
73 /* Clock ID for RX CORE TX 2X MCLK */
74 #define Q6PRM_LPASS_CLK_ID_RX_CORE_TX_2X_MCLK 0x313
75 /* Clock ID for WSA core TX MCLK */
76 #define Q6PRM_LPASS_CLK_ID_WSA_CORE_TX_MCLK 0x314
77 /* Clock ID for WSA core TX 2X MCLK */
78 #define Q6PRM_LPASS_CLK_ID_WSA_CORE_TX_2X_MCLK 0x315
79 /* Clock ID for WSA2 core TX MCLK */
80 #define Q6PRM_LPASS_CLK_ID_WSA2_CORE_TX_MCLK 0x316
81 /* Clock ID for WSA2 core TX 2X MCLK */
82 #define Q6PRM_LPASS_CLK_ID_WSA2_CORE_TX_2X_MCLK 0x317
83 /* Clock ID for RX CORE MCLK2 2X MCLK */
84 #define Q6PRM_LPASS_CLK_ID_RX_CORE_MCLK2_2X_MCLK 0x318
86 #define Q6PRM_LPASS_CLK_SRC_INTERNAL 1
87 #define Q6PRM_LPASS_CLK_ROOT_DEFAULT 0
88 #define Q6PRM_HW_CORE_ID_LPASS 1
89 #define Q6PRM_HW_CORE_ID_DCODEC 2
91 int q6prm_set_lpass_clock(struct device
*dev
, int clk_id
, int clk_attr
,
92 int clk_root
, unsigned int freq
);
93 int q6prm_vote_lpass_core_hw(struct device
*dev
, uint32_t hw_block_id
,
94 const char *client_name
, uint32_t *client_handle
);
95 int q6prm_unvote_lpass_core_hw(struct device
*dev
, uint32_t hw_block_id
,
96 uint32_t client_handle
);
97 #endif /* __Q6PRM_H__ */