1 /* SPDX-License-Identifier: (GPL-2.0 OR MIT) */
3 * Copyright (c) 2018 BayLibre, SAS.
4 * Author: Jerome Brunet <jbrunet@baylibre.com>
7 #ifndef __AXG_AUDIO_CLKC_H
8 #define __AXG_AUDIO_CLKC_H
11 * Audio Clock register offsets
13 * Register offsets from the datasheet must be multiplied by 4 before
14 * to get the right offset
16 #define AUDIO_CLK_GATE_EN 0x000
17 #define AUDIO_MCLK_A_CTRL 0x004
18 #define AUDIO_MCLK_B_CTRL 0x008
19 #define AUDIO_MCLK_C_CTRL 0x00C
20 #define AUDIO_MCLK_D_CTRL 0x010
21 #define AUDIO_MCLK_E_CTRL 0x014
22 #define AUDIO_MCLK_F_CTRL 0x018
23 #define AUDIO_MST_PAD_CTRL0 0x01c
24 #define AUDIO_MST_PAD_CTRL1 0x020
25 #define AUDIO_SW_RESET 0x024
26 #define AUDIO_MST_A_SCLK_CTRL0 0x040
27 #define AUDIO_MST_A_SCLK_CTRL1 0x044
28 #define AUDIO_MST_B_SCLK_CTRL0 0x048
29 #define AUDIO_MST_B_SCLK_CTRL1 0x04C
30 #define AUDIO_MST_C_SCLK_CTRL0 0x050
31 #define AUDIO_MST_C_SCLK_CTRL1 0x054
32 #define AUDIO_MST_D_SCLK_CTRL0 0x058
33 #define AUDIO_MST_D_SCLK_CTRL1 0x05C
34 #define AUDIO_MST_E_SCLK_CTRL0 0x060
35 #define AUDIO_MST_E_SCLK_CTRL1 0x064
36 #define AUDIO_MST_F_SCLK_CTRL0 0x068
37 #define AUDIO_MST_F_SCLK_CTRL1 0x06C
38 #define AUDIO_CLK_TDMIN_A_CTRL 0x080
39 #define AUDIO_CLK_TDMIN_B_CTRL 0x084
40 #define AUDIO_CLK_TDMIN_C_CTRL 0x088
41 #define AUDIO_CLK_TDMIN_LB_CTRL 0x08C
42 #define AUDIO_CLK_TDMOUT_A_CTRL 0x090
43 #define AUDIO_CLK_TDMOUT_B_CTRL 0x094
44 #define AUDIO_CLK_TDMOUT_C_CTRL 0x098
45 #define AUDIO_CLK_SPDIFIN_CTRL 0x09C
46 #define AUDIO_CLK_SPDIFOUT_CTRL 0x0A0
47 #define AUDIO_CLK_RESAMPLE_CTRL 0x0A4
48 #define AUDIO_CLK_LOCKER_CTRL 0x0A8
49 #define AUDIO_CLK_PDMIN_CTRL0 0x0AC
50 #define AUDIO_CLK_PDMIN_CTRL1 0x0B0
51 #define AUDIO_CLK_SPDIFOUT_B_CTRL 0x0B4
53 /* SM1 introduce new register and some shifts :( */
54 #define AUDIO_CLK_GATE_EN1 0x004
55 #define AUDIO_SM1_MCLK_A_CTRL 0x008
56 #define AUDIO_SM1_MCLK_B_CTRL 0x00C
57 #define AUDIO_SM1_MCLK_C_CTRL 0x010
58 #define AUDIO_SM1_MCLK_D_CTRL 0x014
59 #define AUDIO_SM1_MCLK_E_CTRL 0x018
60 #define AUDIO_SM1_MCLK_F_CTRL 0x01C
61 #define AUDIO_SM1_MST_PAD_CTRL0 0x020
62 #define AUDIO_SM1_MST_PAD_CTRL1 0x024
63 #define AUDIO_SM1_SW_RESET0 0x028
64 #define AUDIO_SM1_SW_RESET1 0x02C
65 #define AUDIO_CLK81_CTRL 0x030
66 #define AUDIO_CLK81_EN 0x034
69 * These indices are entirely contrived and do not map onto the hardware.
72 #define AUD_CLKID_MST_A_MCLK_SEL 59
73 #define AUD_CLKID_MST_B_MCLK_SEL 60
74 #define AUD_CLKID_MST_C_MCLK_SEL 61
75 #define AUD_CLKID_MST_D_MCLK_SEL 62
76 #define AUD_CLKID_MST_E_MCLK_SEL 63
77 #define AUD_CLKID_MST_F_MCLK_SEL 64
78 #define AUD_CLKID_MST_A_MCLK_DIV 65
79 #define AUD_CLKID_MST_B_MCLK_DIV 66
80 #define AUD_CLKID_MST_C_MCLK_DIV 67
81 #define AUD_CLKID_MST_D_MCLK_DIV 68
82 #define AUD_CLKID_MST_E_MCLK_DIV 69
83 #define AUD_CLKID_MST_F_MCLK_DIV 70
84 #define AUD_CLKID_SPDIFOUT_CLK_SEL 71
85 #define AUD_CLKID_SPDIFOUT_CLK_DIV 72
86 #define AUD_CLKID_SPDIFIN_CLK_SEL 73
87 #define AUD_CLKID_SPDIFIN_CLK_DIV 74
88 #define AUD_CLKID_PDM_DCLK_SEL 75
89 #define AUD_CLKID_PDM_DCLK_DIV 76
90 #define AUD_CLKID_PDM_SYSCLK_SEL 77
91 #define AUD_CLKID_PDM_SYSCLK_DIV 78
92 #define AUD_CLKID_MST_A_SCLK_PRE_EN 92
93 #define AUD_CLKID_MST_B_SCLK_PRE_EN 93
94 #define AUD_CLKID_MST_C_SCLK_PRE_EN 94
95 #define AUD_CLKID_MST_D_SCLK_PRE_EN 95
96 #define AUD_CLKID_MST_E_SCLK_PRE_EN 96
97 #define AUD_CLKID_MST_F_SCLK_PRE_EN 97
98 #define AUD_CLKID_MST_A_SCLK_DIV 98
99 #define AUD_CLKID_MST_B_SCLK_DIV 99
100 #define AUD_CLKID_MST_C_SCLK_DIV 100
101 #define AUD_CLKID_MST_D_SCLK_DIV 101
102 #define AUD_CLKID_MST_E_SCLK_DIV 102
103 #define AUD_CLKID_MST_F_SCLK_DIV 103
104 #define AUD_CLKID_MST_A_SCLK_POST_EN 104
105 #define AUD_CLKID_MST_B_SCLK_POST_EN 105
106 #define AUD_CLKID_MST_C_SCLK_POST_EN 106
107 #define AUD_CLKID_MST_D_SCLK_POST_EN 107
108 #define AUD_CLKID_MST_E_SCLK_POST_EN 108
109 #define AUD_CLKID_MST_F_SCLK_POST_EN 109
110 #define AUD_CLKID_MST_A_LRCLK_DIV 110
111 #define AUD_CLKID_MST_B_LRCLK_DIV 111
112 #define AUD_CLKID_MST_C_LRCLK_DIV 112
113 #define AUD_CLKID_MST_D_LRCLK_DIV 113
114 #define AUD_CLKID_MST_E_LRCLK_DIV 114
115 #define AUD_CLKID_MST_F_LRCLK_DIV 115
116 #define AUD_CLKID_TDMIN_A_SCLK_PRE_EN 137
117 #define AUD_CLKID_TDMIN_B_SCLK_PRE_EN 138
118 #define AUD_CLKID_TDMIN_C_SCLK_PRE_EN 139
119 #define AUD_CLKID_TDMIN_LB_SCLK_PRE_EN 140
120 #define AUD_CLKID_TDMOUT_A_SCLK_PRE_EN 141
121 #define AUD_CLKID_TDMOUT_B_SCLK_PRE_EN 142
122 #define AUD_CLKID_TDMOUT_C_SCLK_PRE_EN 143
123 #define AUD_CLKID_TDMIN_A_SCLK_POST_EN 144
124 #define AUD_CLKID_TDMIN_B_SCLK_POST_EN 145
125 #define AUD_CLKID_TDMIN_C_SCLK_POST_EN 146
126 #define AUD_CLKID_TDMIN_LB_SCLK_POST_EN 147
127 #define AUD_CLKID_TDMOUT_A_SCLK_POST_EN 148
128 #define AUD_CLKID_TDMOUT_B_SCLK_POST_EN 149
129 #define AUD_CLKID_TDMOUT_C_SCLK_POST_EN 150
130 #define AUD_CLKID_SPDIFOUT_B_CLK_SEL 153
131 #define AUD_CLKID_SPDIFOUT_B_CLK_DIV 154
132 #define AUD_CLKID_CLK81_EN 173
133 #define AUD_CLKID_SYSCLK_A_DIV 174
134 #define AUD_CLKID_SYSCLK_B_DIV 175
135 #define AUD_CLKID_SYSCLK_A_EN 176
136 #define AUD_CLKID_SYSCLK_B_EN 177
138 /* include the CLKIDs which are part of the DT bindings */
139 #include <dt-bindings/clock/axg-audio-clkc.h>
143 #endif /*__AXG_AUDIO_CLKC_H */