605b42f92c
Kernel audio drivers can be categorised into below folders. asoc - ALSA based drivers, asoc/codecs - codec drivers, ipc - APR IPC communication drivers, dsp - DSP low level drivers/Audio ION/ADSP Loader, dsp/codecs - Native encoders and decoders, soc - SoC based drivers(pinctrl/regmap/soundwire) Restructure drivers to above folder format. Include directories also follow above format. Change-Id: I8fa0857baaacd47db126fb5c1f1f5ed7e886dbc0 Signed-off-by: Laxminath Kasam <lkasam@codeaurora.org>
106 lines
2.5 KiB
C
106 lines
2.5 KiB
C
/* Copyright (c) 2015-2017, The Linux Foundation. All rights reserved.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 and
|
|
* only version 2 as published by the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*/
|
|
|
|
#ifndef _SWR_WCD_CTRL_H
|
|
#define _SWR_WCD_CTRL_H
|
|
#include <linux/module.h>
|
|
#include <soc/swr-wcd.h>
|
|
|
|
#define SWR_MAX_ROW 0 /* Rows = 48 */
|
|
#define SWR_MAX_COL 7 /* Cols = 16 */
|
|
#define SWR_MIN_COL 0 /* Cols = 2 */
|
|
|
|
#define SWR_WCD_NAME "swr-wcd"
|
|
|
|
#define SWR_MSTR_PORT_LEN 8 /* Number of master ports */
|
|
|
|
#define SWRM_VERSION_1_0 0x01010000
|
|
#define SWRM_VERSION_1_2 0x01030000
|
|
#define SWRM_VERSION_1_3 0x01040000
|
|
|
|
enum {
|
|
SWR_MSTR_PAUSE,
|
|
SWR_MSTR_RESUME,
|
|
SWR_MSTR_UP,
|
|
SWR_MSTR_DOWN,
|
|
};
|
|
|
|
enum {
|
|
SWR_IRQ_FREE,
|
|
SWR_IRQ_REGISTER,
|
|
};
|
|
|
|
enum {
|
|
SWR_DAC_PORT,
|
|
SWR_COMP_PORT,
|
|
SWR_BOOST_PORT,
|
|
SWR_VISENSE_PORT,
|
|
};
|
|
|
|
struct usecase {
|
|
u8 num_port;
|
|
u8 num_ch;
|
|
u32 chrate;
|
|
};
|
|
|
|
struct port_params {
|
|
u8 si;
|
|
u8 off1;
|
|
u8 off2;
|
|
};
|
|
|
|
struct swrm_mports {
|
|
struct list_head list;
|
|
u8 id;
|
|
};
|
|
|
|
struct swr_ctrl_platform_data {
|
|
void *handle; /* holds priv data */
|
|
int (*read)(void *handle, int reg);
|
|
int (*write)(void *handle, int reg, int val);
|
|
int (*bulk_write)(void *handle, u32 *reg, u32 *val, size_t len);
|
|
int (*clk)(void *handle, bool enable);
|
|
int (*reg_irq)(void *handle, irqreturn_t(*irq_handler)(int irq,
|
|
void *data), void *swr_handle, int type);
|
|
};
|
|
|
|
struct swr_mstr_ctrl {
|
|
struct swr_master master;
|
|
struct device *dev;
|
|
struct resource *supplies;
|
|
struct clk *mclk;
|
|
struct completion reset;
|
|
struct completion broadcast;
|
|
struct mutex mlock;
|
|
struct mutex reslock;
|
|
u8 rcmd_id;
|
|
u8 wcmd_id;
|
|
void *handle; /* SWR Master handle from client for read and writes */
|
|
int (*read)(void *handle, int reg);
|
|
int (*write)(void *handle, int reg, int val);
|
|
int (*bulk_write)(void *handle, u32 *reg, u32 *val, size_t len);
|
|
int (*clk)(void *handle, bool enable);
|
|
int (*reg_irq)(void *handle, irqreturn_t(*irq_handler)(int irq,
|
|
void *data), void *swr_handle, int type);
|
|
int irq;
|
|
int version;
|
|
int num_enum_slaves;
|
|
int slave_status;
|
|
struct swr_mstr_port *mstr_port;
|
|
struct list_head mport_list;
|
|
int state;
|
|
struct platform_device *pdev;
|
|
int num_rx_chs;
|
|
u8 num_cfg_devs;
|
|
};
|
|
|
|
#endif /* _SWR_WCD_CTRL_H */
|