1 From a845f23bddcb2b0e48e8158bb06b0990c4760e7e Mon Sep 17 00:00:00 2001
2 From: Giedrius <giedrius@blokas.io>
3 Date: Fri, 16 Mar 2018 18:14:31 +0200
4 Subject: [PATCH 254/454] Fix for Pisound's MIDI Input getting blocked for a
7 There was a possible race condition which could lead to Input's FIFO queue
8 to be underflown, causing high amount of processing in the worker thread for
11 Signed-off-by: Giedrius Trainavicius <giedrius@blokas.io>
13 sound/soc/bcm/pisound.c | 12 +++++++-----
14 1 file changed, 7 insertions(+), 5 deletions(-)
16 --- a/sound/soc/bcm/pisound.c
17 +++ b/sound/soc/bcm/pisound.c
18 @@ -56,6 +56,12 @@ static const char *pisnd_spi_get_version
19 static int pisnd_midi_init(struct snd_card *card);
20 static void pisnd_midi_uninit(void);
26 +static void pisnd_schedule_process(enum task_e task);
28 #define PISOUND_LOG_PREFIX "pisound: "
31 @@ -129,7 +135,7 @@ static void pisnd_input_trigger(struct s
34 pisnd_spi_set_callback(pisnd_midi_recv_callback, substream);
35 - pisnd_midi_recv_callback(substream);
36 + pisnd_schedule_process(TASK_PROCESS);
38 pisnd_spi_set_callback(NULL, NULL);
40 @@ -258,10 +264,6 @@ static bool pisnd_spi_has_more(void)
41 return gpiod_get_value(data_available);
48 static void pisnd_schedule_process(enum task_e task)
50 if (pisnd_spi_device != NULL &&