diff --git a/FunKey/board/funkey/patches/linux/0018_SPI_DMA_in_dtsi.patch b/FunKey/board/funkey/patches/linux/0018_SPI_DMA_in_dtsi.patch new file mode 100644 index 0000000..58ab1a6 --- /dev/null +++ b/FunKey/board/funkey/patches/linux/0018_SPI_DMA_in_dtsi.patch @@ -0,0 +1,55 @@ +From 3b489a63e4e05489411a032cb60d8939a81f14b7 Mon Sep 17 00:00:00 2001 +From: vincent +Date: Tue, 5 Nov 2019 18:53:47 +0100 +Subject: [PATCH] added SPI DMA declaration in device tree and bigger tx_buf + size in fbtft (1 byte more to support start byte) + +--- + arch/arm/boot/dts/sun8i-v3s-funkey.dts | 3 ++- + arch/arm/boot/dts/sun8i-v3s.dtsi | 2 ++ + drivers/staging/fbtft/fbtft-core.c | 2 +- + 3 files changed, 5 insertions(+), 2 deletions(-) + +diff --git a/arch/arm/boot/dts/sun8i-v3s-funkey.dts b/arch/arm/boot/dts/sun8i-v3s-funkey.dts +index 78f4d6a..19062fc 100644 +--- a/arch/arm/boot/dts/sun8i-v3s-funkey.dts ++++ b/arch/arm/boot/dts/sun8i-v3s-funkey.dts +@@ -176,7 +176,8 @@ + compatible = "sitronix,st7789v"; + reg = <0>; + spi-max-frequency = <50000000>; +- txbuflen = <115200>; ++ txbuflen = <115202>; ++// txbuflen = <0>; + rotate = <0>; + fps = <50>; + buswidth = <8>; +diff --git a/arch/arm/boot/dts/sun8i-v3s.dtsi b/arch/arm/boot/dts/sun8i-v3s.dtsi +index 02f6c84..f5ca5a5 100644 +--- a/arch/arm/boot/dts/sun8i-v3s.dtsi ++++ b/arch/arm/boot/dts/sun8i-v3s.dtsi +@@ -539,6 +539,8 @@ + interrupts = ; + clocks = <&ccu CLK_BUS_SPI0>, <&ccu CLK_SPI0>; + clock-names = "ahb", "mod"; ++ dmas = <&dma 23>, <&dma 23>; ++ dma-names = "rx", "tx"; + pinctrl-names = "default"; + pinctrl-0 = <&spi0_pins>; + resets = <&ccu RST_BUS_SPI0>; +diff --git a/drivers/staging/fbtft/fbtft-core.c b/drivers/staging/fbtft/fbtft-core.c +index 7fbf92e..7dce967 100755 +--- a/drivers/staging/fbtft/fbtft-core.c ++++ b/drivers/staging/fbtft/fbtft-core.c +@@ -840,7 +840,7 @@ struct fb_info *fbtft_framebuffer_alloc(struct fbtft_display *display, + /* Transmit buffer */ + if (txbuflen == -1) + txbuflen = vmem_size + 2; /* add in case startbyte is used */ +- if (txbuflen >= vmem_size + 2) ++ if (txbuflen > vmem_size + 2) + txbuflen = 0; + + #ifdef __LITTLE_ENDIAN +-- +1.9.1 +