|
@@ -549,7 +549,7 @@ static int cs53l30_get_mclk_coeff(int mclk_rate, int srate)
|
|
|
static int cs53l30_set_sysclk(struct snd_soc_dai *dai,
|
|
|
int clk_id, unsigned int freq, int dir)
|
|
|
{
|
|
|
- struct cs53l30_private *priv = snd_soc_codec_get_drvdata(dai->codec);
|
|
|
+ struct cs53l30_private *priv = snd_soc_component_get_drvdata(dai->component);
|
|
|
int mclkx_coeff;
|
|
|
u32 mclk_rate;
|
|
|
|
|
@@ -572,7 +572,7 @@ static int cs53l30_set_sysclk(struct snd_soc_dai *dai,
|
|
|
|
|
|
static int cs53l30_set_dai_fmt(struct snd_soc_dai *dai, unsigned int fmt)
|
|
|
{
|
|
|
- struct cs53l30_private *priv = snd_soc_codec_get_drvdata(dai->codec);
|
|
|
+ struct cs53l30_private *priv = snd_soc_component_get_drvdata(dai->component);
|
|
|
u8 aspcfg = 0, aspctl1 = 0;
|
|
|
|
|
|
switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
|
|
@@ -626,7 +626,7 @@ static int cs53l30_pcm_hw_params(struct snd_pcm_substream *substream,
|
|
|
struct snd_pcm_hw_params *params,
|
|
|
struct snd_soc_dai *dai)
|
|
|
{
|
|
|
- struct cs53l30_private *priv = snd_soc_codec_get_drvdata(dai->codec);
|
|
|
+ struct cs53l30_private *priv = snd_soc_component_get_drvdata(dai->component);
|
|
|
int srate = params_rate(params);
|
|
|
int mclk_coeff;
|
|
|
|
|
@@ -650,11 +650,11 @@ static int cs53l30_pcm_hw_params(struct snd_pcm_substream *substream,
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-static int cs53l30_set_bias_level(struct snd_soc_codec *codec,
|
|
|
+static int cs53l30_set_bias_level(struct snd_soc_component *component,
|
|
|
enum snd_soc_bias_level level)
|
|
|
{
|
|
|
- struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec);
|
|
|
- struct cs53l30_private *priv = snd_soc_codec_get_drvdata(codec);
|
|
|
+ struct snd_soc_dapm_context *dapm = snd_soc_component_get_dapm(component);
|
|
|
+ struct cs53l30_private *priv = snd_soc_component_get_drvdata(component);
|
|
|
unsigned int reg;
|
|
|
int i, inter_max_check, ret;
|
|
|
|
|
@@ -670,7 +670,7 @@ static int cs53l30_set_bias_level(struct snd_soc_codec *codec,
|
|
|
if (dapm->bias_level == SND_SOC_BIAS_OFF) {
|
|
|
ret = clk_prepare_enable(priv->mclk);
|
|
|
if (ret) {
|
|
|
- dev_err(codec->dev,
|
|
|
+ dev_err(component->dev,
|
|
|
"failed to enable MCLK: %d\n", ret);
|
|
|
return ret;
|
|
|
}
|
|
@@ -736,7 +736,7 @@ static int cs53l30_set_bias_level(struct snd_soc_codec *codec,
|
|
|
|
|
|
static int cs53l30_set_tristate(struct snd_soc_dai *dai, int tristate)
|
|
|
{
|
|
|
- struct cs53l30_private *priv = snd_soc_codec_get_drvdata(dai->codec);
|
|
|
+ struct cs53l30_private *priv = snd_soc_component_get_drvdata(dai->component);
|
|
|
u8 val = tristate ? CS53L30_ASP_3ST : 0;
|
|
|
|
|
|
return regmap_update_bits(priv->regmap, CS53L30_ASP_CTL1,
|
|
@@ -770,7 +770,7 @@ static int cs53l30_set_dai_tdm_slot(struct snd_soc_dai *dai,
|
|
|
unsigned int tx_mask, unsigned int rx_mask,
|
|
|
int slots, int slot_width)
|
|
|
{
|
|
|
- struct cs53l30_private *priv = snd_soc_codec_get_drvdata(dai->codec);
|
|
|
+ struct cs53l30_private *priv = snd_soc_component_get_drvdata(dai->component);
|
|
|
unsigned int loc[CS53L30_TDM_SLOT_MAX] = {48, 48, 48, 48};
|
|
|
unsigned int slot_next, slot_step;
|
|
|
u64 tx_enable = 0;
|
|
@@ -840,7 +840,7 @@ static int cs53l30_set_dai_tdm_slot(struct snd_soc_dai *dai,
|
|
|
|
|
|
static int cs53l30_mute_stream(struct snd_soc_dai *dai, int mute, int stream)
|
|
|
{
|
|
|
- struct cs53l30_private *priv = snd_soc_codec_get_drvdata(dai->codec);
|
|
|
+ struct cs53l30_private *priv = snd_soc_component_get_drvdata(dai->component);
|
|
|
|
|
|
gpiod_set_value_cansleep(priv->mute_gpio, mute);
|
|
|
|
|
@@ -876,10 +876,10 @@ static struct snd_soc_dai_driver cs53l30_dai = {
|
|
|
.symmetric_rates = 1,
|
|
|
};
|
|
|
|
|
|
-static int cs53l30_codec_probe(struct snd_soc_codec *codec)
|
|
|
+static int cs53l30_component_probe(struct snd_soc_component *component)
|
|
|
{
|
|
|
- struct cs53l30_private *priv = snd_soc_codec_get_drvdata(codec);
|
|
|
- struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec);
|
|
|
+ struct cs53l30_private *priv = snd_soc_component_get_drvdata(component);
|
|
|
+ struct snd_soc_dapm_context *dapm = snd_soc_component_get_dapm(component);
|
|
|
|
|
|
if (priv->use_sdout2)
|
|
|
snd_soc_dapm_add_routes(dapm, cs53l30_dapm_routes_sdout2,
|
|
@@ -891,19 +891,18 @@ static int cs53l30_codec_probe(struct snd_soc_codec *codec)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-static const struct snd_soc_codec_driver cs53l30_driver = {
|
|
|
- .probe = cs53l30_codec_probe,
|
|
|
- .set_bias_level = cs53l30_set_bias_level,
|
|
|
- .idle_bias_off = true,
|
|
|
-
|
|
|
- .component_driver = {
|
|
|
- .controls = cs53l30_snd_controls,
|
|
|
- .num_controls = ARRAY_SIZE(cs53l30_snd_controls),
|
|
|
- .dapm_widgets = cs53l30_dapm_widgets,
|
|
|
- .num_dapm_widgets = ARRAY_SIZE(cs53l30_dapm_widgets),
|
|
|
- .dapm_routes = cs53l30_dapm_routes,
|
|
|
- .num_dapm_routes = ARRAY_SIZE(cs53l30_dapm_routes),
|
|
|
- },
|
|
|
+static const struct snd_soc_component_driver cs53l30_driver = {
|
|
|
+ .probe = cs53l30_component_probe,
|
|
|
+ .set_bias_level = cs53l30_set_bias_level,
|
|
|
+ .controls = cs53l30_snd_controls,
|
|
|
+ .num_controls = ARRAY_SIZE(cs53l30_snd_controls),
|
|
|
+ .dapm_widgets = cs53l30_dapm_widgets,
|
|
|
+ .num_dapm_widgets = ARRAY_SIZE(cs53l30_dapm_widgets),
|
|
|
+ .dapm_routes = cs53l30_dapm_routes,
|
|
|
+ .num_dapm_routes = ARRAY_SIZE(cs53l30_dapm_routes),
|
|
|
+ .use_pmdown_time = 1,
|
|
|
+ .endianness = 1,
|
|
|
+ .non_legacy_dai_naming = 1,
|
|
|
};
|
|
|
|
|
|
static struct regmap_config cs53l30_regmap = {
|
|
@@ -1033,9 +1032,9 @@ static int cs53l30_i2c_probe(struct i2c_client *client,
|
|
|
|
|
|
dev_info(dev, "Cirrus Logic CS53L30, Revision: %02X\n", reg & 0xFF);
|
|
|
|
|
|
- ret = snd_soc_register_codec(dev, &cs53l30_driver, &cs53l30_dai, 1);
|
|
|
+ ret = devm_snd_soc_register_component(dev, &cs53l30_driver, &cs53l30_dai, 1);
|
|
|
if (ret) {
|
|
|
- dev_err(dev, "failed to register codec: %d\n", ret);
|
|
|
+ dev_err(dev, "failed to register component: %d\n", ret);
|
|
|
goto error;
|
|
|
}
|
|
|
|
|
@@ -1051,8 +1050,6 @@ static int cs53l30_i2c_remove(struct i2c_client *client)
|
|
|
{
|
|
|
struct cs53l30_private *cs53l30 = i2c_get_clientdata(client);
|
|
|
|
|
|
- snd_soc_unregister_codec(&client->dev);
|
|
|
-
|
|
|
/* Hold down reset */
|
|
|
gpiod_set_value_cansleep(cs53l30->reset_gpio, 0);
|
|
|
|