select SND_SOC_ALC5623 if I2C
select SND_SOC_ALC5632 if I2C
select SND_SOC_CQ0093VC if MFD_DAVINCI_VOICECODEC
+++++ select SND_SOC_CS35L32 if I2C
select SND_SOC_CS42L51_I2C if I2C
select SND_SOC_CS42L52 if I2C && INPUT
select SND_SOC_CS42L56 if I2C && INPUT
select SND_SOC_DA7213 if I2C
select SND_SOC_DA732X if I2C
select SND_SOC_DA9055 if I2C
+++++ select SND_SOC_DMIC
select SND_SOC_BT_SCO
+++++ select SND_SOC_ES8328_SPI if SPI_MASTER
+++++ select SND_SOC_ES8328_I2C if I2C
select SND_SOC_ISABELLE if I2C
select SND_SOC_JZ4740_CODEC
select SND_SOC_LM4857 if I2C
select SND_SOC_SSM2518 if I2C
select SND_SOC_SSM2602_SPI if SPI_MASTER
select SND_SOC_SSM2602_I2C if I2C
+++++ select SND_SOC_SSM4567 if I2C
select SND_SOC_STA32X if I2C
select SND_SOC_STA350 if I2C
select SND_SOC_STA529 if I2C
config SND_SOC_CQ0093VC
tristate
+++++config SND_SOC_CS35L32
+++++ tristate "Cirrus Logic CS35L32 CODEC"
+++++ depends on I2C
+++++
config SND_SOC_CS42L51
tristate
config SND_SOC_HDMI_CODEC
tristate "HDMI stub CODEC"
+++++config SND_SOC_ES8328
+++++ tristate "Everest Semi ES8328 CODEC"
+++++
+++++config SND_SOC_ES8328_I2C
+++++ tristate
+++++ select SND_SOC_ES8328
+++++
+++++config SND_SOC_ES8328_SPI
+++++ tristate
+++++ select SND_SOC_ES8328
+++++
config SND_SOC_ISABELLE
tristate
config SND_SOC_RT286
tristate
+++++ depends on I2C
config SND_SOC_RT5631
tristate
tristate
config SND_SOC_SSM2602_SPI
++++ + tristate "Analog Devices SSM2602 CODEC - SPI"
++++ + depends on SPI_MASTER
select SND_SOC_SSM2602
---- - tristate
++++ + select REGMAP_SPI
config SND_SOC_SSM2602_I2C
++++ + tristate "Analog Devices SSM2602 CODEC - I2C"
++++ + depends on I2C
select SND_SOC_SSM2602
---- - tristate
++++ + select REGMAP_I2C
++++
+++++ config SND_SOC_SSM4567
+++++ tristate "Analog Devices ssm4567 amplifier driver support"
+++++ depends on I2C
+
config SND_SOC_STA32X
tristate
snd-soc-ak5386-objs := ak5386.o
snd-soc-arizona-objs := arizona.o
snd-soc-cq93vc-objs := cq93vc.o
+++++snd-soc-cs35l32-objs := cs35l32.o
snd-soc-cs42l51-objs := cs42l51.o
snd-soc-cs42l51-i2c-objs := cs42l51-i2c.o
snd-soc-cs42l52-objs := cs42l52.o
snd-soc-da9055-objs := da9055.o
snd-soc-bt-sco-objs := bt-sco.o
snd-soc-dmic-objs := dmic.o
+++++snd-soc-es8328-objs := es8328.o
+++++snd-soc-es8328-i2c-objs := es8328-i2c.o
+++++snd-soc-es8328-spi-objs := es8328-spi.o
snd-soc-isabelle-objs := isabelle.o
snd-soc-jz4740-codec-objs := jz4740.o
snd-soc-l3-objs := l3.o
snd-soc-ssm2602-objs := ssm2602.o
snd-soc-ssm2602-spi-objs := ssm2602-spi.o
snd-soc-ssm2602-i2c-objs := ssm2602-i2c.o
+++++ snd-soc-ssm4567-objs := ssm4567.o
snd-soc-sta32x-objs := sta32x.o
snd-soc-sta350-objs := sta350.o
snd-soc-sta529-objs := sta529.o
obj-$(CONFIG_SND_SOC_ALC5632) += snd-soc-alc5632.o
obj-$(CONFIG_SND_SOC_ARIZONA) += snd-soc-arizona.o
obj-$(CONFIG_SND_SOC_CQ0093VC) += snd-soc-cq93vc.o
+++++obj-$(CONFIG_SND_SOC_CS35L32) += snd-soc-cs35l32.o
obj-$(CONFIG_SND_SOC_CS42L51) += snd-soc-cs42l51.o
obj-$(CONFIG_SND_SOC_CS42L51_I2C) += snd-soc-cs42l51-i2c.o
obj-$(CONFIG_SND_SOC_CS42L52) += snd-soc-cs42l52.o
obj-$(CONFIG_SND_SOC_DA9055) += snd-soc-da9055.o
obj-$(CONFIG_SND_SOC_BT_SCO) += snd-soc-bt-sco.o
obj-$(CONFIG_SND_SOC_DMIC) += snd-soc-dmic.o
+++++obj-$(CONFIG_SND_SOC_ES8328) += snd-soc-es8328.o
+++++obj-$(CONFIG_SND_SOC_ES8328_I2C)+= snd-soc-es8328-i2c.o
+++++obj-$(CONFIG_SND_SOC_ES8328_SPI)+= snd-soc-es8328-spi.o
obj-$(CONFIG_SND_SOC_ISABELLE) += snd-soc-isabelle.o
obj-$(CONFIG_SND_SOC_JZ4740_CODEC) += snd-soc-jz4740-codec.o
obj-$(CONFIG_SND_SOC_L3) += snd-soc-l3.o
obj-$(CONFIG_SND_SOC_SSM2602) += snd-soc-ssm2602.o
obj-$(CONFIG_SND_SOC_SSM2602_SPI) += snd-soc-ssm2602-spi.o
obj-$(CONFIG_SND_SOC_SSM2602_I2C) += snd-soc-ssm2602-i2c.o
+++++ obj-$(CONFIG_SND_SOC_SSM4567) += snd-soc-ssm4567.o
obj-$(CONFIG_SND_SOC_STA32X) += snd-soc-sta32x.o
obj-$(CONFIG_SND_SOC_STA350) += snd-soc-sta350.o
obj-$(CONFIG_SND_SOC_STA529) += snd-soc-sta529.o
};
static const unsigned int ssm2602_rates_11289600[] = {
---- - 8000, 44100, 88200,
++++ + 8000, 11025, 22050, 44100, 88200,
};
static const struct snd_pcm_hw_constraint_list ssm2602_constraints_11289600 = {
{18432000, 96000, SSM2602_COEFF_SRATE(0x7, 0x1, 0x0)},
{12000000, 96000, SSM2602_COEFF_SRATE(0x7, 0x0, 0x1)},
++++ + /* 11.025k */
++++ + {11289600, 11025, SSM2602_COEFF_SRATE(0xc, 0x0, 0x0)},
++++ + {16934400, 11025, SSM2602_COEFF_SRATE(0xc, 0x1, 0x0)},
++++ + {12000000, 11025, SSM2602_COEFF_SRATE(0xc, 0x1, 0x1)},
++++ +
++++ + /* 22.05k */
++++ + {11289600, 22050, SSM2602_COEFF_SRATE(0xd, 0x0, 0x0)},
++++ + {16934400, 22050, SSM2602_COEFF_SRATE(0xd, 0x1, 0x0)},
++++ + {12000000, 22050, SSM2602_COEFF_SRATE(0xd, 0x1, 0x1)},
++++ +
/* 44.1k */
{11289600, 44100, SSM2602_COEFF_SRATE(0x8, 0x0, 0x0)},
{16934400, 44100, SSM2602_COEFF_SRATE(0x8, 0x1, 0x0)},
return 0;
}
---- -#define SSM2602_RATES (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000 |\
++++ +#define SSM2602_RATES (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 |\
++++ + SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_22050 |\
SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 |\
SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 |\
SNDRV_PCM_RATE_96000)
.symmetric_samplebits = 1,
};
-----static int ssm2602_suspend(struct snd_soc_codec *codec)
-----{
----- ssm2602_set_bias_level(codec, SND_SOC_BIAS_OFF);
----- return 0;
-----}
-----
static int ssm2602_resume(struct snd_soc_codec *codec)
{
struct ssm2602_priv *ssm2602 = snd_soc_codec_get_drvdata(codec);
regcache_sync(ssm2602->regmap);
----- ssm2602_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
return 0;
}
break;
}
----- if (ret)
----- return ret;
-----
----- ssm2602_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
-----
----- return 0;
-----}
-----
-----/* remove everything here */
-----static int ssm2602_remove(struct snd_soc_codec *codec)
-----{
----- ssm2602_set_bias_level(codec, SND_SOC_BIAS_OFF);
----- return 0;
+++++ return ret;
}
static struct snd_soc_codec_driver soc_codec_dev_ssm2602 = {
.probe = ssm260x_codec_probe,
----- .remove = ssm2602_remove,
----- .suspend = ssm2602_suspend,
.resume = ssm2602_resume,
.set_bias_level = ssm2602_set_bias_level,
+++++ .suspend_bias_off = true,
.controls = ssm260x_snd_controls,
.num_controls = ARRAY_SIZE(ssm260x_snd_controls),
return -ENOMEM;
dev_set_drvdata(dev, ssm2602);
--- - ssm2602->type = SSM2602;
+++ + ssm2602->type = type;
ssm2602->regmap = regmap;
return snd_soc_register_codec(dev, &soc_codec_dev_ssm2602,
#include <linux/bitrev.h>
#include <linux/clk.h>
--- --#include <linux/clk-private.h>
#include <linux/module.h>
#include <linux/of_address.h>
#include <linux/of_device.h>
}
}
-----static struct regmap_config fsl_spdif_regmap_config = {
+++++static const struct regmap_config fsl_spdif_regmap_config = {
.reg_bits = 32,
.reg_stride = 4,
.val_bits = 32,
memcpy(&spdif_priv->cpu_dai_drv, &fsl_spdif_dai, sizeof(fsl_spdif_dai));
spdif_priv->cpu_dai_drv.name = spdif_priv->name;
----- if (of_property_read_bool(np, "big-endian"))
----- fsl_spdif_regmap_config.val_format_endian = REGMAP_ENDIAN_BIG;
-----
/* Get the addresses and IRQ */
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
regs = devm_ioremap_resource(&pdev->dev, res);