blob: 1699824baaf8aad7628d52822688ba4ea1c159cc [file] [log] [blame]
Channagoud Kadabi634ac6d2012-12-12 18:13:56 -08001/* Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
Deepa Dinamanica5ad852012-05-07 18:19:47 -07002 *
3 * Redistribution and use in source and binary forms, with or without
Deepa Dinamani32bfad02012-11-02 12:15:05 -07004 * modification, are permitted provided that the following conditions are
5 * met:
6 * * Redistributions of source code must retain the above copyright
7 * notice, this list of conditions and the following disclaimer.
8 * * Redistributions in binary form must reproduce the above
9 * copyright notice, this list of conditions and the following
10 * disclaimer in the documentation and/or other materials provided
11 * with the distribution.
12 * * Neither the name of The Linux Foundation nor the names of its
13 * contributors may be used to endorse or promote products derived
14 * from this software without specific prior written permission.
Deepa Dinamanica5ad852012-05-07 18:19:47 -070015 *
Deepa Dinamani32bfad02012-11-02 12:15:05 -070016 * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
17 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
18 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
20 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
23 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
24 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
25 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
26 * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Deepa Dinamanica5ad852012-05-07 18:19:47 -070027 */
28
Amol Jadi29f95032012-06-22 12:52:54 -070029#include <err.h>
30#include <assert.h>
Deepa Dinamanica5ad852012-05-07 18:19:47 -070031#include <debug.h>
32#include <reg.h>
Deepa Dinamani32bfad02012-11-02 12:15:05 -070033#include <platform/timer.h>
Deepa Dinamanica5ad852012-05-07 18:19:47 -070034#include <platform/iomap.h>
Deepa Dinamanica5ad852012-05-07 18:19:47 -070035#include <mmc.h>
Amol Jadi29f95032012-06-22 12:52:54 -070036#include <clock.h>
37#include <platform/clock.h>
Channagoud Kadabi634ac6d2012-12-12 18:13:56 -080038#include <blsp_qup.h>
Deepa Dinamanica5ad852012-05-07 18:19:47 -070039
Amol Jadi29f95032012-06-22 12:52:54 -070040void hsusb_clock_init(void)
41{
42 int ret;
Deepa Dinamani0687ecd2012-08-10 16:00:26 -070043 struct clk *iclk, *cclk;
Amol Jadi29f95032012-06-22 12:52:54 -070044
45 ret = clk_get_set_enable("usb_iface_clk", 0, 1);
46 if(ret)
47 {
48 dprintf(CRITICAL, "failed to set usb_iface_clk ret = %d\n", ret);
49 ASSERT(0);
50 }
51
52 ret = clk_get_set_enable("usb_core_clk", 75000000, 1);
53 if(ret)
54 {
55 dprintf(CRITICAL, "failed to set usb_core_clk ret = %d\n", ret);
56 ASSERT(0);
57 }
Deepa Dinamani0687ecd2012-08-10 16:00:26 -070058
59 mdelay(20);
60
61 iclk = clk_get("usb_iface_clk");
62 cclk = clk_get("usb_core_clk");
63
Deepa Dinamani0687ecd2012-08-10 16:00:26 -070064 clk_disable(iclk);
65 clk_disable(cclk);
66
67 mdelay(20);
68
69 /* Start the block reset for usb */
70 writel(1, USB_HS_BCR);
71
72 mdelay(20);
73
74 /* Take usb block out of reset */
Deepa Dinamani32bfad02012-11-02 12:15:05 -070075 writel(0, USB_HS_BCR);
Deepa Dinamani0687ecd2012-08-10 16:00:26 -070076
77 mdelay(20);
78
79 ret = clk_enable(iclk);
Deepa Dinamani32bfad02012-11-02 12:15:05 -070080
Deepa Dinamani0687ecd2012-08-10 16:00:26 -070081 if(ret)
82 {
83 dprintf(CRITICAL, "failed to set usb_iface_clk after async ret = %d\n", ret);
84 ASSERT(0);
85 }
86
87 ret = clk_enable(cclk);
88
89 if(ret)
90 {
91 dprintf(CRITICAL, "failed to set usb_iface_clk after async ret = %d\n", ret);
92 ASSERT(0);
93 }
94
Amol Jadi29f95032012-06-22 12:52:54 -070095}
Deepa Dinamanica5ad852012-05-07 18:19:47 -070096
97void clock_init_mmc(uint32_t interface)
98{
Deepa Dinamanib10c0e42012-08-10 14:36:24 -070099 char clk_name[64];
Amol Jadi29f95032012-06-22 12:52:54 -0700100 int ret;
101
Deepa Dinamanib10c0e42012-08-10 14:36:24 -0700102 snprintf(clk_name, 64, "sdc%u_iface_clk", interface);
103
Amol Jadi29f95032012-06-22 12:52:54 -0700104 /* enable interface clock */
Deepa Dinamanib10c0e42012-08-10 14:36:24 -0700105 ret = clk_get_set_enable(clk_name, 0, 1);
Amol Jadi29f95032012-06-22 12:52:54 -0700106 if(ret)
107 {
108 dprintf(CRITICAL, "failed to set sdc1_iface_clk ret = %d\n", ret);
109 ASSERT(0);
110 }
Deepa Dinamanica5ad852012-05-07 18:19:47 -0700111}
112
113/* Configure MMC clock */
114void clock_config_mmc(uint32_t interface, uint32_t freq)
115{
Amol Jadi29f95032012-06-22 12:52:54 -0700116 int ret;
Deepa Dinamanica5ad852012-05-07 18:19:47 -0700117 uint32_t reg;
Deepa Dinamanib10c0e42012-08-10 14:36:24 -0700118 char clk_name[64];
119
120 snprintf(clk_name, 64, "sdc%u_core_clk", interface);
Deepa Dinamanica5ad852012-05-07 18:19:47 -0700121
Channagoud Kadabi96518412013-03-14 16:38:41 -0700122 /* Disalbe MCI_CLK before changing the sdcc clock */
Channagoud Kadabi4fb29e92013-04-05 11:32:11 -0700123#ifndef MMC_SDHCI_SUPPORT
Channagoud Kadabi96518412013-03-14 16:38:41 -0700124 mmc_boot_mci_clk_disable();
Channagoud Kadabi4fb29e92013-04-05 11:32:11 -0700125#endif
Channagoud Kadabi96518412013-03-14 16:38:41 -0700126
Amol Jadi29f95032012-06-22 12:52:54 -0700127 if(freq == MMC_CLK_400KHZ)
128 {
Deepa Dinamanib10c0e42012-08-10 14:36:24 -0700129 ret = clk_get_set_enable(clk_name, 400000, 1);
Amol Jadi29f95032012-06-22 12:52:54 -0700130 }
131 else if(freq == MMC_CLK_50MHZ)
132 {
Neeti Desaiddc771b2012-08-28 18:17:04 -0700133 ret = clk_get_set_enable(clk_name, 50000000, 1);
Amol Jadi29f95032012-06-22 12:52:54 -0700134 }
Channagoud Kadabi8495f882013-04-02 11:20:28 -0700135 else if(freq == MMC_CLK_96MHZ)
136 {
137 ret = clk_get_set_enable(clk_name, 100000000, 1);
138 }
Channagoud Kadabi4fb29e92013-04-05 11:32:11 -0700139 else if(freq == MMC_CLK_200MHZ)
140 {
141 ret = clk_get_set_enable(clk_name, 200000000, 1);
142 }
Amol Jadi29f95032012-06-22 12:52:54 -0700143 else
144 {
Channagoud Kadabicb6cf692013-08-02 11:53:13 -0700145 dprintf(CRITICAL, "sdc frequency (%u) is not supported\n", freq);
Amol Jadi29f95032012-06-22 12:52:54 -0700146 ASSERT(0);
147 }
148
149
150 if(ret)
151 {
Channagoud Kadabicb6cf692013-08-02 11:53:13 -0700152 dprintf(CRITICAL, "failed to set sdc%u_core_clk ret = %d\n", interface, ret);
Amol Jadi29f95032012-06-22 12:52:54 -0700153 ASSERT(0);
154 }
Deepa Dinamanica5ad852012-05-07 18:19:47 -0700155
Channagoud Kadabi96518412013-03-14 16:38:41 -0700156 /* Enalbe MCI clock */
Channagoud Kadabi4fb29e92013-04-05 11:32:11 -0700157#ifndef MMC_SDHCI_SUPPORT
Channagoud Kadabi96518412013-03-14 16:38:41 -0700158 mmc_boot_mci_clk_enable();
Channagoud Kadabi4fb29e92013-04-05 11:32:11 -0700159#endif
Deepa Dinamanica5ad852012-05-07 18:19:47 -0700160}
161
Deepa Dinamani26e93262012-05-21 17:35:14 -0700162/* Configure UART clock based on the UART block id*/
163void clock_config_uart_dm(uint8_t id)
164{
Amol Jadi29f95032012-06-22 12:52:54 -0700165 int ret;
Deepa Dinamani26e93262012-05-21 17:35:14 -0700166
Neeti Desaiac011272012-08-29 18:24:54 -0700167
168 ret = clk_get_set_enable("uart2_iface_clk", 0, 1);
169 if(ret)
170 {
171 dprintf(CRITICAL, "failed to set uart2_iface_clk ret = %d\n", ret);
172 ASSERT(0);
173 }
174
175 ret = clk_get_set_enable("uart2_core_clk", 7372800, 1);
Amol Jadi29f95032012-06-22 12:52:54 -0700176 if(ret)
177 {
178 dprintf(CRITICAL, "failed to set uart1_core_clk ret = %d\n", ret);
179 ASSERT(0);
180 }
Deepa Dinamani26e93262012-05-21 17:35:14 -0700181}
Deepa Dinamani32bfad02012-11-02 12:15:05 -0700182
183/* Function to asynchronously reset CE.
184 * Function assumes that all the CE clocks are off.
185 */
186static void ce_async_reset(uint8_t instance)
187{
188 if (instance == 1)
189 {
190 /* TODO: Add support for instance 1. */
191 dprintf(CRITICAL, "CE instance not supported instance = %d", instance);
192 ASSERT(0);
193 }
194 else if (instance == 2)
195 {
196 /* Start the block reset for CE */
197 writel(1, GCC_CE2_BCR);
198
199 udelay(2);
200
201 /* Take CE block out of reset */
202 writel(0, GCC_CE2_BCR);
203
204 udelay(2);
205 }
206 else
207 {
208 dprintf(CRITICAL, "CE instance not supported instance = %d", instance);
209 ASSERT(0);
210 }
211}
212
sundarajan srinivasan6aaa50c2013-02-27 14:18:57 -0800213void clock_ce_enable(uint8_t instance)
Deepa Dinamani32bfad02012-11-02 12:15:05 -0700214{
215 int ret;
216 char clk_name[64];
217
218 snprintf(clk_name, 64, "ce%u_src_clk", instance);
219 ret = clk_get_set_enable(clk_name, 100000000, 1);
220 if(ret)
221 {
222 dprintf(CRITICAL, "failed to set ce_src_clk ret = %d\n", ret);
223 ASSERT(0);
224 }
225
226 snprintf(clk_name, 64, "ce%u_core_clk", instance);
227 ret = clk_get_set_enable(clk_name, 0, 1);
228 if(ret)
229 {
230 dprintf(CRITICAL, "failed to set ce_core_clk ret = %d\n", ret);
231 ASSERT(0);
232 }
233
234 snprintf(clk_name, 64, "ce%u_ahb_clk", instance);
235 ret = clk_get_set_enable(clk_name, 0, 1);
236 if(ret)
237 {
238 dprintf(CRITICAL, "failed to set ce_ahb_clk ret = %d\n", ret);
239 ASSERT(0);
240 }
241
242 snprintf(clk_name, 64, "ce%u_axi_clk", instance);
243 ret = clk_get_set_enable(clk_name, 0, 1);
244 if(ret)
245 {
246 dprintf(CRITICAL, "failed to set ce_axi_clk ret = %d\n", ret);
247 ASSERT(0);
248 }
249
250 /* Wait for 48 * #pipes cycles.
251 * This is necessary as immediately after an access control reset (boot up)
252 * or a debug re-enable, the Crypto core sequentially clears its internal
253 * pipe key storage memory. If pipe key initialization writes are attempted
254 * during this time, they may be overwritten by the internal clearing logic.
255 */
256 udelay(1);
257}
258
sundarajan srinivasan6aaa50c2013-02-27 14:18:57 -0800259void clock_ce_disable(uint8_t instance)
Deepa Dinamani32bfad02012-11-02 12:15:05 -0700260{
261 struct clk *ahb_clk;
262 struct clk *cclk;
263 struct clk *axi_clk;
264 struct clk *src_clk;
265 char clk_name[64];
266
267 snprintf(clk_name, 64, "ce%u_src_clk", instance);
268 src_clk = clk_get(clk_name);
269
270 snprintf(clk_name, 64, "ce%u_ahb_clk", instance);
271 ahb_clk = clk_get(clk_name);
272
273 snprintf(clk_name, 64, "ce%u_axi_clk", instance);
274 axi_clk = clk_get(clk_name);
275
276 snprintf(clk_name, 64, "ce%u_core_clk", instance);
277 cclk = clk_get(clk_name);
278
279 clk_disable(ahb_clk);
280 clk_disable(axi_clk);
281 clk_disable(cclk);
282 clk_disable(src_clk);
283
284 /* Some delay for the clocks to stabalize. */
285 udelay(1);
286}
287
288void clock_config_ce(uint8_t instance)
289{
290 /* Need to enable the clock before disabling since the clk_disable()
291 * has a check to default to nop when the clk_enable() is not called
292 * on that particular clock.
293 */
294 clock_ce_enable(instance);
295
296 clock_ce_disable(instance);
297
298 ce_async_reset(instance);
299
300 clock_ce_enable(instance);
sundarajan srinivasan6aaa50c2013-02-27 14:18:57 -0800301
Deepa Dinamani32bfad02012-11-02 12:15:05 -0700302}
Channagoud Kadabi634ac6d2012-12-12 18:13:56 -0800303
304void clock_config_blsp_i2c(uint8_t blsp_id, uint8_t qup_id)
305{
306 uint8_t ret = 0;
307 char clk_name[64];
308
309 struct clk *qup_clk;
310
311 snprintf(clk_name, 64, "blsp%u_ahb_clk", blsp_id);
312
313 ret = clk_get_set_enable(clk_name, 0 , 1);
314
315 if (ret) {
316 dprintf(CRITICAL, "Failed to enable %s clock\n", clk_name);
317 return;
318 }
319
320 snprintf(clk_name, 64, "blsp%u_qup%u_i2c_apps_clk", blsp_id,
321 (qup_id + 1));
322
323 qup_clk = clk_get(clk_name);
324
325 if (!qup_clk) {
326 dprintf(CRITICAL, "Failed to get %s\n", clk_name);
327 return;
328 }
329
330 ret = clk_enable(qup_clk);
331
332 if (ret) {
333 dprintf(CRITICAL, "Failed to enable %s\n", clk_name);
334 return;
335 }
336}
Siddhartha Agrawalacdaf5b2013-01-22 18:14:53 -0800337
338void mdp_gdsc_ctrl(uint8_t enable)
339{
340 uint32_t reg = 0;
341 reg = readl(MDP_GDSCR);
342 if (enable) {
Pradeep Jilagam570d1d02013-07-10 10:30:07 -0700343 if (!(reg & GDSC_POWER_ON_BIT)) {
Siddhartha Agrawal267fc3f2013-03-25 17:03:50 -0700344 reg &= ~(BIT(0) | GDSC_EN_FEW_WAIT_MASK);
345 reg |= GDSC_EN_FEW_WAIT_256_MASK;
346 writel(reg, MDP_GDSCR);
Pradeep Jilagam570d1d02013-07-10 10:30:07 -0700347 while(!(readl(MDP_GDSCR) & (GDSC_POWER_ON_BIT)));
348 } else {
349 dprintf(INFO, "MDP GDSC already enabled\n");
Siddhartha Agrawal267fc3f2013-03-25 17:03:50 -0700350 }
Siddhartha Agrawal9d6e28f2013-04-21 16:00:07 -0700351 } else {
Pradeep Jilagam570d1d02013-07-10 10:30:07 -0700352 reg |= BIT(0);
Siddhartha Agrawal9d6e28f2013-04-21 16:00:07 -0700353 writel(reg, MDP_GDSCR);
Pradeep Jilagam570d1d02013-07-10 10:30:07 -0700354 while(readl(MDP_GDSCR) & (GDSC_POWER_ON_BIT));
Siddhartha Agrawal9d6e28f2013-04-21 16:00:07 -0700355 }
Siddhartha Agrawalacdaf5b2013-01-22 18:14:53 -0800356}
357
358/* Configure MDP clock */
359void mdp_clock_init(void)
360{
361 int ret;
362
Siddhartha Agrawal6bf6c152013-05-29 20:47:20 -0700363 /* Set MDP clock to 240MHz */
Siddhartha Agrawalacdaf5b2013-01-22 18:14:53 -0800364 ret = clk_get_set_enable("mdp_ahb_clk", 0, 1);
365 if(ret)
366 {
367 dprintf(CRITICAL, "failed to set mdp_ahb_clk ret = %d\n", ret);
368 ASSERT(0);
369 }
370
Siddhartha Agrawal6bf6c152013-05-29 20:47:20 -0700371 ret = clk_get_set_enable("mdss_mdp_clk_src", 240000000, 1);
Siddhartha Agrawalacdaf5b2013-01-22 18:14:53 -0800372 if(ret)
373 {
374 dprintf(CRITICAL, "failed to set mdp_clk_src ret = %d\n", ret);
375 ASSERT(0);
376 }
377
Siddhartha Agrawal9d6e28f2013-04-21 16:00:07 -0700378 ret = clk_get_set_enable("mdss_vsync_clk", 0, 1);
379 if(ret)
380 {
381 dprintf(CRITICAL, "failed to set mdss vsync clk ret = %d\n", ret);
382 ASSERT(0);
383 }
384
Siddhartha Agrawalacdaf5b2013-01-22 18:14:53 -0800385 ret = clk_get_set_enable("mdss_mdp_clk", 0, 1);
386 if(ret)
387 {
388 dprintf(CRITICAL, "failed to set mdp_clk ret = %d\n", ret);
389 ASSERT(0);
390 }
391
392 ret = clk_get_set_enable("mdss_mdp_lut_clk", 0, 1);
393 if(ret)
394 {
395 dprintf(CRITICAL, "failed to set lut_mdp clk ret = %d\n", ret);
396 ASSERT(0);
397 }
398}
399
Siddhartha Agrawalc88737b2013-05-29 20:41:35 -0700400void mdp_clock_disable(uint32_t dual_dsi)
Siddhartha Agrawal9d6e28f2013-04-21 16:00:07 -0700401{
402 writel(0x0, DSI_BYTE0_CBCR);
403 writel(0x0, DSI_PIXEL0_CBCR);
Siddhartha Agrawalc88737b2013-05-29 20:41:35 -0700404 if (dual_dsi) {
405 writel(0x0, DSI_BYTE1_CBCR);
406 writel(0x0, DSI_PIXEL1_CBCR);
407 }
Siddhartha Agrawal9d6e28f2013-04-21 16:00:07 -0700408 clk_disable(clk_get("mdss_vsync_clk"));
409 clk_disable(clk_get("mdss_mdp_clk"));
410 clk_disable(clk_get("mdss_mdp_lut_clk"));
411 clk_disable(clk_get("mdss_mdp_clk_src"));
412 clk_disable(clk_get("mdp_ahb_clk"));
413
414}
415
Siddhartha Agrawalacdaf5b2013-01-22 18:14:53 -0800416/* Initialize all clocks needed by Display */
Siddhartha Agrawalc88737b2013-05-29 20:41:35 -0700417void mmss_clock_init(uint32_t dsi_pixel0_cfg_rcgr, uint32_t dual_dsi)
Siddhartha Agrawalacdaf5b2013-01-22 18:14:53 -0800418{
419 int ret;
420
421 /* Configure Byte clock */
422 writel(0x100, DSI_BYTE0_CFG_RCGR);
423 writel(0x1, DSI_BYTE0_CMD_RCGR);
424 writel(0x1, DSI_BYTE0_CBCR);
425
426 /* Configure ESC clock */
427 ret = clk_get_set_enable("mdss_esc0_clk", 0, 1);
428 if(ret)
429 {
430 dprintf(CRITICAL, "failed to set esc0_clk ret = %d\n", ret);
431 ASSERT(0);
432 }
433
434 /* Configure MMSSNOC AXI clock */
435 ret = clk_get_set_enable("mmss_mmssnoc_axi_clk", 100000000, 1);
436 if(ret)
437 {
438 dprintf(CRITICAL, "failed to set mmssnoc_axi_clk ret = %d\n", ret);
439 ASSERT(0);
440 }
441
442 /* Configure MMSSNOC AXI clock */
443 ret = clk_get_set_enable("mmss_s0_axi_clk", 100000000, 1);
444 if(ret)
445 {
446 dprintf(CRITICAL, "failed to set mmss_s0_axi_clk ret = %d\n", ret);
447 ASSERT(0);
448 }
449
450 /* Configure AXI clock */
451 ret = clk_get_set_enable("mdss_axi_clk", 100000000, 1);
452 if(ret)
453 {
454 dprintf(CRITICAL, "failed to set mdss_axi_clk ret = %d\n", ret);
455 ASSERT(0);
456 }
457
458 /* Configure Pixel clock */
Asaf Pensofd099cf2013-05-20 11:12:38 +0300459 writel(dsi_pixel0_cfg_rcgr, DSI_PIXEL0_CFG_RCGR);
Siddhartha Agrawalacdaf5b2013-01-22 18:14:53 -0800460 writel(0x1, DSI_PIXEL0_CMD_RCGR);
461 writel(0x1, DSI_PIXEL0_CBCR);
Siddhartha Agrawalc88737b2013-05-29 20:41:35 -0700462
463 if (dual_dsi) {
464 /* Configure Byte 1 clock */
465 writel(0x100, DSI_BYTE1_CFG_RCGR);
466 writel(0x1, DSI_BYTE1_CMD_RCGR);
467 writel(0x1, DSI_BYTE1_CBCR);
468
469 /* Configure ESC clock */
470 ret = clk_get_set_enable("mdss_esc1_clk", 0, 1);
471 if(ret)
472 {
473 dprintf(CRITICAL, "failed to set esc1_clk ret = %d\n", ret);
474 ASSERT(0);
475 }
476
477 /* Configure Pixel clock */
478 writel(dsi_pixel0_cfg_rcgr, DSI_PIXEL1_CFG_RCGR);
479 writel(0x1, DSI_PIXEL1_CMD_RCGR);
480 writel(0x1, DSI_PIXEL1_CBCR);
481 }
Siddhartha Agrawalacdaf5b2013-01-22 18:14:53 -0800482}
Siddhartha Agrawal9d6e28f2013-04-21 16:00:07 -0700483
Siddhartha Agrawalc88737b2013-05-29 20:41:35 -0700484void mmss_clock_disable(uint32_t dual_dsi)
Siddhartha Agrawal9d6e28f2013-04-21 16:00:07 -0700485{
486
487 /* Disable ESC clock */
488 clk_disable(clk_get("mdss_esc0_clk"));
489
Siddhartha Agrawalc88737b2013-05-29 20:41:35 -0700490 if (dual_dsi) {
491 /* Disable ESC clock */
492 clk_disable(clk_get("mdss_esc1_clk"));
493 }
494
Siddhartha Agrawal9d6e28f2013-04-21 16:00:07 -0700495 /* Disable MDSS AXI clock */
496 clk_disable(clk_get("mdss_axi_clk"));
497
498 /* Disable MMSSNOC S0AXI clock */
499 clk_disable(clk_get("mmss_s0_axi_clk"));
500
501 /* Disable MMSSNOC AXI clock */
502 clk_disable(clk_get("mmss_mmssnoc_axi_clk"));
503
504}