--- linux-4.9.37/drivers/tty/serial/amba-pl011.c 2017-07-12 16:42:41.000000000 +0300 +++ linux-4.9.y/drivers/tty/serial/amba-pl011.c 2021-06-07 13:01:34.000000000 +0300 @@ -109,12 +109,20 @@ static unsigned int get_fifosize_arm(struct amba_device *dev) { +#ifdef CONFIG_ARCH_GOKE + return 64; +#else return amba_rev(dev) < 3 ? 16 : 32; +#endif } static struct vendor_data vendor_arm = { .reg_offset = pl011_std_offsets, +#ifdef CONFIG_ARCH_GOKE + .ifls = UART011_IFLS_RX1_8|UART011_IFLS_TX1_8, +#else .ifls = UART011_IFLS_RX4_8|UART011_IFLS_TX4_8, +#endif .fr_busy = UART01x_FR_BUSY, .fr_dsr = UART01x_FR_DSR, .fr_cts = UART01x_FR_CTS, @@ -405,7 +413,11 @@ pl011_reg_to_offset(uap, REG_DR), .dst_addr_width = DMA_SLAVE_BUSWIDTH_1_BYTE, .direction = DMA_MEM_TO_DEV, +#ifdef CONFIG_ARCH_GOKE + .dst_maxburst = 7, +#else .dst_maxburst = uap->fifosize >> 1, +#endif .device_fc = false, }; struct dma_chan *chan; @@ -461,7 +473,11 @@ pl011_reg_to_offset(uap, REG_DR), .src_addr_width = DMA_SLAVE_BUSWIDTH_1_BYTE, .direction = DMA_DEV_TO_MEM, +#ifdef CONFIG_ARCH_GOKE + .src_maxburst = 7, +#else .src_maxburst = uap->fifosize >> 2, +#endif .device_fc = false, }; struct dma_slave_caps caps;