diff options
Diffstat (limited to 'target/linux/brcm2708/patches-4.19/950-0785-Pisound-MIDI-communication-fixes-for-scaled-down-CPU.patch')
-rw-r--r-- | target/linux/brcm2708/patches-4.19/950-0785-Pisound-MIDI-communication-fixes-for-scaled-down-CPU.patch | 100 |
1 files changed, 0 insertions, 100 deletions
diff --git a/target/linux/brcm2708/patches-4.19/950-0785-Pisound-MIDI-communication-fixes-for-scaled-down-CPU.patch b/target/linux/brcm2708/patches-4.19/950-0785-Pisound-MIDI-communication-fixes-for-scaled-down-CPU.patch deleted file mode 100644 index c363e1d990..0000000000 --- a/target/linux/brcm2708/patches-4.19/950-0785-Pisound-MIDI-communication-fixes-for-scaled-down-CPU.patch +++ /dev/null @@ -1,100 +0,0 @@ -From 5b12b655f266ea29e91a7b7a46385df05bb70ed8 Mon Sep 17 00:00:00 2001 -From: Giedrius <giedrius@blokas.io> -Date: Tue, 7 Jan 2020 11:04:21 +0200 -Subject: [PATCH] Pisound: MIDI communication fixes for scaled down - CPU. -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -* Increased maximum SPI communication speed to avoid running too slow - when the CPU is scaled down and losing MIDI data. - -* Keep track of buffer usage in millibytes for higher precision. - -Signed-off-by: Giedrius Trainavičius <giedrius@blokas.io> ---- - sound/soc/bcm/pisound.c | 31 ++++++++++++++++++------------- - 1 file changed, 18 insertions(+), 13 deletions(-) - ---- a/sound/soc/bcm/pisound.c -+++ b/sound/soc/bcm/pisound.c -@@ -1,6 +1,6 @@ - /* - * Pisound Linux kernel module. -- * Copyright (C) 2016-2019 Vilniaus Blokas UAB, https://blokas.io/pisound -+ * Copyright (C) 2016-2020 Vilniaus Blokas UAB, https://blokas.io/pisound - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License -@@ -326,7 +326,7 @@ static void spi_transfer(const uint8_t * - transfer.tx_buf = txbuf; - transfer.rx_buf = rxbuf; - transfer.len = len; -- transfer.speed_hz = 100000; -+ transfer.speed_hz = 150000; - transfer.delay_usecs = 10; - spi_message_add_tail(&transfer, &msg); - -@@ -403,9 +403,9 @@ static struct spi_device *pisnd_spi_find - static void pisnd_work_handler(struct work_struct *work) - { - enum { TRANSFER_SIZE = 4 }; -- enum { PISOUND_OUTPUT_BUFFER_SIZE = 128 }; -- enum { MIDI_BYTES_PER_SECOND = 3125 }; -- int out_buffer_used = 0; -+ enum { PISOUND_OUTPUT_BUFFER_SIZE_MILLIBYTES = 127 * 1000 }; -+ enum { MIDI_MILLIBYTES_PER_JIFFIE = (3125 * 1000) / HZ }; -+ int out_buffer_used_millibytes = 0; - unsigned long now; - uint8_t val; - uint8_t txbuf[TRANSFER_SIZE]; -@@ -445,7 +445,9 @@ static void pisnd_work_handler(struct wo - had_data = false; - memset(txbuf, 0, sizeof(txbuf)); - for (i = 0; i < sizeof(txbuf) && -- out_buffer_used < PISOUND_OUTPUT_BUFFER_SIZE; -+ ((out_buffer_used_millibytes+1000 < -+ PISOUND_OUTPUT_BUFFER_SIZE_MILLIBYTES) || -+ g_ledFlashDurationChanged); - i += 2) { - - val = 0; -@@ -458,7 +460,7 @@ static void pisnd_work_handler(struct wo - } else if (kfifo_get(&spi_fifo_out, &val)) { - txbuf[i+0] = 0x0f; - txbuf[i+1] = val; -- ++out_buffer_used; -+ out_buffer_used_millibytes += 1000; - } - } - -@@ -469,12 +471,14 @@ static void pisnd_work_handler(struct wo - * rate. - */ - now = jiffies; -- out_buffer_used -= -- (MIDI_BYTES_PER_SECOND / HZ) / -- (now - last_transfer_at); -- if (out_buffer_used < 0) -- out_buffer_used = 0; -- last_transfer_at = now; -+ if (now != last_transfer_at) { -+ out_buffer_used_millibytes -= -+ (now - last_transfer_at) * -+ MIDI_MILLIBYTES_PER_JIFFIE; -+ if (out_buffer_used_millibytes < 0) -+ out_buffer_used_millibytes = 0; -+ last_transfer_at = now; -+ } - - for (i = 0; i < sizeof(rxbuf); i += 2) { - if (rxbuf[i]) { -@@ -489,6 +493,7 @@ static void pisnd_work_handler(struct wo - || !kfifo_is_empty(&spi_fifo_out) - || pisnd_spi_has_more() - || g_ledFlashDurationChanged -+ || out_buffer_used_millibytes != 0 - ); - - if (!kfifo_is_empty(&spi_fifo_in) && g_recvCallback) |