18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * linux/arch/arm/mach-omap2/mcbsp.c 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Copyright (C) 2008 Instituto Nokia de Tecnologia 68c2ecf20Sopenharmony_ci * Contact: Eduardo Valentin <eduardo.valentin@indt.org.br> 78c2ecf20Sopenharmony_ci * 88c2ecf20Sopenharmony_ci * Multichannel mode not supported. 98c2ecf20Sopenharmony_ci */ 108c2ecf20Sopenharmony_ci#include <linux/module.h> 118c2ecf20Sopenharmony_ci#include <linux/init.h> 128c2ecf20Sopenharmony_ci#include <linux/clk.h> 138c2ecf20Sopenharmony_ci#include <linux/err.h> 148c2ecf20Sopenharmony_ci#include <linux/io.h> 158c2ecf20Sopenharmony_ci#include <linux/of.h> 168c2ecf20Sopenharmony_ci#include <linux/platform_device.h> 178c2ecf20Sopenharmony_ci#include <linux/slab.h> 188c2ecf20Sopenharmony_ci#include <linux/platform_data/asoc-ti-mcbsp.h> 198c2ecf20Sopenharmony_ci#include <linux/pm_runtime.h> 208c2ecf20Sopenharmony_ci 218c2ecf20Sopenharmony_ci#include <linux/omap-dma.h> 228c2ecf20Sopenharmony_ci 238c2ecf20Sopenharmony_ci#include "soc.h" 248c2ecf20Sopenharmony_ci#include "omap_device.h" 258c2ecf20Sopenharmony_ci#include "clock.h" 268c2ecf20Sopenharmony_ci 278c2ecf20Sopenharmony_ci/* 288c2ecf20Sopenharmony_ci * FIXME: Find a mechanism to enable/disable runtime the McBSP ICLK autoidle. 298c2ecf20Sopenharmony_ci * Sidetone needs non-gated ICLK and sidetone autoidle is broken. 308c2ecf20Sopenharmony_ci */ 318c2ecf20Sopenharmony_ci#include "cm3xxx.h" 328c2ecf20Sopenharmony_ci#include "cm-regbits-34xx.h" 338c2ecf20Sopenharmony_ci 348c2ecf20Sopenharmony_cistatic int omap3_mcbsp_force_ick_on(struct clk *clk, bool force_on) 358c2ecf20Sopenharmony_ci{ 368c2ecf20Sopenharmony_ci if (!clk) 378c2ecf20Sopenharmony_ci return 0; 388c2ecf20Sopenharmony_ci 398c2ecf20Sopenharmony_ci if (force_on) 408c2ecf20Sopenharmony_ci return omap2_clk_deny_idle(clk); 418c2ecf20Sopenharmony_ci else 428c2ecf20Sopenharmony_ci return omap2_clk_allow_idle(clk); 438c2ecf20Sopenharmony_ci} 448c2ecf20Sopenharmony_ci 458c2ecf20Sopenharmony_civoid __init omap3_mcbsp_init_pdata_callback( 468c2ecf20Sopenharmony_ci struct omap_mcbsp_platform_data *pdata) 478c2ecf20Sopenharmony_ci{ 488c2ecf20Sopenharmony_ci if (!pdata) 498c2ecf20Sopenharmony_ci return; 508c2ecf20Sopenharmony_ci 518c2ecf20Sopenharmony_ci pdata->force_ick_on = omap3_mcbsp_force_ick_on; 528c2ecf20Sopenharmony_ci} 53