From 8e151019a32b733420e2eb3006a5edaac5bc9589 Mon Sep 17 00:00:00 2001 From: Mark Farrugia Date: Wed, 3 Apr 2019 17:41:32 +1100 Subject: Introduce 'unconfigure' callback The 'unconfigure' callback can be used to clean up the 'configured' state of an Audio Path, for when it is desired to reset the streams, and/or reload a different stream configuration. To destroy the streams, we must attempt to force their PCMs closed. Take note though, that if a PCM is being written to when an unconfigure command is issued, system instability may occur. Signed-off-by: Mark Farrugia --- configfs.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'configfs.c') diff --git a/configfs.c b/configfs.c index 4f88bf8..8f2d452 100644 --- a/configfs.c +++ b/configfs.c @@ -285,8 +285,7 @@ static void cfg_snd_avirt_stream_release(struct config_item *item) } D_INFOK("Release stream: %s", stream->name); - kfree(stream->pcm_ops); - kfree(stream); + snd_avirt_stream_try_destroy(stream); } static void cfg_snd_avirt_route_release(struct config_item *item) @@ -420,12 +419,12 @@ cfg_snd_avirt_stream_group_configured_store(struct config_item *item, CHK_ERR(kstrtoul(p, 10, &tmp)); - if (tmp != 1) { - D_ERRORK("streams can only be sealed, not unsealed!"); + if (tmp > 1) { + D_ERRORK("Configure streams must be 0 or 1!"); return -ERANGE; } - snd_avirt_streams_seal(); + (tmp) ? snd_avirt_streams_configure() : snd_avirt_streams_unconfigure(); return count; } -- cgit 1.2.3-korg