1ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar/* 2ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar * DaVinci Voice Codec Core Interface for TI platforms 3ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar * 4ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar * Copyright (C) 2010 Texas Instruments, Inc 5ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar * 6ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar * Author: Miguel Aguilar <miguel.aguilar@ridgerun.com> 7ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar * 8ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar * This program is free software; you can redistribute it and/or modify 9ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar * it under the terms of the GNU General Public License as published by 10ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar * the Free Software Foundation; either version 2 of the License, or 11ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar * (at your option) any later version. 12ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar * 13ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar * This program is distributed in the hope that it will be useful, 14ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar * but WITHOUT ANY WARRANTY; without even the implied warranty of 15ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar * GNU General Public License for more details. 17ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar * 18ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar * You should have received a copy of the GNU General Public License 19ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar * along with this program; if not, write to the Free Software 20ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 21ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar */ 22ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar 23ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar#ifndef __LINUX_MFD_DAVINCI_VOICECODEC_H_ 24c593aca4e42a24b229a8070c4eb50d01f54877f2Rasmus Villemoes#define __LINUX_MFD_DAVINCI_VOICECODEC_H_ 25ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar 26ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar#include <linux/kernel.h> 27ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar#include <linux/platform_device.h> 28ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar#include <linux/mfd/core.h> 293ad7a42d5a9c3736cd6d2c6f7e6038d0ca8b316cMatt Porter#include <linux/platform_data/edma.h> 30ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar 31997174705458d2abdbc31ba1594bf2a4503cb41aSachin Kamat#include <mach/hardware.h> 32ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar 33921a2c870faa0a88c34e5c8c2afbd898fe8d325dMark Brownstruct regmap; 34921a2c870faa0a88c34e5c8c2afbd898fe8d325dMark Brown 35ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar/* 36ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar * Register values. 37ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar */ 38ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar#define DAVINCI_VC_PID 0x00 39ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar#define DAVINCI_VC_CTRL 0x04 40ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar#define DAVINCI_VC_INTEN 0x08 41ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar#define DAVINCI_VC_INTSTATUS 0x0c 42ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar#define DAVINCI_VC_INTCLR 0x10 43ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar#define DAVINCI_VC_EMUL_CTRL 0x14 44ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar#define DAVINCI_VC_RFIFO 0x20 45ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar#define DAVINCI_VC_WFIFO 0x24 46ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar#define DAVINCI_VC_FIFOSTAT 0x28 47ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar#define DAVINCI_VC_TST_CTRL 0x2C 48ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar#define DAVINCI_VC_REG05 0x94 49ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar#define DAVINCI_VC_REG09 0xA4 50ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar#define DAVINCI_VC_REG12 0xB0 51ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar 52ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar/* DAVINCI_VC_CTRL bit fields */ 53ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar#define DAVINCI_VC_CTRL_MASK 0x5500 54ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar#define DAVINCI_VC_CTRL_RSTADC BIT(0) 55ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar#define DAVINCI_VC_CTRL_RSTDAC BIT(1) 56ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar#define DAVINCI_VC_CTRL_RD_BITS_8 BIT(4) 57ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar#define DAVINCI_VC_CTRL_RD_UNSIGNED BIT(5) 58ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar#define DAVINCI_VC_CTRL_WD_BITS_8 BIT(6) 59ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar#define DAVINCI_VC_CTRL_WD_UNSIGNED BIT(7) 60ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar#define DAVINCI_VC_CTRL_RFIFOEN BIT(8) 61ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar#define DAVINCI_VC_CTRL_RFIFOCL BIT(9) 62ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar#define DAVINCI_VC_CTRL_RFIFOMD_WORD_1 BIT(10) 63ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar#define DAVINCI_VC_CTRL_WFIFOEN BIT(12) 64ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar#define DAVINCI_VC_CTRL_WFIFOCL BIT(13) 65ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar#define DAVINCI_VC_CTRL_WFIFOMD_WORD_1 BIT(14) 66ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar 67ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar/* DAVINCI_VC_INT bit fields */ 68ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar#define DAVINCI_VC_INT_MASK 0x3F 69ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar#define DAVINCI_VC_INT_RDRDY_MASK BIT(0) 70ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar#define DAVINCI_VC_INT_RERROVF_MASK BIT(1) 71ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar#define DAVINCI_VC_INT_RERRUDR_MASK BIT(2) 72ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar#define DAVINCI_VC_INT_WDREQ_MASK BIT(3) 73ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar#define DAVINCI_VC_INT_WERROVF_MASKBIT BIT(4) 74ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar#define DAVINCI_VC_INT_WERRUDR_MASK BIT(5) 75ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar 76ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar/* DAVINCI_VC_REG05 bit fields */ 77ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar#define DAVINCI_VC_REG05_PGA_GAIN 0x07 78ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar 79ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar/* DAVINCI_VC_REG09 bit fields */ 80ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar#define DAVINCI_VC_REG09_MUTE 0x40 81ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar#define DAVINCI_VC_REG09_DIG_ATTEN 0x3F 82ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar 83ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar/* DAVINCI_VC_REG12 bit fields */ 84ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar#define DAVINCI_VC_REG12_POWER_ALL_ON 0xFD 85ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar#define DAVINCI_VC_REG12_POWER_ALL_OFF 0x00 86ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar 87ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar#define DAVINCI_VC_CELLS 2 88ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar 89ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilarenum davinci_vc_cells { 90ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar DAVINCI_VC_VCIF_CELL, 91ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar DAVINCI_VC_CQ93VC_CELL, 92ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar}; 93ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar 94ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilarstruct davinci_vcif { 95ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar struct platform_device *pdev; 96ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar u32 dma_tx_channel; 97ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar u32 dma_rx_channel; 98ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar dma_addr_t dma_tx_addr; 99ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar dma_addr_t dma_rx_addr; 100ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar}; 101ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar 102ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilarstruct cq93vc { 103ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar struct platform_device *pdev; 104ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar struct snd_soc_codec *codec; 105ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar u32 sysclk; 106ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar}; 107ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar 108ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilarstruct davinci_vc; 109ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar 110ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilarstruct davinci_vc { 111ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar /* Device data */ 112ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar struct device *dev; 113ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar struct platform_device *pdev; 114ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar struct clk *clk; 115ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar 116ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar /* Memory resources */ 117ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar void __iomem *base; 118921a2c870faa0a88c34e5c8c2afbd898fe8d325dMark Brown struct regmap *regmap; 119ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar 120ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar /* MFD cells */ 121ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar struct mfd_cell cells[DAVINCI_VC_CELLS]; 122ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar 123ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar /* Client devices */ 124ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar struct davinci_vcif davinci_vcif; 125ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar struct cq93vc cq93vc; 126ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar}; 127ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar 128ca26308c2223cb424c297a70fb7b6c7530a563baMiguel Aguilar#endif 129