Unverified Commit 56a5b791 authored by Ryan Lee's avatar Ryan Lee Committed by Mark Brown
Browse files

ASoC: codecs: max98373: add SoundWire support

parent d7ee0c72
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -116,6 +116,7 @@ config SND_SOC_ALL_CODECS
	imply SND_SOC_MAX98926
	imply SND_SOC_MAX98927
	imply SND_SOC_MAX98373_I2C
	imply SND_SOC_MAX98373_SDW
	imply SND_SOC_MAX98390
	imply SND_SOC_MAX9850
	imply SND_SOC_MAX9860
@@ -875,6 +876,19 @@ config SND_SOC_MAX98373_I2C
	depends on I2C
	select SND_SOC_MAX98373

config SND_SOC_MAX98373_SDW
	tristate "Maxim Integrated MAX98373 Speaker Amplifier - SDW"
	depends on SOUNDWIRE
	select SND_SOC_MAX98373
	select REGMAP_SOUNDWIRE
	help
	  Enable support for Maxim Integrated MAX98373 Soundwire
	  amplifier. MAX98373 supports either the MIPI SoundWire
	  compatible interface for audio and control data, or
	  the PCM interface for audio data and a standard I2C
	  interface for control data. Select this if MAX98373 is
	  connected via soundwire.

config SND_SOC_MAX98390
	tristate "Maxim Integrated MAX98390 Speaker Amplifier"
	depends on I2C
+2 −0
Original line number Diff line number Diff line
@@ -116,6 +116,7 @@ snd-soc-max98926-objs := max98926.o
snd-soc-max98927-objs := max98927.o
snd-soc-max98373-objs := max98373.o
snd-soc-max98373-i2c-objs := max98373-i2c.o
snd-soc-max98373-sdw-objs := max98373-sdw.o
snd-soc-max98390-objs := max98390.o
snd-soc-max9850-objs := max9850.o
snd-soc-max9860-objs := max9860.o
@@ -420,6 +421,7 @@ obj-$(CONFIG_SND_SOC_MAX98926) += snd-soc-max98926.o
obj-$(CONFIG_SND_SOC_MAX98927)	+= snd-soc-max98927.o
obj-$(CONFIG_SND_SOC_MAX98373)	+= snd-soc-max98373.o
obj-$(CONFIG_SND_SOC_MAX98373_I2C)   += snd-soc-max98373-i2c.o
obj-$(CONFIG_SND_SOC_MAX98373_SDW)   += snd-soc-max98373-sdw.o
obj-$(CONFIG_SND_SOC_MAX98390)	+= snd-soc-max98390.o
obj-$(CONFIG_SND_SOC_MAX9850)	+= snd-soc-max9850.o
obj-$(CONFIG_SND_SOC_MAX9860)	+= snd-soc-max9860.o
+887 −0

File added.

Preview size limit exceeded, changes collapsed.

+72 −0
Original line number Diff line number Diff line
/* SPDX-License-Identifier: GPL-2.0-only */
/* Copyright (c) 2020 Maxim Integrated */

#ifndef _MAX98373_SDW_H
#define _MAX98373_SDW_H

#include "max98373.h"

/* SoundWire Slave Control Port (SCP)  */
#define MAX98373_R0040_SCP_INIT_STAT_1		0x0040
#define MAX98373_R0041_SCP_INIT_MASK_1		0x0041
#define MAX98373_R0042_SCP_INIT_STAT_2		0x0042
#define MAX98373_R0044_SCP_CTRL			0x0044
#define MAX98373_R0045_SCP_SYSTEM_CTRL		0x0045
#define MAX98373_R0046_SCP_DEV_NUMBER		0x0046
#define MAX98373_R0050_SCP_DEV_ID_0		0x0050
#define MAX98373_R0051_SCP_DEV_ID_1		0x0051
#define MAX98373_R0052_SCP_DEV_ID_2		0x0052
#define MAX98373_R0053_SCP_DEV_ID_3		0x0053
#define MAX98373_R0054_SCP_DEV_ID_4		0x0054
#define MAX98373_R0055_SCP_DEV_ID_5		0x0055
#define MAX98373_R0060_SCP_FRAME_CTLR		0x0060
#define MAX98373_R0070_SCP_FRAME_CTLR		0x0070

