ASoC: Drop snd_soc_*_get_kcontrol_locked()

The recent cleanup in ALSA control core made no difference between
snd_ctl_find_id_mixer() and snd_ctl_find_id_mixer_locked(), and the
latter is to be dropped.  The only user of the left API was ASoC, and
that's snd_soc_card_get_kcontrol_locked() and
snd_soc_component_get_kcontrol_locked().

This patch drops those functions and rewrites those users to call the
variant without locked instead.  The test of the API became
superfluous, hence dropped as well.

As all callers of snd_ctl_find_id_mixer_locked() are gone,
snd_ctl_find_id_mixer_locked() is finally dropped, too.

Reviewed-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Link: https://patch.msgid.link/20240809104234.8488-4-tiwai@suse.de
This commit is contained in:
Takashi Iwai 2024-08-09 12:42:31 +02:00
parent 38ea4c3dc3
commit 9cacb32a0b
8 changed files with 2 additions and 93 deletions

View File

@ -165,13 +165,6 @@ snd_ctl_find_id_mixer(struct snd_card *card, const char *name)
return snd_ctl_find_id(card, &id); return snd_ctl_find_id(card, &id);
} }
/* to be removed */
static inline struct snd_kcontrol *
snd_ctl_find_id_mixer_locked(struct snd_card *card, const char *name)
{
return snd_ctl_find_id_mixer(card, name);
}
int snd_ctl_create(struct snd_card *card); int snd_ctl_create(struct snd_card *card);
int snd_ctl_register_ioctl(snd_kctl_ioctl_func_t fcn); int snd_ctl_register_ioctl(snd_kctl_ioctl_func_t fcn);

View File

