blob: 67f656c7c320744334d4ca5d8233d36eacbe6d4d [file] [log] [blame]
Shawn Guo4762fba2012-03-05 22:30:55 +08001/*
2 * Copyright 2009 Sascha Hauer <s.hauer@pengutronix.de>
3 *
4 * This code is based on code copyrighted by Freescale,
5 * Liam Girdwood, Javier Martin and probably others.
6 *
7 * This program is free software; you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the
9 * Free Software Foundation; either version 2 of the License, or (at your
10 * option) any later version.
11 */
12
13#ifndef _IMX_PCM_H
14#define _IMX_PCM_H
15
Lars-Peter Clausen312bb4f2013-03-22 14:12:12 +010016#include <linux/platform_data/dma-imx.h>
17
Shawn Guo4762fba2012-03-05 22:30:55 +080018/*
19 * Do not change this as the FIQ handler depends on this size
20 */
21#define IMX_SSI_DMABUF_SIZE (64 * 1024)
22
Lars-Peter Clausen312bb4f2013-03-22 14:12:12 +010023static inline void
Lars-Peter Clausena8909c92013-04-03 11:06:04 +020024imx_pcm_dma_params_init_data(struct imx_dma_data *dma_data,
Lars-Peter Clausen312bb4f2013-03-22 14:12:12 +010025 int dma, bool shared)
26{
Lars-Peter Clausena8909c92013-04-03 11:06:04 +020027 dma_data->dma_request = dma;
28 dma_data->priority = DMA_PRIO_HIGH;
Lars-Peter Clausen312bb4f2013-03-22 14:12:12 +010029 if (shared)
Lars-Peter Clausena8909c92013-04-03 11:06:04 +020030 dma_data->peripheral_type = IMX_DMATYPE_SSI_SP;
Lars-Peter Clausen312bb4f2013-03-22 14:12:12 +010031 else
Lars-Peter Clausena8909c92013-04-03 11:06:04 +020032 dma_data->peripheral_type = IMX_DMATYPE_SSI;
Lars-Peter Clausen312bb4f2013-03-22 14:12:12 +010033}
34
Shawn Guo19276612013-01-28 14:25:43 +080035#ifdef CONFIG_SND_SOC_IMX_PCM_DMA
36int imx_pcm_dma_init(struct platform_device *pdev);
Lars-Peter Clausenadaa3222013-04-15 19:19:59 +020037void imx_pcm_dma_exit(struct platform_device *pdev);
Shawn Guo19276612013-01-28 14:25:43 +080038#else
39static inline int imx_pcm_dma_init(struct platform_device *pdev)
40{
41 return -ENODEV;
42}
Lars-Peter Clausenadaa3222013-04-15 19:19:59 +020043
44static inline void imx_pcm_dma_exit(struct platform_device *pdev)
45{
46}
Shawn Guo19276612013-01-28 14:25:43 +080047#endif
48
49#ifdef CONFIG_SND_SOC_IMX_PCM_FIQ
50int imx_pcm_fiq_init(struct platform_device *pdev);
Shawn Guo88e89f52013-04-25 11:18:48 +080051void imx_pcm_fiq_exit(struct platform_device *pdev);
Shawn Guo19276612013-01-28 14:25:43 +080052#else
53static inline int imx_pcm_fiq_init(struct platform_device *pdev)
54{
55 return -ENODEV;
56}
Shawn Guo88e89f52013-04-25 11:18:48 +080057
58static inline void imx_pcm_fiq_exit(struct platform_device *pdev)
59{
60}
Shawn Guo19276612013-01-28 14:25:43 +080061#endif
62
Shawn Guo4762fba2012-03-05 22:30:55 +080063#endif /* _IMX_PCM_H */