mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	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: Inha Song <ideal.song@samsung.com> [k.kozlowski: rebased on 4.1] Signed-off-by: Krzysztof 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: Sylwester 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: Mark Brown <broonie@kernel.org>
		
			
				
	
	
		
			59 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
 * 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_ */
 |