Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5e8351de authored by Bard Liao's avatar Bard Liao Committed by Mark Brown
Browse files

ASoC: add RT5670 CODEC driver



This patch adds a minimum support of Realtek ALC5670 codec.

Signed-off-by: default avatarBard Liao <bardliao@realtek.com>
Signed-off-by: default avatarMark Brown <broonie@linaro.org>
parent 099d334e
Loading
Loading
Loading
Loading

include/sound/rt5670.h

0 → 100644
+27 −0
Original line number Diff line number Diff line
/*
 * linux/sound/rt5670.h -- Platform data for RT5670
 *
 * Copyright 2014 Realtek Microelectronics
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */

#ifndef __LINUX_SND_RT5670_H
#define __LINUX_SND_RT5670_H

struct rt5670_platform_data {
	int jd_mode;
	bool in2_diff;

	bool dmic_en;
	unsigned int dmic1_data_pin;
	/* 0 = GPIO6; 1 = IN2P; 3 = GPIO7*/
	unsigned int dmic2_data_pin;
	/* 0 = GPIO8; 1 = IN3N; */
	unsigned int dmic3_data_pin;
	/* 0 = GPIO9; 1 = GPIO10; 2 = GPIO5*/
};

#endif
+6 −0
Original line number Diff line number Diff line
@@ -78,6 +78,7 @@ config SND_SOC_ALL_CODECS
	select SND_SOC_RT5640 if I2C
	select SND_SOC_RT5645 if I2C
	select SND_SOC_RT5651 if I2C
	select SND_SOC_RT5670 if I2C
	select SND_SOC_RT5677 if I2C
	select SND_SOC_SGTL5000 if I2C
	select SND_SOC_SI476X if MFD_SI476X_CORE
@@ -445,10 +446,12 @@ config SND_SOC_RL6231
	default y if SND_SOC_RT5640=y
	default y if SND_SOC_RT5645=y
	default y if SND_SOC_RT5651=y
	default y if SND_SOC_RT5670=y
	default y if SND_SOC_RT5677=y
	default m if SND_SOC_RT5640=m
	default m if SND_SOC_RT5645=m
	default m if SND_SOC_RT5651=m
	default m if SND_SOC_RT5670=m
	default m if SND_SOC_RT5677=m

config SND_SOC_RT5631
@@ -463,6 +466,9 @@ config SND_SOC_RT5645
config SND_SOC_RT5651
	tristate

config SND_SOC_RT5670
	tristate

config SND_SOC_RT5677
	tristate

+2 −0
Original line number Diff line number Diff line
@@ -72,6 +72,7 @@ snd-soc-rt5631-objs := rt5631.o
snd-soc-rt5640-objs := rt5640.o
snd-soc-rt5645-objs := rt5645.o
snd-soc-rt5651-objs := rt5651.o
snd-soc-rt5670-objs := rt5670.o
snd-soc-rt5677-objs := rt5677.o
snd-soc-sgtl5000-objs := sgtl5000.o
snd-soc-alc5623-objs := alc5623.o
@@ -237,6 +238,7 @@ obj-$(CONFIG_SND_SOC_RT5631) += snd-soc-rt5631.o
obj-$(CONFIG_SND_SOC_RT5640)	+= snd-soc-rt5640.o
obj-$(CONFIG_SND_SOC_RT5645)	+= snd-soc-rt5645.o
obj-$(CONFIG_SND_SOC_RT5651)	+= snd-soc-rt5651.o
obj-$(CONFIG_SND_SOC_RT5670)	+= snd-soc-rt5670.o
obj-$(CONFIG_SND_SOC_RT5677)	+= snd-soc-rt5677.o
obj-$(CONFIG_SND_SOC_SGTL5000)  += snd-soc-sgtl5000.o
obj-$(CONFIG_SND_SOC_SIGMADSP)	+= snd-soc-sigmadsp.o
+54 −0
Original line number Diff line number Diff line
/*
 * rt5670-dsp.h  --  RT5670 ALSA SoC DSP driver
 *
 * Copyright 2014 Realtek Microelectronics
 * Author: Bard Liao <bardliao@realtek.com>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */

#ifndef __RT5670_DSP_H__
#define __RT5670_DSP_H__

#define RT5670_DSP_CTRL1		0xe0
#define RT5670_DSP_CTRL2		0xe1
#define RT5670_DSP_CTRL3		0xe2
#define RT5670_DSP_CTRL4		0xe3
#define RT5670_DSP_CTRL5		0xe4

/* DSP Control 1 (0xe0) */
#define RT5670_DSP_CMD_MASK		(0xff << 8)
#define RT5670_DSP_CMD_PE		(0x0d << 8)	/* Patch Entry */
#define RT5670_DSP_CMD_MW		(0x3b << 8)	/* Memory Write */
#define RT5670_DSP_CMD_MR		(0x37 << 8)	/* Memory Read */
#define RT5670_DSP_CMD_RR		(0x60 << 8)	/* Register Read */
#define RT5670_DSP_CMD_RW		(0x68 << 8)	/* Register Write */
#define RT5670_DSP_REG_DATHI		(0x26 << 8)	/* High Data Addr */
#define RT5670_DSP_REG_DATLO		(0x25 << 8)	/* Low Data Addr */
#define RT5670_DSP_CLK_MASK		(0x3 << 6)
#define RT5670_DSP_CLK_SFT		6
#define RT5670_DSP_CLK_768K		(0x0 << 6)
#define RT5670_DSP_CLK_384K		(0x1 << 6)
#define RT5670_DSP_CLK_192K		(0x2 << 6)
#define RT5670_DSP_CLK_96K		(0x3 << 6)
#define RT5670_DSP_BUSY_MASK		(0x1 << 5)
#define RT5670_DSP_RW_MASK		(0x1 << 4)
#define RT5670_DSP_DL_MASK		(0x3 << 2)
#define RT5670_DSP_DL_0			(0x0 << 2)
#define RT5670_DSP_DL_1			(0x1 << 2)
#define RT5670_DSP_DL_2			(0x2 << 2)
#define RT5670_DSP_DL_3			(0x3 << 2)
#define RT5670_DSP_I2C_AL_16		(0x1 << 1)
#define RT5670_DSP_CMD_EN		(0x1)

struct rt5670_dsp_param {
	u16 cmd_fmt;
	u16 addr;
	u16 data;
	u8 cmd;
};

#endif /* __RT5670_DSP_H__ */
+2692 −0

File added.

Preview size limit exceeded, changes collapsed.

Loading