/* SoundWire Device Data Port (DP)  */
/* Data Port 1 Registers */
#define MAX98373_R0100_DP1_INIT_STAT		0x0100
#define MAX98373_R0101_DP1_INIT_MASK		0x0101
#define MAX98373_R0102_DP1_PORT_CTRL		0x0102
#define MAX98373_R0103_DP1_BLOCK_CTRL_1		0x0103
#define MAX98373_R0104_DP1_PREPARE_STATUS	0x0104
#define MAX98373_R0105_DP1_PREPARE_CTRL		0x0105
/* Data Port 1 Bank 0 Registers */
#define MAX98373_R0120_DP1_CHANNEL_EN		0x0120
#define MAX98373_R0122_DP1_SAMPLE_CTRL1		0x0122
#define MAX98373_R0123_DP1_SAMPLE_CTRL2		0x0123
#define MAX98373_R0124_DP1_OFFSET_CTRL1		0x0124
#define MAX98373_R0125_DP1_OFFSET_CTRL2		0x0125
#define MAX98373_R0126_DP1_HCTRL		0x0126
#define MAX98373_R0127_DP1_BLOCK_CTRL3		0x0127
/* Data Port 1 Bank 1 Registers */
#define MAX98373_R0130_DP1_CHANNEL_EN		0x0130
#define MAX98373_R0132_DP1_SAMPLE_CTRL1		0x0132
#define MAX98373_R0133_DP1_SAMPLE_CTRL2		0x0133
#define MAX98373_R0134_DP1_OFFSET_CTRL1		0x0134
#define MAX98373_R0135_DP1_OFFSET_CTRL2		0x0135
#define MAX98373_R0136_DP1_HCTRL		0x0136
#define MAX98373_R0137_DP1_BLOCK_CTRL3		0x0137
/* Data Port 3 Registers */
#define MAX98373_R0300_DP3_INIT_STAT		0x0300
#define MAX98373_R0301_DP3_INIT_MASK		0x0301
#define MAX98373_R0302_DP3_PORT_CTRL		0x0302
#define MAX98373_R0303_DP3_BLOCK_CTRL_1		0x0303
#define MAX98373_R0304_DP3_PREPARE_STATUS	0x0304
#define MAX98373_R0305_DP3_PREPARE_CTRL		0x0305
/* Data Port 3 Bank 0 Registers */
#define MAX98373_R0320_DP3_CHANNEL_EN		0x0320
#define MAX98373_R0322_DP3_SAMPLE_CTRL1		0x0322
#define MAX98373_R0323_DP3_SAMPLE_CTRL2		0x0323
#define MAX98373_R0324_DP3_OFFSET_CTRL1		0x0324
#define MAX98373_R0325_DP3_OFFSET_CTRL2		0x0325
#define MAX98373_R0326_DP3_HCTRL		0x0326
#define MAX98373_R0327_DP3_BLOCK_CTRL3		0x0327
/* Data Port 3 Bank 1 Registers */
#define MAX98373_R0330_DP3_CHANNEL_EN		0x0330
#define MAX98373_R0332_DP3_SAMPLE_CTRL1		0x0332
#define MAX98373_R0333_DP3_SAMPLE_CTRL2		0x0333
#define MAX98373_R0334_DP3_OFFSET_CTRL1		0x0334
#define MAX98373_R0335_DP3_OFFSET_CTRL2		0x0335
#define MAX98373_R0336_DP3_HCTRL		0x0336
#define MAX98373_R0337_DP3_BLOCK_CTRL3		0x0337
#endif
+14 −0
Original line number Diff line number Diff line
@@ -404,6 +404,20 @@ const struct snd_soc_component_driver soc_codec_dev_max98373 = {
};
EXPORT_SYMBOL_GPL(soc_codec_dev_max98373);

const struct snd_soc_component_driver soc_codec_dev_max98373_sdw = {
	.probe			= NULL,
	.controls		= max98373_snd_controls,
	.num_controls		= ARRAY_SIZE(max98373_snd_controls),
	.dapm_widgets		= max98373_dapm_widgets,
	.num_dapm_widgets	= ARRAY_SIZE(max98373_dapm_widgets),
	.dapm_routes		= max98373_audio_map,
	.num_dapm_routes	= ARRAY_SIZE(max98373_audio_map),
	.use_pmdown_time	= 1,
	.endianness		= 1,
	.non_legacy_dai_naming	= 1,
};
EXPORT_SYMBOL_GPL(soc_codec_dev_max98373_sdw);

void max98373_slot_config(struct device *dev,
			  struct max98373_priv *max98373)
{
Loading