@ -30,8 +30,6 @@ static inline void snd_soc_card_mutex_unlock(struct snd_soc_card *card)
struct snd_kcontrol *snd_soc_card_get_kcontrol(struct snd_soc_card *soc_card, struct snd_kcontrol *snd_soc_card_get_kcontrol(struct snd_soc_card *soc_card,
const char *name); const char *name);
struct snd_kcontrol *snd_soc_card_get_kcontrol_locked(struct snd_soc_card *soc_card,
const char *name);
int snd_soc_card_jack_new(struct snd_soc_card *card, const char *id, int type, int snd_soc_card_jack_new(struct snd_soc_card *card, const char *id, int type,
struct snd_soc_jack *jack); struct snd_soc_jack *jack);
int snd_soc_card_jack_new_pins(struct snd_soc_card *card, const char *id, int snd_soc_card_jack_new_pins(struct snd_soc_card *card, const char *id,

View File

@ -464,9 +464,6 @@ int snd_soc_component_force_enable_pin_unlocked(
/* component controls */ /* component controls */
struct snd_kcontrol *snd_soc_component_get_kcontrol(struct snd_soc_component *component, struct snd_kcontrol *snd_soc_component_get_kcontrol(struct snd_soc_component *component,
const char * const ctl); const char * const ctl);
struct snd_kcontrol *
snd_soc_component_get_kcontrol_locked(struct snd_soc_component *component,
const char * const ctl);
int snd_soc_component_notify_control(struct snd_soc_component *component, int snd_soc_component_notify_control(struct snd_soc_component *component,
const char * const ctl); const char * const ctl);

View File

@ -177,7 +177,7 @@ static int cs35l45_activate_ctl(struct snd_soc_component *component,
struct snd_kcontrol_volatile *vd; struct snd_kcontrol_volatile *vd;
unsigned int index_offset; unsigned int index_offset;
kcontrol = snd_soc_component_get_kcontrol_locked(component, ctl_name); kcontrol = snd_soc_component_get_kcontrol(component, ctl_name);
if (!kcontrol) { if (!kcontrol) {
dev_err(component->dev, "Can't find kcontrol %s\n", ctl_name); dev_err(component->dev, "Can't find kcontrol %s\n", ctl_name);
return -EINVAL; return -EINVAL;

View File

@ -186,7 +186,7 @@ static int fsl_xcvr_activate_ctl(struct snd_soc_dai *dai, const char *name,
lockdep_assert_held(&card->snd_card->controls_rwsem); lockdep_assert_held(&card->snd_card->controls_rwsem);
kctl = snd_soc_card_get_kcontrol_locked(card, name); kctl = snd_soc_card_get_kcontrol(card, name);
if (kctl == NULL) if (kctl == NULL)
return -ENOENT; return -ENOENT;

View File

@ -67,62 +67,6 @@ static void test_snd_soc_card_get_kcontrol(struct kunit *test)
KUNIT_EXPECT_NULL(test, kc); KUNIT_EXPECT_NULL(test, kc);
} }
static void test_snd_soc_card_get_kcontrol_locked(struct kunit *test)
{
struct soc_card_test_priv *priv = test->priv;
struct snd_soc_card *card = priv->card;
struct snd_kcontrol *kc, *kcw;
struct soc_mixer_control *mc;
int i, ret;
ret = snd_soc_add_card_controls(card, test_card_controls, ARRAY_SIZE(test_card_controls));
KUNIT_ASSERT_EQ(test, ret, 0);
/* Look up every control */
for (i = 0; i < ARRAY_SIZE(test_card_controls); ++i) {
down_read(&card->snd_card->controls_rwsem);
kc = snd_soc_card_get_kcontrol_locked(card, test_card_controls[i].name);
up_read(&card->snd_card->controls_rwsem);
KUNIT_EXPECT_NOT_ERR_OR_NULL_MSG(test, kc, "Failed to find '%s'\n",
test_card_controls[i].name);
if (!kc)
continue;
/* Test that it is the correct control */
mc = (struct soc_mixer_control *)kc->private_value;
KUNIT_EXPECT_EQ_MSG(test, mc->shift, i, "For '%s'\n", test_card_controls[i].name);
down_write(&card->snd_card->controls_rwsem);
kcw = snd_soc_card_get_kcontrol_locked(card, test_card_controls[i].name);
up_write(&card->snd_card->controls_rwsem);
KUNIT_EXPECT_NOT_ERR_OR_NULL_MSG(test, kcw, "Failed to find '%s'\n",
test_card_controls[i].name);
KUNIT_EXPECT_PTR_EQ(test, kc, kcw);
}
/* Test some names that should not be found */
down_read(&card->snd_card->controls_rwsem);
kc = snd_soc_card_get_kcontrol_locked(card, "None");
up_read(&card->snd_card->controls_rwsem);
KUNIT_EXPECT_NULL(test, kc);
down_read(&card->snd_card->controls_rwsem);
kc = snd_soc_card_get_kcontrol_locked(card, "Left None");
up_read(&card->snd_card->controls_rwsem);
KUNIT_EXPECT_NULL(test, kc);
down_read(&card->snd_card->controls_rwsem);
kc = snd_soc_card_get_kcontrol_locked(card, "Left");
up_read(&card->snd_card->controls_rwsem);
KUNIT_EXPECT_NULL(test, kc);
down_read(&card->snd_card->controls_rwsem);
kc = snd_soc_card_get_kcontrol_locked(card, NULL);
up_read(&card->snd_card->controls_rwsem);
KUNIT_EXPECT_NULL(test, kc);
}
static int soc_card_test_case_init(struct kunit *test) static int soc_card_test_case_init(struct kunit *test)
{ {
struct soc_card_test_priv *priv; struct soc_card_test_priv *priv;
@ -169,7 +113,6 @@ static void soc_card_test_case_exit(struct kunit *test)
static struct kunit_case soc_card_test_cases[] = { static struct kunit_case soc_card_test_cases[] = {
KUNIT_CASE(test_snd_soc_card_get_kcontrol), KUNIT_CASE(test_snd_soc_card_get_kcontrol),
KUNIT_CASE(test_snd_soc_card_get_kcontrol_locked),
{} {}
}; };

View File

@ -29,16 +29,6 @@ static inline int _soc_card_ret(struct snd_soc_card *card,
return ret; return ret;
} }
struct snd_kcontrol *snd_soc_card_get_kcontrol_locked(struct snd_soc_card *soc_card,
const char *name)
{
if (unlikely(!name))
return NULL;
return snd_ctl_find_id_mixer_locked(soc_card->snd_card, name);
}
EXPORT_SYMBOL_GPL(snd_soc_card_get_kcontrol_locked);
struct snd_kcontrol *snd_soc_card_get_kcontrol(struct snd_soc_card *soc_card, struct snd_kcontrol *snd_soc_card_get_kcontrol(struct snd_soc_card *soc_card,
const char *name) const char *name)
{ {

View File

@ -257,18 +257,6 @@ struct snd_kcontrol *snd_soc_component_get_kcontrol(struct snd_soc_component *co
} }
EXPORT_SYMBOL_GPL(snd_soc_component_get_kcontrol); EXPORT_SYMBOL_GPL(snd_soc_component_get_kcontrol);
struct snd_kcontrol *
snd_soc_component_get_kcontrol_locked(struct snd_soc_component *component,
const char * const ctl)
{
char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
soc_get_kcontrol_name(component, name, ARRAY_SIZE(name), ctl);
return snd_soc_card_get_kcontrol_locked(component->card, name);
}
EXPORT_SYMBOL_GPL(snd_soc_component_get_kcontrol_locked);
int snd_soc_component_notify_control(struct snd_soc_component *component, int snd_soc_component_notify_control(struct snd_soc_component *component,
const char * const ctl) const char * const ctl)
{ {