1 | // SPDX-License-Identifier: GPL-2.0-only |
---|---|
2 | /* |
3 | * linux/arch/arm/mach-omap2/mcbsp.c |
4 | * |
5 | * Copyright (C) 2008 Instituto Nokia de Tecnologia |
6 | * Contact: Eduardo Valentin <eduardo.valentin@indt.org.br> |
7 | * |
8 | * Multichannel mode not supported. |
9 | */ |
10 | #include <linux/module.h> |
11 | #include <linux/init.h> |
12 | #include <linux/clk.h> |
13 | #include <linux/err.h> |
14 | #include <linux/io.h> |
15 | #include <linux/of.h> |
16 | #include <linux/platform_device.h> |
17 | #include <linux/slab.h> |
18 | #include <linux/platform_data/asoc-ti-mcbsp.h> |
19 | #include <linux/pm_runtime.h> |
20 | |
21 | #include <linux/omap-dma.h> |
22 | |
23 | #include "soc.h" |
24 | #include "omap_device.h" |
25 | #include "clock.h" |
26 | |
27 | /* |
28 | * FIXME: Find a mechanism to enable/disable runtime the McBSP ICLK autoidle. |
29 | * Sidetone needs non-gated ICLK and sidetone autoidle is broken. |
30 | */ |
31 | #include "cm3xxx.h" |
32 | #include "cm-regbits-34xx.h" |
33 | |
34 | static int omap3_mcbsp_force_ick_on(struct clk *clk, bool force_on) |
35 | { |
36 | if (!clk) |
37 | return 0; |
38 | |
39 | if (force_on) |
40 | return omap2_clk_deny_idle(clk); |
41 | else |
42 | return omap2_clk_allow_idle(clk); |
43 | } |
44 | |
45 | void __init omap3_mcbsp_init_pdata_callback( |
46 | struct omap_mcbsp_platform_data *pdata) |
47 | { |
48 | if (!pdata) |
49 | return; |
50 | |
51 | pdata->force_ick_on = omap3_mcbsp_force_ick_on; |
52 | } |
53 |