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

Commit a91eb199 authored by Mark Brown's avatar Mark Brown
Browse files

ASoC: Initial WM8904 CODEC driver



The WM8904 is a high performance ultra-low power stereo CODEC
optimised for portable audio applications, with features including
a class W amplifier, FLL with free running mode, Mobile ReTune and
ground referenced headphone and line outputs.

Support for some features, most particularly the digital microphone
interface, is not yet present.

Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: default avatarLiam Girdwood <lrg@slimlogic.co.uk>
parent d033c36a
Loading
Loading
Loading
Loading

include/sound/wm8904.h

0 → 100644
+57 −0
Original line number Diff line number Diff line
/*
 * Platform data for WM8904
 *
 * Copyright 2009 Wolfson Microelectronics PLC.
 *
 * Author: Mark Brown <broonie@opensource.wolfsonmicro.com>
 *
 *  This program is free software; you can redistribute  it and/or modify it
 *  under  the terms of  the GNU General  Public License as published by the
 *  Free Software Foundation;  either version 2 of the  License, or (at your
 *  option) any later version.
 *
 */

#ifndef __MFD_WM8994_PDATA_H__
#define __MFD_WM8994_PDATA_H__

#define WM8904_DRC_REGS 4
#define WM8904_EQ_REGS  25

/**
 * DRC configurations are specified with a label and a set of register
 * values to write (the enable bits will be ignored).  At runtime an
 * enumerated control will be presented for each DRC block allowing
 * the user to choose the configration to use.
 *
 * Configurations may be generated by hand or by using the DRC control
 * panel provided by the WISCE - see  http://www.wolfsonmicro.com/wisce/
 * for details.
 */
struct wm8904_drc_cfg {
	const char *name;
	u16 regs[WM8904_DRC_REGS];
};

/**
 * ReTune Mobile configurations are specified with a label, sample
 * rate and set of values to write (the enable bits will be ignored).
 *
 * Configurations are expected to be generated using the ReTune Mobile
 * control panel in WISCE - see http://www.wolfsonmicro.com/wisce/
 */
struct wm8904_retune_mobile_cfg {
	const char *name;
	unsigned int rate;
	u16 regs[WM8904_EQ_REGS];
};

struct wm8904_pdata {
	int num_drc_cfgs;
	struct wm8904_drc_cfg *drc_cfgs;

	int num_retune_mobile_cfgs;
	struct wm8904_retune_mobile_cfg *retune_mobile_cfgs;
};

#endif
+4 −0
Original line number Diff line number Diff line
@@ -49,6 +49,7 @@ config SND_SOC_ALL_CODECS
	select SND_SOC_WM8776 if SND_SOC_I2C_AND_SPI
	select SND_SOC_WM8900 if I2C
	select SND_SOC_WM8903 if I2C
	select SND_SOC_WM8904 if I2C
	select SND_SOC_WM8940 if I2C
	select SND_SOC_WM8960 if I2C
	select SND_SOC_WM8961 if I2C
@@ -203,6 +204,9 @@ config SND_SOC_WM8900
config SND_SOC_WM8903
	tristate

config SND_SOC_WM8904
	tristate

config SND_SOC_WM8940
        tristate

+2 −0
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ snd-soc-wm8753-objs := wm8753.o
snd-soc-wm8776-objs := wm8776.o
snd-soc-wm8900-objs := wm8900.o
snd-soc-wm8903-objs := wm8903.o
snd-soc-wm8904-objs := wm8904.o
snd-soc-wm8940-objs := wm8940.o
snd-soc-wm8960-objs := wm8960.o
snd-soc-wm8961-objs := wm8961.o
@@ -92,6 +93,7 @@ obj-$(CONFIG_SND_SOC_WM8753) += snd-soc-wm8753.o
obj-$(CONFIG_SND_SOC_WM8776)	+= snd-soc-wm8776.o
obj-$(CONFIG_SND_SOC_WM8900)	+= snd-soc-wm8900.o
obj-$(CONFIG_SND_SOC_WM8903)	+= snd-soc-wm8903.o
obj-$(CONFIG_SND_SOC_WM8904)	+= snd-soc-wm8904.o
obj-$(CONFIG_SND_SOC_WM8971)	+= snd-soc-wm8971.o
obj-$(CONFIG_SND_SOC_WM8974)	+= snd-soc-wm8974.o
obj-$(CONFIG_SND_SOC_WM8940)	+= snd-soc-wm8940.o
+2538 −0

File added.

Preview size limit exceeded, changes collapsed.

+1681 −0

File added.

Preview size limit exceeded, changes collapsed.