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

Commit 33ada14a authored by Bard Liao's avatar Bard Liao Committed by Mark Brown
Browse files

ASoC: add rt5665 codec driver



This is the initial codec driver for rt5665.

Signed-off-by: default avatarBard Liao <bardliao@realtek.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 134340b3
Loading
Loading
Loading
Loading
+68 −0
Original line number Diff line number Diff line
RT5665/RT5666/RT5668 audio CODEC

This device supports I2C only.

Required properties:

- compatible : One of "realtek,rt5665", "realtek,rt5666" or "realtek,rt5668".

- reg : The I2C address of the device.

- interrupts : The CODEC's interrupt output.

Optional properties:

- realtek,in1-differential
- realtek,in2-differential
- realtek,in3-differential
- realtek,in4-differential
  Boolean. Indicate MIC1/2/3/4 input are differential, rather than single-ended.

- realtek,dmic1-data-pin
  0: dmic1 is not used
  1: using GPIO4 pin as dmic1 data pin
  2: using IN2N pin as dmic2 data pin

- realtek,dmic2-data-pin
  0: dmic2 is not used
  1: using GPIO5 pin as dmic2 data pin
  2: using IN2P pin as dmic2 data pin

- realtek,jd-src
  0: No JD is used
  1: using JD1 as JD source

- realtek,ldo1-en-gpios : The GPIO that controls the CODEC's LDO1_EN pin.

Pins on the device (for linking into audio routes) for RT5659/RT5658:

  * DMIC L1
  * DMIC R1
  * DMIC L2
  * DMIC R2
  * IN1P
  * IN1N
  * IN2P
  * IN2N
  * IN3P
  * IN3N
  * IN4P
  * IN4N
  * HPOL
  * HPOR
  * LOUTL
  * LOUTR
  * MONOOUT
  * PDML
  * PDMR

Example:

rt5659 {
	compatible = "realtek,rt5665";
	reg = <0x1b>;
	interrupt-parent = <&gpio>;
	interrupts = <TEGRA_GPIO(W, 3) GPIO_ACTIVE_HIGH>;
	realtek,ldo1-en-gpios =
		<&gpio TEGRA_GPIO(V, 3) GPIO_ACTIVE_HIGH>;
};

include/sound/rt5665.h

0 → 100755
+47 −0
Original line number Diff line number Diff line
/*
 * linux/sound/rt5665.h -- Platform data for RT5665
 *
 * Copyright 2016 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_RT5665_H
#define __LINUX_SND_RT5665_H

enum rt5665_dmic1_data_pin {
	RT5665_DMIC1_NULL,
	RT5665_DMIC1_DATA_GPIO4,
	RT5665_DMIC1_DATA_IN2N,
};

enum rt5665_dmic2_data_pin {
	RT5665_DMIC2_NULL,
	RT5665_DMIC2_DATA_GPIO5,
	RT5665_DMIC2_DATA_IN2P,
};

enum rt5665_jd_src {
	RT5665_JD_NULL,
	RT5665_JD1,
};

struct rt5665_platform_data {
	bool in1_diff;
	bool in2_diff;
	bool in3_diff;
	bool in4_diff;

	int ldo1_en; /* GPIO for LDO1_EN */

	enum rt5665_dmic1_data_pin dmic1_data_pin;
	enum rt5665_dmic2_data_pin dmic2_data_pin;
	enum rt5665_jd_src jd_src;

	unsigned int sar_hs_type;
};

#endif
+6 −0
Original line number Diff line number Diff line
@@ -114,6 +114,7 @@ config SND_SOC_ALL_CODECS
	select SND_SOC_RT5651 if I2C
	select SND_SOC_RT5659 if I2C
	select SND_SOC_RT5660 if I2C
	select SND_SOC_RT5665 if I2C
	select SND_SOC_RT5663 if I2C
	select SND_SOC_RT5670 if I2C
	select SND_SOC_RT5677 if I2C && SPI_MASTER
@@ -649,6 +650,7 @@ config SND_SOC_RL6231
	default y if SND_SOC_RT5651=y
	default y if SND_SOC_RT5659=y
	default y if SND_SOC_RT5660=y
	default y if SND_SOC_RT5665=y
	default y if SND_SOC_RT5663=y
	default y if SND_SOC_RT5670=y
	default y if SND_SOC_RT5677=y
@@ -659,6 +661,7 @@ config SND_SOC_RL6231
	default m if SND_SOC_RT5651=m
	default m if SND_SOC_RT5659=m
	default m if SND_SOC_RT5660=m
	default m if SND_SOC_RT5665=m
	default m if SND_SOC_RT5663=m
	default m if SND_SOC_RT5670=m
	default m if SND_SOC_RT5677=m
@@ -708,6 +711,9 @@ config SND_SOC_RT5659
config SND_SOC_RT5660
	tristate

config SND_SOC_RT5665
	tristate

config SND_SOC_RT5663
	tristate

+2 −0
Original line number Diff line number Diff line
@@ -114,6 +114,7 @@ snd-soc-rt5645-objs := rt5645.o
snd-soc-rt5651-objs := rt5651.o
snd-soc-rt5659-objs := rt5659.o
snd-soc-rt5660-objs := rt5660.o
snd-soc-rt5665-objs := rt5665.o
snd-soc-rt5663-objs := rt5663.o
snd-soc-rt5670-objs := rt5670.o
snd-soc-rt5677-objs := rt5677.o
@@ -338,6 +339,7 @@ obj-$(CONFIG_SND_SOC_RT5645) += snd-soc-rt5645.o
obj-$(CONFIG_SND_SOC_RT5651)	+= snd-soc-rt5651.o
obj-$(CONFIG_SND_SOC_RT5659)	+= snd-soc-rt5659.o
obj-$(CONFIG_SND_SOC_RT5660)	+= snd-soc-rt5660.o
obj-$(CONFIG_SND_SOC_RT5665)	+= snd-soc-rt5665.o
obj-$(CONFIG_SND_SOC_RT5663)	+= snd-soc-rt5663.o
obj-$(CONFIG_SND_SOC_RT5670)	+= snd-soc-rt5670.o
obj-$(CONFIG_SND_SOC_RT5677)	+= snd-soc-rt5677.o
+4875 −0

File added.

Preview size limit exceeded, changes collapsed.

Loading