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

Commit 2b26dd4c authored by Oder Chiou's avatar Oder Chiou Committed by Mark Brown
Browse files

ASoC: rt5660: add rt5660 codec driver



This is the initial codec driver for rt5660

Signed-off-by: default avatarOder Chiou <oder_chiou@realtek.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 29b4817d
Loading
Loading
Loading
Loading
+47 −0
Original line number Diff line number Diff line
RT5660 audio CODEC

This device supports I2C only.

Required properties:

- compatible : "realtek,rt5660".

- reg : The I2C address of the device.

Optional properties:

- clocks: The phandle of the master clock to the CODEC
- clock-names: Should be "mclk"

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

- realtek,poweroff-in-suspend
  Boolean. If the codec will be powered off in suspend, the resume should be
  added delay time for waiting codec power ready.

- realtek,dmic1-data-pin
  0: dmic1 is not used
  1: using GPIO2 pin as dmic1 data pin
  2: using IN1P pin as dmic1 data pin

Pins on the device (for linking into audio routes) for RT5660:

  * DMIC L1
  * DMIC R1
  * IN1P
  * IN1N
  * IN2P
  * IN3P
  * IN3N
  * SPO
  * LOUTL
  * LOUTR

Example:

rt5660 {
	compatible = "realtek,rt5660";
	reg = <0x1c>;
};

include/sound/rt5660.h

0 → 100644
+31 −0
Original line number Diff line number Diff line
/*
 * linux/sound/rt5660.h -- Platform data for RT5660
 *
 * Copyright 2016 Realtek Semiconductor Corp.
 * Author: Oder Chiou <oder_chiou@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 __LINUX_SND_RT5660_H
#define __LINUX_SND_RT5660_H

enum rt5660_dmic1_data_pin {
	RT5660_DMIC1_NULL,
	RT5660_DMIC1_DATA_GPIO2,
	RT5660_DMIC1_DATA_IN1P,
};

struct rt5660_platform_data {
	/* IN1 & IN3 can optionally be differential */
	bool in1_diff;
	bool in3_diff;
	bool use_ldo2;
	bool poweroff_codec_in_suspend;

	enum rt5660_dmic1_data_pin dmic1_data_pin;
};

#endif
+6 −0
Original line number Diff line number Diff line
@@ -112,6 +112,7 @@ config SND_SOC_ALL_CODECS
	select SND_SOC_RT5645 if I2C
	select SND_SOC_RT5651 if I2C
	select SND_SOC_RT5659 if I2C
	select SND_SOC_RT5660 if I2C
	select SND_SOC_RT5670 if I2C
	select SND_SOC_RT5677 if I2C && SPI_MASTER
	select SND_SOC_SGTL5000 if I2C
@@ -645,6 +646,7 @@ config SND_SOC_RL6231
	default y if SND_SOC_RT5645=y
	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_RT5670=y
	default y if SND_SOC_RT5677=y
	default m if SND_SOC_RT5514=m
@@ -653,6 +655,7 @@ config SND_SOC_RL6231
	default m if SND_SOC_RT5645=m
	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_RT5670=m
	default m if SND_SOC_RT5677=m

@@ -697,6 +700,9 @@ config SND_SOC_RT5651
config SND_SOC_RT5659
	tristate

config SND_SOC_RT5660
	tristate

config SND_SOC_RT5670
	tristate

+2 −0
Original line number Diff line number Diff line
@@ -112,6 +112,7 @@ snd-soc-rt5640-objs := rt5640.o
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-rt5670-objs := rt5670.o
snd-soc-rt5677-objs := rt5677.o
snd-soc-rt5677-spi-objs := rt5677-spi.o
@@ -333,6 +334,7 @@ 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_RT5659)	+= snd-soc-rt5659.o
obj-$(CONFIG_SND_SOC_RT5660)	+= snd-soc-rt5660.o
obj-$(CONFIG_SND_SOC_RT5670)	+= snd-soc-rt5670.o
obj-$(CONFIG_SND_SOC_RT5677)	+= snd-soc-rt5677.o
obj-$(CONFIG_SND_SOC_RT5677_SPI)	+= snd-soc-rt5677-spi.o
+1353 −0

File added.

Preview size limit exceeded, changes collapsed.

Loading