Merge branch 'for-3.1' into for-3.2
This commit is contained in:
Коммит
6f1a7767fd
|
@ -65,7 +65,7 @@
|
|||
#include <plat/iic.h>
|
||||
#include <plat/pm.h>
|
||||
|
||||
#include <sound/wm8915.h>
|
||||
#include <sound/wm8996.h>
|
||||
#include <sound/wm8962.h>
|
||||
#include <sound/wm9081.h>
|
||||
|
||||
|
@ -614,7 +614,7 @@ static struct wm831x_pdata glenfarclas_pmic_pdata __initdata = {
|
|||
.disable_touch = true,
|
||||
};
|
||||
|
||||
static struct wm8915_retune_mobile_config wm8915_retune[] = {
|
||||
static struct wm8996_retune_mobile_config wm8996_retune[] = {
|
||||
{
|
||||
.name = "Sub LPF",
|
||||
.rate = 48000,
|
||||
|
@ -635,12 +635,12 @@ static struct wm8915_retune_mobile_config wm8915_retune[] = {
|
|||
},
|
||||
};
|
||||
|
||||
static struct wm8915_pdata wm8915_pdata __initdata = {
|
||||
static struct wm8996_pdata wm8996_pdata __initdata = {
|
||||
.ldo_ena = S3C64XX_GPN(7),
|
||||
.gpio_base = CODEC_GPIO_BASE,
|
||||
.micdet_def = 1,
|
||||
.inl_mode = WM8915_DIFFERRENTIAL_1,
|
||||
.inr_mode = WM8915_DIFFERRENTIAL_1,
|
||||
.inl_mode = WM8996_DIFFERRENTIAL_1,
|
||||
.inr_mode = WM8996_DIFFERRENTIAL_1,
|
||||
|
||||
.irq_flags = IRQF_TRIGGER_RISING,
|
||||
|
||||
|
@ -652,8 +652,8 @@ static struct wm8915_pdata wm8915_pdata __initdata = {
|
|||
0x020e, /* GPIO5 == CLKOUT */
|
||||
},
|
||||
|
||||
.retune_mobile_cfgs = wm8915_retune,
|
||||
.num_retune_mobile_cfgs = ARRAY_SIZE(wm8915_retune),
|
||||
.retune_mobile_cfgs = wm8996_retune,
|
||||
.num_retune_mobile_cfgs = ARRAY_SIZE(wm8996_retune),
|
||||
};
|
||||
|
||||
static struct wm8962_pdata wm8962_pdata __initdata = {
|
||||
|
@ -679,8 +679,8 @@ static struct i2c_board_info i2c_devs1[] __initdata = {
|
|||
.platform_data = &glenfarclas_pmic_pdata },
|
||||
|
||||
{ I2C_BOARD_INFO("wm1250-ev1", 0x27) },
|
||||
{ I2C_BOARD_INFO("wm8915", 0x1a),
|
||||
.platform_data = &wm8915_pdata,
|
||||
{ I2C_BOARD_INFO("wm8996", 0x1a),
|
||||
.platform_data = &wm8996_pdata,
|
||||
.irq = GLENFARCLAS_PMIC_IRQ_BASE + WM831X_IRQ_GPIO_2,
|
||||
},
|
||||
{ I2C_BOARD_INFO("wm9081", 0x6c),
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* linux/sound/wm8915.h -- Platform data for WM8915
|
||||
* linux/sound/wm8996.h -- Platform data for WM8996
|
||||
*
|
||||
* Copyright 2011 Wolfson Microelectronics. PLC.
|
||||
*
|
||||
|
@ -8,14 +8,14 @@
|
|||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#ifndef __LINUX_SND_WM8903_H
|
||||
#define __LINUX_SND_WM8903_H
|
||||
#ifndef __LINUX_SND_WM8996_H
|
||||
#define __LINUX_SND_WM8996_H
|
||||
|
||||
enum wm8915_inmode {
|
||||
WM8915_DIFFERRENTIAL_1 = 0, /* IN1xP - IN1xN */
|
||||
WM8915_INVERTING = 1, /* IN1xN */
|
||||
WM8915_NON_INVERTING = 2, /* IN1xP */
|
||||
WM8915_DIFFERENTIAL_2 = 3, /* IN2xP - IN2xP */
|
||||
enum wm8996_inmode {
|
||||
WM8996_DIFFERRENTIAL_1 = 0, /* IN1xP - IN1xN */
|
||||
WM8996_INVERTING = 1, /* IN1xN */
|
||||
WM8996_NON_INVERTING = 2, /* IN1xP */
|
||||
WM8996_DIFFERENTIAL_2 = 3, /* IN2xP - IN2xP */
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -25,23 +25,23 @@ enum wm8915_inmode {
|
|||
* Configurations are expected to be generated using the ReTune Mobile
|
||||
* control panel in WISCE - see http://www.wolfsonmicro.com/wisce/
|
||||
*/
|
||||
struct wm8915_retune_mobile_config {
|
||||
struct wm8996_retune_mobile_config {
|
||||
const char *name;
|
||||
int rate;
|
||||
u16 regs[20];
|
||||
};
|
||||
|
||||
#define WM8915_SET_DEFAULT 0x10000
|
||||
#define WM8996_SET_DEFAULT 0x10000
|
||||
|
||||
struct wm8915_pdata {
|
||||
struct wm8996_pdata {
|
||||
int irq_flags; /** Set IRQ trigger flags; default active low */
|
||||
|
||||
int ldo_ena; /** GPIO for LDO1; -1 for none */
|
||||
|
||||
int micdet_def; /** Default MICDET_SRC/HP1FB_SRC/MICD_BIAS */
|
||||
|
||||
enum wm8915_inmode inl_mode;
|
||||
enum wm8915_inmode inr_mode;
|
||||
enum wm8996_inmode inl_mode;
|
||||
enum wm8996_inmode inr_mode;
|
||||
|
||||
u32 spkmute_seq; /** Value for register 0x802 */
|
||||
|
||||
|
@ -49,7 +49,7 @@ struct wm8915_pdata {
|
|||
u32 gpio_default[5];
|
||||
|
||||
int num_retune_mobile_cfgs;
|
||||
struct wm8915_retune_mobile_config *retune_mobile_cfgs;
|
||||
struct wm8996_retune_mobile_config *retune_mobile_cfgs;
|
||||
};
|
||||
|
||||
#endif
|
|
@ -78,7 +78,6 @@ config SND_SOC_ALL_CODECS
|
|||
select SND_SOC_WM8900 if I2C
|
||||
select SND_SOC_WM8903 if I2C
|
||||
select SND_SOC_WM8904 if I2C
|
||||
select SND_SOC_WM8915 if I2C
|
||||
select SND_SOC_WM8940 if I2C
|
||||
select SND_SOC_WM8955 if I2C
|
||||
select SND_SOC_WM8960 if I2C
|
||||
|
@ -95,6 +94,7 @@ config SND_SOC_ALL_CODECS
|
|||
select SND_SOC_WM8993 if I2C
|
||||
select SND_SOC_WM8994 if MFD_WM8994
|
||||
select SND_SOC_WM8995 if SND_SOC_I2C_AND_SPI
|
||||
select SND_SOC_WM8996 if I2C
|
||||
select SND_SOC_WM9081 if I2C
|
||||
select SND_SOC_WM9090 if I2C
|
||||
select SND_SOC_WM9705 if SND_SOC_AC97_BUS
|
||||
|
@ -329,9 +329,6 @@ config SND_SOC_WM8903
|
|||
config SND_SOC_WM8904
|
||||
tristate
|
||||
|
||||
config SND_SOC_WM8915
|
||||
tristate
|
||||
|
||||
config SND_SOC_WM8940
|
||||
tristate
|
||||
|
||||
|
@ -380,6 +377,9 @@ config SND_SOC_WM8994
|
|||
config SND_SOC_WM8995
|
||||
tristate
|
||||
|
||||
config SND_SOC_WM8996
|
||||
tristate
|
||||
|
||||
config SND_SOC_WM9081
|
||||
tristate
|
||||
|
||||
|
|
|
@ -63,7 +63,7 @@ snd-soc-wm8804-objs := wm8804.o
|
|||
snd-soc-wm8900-objs := wm8900.o
|
||||
snd-soc-wm8903-objs := wm8903.o
|
||||
snd-soc-wm8904-objs := wm8904.o
|
||||
snd-soc-wm8915-objs := wm8915.o
|
||||
snd-soc-wm8996-objs := wm8996.o
|
||||
snd-soc-wm8940-objs := wm8940.o
|
||||
snd-soc-wm8955-objs := wm8955.o
|
||||
snd-soc-wm8960-objs := wm8960.o
|
||||
|
@ -160,7 +160,7 @@ obj-$(CONFIG_SND_SOC_WM8804) += snd-soc-wm8804.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_WM8915) += snd-soc-wm8915.o
|
||||
obj-$(CONFIG_SND_SOC_WM8996) += snd-soc-wm8996.o
|
||||
obj-$(CONFIG_SND_SOC_WM8940) += snd-soc-wm8940.o
|
||||
obj-$(CONFIG_SND_SOC_WM8955) += snd-soc-wm8955.o
|
||||
obj-$(CONFIG_SND_SOC_WM8960) += snd-soc-wm8960.o
|
||||
|
|
|
@ -2046,8 +2046,13 @@ static int wm8903_probe(struct snd_soc_codec *codec)
|
|||
/* power down chip */
|
||||
static int wm8903_remove(struct snd_soc_codec *codec)
|
||||
{
|
||||
struct wm8903_priv *wm8903 = snd_soc_codec_get_drvdata(codec);
|
||||
|
||||
wm8903_free_gpio(codec);
|
||||
wm8903_set_bias_level(codec, SND_SOC_BIAS_OFF);
|
||||
if (wm8903->irq)
|
||||
free_irq(wm8903->irq, codec);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -183,7 +183,7 @@ config SND_SOC_SPEYSIDE
|
|||
tristate "Audio support for Wolfson Speyside"
|
||||
depends on SND_SOC_SAMSUNG && MACH_WLF_CRAGG_6410
|
||||
select SND_SAMSUNG_I2S
|
||||
select SND_SOC_WM8915
|
||||
select SND_SOC_WM8996
|
||||
select SND_SOC_WM9081
|
||||
|
||||
config SND_SOC_SPEYSIDE_WM8962
|
||||
|
|
|
@ -14,10 +14,10 @@
|
|||
#include <sound/jack.h>
|
||||
#include <linux/gpio.h>
|
||||
|
||||
#include "../codecs/wm8915.h"
|
||||
#include "../codecs/wm8996.h"
|
||||
#include "../codecs/wm9081.h"
|
||||
|
||||
#define WM8915_HPSEL_GPIO 214
|
||||
#define WM8996_HPSEL_GPIO 214
|
||||
|
||||
static int speyside_set_bias_level(struct snd_soc_card *card,
|
||||
struct snd_soc_dapm_context *dapm,
|
||||
|
@ -31,12 +31,12 @@ static int speyside_set_bias_level(struct snd_soc_card *card,
|
|||
|
||||
switch (level) {
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
ret = snd_soc_dai_set_sysclk(codec_dai, WM8915_SYSCLK_MCLK2,
|
||||
ret = snd_soc_dai_set_sysclk(codec_dai, WM8996_SYSCLK_MCLK2,
|
||||
32768, SND_SOC_CLOCK_IN);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
ret = snd_soc_dai_set_pll(codec_dai, WM8915_FLL_MCLK2,
|
||||
ret = snd_soc_dai_set_pll(codec_dai, WM8996_FLL_MCLK2,
|
||||
0, 0, 0);
|
||||
if (ret < 0) {
|
||||
pr_err("Failed to stop FLL\n");
|
||||
|
@ -65,7 +65,7 @@ static int speyside_set_bias_level_post(struct snd_soc_card *card,
|
|||
case SND_SOC_BIAS_PREPARE:
|
||||
if (card->dapm.bias_level == SND_SOC_BIAS_STANDBY) {
|
||||
ret = snd_soc_dai_set_pll(codec_dai, 0,
|
||||
WM8915_FLL_MCLK2,
|
||||
WM8996_FLL_MCLK2,
|
||||
32768, 48000 * 256);
|
||||
if (ret < 0) {
|
||||
pr_err("Failed to start FLL\n");
|
||||
|
@ -73,7 +73,7 @@ static int speyside_set_bias_level_post(struct snd_soc_card *card,
|
|||
}
|
||||
|
||||
ret = snd_soc_dai_set_sysclk(codec_dai,
|
||||
WM8915_SYSCLK_FLL,
|
||||
WM8996_SYSCLK_FLL,
|
||||
48000 * 256,
|
||||
SND_SOC_CLOCK_IN);
|
||||
if (ret < 0)
|
||||
|
@ -149,26 +149,26 @@ static void speyside_set_polarity(struct snd_soc_codec *codec,
|
|||
int polarity)
|
||||
{
|
||||
speyside_jack_polarity = !polarity;
|
||||
gpio_direction_output(WM8915_HPSEL_GPIO, speyside_jack_polarity);
|
||||
gpio_direction_output(WM8996_HPSEL_GPIO, speyside_jack_polarity);
|
||||
|
||||
/* Re-run DAPM to make sure we're using the correct mic bias */
|
||||
snd_soc_dapm_sync(&codec->dapm);
|
||||
}
|
||||
|
||||
static int speyside_wm8915_init(struct snd_soc_pcm_runtime *rtd)
|
||||
static int speyside_wm8996_init(struct snd_soc_pcm_runtime *rtd)
|
||||
{
|
||||
struct snd_soc_dai *dai = rtd->codec_dai;
|
||||
struct snd_soc_codec *codec = rtd->codec;
|
||||
int ret;
|
||||
|
||||
ret = snd_soc_dai_set_sysclk(dai, WM8915_SYSCLK_MCLK2, 32768, 0);
|
||||
ret = snd_soc_dai_set_sysclk(dai, WM8996_SYSCLK_MCLK2, 32768, 0);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
ret = gpio_request(WM8915_HPSEL_GPIO, "HP_SEL");
|
||||
ret = gpio_request(WM8996_HPSEL_GPIO, "HP_SEL");
|
||||
if (ret != 0)
|
||||
pr_err("Failed to request HP_SEL GPIO: %d\n", ret);
|
||||
gpio_direction_output(WM8915_HPSEL_GPIO, speyside_jack_polarity);
|
||||
gpio_direction_output(WM8996_HPSEL_GPIO, speyside_jack_polarity);
|
||||
|
||||
ret = snd_soc_jack_new(codec, "Headset",
|
||||
SND_JACK_HEADSET | SND_JACK_BTN_0,
|
||||
|
@ -182,7 +182,7 @@ static int speyside_wm8915_init(struct snd_soc_pcm_runtime *rtd)
|
|||
if (ret)
|
||||
return ret;
|
||||
|
||||
wm8915_detect(codec, &speyside_headset, speyside_set_polarity);
|
||||
wm8996_detect(codec, &speyside_headset, speyside_set_polarity);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -205,16 +205,16 @@ static struct snd_soc_dai_link speyside_dai[] = {
|
|||
.name = "CPU",
|
||||
.stream_name = "CPU",
|
||||
.cpu_dai_name = "samsung-i2s.0",
|
||||
.codec_dai_name = "wm8915-aif1",
|
||||
.codec_dai_name = "wm8996-aif1",
|
||||
.platform_name = "samsung-audio",
|
||||
.codec_name = "wm8915.1-001a",
|
||||
.init = speyside_wm8915_init,
|
||||
.codec_name = "wm8996.1-001a",
|
||||
.init = speyside_wm8996_init,
|
||||
.ops = &speyside_ops,
|
||||
},
|
||||
{
|
||||
.name = "Baseband",
|
||||
.stream_name = "Baseband",
|
||||
.cpu_dai_name = "wm8915-aif2",
|
||||
.cpu_dai_name = "wm8996-aif2",
|
||||
.codec_dai_name = "wm1250-ev1",
|
||||
.codec_name = "wm1250-ev1.1-0027",
|
||||
.ops = &speyside_ops,
|
||||
|
|
|
@ -309,9 +309,14 @@ static int tegra_pcm_preallocate_dma_buffer(struct snd_pcm *pcm, int stream)
|
|||
|
||||
static void tegra_pcm_deallocate_dma_buffer(struct snd_pcm *pcm, int stream)
|
||||
{
|
||||
struct snd_pcm_substream *substream = pcm->streams[stream].substream;
|
||||
struct snd_dma_buffer *buf = &substream->dma_buffer;
|
||||
struct snd_pcm_substream *substream;
|
||||
struct snd_dma_buffer *buf;
|
||||
|
||||
substream = pcm->streams[stream].substream;
|
||||
if (!substream)
|
||||
return;
|
||||
|
||||
buf = &substream->dma_buffer;
|
||||
if (!buf->area)
|
||||
return;
|
||||
|
||||
|
|
|
@ -56,6 +56,7 @@
|
|||
#define GPIO_HP_MUTE BIT(1)
|
||||
#define GPIO_INT_MIC_EN BIT(2)
|
||||
#define GPIO_EXT_MIC_EN BIT(3)
|
||||
#define GPIO_HP_DET BIT(4)
|
||||
|
||||
struct tegra_wm8903 {
|
||||
struct tegra_asoc_utils_data util_data;
|
||||
|
@ -304,6 +305,7 @@ static int tegra_wm8903_init(struct snd_soc_pcm_runtime *rtd)
|
|||
snd_soc_jack_add_gpios(&tegra_wm8903_hp_jack,
|
||||
1,
|
||||
&tegra_wm8903_hp_jack_gpio);
|
||||
machine->gpio_requested |= GPIO_HP_DET;
|
||||
}
|
||||
|
||||
snd_soc_jack_new(codec, "Mic Jack", SND_JACK_MICROPHONE,
|
||||
|
@ -429,10 +431,10 @@ static int __devexit tegra_wm8903_driver_remove(struct platform_device *pdev)
|
|||
struct tegra_wm8903 *machine = snd_soc_card_get_drvdata(card);
|
||||
struct tegra_wm8903_platform_data *pdata = machine->pdata;
|
||||
|
||||
snd_soc_unregister_card(card);
|
||||
|
||||
tegra_asoc_utils_fini(&machine->util_data);
|
||||
|
||||
if (machine->gpio_requested & GPIO_HP_DET)
|
||||
snd_soc_jack_free_gpios(&tegra_wm8903_hp_jack,
|
||||
1,
|
||||
&tegra_wm8903_hp_jack_gpio);
|
||||
if (machine->gpio_requested & GPIO_EXT_MIC_EN)
|
||||
gpio_free(pdata->gpio_ext_mic_en);
|
||||
if (machine->gpio_requested & GPIO_INT_MIC_EN)
|
||||
|
@ -441,6 +443,11 @@ static int __devexit tegra_wm8903_driver_remove(struct platform_device *pdev)
|
|||
gpio_free(pdata->gpio_hp_mute);
|
||||
if (machine->gpio_requested & GPIO_SPKR_EN)
|
||||
gpio_free(pdata->gpio_spkr_en);
|
||||
machine->gpio_requested = 0;
|
||||
|
||||
snd_soc_unregister_card(card);
|
||||
|
||||
tegra_asoc_utils_fini(&machine->util_data);
|
||||
|
||||
kfree(machine);
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче