@@ -127,6 +127,19 @@ static void pxa168_pll_init(struct pxa168_clk_unit *pxa_unit)
127
127
mmp_clk_add (unit , PXA168_CLK_UART_PLL , clk );
128
128
}
129
129
130
+ static DEFINE_SPINLOCK (twsi0_lock );
131
+ static DEFINE_SPINLOCK (twsi1_lock );
132
+ static const char * const twsi_parent_names [] = {"pll1_2_1_10" , "pll1_2_1_5" };
133
+
134
+ static DEFINE_SPINLOCK (kpc_lock );
135
+ static const char * const kpc_parent_names [] = {"clk32" , "clk32_2" , "pll1_24" };
136
+
137
+ static DEFINE_SPINLOCK (pwm0_lock );
138
+ static DEFINE_SPINLOCK (pwm1_lock );
139
+ static DEFINE_SPINLOCK (pwm2_lock );
140
+ static DEFINE_SPINLOCK (pwm3_lock );
141
+ static const char * const pwm_parent_names [] = {"pll1_48" , "clk32" };
142
+
130
143
static DEFINE_SPINLOCK (uart0_lock );
131
144
static DEFINE_SPINLOCK (uart1_lock );
132
145
static DEFINE_SPINLOCK (uart2_lock );
@@ -145,6 +158,13 @@ static const char * const timer_parent_names[] = {"pll1_48", "clk32", "pll1_96",
145
158
static DEFINE_SPINLOCK (reset_lock );
146
159
147
160
static struct mmp_param_mux_clk apbc_mux_clks [] = {
161
+ {0 , "twsi0_mux" , twsi_parent_names , ARRAY_SIZE (twsi_parent_names ), CLK_SET_RATE_PARENT , APBC_TWSI0 , 4 , 3 , 0 , & twsi0_lock },
162
+ {0 , "twsi1_mux" , twsi_parent_names , ARRAY_SIZE (twsi_parent_names ), CLK_SET_RATE_PARENT , APBC_TWSI1 , 4 , 3 , 0 , & twsi1_lock },
163
+ {0 , "kpc_mux" , kpc_parent_names , ARRAY_SIZE (kpc_parent_names ), CLK_SET_RATE_PARENT , APBC_KPC , 4 , 3 , 0 , & kpc_lock },
164
+ {0 , "pwm0_mux" , pwm_parent_names , ARRAY_SIZE (pwm_parent_names ), CLK_SET_RATE_PARENT , APBC_PWM0 , 4 , 3 , 0 , & pwm0_lock },
165
+ {0 , "pwm1_mux" , pwm_parent_names , ARRAY_SIZE (pwm_parent_names ), CLK_SET_RATE_PARENT , APBC_PWM1 , 4 , 3 , 0 , & pwm1_lock },
166
+ {0 , "pwm2_mux" , pwm_parent_names , ARRAY_SIZE (pwm_parent_names ), CLK_SET_RATE_PARENT , APBC_PWM2 , 4 , 3 , 0 , & pwm2_lock },
167
+ {0 , "pwm3_mux" , pwm_parent_names , ARRAY_SIZE (pwm_parent_names ), CLK_SET_RATE_PARENT , APBC_PWM3 , 4 , 3 , 0 , & pwm3_lock },
148
168
{0 , "uart0_mux" , uart_parent_names , ARRAY_SIZE (uart_parent_names ), CLK_SET_RATE_PARENT , APBC_UART0 , 4 , 3 , 0 , & uart0_lock },
149
169
{0 , "uart1_mux" , uart_parent_names , ARRAY_SIZE (uart_parent_names ), CLK_SET_RATE_PARENT , APBC_UART1 , 4 , 3 , 0 , & uart1_lock },
150
170
{0 , "uart2_mux" , uart_parent_names , ARRAY_SIZE (uart_parent_names ), CLK_SET_RATE_PARENT , APBC_UART2 , 4 , 3 , 0 , & uart2_lock },
@@ -157,16 +177,15 @@ static struct mmp_param_mux_clk apbc_mux_clks[] = {
157
177
};
158
178
159
179
static struct mmp_param_gate_clk apbc_gate_clks [] = {
160
- {PXA168_CLK_TWSI0 , "twsi0_clk" , "pll1_13_1_5 " , CLK_SET_RATE_PARENT , APBC_TWSI0 , 0x3 , 0x3 , 0x0 , 0 , & reset_lock },
161
- {PXA168_CLK_TWSI1 , "twsi1_clk" , "pll1_13_1_5 " , CLK_SET_RATE_PARENT , APBC_TWSI1 , 0x3 , 0x3 , 0x0 , 0 , & reset_lock },
180
+ {PXA168_CLK_TWSI0 , "twsi0_clk" , "twsi0_mux " , CLK_SET_RATE_PARENT , APBC_TWSI0 , 0x3 , 0x3 , 0x0 , 0 , & twsi0_lock },
181
+ {PXA168_CLK_TWSI1 , "twsi1_clk" , "twsi1_mux " , CLK_SET_RATE_PARENT , APBC_TWSI1 , 0x3 , 0x3 , 0x0 , 0 , & twsi1_lock },
162
182
{PXA168_CLK_GPIO , "gpio_clk" , "vctcxo" , CLK_SET_RATE_PARENT , APBC_GPIO , 0x3 , 0x3 , 0x0 , 0 , & reset_lock },
163
- {PXA168_CLK_KPC , "kpc_clk" , "clk32 " , CLK_SET_RATE_PARENT , APBC_KPC , 0x3 , 0x3 , 0x0 , MMP_CLK_GATE_NEED_DELAY , NULL },
183
+ {PXA168_CLK_KPC , "kpc_clk" , "kpc_mux " , CLK_SET_RATE_PARENT , APBC_KPC , 0x3 , 0x3 , 0x0 , MMP_CLK_GATE_NEED_DELAY , & kpc_lock },
164
184
{PXA168_CLK_RTC , "rtc_clk" , "clk32" , CLK_SET_RATE_PARENT , APBC_RTC , 0x83 , 0x83 , 0x0 , MMP_CLK_GATE_NEED_DELAY , NULL },
165
- {PXA168_CLK_PWM0 , "pwm0_clk" , "pll1_48" , CLK_SET_RATE_PARENT , APBC_PWM0 , 0x3 , 0x3 , 0x0 , 0 , & reset_lock },
166
- {PXA168_CLK_PWM1 , "pwm1_clk" , "pll1_48" , CLK_SET_RATE_PARENT , APBC_PWM1 , 0x3 , 0x3 , 0x0 , 0 , & reset_lock },
167
- {PXA168_CLK_PWM2 , "pwm2_clk" , "pll1_48" , CLK_SET_RATE_PARENT , APBC_PWM2 , 0x3 , 0x3 , 0x0 , 0 , & reset_lock },
168
- {PXA168_CLK_PWM3 , "pwm3_clk" , "pll1_48" , CLK_SET_RATE_PARENT , APBC_PWM3 , 0x3 , 0x3 , 0x0 , 0 , & reset_lock },
169
- /* The gate clocks has mux parent. */
185
+ {PXA168_CLK_PWM0 , "pwm0_clk" , "pwm0_mux" , CLK_SET_RATE_PARENT , APBC_PWM0 , 0x3 , 0x3 , 0x0 , 0 , & pwm0_lock },
186
+ {PXA168_CLK_PWM1 , "pwm1_clk" , "pwm1_mux" , CLK_SET_RATE_PARENT , APBC_PWM1 , 0x3 , 0x3 , 0x0 , 0 , & pwm1_lock },
187
+ {PXA168_CLK_PWM2 , "pwm2_clk" , "pwm2_mux" , CLK_SET_RATE_PARENT , APBC_PWM2 , 0x3 , 0x3 , 0x0 , 0 , & pwm2_lock },
188
+ {PXA168_CLK_PWM3 , "pwm3_clk" , "pwm3_mux" , CLK_SET_RATE_PARENT , APBC_PWM3 , 0x3 , 0x3 , 0x0 , 0 , & pwm3_lock },
170
189
{PXA168_CLK_UART0 , "uart0_clk" , "uart0_mux" , CLK_SET_RATE_PARENT , APBC_UART0 , 0x3 , 0x3 , 0x0 , 0 , & uart0_lock },
171
190
{PXA168_CLK_UART1 , "uart1_clk" , "uart1_mux" , CLK_SET_RATE_PARENT , APBC_UART1 , 0x3 , 0x3 , 0x0 , 0 , & uart1_lock },
172
191
{PXA168_CLK_UART2 , "uart2_clk" , "uart2_mux" , CLK_SET_RATE_PARENT , APBC_UART2 , 0x3 , 0x3 , 0x0 , 0 , & uart2_lock },
@@ -190,6 +209,9 @@ static void pxa168_apb_periph_clk_init(struct pxa168_clk_unit *pxa_unit)
190
209
191
210
}
192
211
212
+ static DEFINE_SPINLOCK (dfc_lock );
213
+ static const char * const dfc_parent_names [] = {"pll1_4" , "pll1_8" };
214
+
193
215
static DEFINE_SPINLOCK (sdh0_lock );
194
216
static DEFINE_SPINLOCK (sdh1_lock );
195
217
static const char * const sdh_parent_names [] = {"pll1_13" , "pll1_12" , "pll1_8" };
@@ -204,6 +226,7 @@ static const char * const ccic_parent_names[] = {"pll1_4", "pll1_8"};
204
226
static const char * const ccic_phy_parent_names [] = {"pll1_6" , "pll1_12" };
205
227
206
228
static struct mmp_param_mux_clk apmu_mux_clks [] = {
229
+ {0 , "dfc_mux" , dfc_parent_names , ARRAY_SIZE (dfc_parent_names ), CLK_SET_RATE_PARENT , APMU_DFC , 6 , 1 , 0 , & dfc_lock },
207
230
{0 , "sdh0_mux" , sdh_parent_names , ARRAY_SIZE (sdh_parent_names ), CLK_SET_RATE_PARENT , APMU_SDH0 , 6 , 2 , 0 , & sdh0_lock },
208
231
{0 , "sdh1_mux" , sdh_parent_names , ARRAY_SIZE (sdh_parent_names ), CLK_SET_RATE_PARENT , APMU_SDH1 , 6 , 2 , 0 , & sdh1_lock },
209
232
{0 , "disp0_mux" , disp_parent_names , ARRAY_SIZE (disp_parent_names ), CLK_SET_RATE_PARENT , APMU_DISP0 , 6 , 1 , 0 , & disp0_lock },
@@ -216,10 +239,9 @@ static struct mmp_param_div_clk apmu_div_clks[] = {
216
239
};
217
240
218
241
static struct mmp_param_gate_clk apmu_gate_clks [] = {
219
- {PXA168_CLK_DFC , "dfc_clk" , "pll1_4 " , CLK_SET_RATE_PARENT , APMU_DFC , 0x19b , 0x19b , 0x0 , 0 , NULL },
242
+ {PXA168_CLK_DFC , "dfc_clk" , "dfc_mux " , CLK_SET_RATE_PARENT , APMU_DFC , 0x19b , 0x19b , 0x0 , 0 , & dfc_lock },
220
243
{PXA168_CLK_USB , "usb_clk" , "usb_pll" , 0 , APMU_USB , 0x9 , 0x9 , 0x0 , 0 , & usb_lock },
221
244
{PXA168_CLK_SPH , "sph_clk" , "usb_pll" , 0 , APMU_USB , 0x12 , 0x12 , 0x0 , 0 , & usb_lock },
222
- /* The gate clocks has mux parent. */
223
245
{PXA168_CLK_SDH0 , "sdh0_clk" , "sdh0_mux" , CLK_SET_RATE_PARENT , APMU_SDH0 , 0x1b , 0x1b , 0x0 , 0 , & sdh0_lock },
224
246
{PXA168_CLK_SDH1 , "sdh1_clk" , "sdh1_mux" , CLK_SET_RATE_PARENT , APMU_SDH1 , 0x1b , 0x1b , 0x0 , 0 , & sdh1_lock },
225
247
{PXA168_CLK_DISP0 , "disp0_clk" , "disp0_mux" , CLK_SET_RATE_PARENT , APMU_DISP0 , 0x1b , 0x1b , 0x0 , 0 , & disp0_lock },
0 commit comments