Commit 4c5d1469 authored by Sylwester Nawrocki's avatar Sylwester Nawrocki Committed by Mark Brown

ASoC: max98504: Add max98504 speaker amplifier driver

This patch adds driver for the MAX98504 speaker amplifier.  The MAX98504
is a high efficiency mono class D amplifier that features an integrated
boost converter with voltage and current sensing ADCs for Dynamic Speaker
Management.
This driver does not include support for the I2S DAI, as we wouldn't be
able  to test such code in a hardware configuration where the amplifier
has only wired the analogue input.
Signed-off-by: default avatarInha Song <ideal.song@samsung.com>
[k.kozlowski: rebased on 4.1]
Signed-off-by: default avatarKrzysztof Kozlowski <k.kozlowski@samsung.com>
[s.nawrocki: removed unused macro definitions, rewrote regulator supply
 related parts, rewrote regmap configuration code, added support for speaker
 enable and global chip enable through DAPM, rewritten as component driver,
 added PDM DAI definition and TDM callbacks for PDM channels configuration]
Signed-off-by: default avatarSylwester Nawrocki <s.nawrocki@samsung.com>
--
Changes since v2:
 - added parsing of the VBAT brownout DT properties,
 - removed MAX98504_REG_SPEAKER_SOURCE_SELECT register initialization,
 - removed unused macro definitions.

Changes since v1:
 - none.

Changes since initial version:
 - added regulator supply handling,
 - added DAPM widges for speaker source selection,
 - added PDM DAI definition and TDM callbacks for setting up active
   PDM Tx channels and I/V sense ADC data mapping,
 - removed all optional DT properties, added regulator supply properties
   in the DT binding.
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 1a695a90
...@@ -535,6 +535,10 @@ config SND_SOC_MAX98357A ...@@ -535,6 +535,10 @@ config SND_SOC_MAX98357A
config SND_SOC_MAX98371 config SND_SOC_MAX98371
tristate tristate
config SND_SOC_MAX98504
tristate "Maxim MAX98504 speaker amplifier"
depends on I2C
config SND_SOC_MAX9867 config SND_SOC_MAX9867
tristate tristate
......
...@@ -208,6 +208,7 @@ snd-soc-wm-hubs-objs := wm_hubs.o ...@@ -208,6 +208,7 @@ snd-soc-wm-hubs-objs := wm_hubs.o
# Amp # Amp
snd-soc-max9877-objs := max9877.o snd-soc-max9877-objs := max9877.o
snd-soc-max98504-objs := max98504.o
snd-soc-tpa6130a2-objs := tpa6130a2.o snd-soc-tpa6130a2-objs := tpa6130a2.o
snd-soc-tas2552-objs := tas2552.o snd-soc-tas2552-objs := tas2552.o
...@@ -419,4 +420,5 @@ obj-$(CONFIG_SND_SOC_WM_HUBS) += snd-soc-wm-hubs.o ...@@ -419,4 +420,5 @@ obj-$(CONFIG_SND_SOC_WM_HUBS) += snd-soc-wm-hubs.o
# Amp # Amp
obj-$(CONFIG_SND_SOC_MAX9877) += snd-soc-max9877.o obj-$(CONFIG_SND_SOC_MAX9877) += snd-soc-max9877.o
obj-$(CONFIG_SND_SOC_MAX98504) += snd-soc-max98504.o
obj-$(CONFIG_SND_SOC_TPA6130A2) += snd-soc-tpa6130a2.o obj-$(CONFIG_SND_SOC_TPA6130A2) += snd-soc-tpa6130a2.o
This diff is collapsed.
/*
* MAX98504 ALSA SoC Audio driver
*
* Copyright 2011 - 2012 Maxim Integrated Products
* Copyright 2016 Samsung Electronics Co., Ltd.
*
* 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 MAX98504_H_
#define MAX98504_H_
/*
* MAX98504 Register Definitions
*/
#define MAX98504_INTERRUPT_STATUS 0x01
#define MAX98504_INTERRUPT_FLAGS 0x02
#define MAX98504_INTERRUPT_ENABLE 0x03
#define MAX98504_INTERRUPT_FLAG_CLEARS 0x04
#define MAX98504_GPIO_ENABLE 0x10
#define MAX98504_GPIO_CONFIG 0x11
#define MAX98504_WATCHDOG_ENABLE 0x12
#define MAX98504_WATCHDOG_CONFIG 0x13
#define MAX98504_WATCHDOG_CLEAR 0x14
#define MAX98504_CLOCK_MONITOR_ENABLE 0x15
#define MAX98504_PVDD_BROWNOUT_ENABLE 0x16
#define MAX98504_PVDD_BROWNOUT_CONFIG_1 0x17
#define MAX98504_PVDD_BROWNOUT_CONFIG_2 0x18
#define MAX98504_PVDD_BROWNOUT_CONFIG_3 0x19
#define MAX98504_PVDD_BROWNOUT_CONFIG_4 0x1a
#define MAX98504_PCM_RX_ENABLE 0x20
#define MAX98504_PCM_TX_ENABLE 0x21
#define MAX98504_PCM_TX_HIZ_CONTROL 0x22
#define MAX98504_PCM_TX_CHANNEL_SOURCES 0x23
#define MAX98504_PCM_MODE_CONFIG 0x24
#define MAX98504_PCM_DSP_CONFIG 0x25
#define MAX98504_PCM_CLOCK_SETUP 0x26
#define MAX98504_PCM_SAMPLE_RATE_SETUP 0x27
#define MAX98504_PCM_TO_SPEAKER_MONOMIX 0x28
#define MAX98504_PDM_TX_ENABLE 0x30
#define MAX98504_PDM_TX_HIZ_CONTROL 0x31
#define MAX98504_PDM_TX_CONTROL 0x32
#define MAX98504_PDM_RX_ENABLE 0x33
#define MAX98504_SPEAKER_ENABLE 0x34
#define MAX98504_SPEAKER_SOURCE_SELECT 0x35
#define MAX98504_MEASUREMENT_ENABLE 0x36
#define MAX98504_ANALOGUE_INPUT_GAIN 0x37
#define MAX98504_TEMPERATURE_LIMIT_CONFIG 0x38
#define MAX98504_GLOBAL_ENABLE 0x40
#define MAX98504_SOFTWARE_RESET 0x41
#define MAX98504_REV_ID 0x7fff
#define MAX98504_MAX_REGISTER 0x7fff
#define MAX98504_DAI_ID_PCM 1
#define MAX98504_DAI_ID_PDM 2
#endif /* MAX98504_H_ */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment