mirror of
https://github.com/Fishwaldo/buildroot_bouffalo.git
synced 2025-03-16 03:41:21 +00:00
Kernel 6.2 rc5 (#13)
* Upgrade Kernel to 6.2-rc5 + Patches * Liux Patch: tty: serial: bflb_uart: fix leaked ISR registration * Linux Patch: mmc: sdhci-bflb: remove unnecessary quirks * Bump Kernel * Update Linux defconfig and mount root with a label instead of partition
This commit is contained in:
parent
37f451d82b
commit
0fd2be9e8b
6 changed files with 336 additions and 217 deletions
|
@ -1,10 +1,12 @@
|
|||
CONFIG_SYSVIPC=y
|
||||
CONFIG_POSIX_MQUEUE=y
|
||||
CONFIG_GENERIC_IRQ_DEBUGFS=y
|
||||
CONFIG_NO_HZ_IDLE=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_BPF_SYSCALL=y
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
CONFIG_LOG_BUF_SHIFT=16
|
||||
CONFIG_CGROUPS=y
|
||||
CONFIG_CGROUP_SCHED=y
|
||||
CONFIG_CFS_BANDWIDTH=y
|
||||
|
@ -12,20 +14,20 @@ CONFIG_CGROUP_PERF=y
|
|||
CONFIG_CGROUP_BPF=y
|
||||
CONFIG_USER_NS=y
|
||||
CONFIG_CHECKPOINT_RESTORE=y
|
||||
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||
CONFIG_PERF_EVENTS=y
|
||||
CONFIG_SOC_BOUFFALOLAB=y
|
||||
CONFIG_SOC_VIRT=y
|
||||
CONFIG_ERRATA_THEAD=y
|
||||
CONFIG_SMP=y
|
||||
CONFIG_NR_CPUS=8
|
||||
CONFIG_RISCV_SBI_V01=y
|
||||
# CONFIG_COMPAT is not set
|
||||
CONFIG_KPROBES=y
|
||||
CONFIG_JUMP_LABEL=y
|
||||
# CONFIG_GCC_PLUGINS is not set
|
||||
CONFIG_MODULES=y
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_PARTITION_ADVANCED=y
|
||||
CONFIG_CMDLINE_PARTITION=y
|
||||
CONFIG_IOSCHED_BFQ=y
|
||||
CONFIG_PAGE_REPORTING=y
|
||||
CONFIG_NET=y
|
||||
CONFIG_PACKET=y
|
||||
|
@ -37,9 +39,15 @@ CONFIG_IP_PNP=y
|
|||
CONFIG_IP_PNP_DHCP=y
|
||||
CONFIG_IP_PNP_BOOTP=y
|
||||
CONFIG_IP_PNP_RARP=y
|
||||
CONFIG_NETFILTER=y
|
||||
CONFIG_NF_TABLES=y
|
||||
CONFIG_NF_TABLES_INET=y
|
||||
CONFIG_IP_NF_IPTABLES=y
|
||||
CONFIG_IP_NF_FILTER=y
|
||||
CONFIG_DNS_RESOLVER=y
|
||||
CONFIG_NETLINK_DIAG=y
|
||||
# CONFIG_WIRELESS is not set
|
||||
CONFIG_FAILOVER=y
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_DEVTMPFS_MOUNT=y
|
||||
CONFIG_MTD=y
|
||||
|
@ -54,241 +62,74 @@ CONFIG_MTD_PHYSMAP_OF=y
|
|||
CONFIG_MTD_PHYSMAP_VERSATILE=y
|
||||
CONFIG_MTD_PHYSMAP_GEMINI=y
|
||||
CONFIG_MTD_PLATRAM=y
|
||||
CONFIG_OF_OVERLAY=y
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_VIRTIO_BLK=y
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_SCSI_VIRTIO=y
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_VIRTIO_NET=y
|
||||
CONFIG_WIREGUARD=y
|
||||
# CONFIG_ETHERNET is not set
|
||||
CONFIG_MDIO_DEVICE=y
|
||||
CONFIG_PPP=y
|
||||
CONFIG_PPP_BSDCOMP=y
|
||||
CONFIG_PPP_DEFLATE=y
|
||||
# CONFIG_WLAN is not set
|
||||
CONFIG_INPUT_MOUSEDEV=y
|
||||
CONFIG_INPUT_EVDEV=y
|
||||
CONFIG_INPUT_EVBUG=y
|
||||
CONFIG_INPUT_TOUCHSCREEN=y
|
||||
# CONFIG_INPUT_KEYBOARD is not set
|
||||
# CONFIG_INPUT_MOUSE is not set
|
||||
CONFIG_SERIO_LIBPS2=y
|
||||
# CONFIG_LEGACY_PTYS is not set
|
||||
CONFIG_SERIAL_EARLYCON_RISCV_SBI=y
|
||||
CONFIG_SERIAL_BFLB=y
|
||||
CONFIG_SERIAL_BFLB_CONSOLE=y
|
||||
CONFIG_SERIAL_SIFIVE=y
|
||||
CONFIG_SERIAL_SIFIVE_CONSOLE=y
|
||||
CONFIG_HVC_RISCV_SBI=y
|
||||
CONFIG_VIRTIO_CONSOLE=y
|
||||
CONFIG_HW_RANDOM=y
|
||||
CONFIG_HW_RANDOM_VIRTIO=y
|
||||
CONFIG_I2C=y
|
||||
CONFIG_I2C_CHARDEV=y
|
||||
CONFIG_I2C_XILINX=y
|
||||
CONFIG_I2C_SLAVE=y
|
||||
CONFIG_I2C_SLAVE_EEPROM=y
|
||||
CONFIG_I2C_DEBUG_CORE=y
|
||||
CONFIG_I2C_DEBUG_ALGO=y
|
||||
CONFIG_I2C_DEBUG_BUS=y
|
||||
CONFIG_POWER_RESET=y
|
||||
CONFIG_POWER_RESET_SYSCON=y
|
||||
CONFIG_POWER_RESET_SYSCON_POWEROFF=y
|
||||
CONFIG_FB=y
|
||||
CONFIG_BACKLIGHT_CLASS_DEVICE=y
|
||||
# CONFIG_VGA_CONSOLE is not set
|
||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
|
||||
# CONFIG_HID_A4TECH is not set
|
||||
# CONFIG_HID_BELKIN is not set
|
||||
# CONFIG_HID_CHERRY is not set
|
||||
# CONFIG_HID_CYPRESS is not set
|
||||
# CONFIG_HID_EZKEY is not set
|
||||
# CONFIG_HID_ITE is not set
|
||||
# CONFIG_HID_KENSINGTON is not set
|
||||
# CONFIG_HID_REDRAGON is not set
|
||||
# CONFIG_HID_MICROSOFT is not set
|
||||
# CONFIG_HID_MONTEREY is not set
|
||||
# CONFIG_HID is not set
|
||||
# CONFIG_USB_SUPPORT is not set
|
||||
CONFIG_RTC_CLASS=y
|
||||
CONFIG_SYNC_FILE=y
|
||||
# CONFIG_VIRTIO_MENU is not set
|
||||
# CONFIG_VHOST_MENU is not set
|
||||
# CONFIG_IOMMU_SUPPORT is not set
|
||||
CONFIG_RPMSG_CHAR=y
|
||||
CONFIG_RPMSG_VIRTIO=y
|
||||
CONFIG_GENERIC_PHY=y
|
||||
CONFIG_AUTOFS4_FS=y
|
||||
CONFIG_MSDOS_FS=y
|
||||
CONFIG_VFAT_FS=y
|
||||
CONFIG_TMPFS=y
|
||||
CONFIG_TMPFS_POSIX_ACL=y
|
||||
CONFIG_CONFIGFS_FS=y
|
||||
# CONFIG_EFIVAR_FS is not set
|
||||
CONFIG_SQUASHFS=y
|
||||
CONFIG_SQUASHFS_4K_DEVBLK_SIZE=y
|
||||
# CONFIG_NETWORK_FILESYSTEMS is not set
|
||||
CONFIG_NLS_CODEPAGE_437=y
|
||||
CONFIG_NLS_ISO8859_1=y
|
||||
CONFIG_NLS_UTF8=y
|
||||
CONFIG_KEYS=y
|
||||
CONFIG_LSM="lockdown,yama,loadpin,safesetid,integrity"
|
||||
CONFIG_CRYPTO=y
|
||||
CONFIG_CRYPTO_CRC32C=y
|
||||
CONFIG_CRYPTO_USER_API_HASH=y
|
||||
CONFIG_CRYPTO_DEV_VIRTIO=y
|
||||
CONFIG_CRC16=y
|
||||
CONFIG_CRC_ITU_T=y
|
||||
CONFIG_CRC7=y
|
||||
CONFIG_XZ_DEC=y
|
||||
CONFIG_PRINTK_TIME=y
|
||||
CONFIG_DEBUG_FS=y
|
||||
CONFIG_DEBUG_VM_PGTABLE=y
|
||||
CONFIG_DEBUG_TIMEKEEPING=y
|
||||
CONFIG_FUNCTION_ERROR_INJECTION=y
|
||||
# CONFIG_RUNTIME_TESTING_MENU is not set
|
||||
CONFIG_MEMTEST=y
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_POSIX_MQUEUE=y
|
||||
CONFIG_NO_HZ_IDLE=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_BPF_SYSCALL=y
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
CONFIG_CGROUPS=y
|
||||
CONFIG_CGROUP_SCHED=y
|
||||
CONFIG_CFS_BANDWIDTH=y
|
||||
CONFIG_CGROUP_PERF=y
|
||||
CONFIG_CGROUP_BPF=y
|
||||
CONFIG_USER_NS=y
|
||||
CONFIG_CHECKPOINT_RESTORE=y
|
||||
CONFIG_PERF_EVENTS=y
|
||||
CONFIG_SOC_BOUFFALOLAB=y
|
||||
CONFIG_SOC_VIRT=y
|
||||
CONFIG_ERRATA_THEAD=y
|
||||
CONFIG_SMP=y
|
||||
CONFIG_NR_CPUS=8
|
||||
CONFIG_RISCV_SBI_V01=y
|
||||
# CONFIG_COMPAT is not set
|
||||
CONFIG_KPROBES=y
|
||||
CONFIG_JUMP_LABEL=y
|
||||
CONFIG_MODULES=y
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_PARTITION_ADVANCED=y
|
||||
CONFIG_CMDLINE_PARTITION=y
|
||||
CONFIG_PAGE_REPORTING=y
|
||||
CONFIG_NET=y
|
||||
CONFIG_PACKET=y
|
||||
CONFIG_UNIX=y
|
||||
CONFIG_INET=y
|
||||
CONFIG_IP_MULTICAST=y
|
||||
CONFIG_IP_ADVANCED_ROUTER=y
|
||||
CONFIG_IP_PNP=y
|
||||
CONFIG_IP_PNP_DHCP=y
|
||||
CONFIG_IP_PNP_BOOTP=y
|
||||
CONFIG_IP_PNP_RARP=y
|
||||
CONFIG_DNS_RESOLVER=y
|
||||
CONFIG_NETLINK_DIAG=y
|
||||
# CONFIG_WIRELESS is not set
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_DEVTMPFS_MOUNT=y
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
CONFIG_MTD_BLOCK_RO=y
|
||||
CONFIG_MTD_CFI=y
|
||||
CONFIG_MTD_CFI_ADV_OPTIONS=y
|
||||
CONFIG_MTD_ROM=y
|
||||
CONFIG_MTD_ABSENT=y
|
||||
CONFIG_MTD_PHYSMAP=y
|
||||
CONFIG_MTD_PHYSMAP_OF=y
|
||||
CONFIG_MTD_PHYSMAP_VERSATILE=y
|
||||
CONFIG_MTD_PHYSMAP_GEMINI=y
|
||||
CONFIG_MTD_PLATRAM=y
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_VIRTIO_BLK=y
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_SCSI_VIRTIO=y
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_VIRTIO_NET=y
|
||||
# CONFIG_ETHERNET is not set
|
||||
CONFIG_MDIO_DEVICE=y
|
||||
# CONFIG_WLAN is not set
|
||||
CONFIG_INPUT_MOUSEDEV=y
|
||||
CONFIG_INPUT_EVDEV=y
|
||||
CONFIG_INPUT_EVBUG=y
|
||||
CONFIG_INPUT_TOUCHSCREEN=y
|
||||
# CONFIG_LEGACY_PTYS is not set
|
||||
CONFIG_SERIAL_EARLYCON_RISCV_SBI=y
|
||||
CONFIG_SERIAL_BFLB=y
|
||||
CONFIG_SERIAL_BFLB_CONSOLE=y
|
||||
CONFIG_SERIAL_SIFIVE=y
|
||||
CONFIG_SERIAL_SIFIVE_CONSOLE=y
|
||||
CONFIG_HVC_RISCV_SBI=y
|
||||
CONFIG_VIRTIO_CONSOLE=y
|
||||
CONFIG_HW_RANDOM=y
|
||||
CONFIG_HW_RANDOM_VIRTIO=y
|
||||
CONFIG_I2C=y
|
||||
CONFIG_I2C_CHARDEV=y
|
||||
CONFIG_I2C_XILINX=y
|
||||
CONFIG_I2C_SLAVE=y
|
||||
CONFIG_I2C_SLAVE_EEPROM=y
|
||||
CONFIG_I2C_DEBUG_CORE=y
|
||||
CONFIG_I2C_DEBUG_ALGO=y
|
||||
CONFIG_I2C_DEBUG_BUS=y
|
||||
CONFIG_FB=y
|
||||
CONFIG_BACKLIGHT_CLASS_DEVICE=y
|
||||
# CONFIG_VGA_CONSOLE is not set
|
||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
|
||||
# CONFIG_HID_A4TECH is not set
|
||||
# CONFIG_HID_BELKIN is not set
|
||||
# CONFIG_HID_CHERRY is not set
|
||||
# CONFIG_HID_CYPRESS is not set
|
||||
# CONFIG_HID_EZKEY is not set
|
||||
# CONFIG_HID_ITE is not set
|
||||
# CONFIG_HID_KENSINGTON is not set
|
||||
# CONFIG_HID_REDRAGON is not set
|
||||
# CONFIG_HID_MICROSOFT is not set
|
||||
# CONFIG_HID_MONTEREY is not set
|
||||
# CONFIG_USB_SUPPORT is not set
|
||||
CONFIG_RTC_CLASS=y
|
||||
CONFIG_SYNC_FILE=y
|
||||
# CONFIG_VIRTIO_MENU is not set
|
||||
# CONFIG_VHOST_MENU is not set
|
||||
# CONFIG_IOMMU_SUPPORT is not set
|
||||
CONFIG_RPMSG_CHAR=y
|
||||
CONFIG_RPMSG_VIRTIO=y
|
||||
CONFIG_GENERIC_PHY=y
|
||||
CONFIG_AUTOFS4_FS=y
|
||||
CONFIG_MSDOS_FS=y
|
||||
CONFIG_VFAT_FS=y
|
||||
CONFIG_TMPFS=y
|
||||
CONFIG_TMPFS_POSIX_ACL=y
|
||||
CONFIG_CONFIGFS_FS=y
|
||||
# CONFIG_EFIVAR_FS is not set
|
||||
CONFIG_SQUASHFS=y
|
||||
CONFIG_SQUASHFS_4K_DEVBLK_SIZE=y
|
||||
# CONFIG_NETWORK_FILESYSTEMS is not set
|
||||
CONFIG_NLS_CODEPAGE_437=y
|
||||
CONFIG_NLS_ISO8859_1=y
|
||||
CONFIG_NLS_UTF8=y
|
||||
CONFIG_KEYS=y
|
||||
CONFIG_LSM="lockdown,yama,loadpin,safesetid,integrity"
|
||||
CONFIG_CRYPTO=y
|
||||
CONFIG_CRYPTO_CRC32C=y
|
||||
CONFIG_CRYPTO_USER_API_HASH=y
|
||||
CONFIG_CRYPTO_DEV_VIRTIO=y
|
||||
CONFIG_CRC16=y
|
||||
CONFIG_CRC_ITU_T=y
|
||||
CONFIG_CRC7=y
|
||||
CONFIG_XZ_DEC=y
|
||||
CONFIG_PRINTK_TIME=y
|
||||
CONFIG_DEBUG_FS=y
|
||||
CONFIG_DEBUG_VM_PGTABLE=y
|
||||
CONFIG_DEBUG_TIMEKEEPING=y
|
||||
CONFIG_FUNCTION_ERROR_INJECTION=y
|
||||
# CONFIG_RUNTIME_TESTING_MENU is not set
|
||||
CONFIG_MEMTEST=y
|
||||
CONFIG_MMC=y
|
||||
CONFIG_MMC_SDHCI=y
|
||||
CONFIG_MMC_SDHCI_PLTFM=y
|
||||
CONFIG_MMC_SDHCI_BFLB=y
|
||||
CONFIG_GENERIC_IRQ_DEBUGFS=y
|
||||
CONFIG_RTC_CLASS=y
|
||||
CONFIG_RTC_DRV_GOLDFISH=y
|
||||
# CONFIG_VIRTIO_MENU is not set
|
||||
# CONFIG_VHOST_MENU is not set
|
||||
CONFIG_GOLDFISH=y
|
||||
CONFIG_MAILBOX=y
|
||||
CONFIG_BFLB_IPC=y
|
||||
# CONFIG_IOMMU_SUPPORT is not set
|
||||
CONFIG_EXT4_FS=y
|
||||
CONFIG_AUTOFS4_FS=y
|
||||
CONFIG_MSDOS_FS=y
|
||||
CONFIG_VFAT_FS=y
|
||||
CONFIG_EXFAT_FS=y
|
||||
CONFIG_TMPFS=y
|
||||
CONFIG_TMPFS_POSIX_ACL=y
|
||||
CONFIG_CONFIGFS_FS=y
|
||||
# CONFIG_EFIVAR_FS is not set
|
||||
# CONFIG_NETWORK_FILESYSTEMS is not set
|
||||
CONFIG_NLS_CODEPAGE_437=y
|
||||
CONFIG_NLS_ISO8859_1=y
|
||||
CONFIG_NLS_UTF8=y
|
||||
CONFIG_KEYS=y
|
||||
CONFIG_LSM="lockdown,yama,loadpin,safesetid,integrity"
|
||||
CONFIG_CRYPTO_RSA=y
|
||||
CONFIG_CRYPTO_USER_API_HASH=y
|
||||
# CONFIG_CRYPTO_HW is not set
|
||||
CONFIG_CRC_ITU_T=y
|
||||
CONFIG_CRC7=y
|
||||
CONFIG_XZ_DEC=y
|
||||
CONFIG_PRINTK_TIME=y
|
||||
CONFIG_DYNAMIC_DEBUG=y
|
||||
CONFIG_DEBUG_FS=y
|
||||
CONFIG_DEBUG_VM_PGTABLE=y
|
||||
# CONFIG_RUNTIME_TESTING_MENU is not set
|
||||
CONFIG_MEMTEST=y
|
||||
|
|
|
@ -17,7 +17,7 @@ index a3b1ae9f0478..d3d228c3d8c0 100644
|
|||
chosen {
|
||||
stdout-path = "serial0:2000000n8";
|
||||
- bootargs = "console=ttyS0,2000000 loglevel=8 earlycon=sbi root=/dev/mtdblock0 ro rootfstype=squashfs";
|
||||
+ bootargs = "console=ttyS0,2000000 loglevel=8 earlycon=sbi root=/dev/mmcblk0p2 rootwait rootfstype=ext4";
|
||||
+ bootargs = "console=ttyS0,2000000 loglevel=8 earlycon=sbi root=PARTLABEL=rootfs rootwait rootfstype=ext4";
|
||||
linux,initrd-start = <0x0 0x52000000>;
|
||||
linux,initrd-end = <0x0 0x52941784>;
|
||||
};
|
||||
|
|
|
@ -0,0 +1,247 @@
|
|||
From 21dd2b6821d171463407a77536ea8044dc64bbeb Mon Sep 17 00:00:00 2001
|
||||
From: Allen Martin <armartin@gmail.com>
|
||||
Date: Fri, 20 Jan 2023 19:42:33 -0800
|
||||
Subject: [PATCH 20/21] tty: serial: bflb_uart: fix leaked ISR registration
|
||||
|
||||
-call devm_free_irq() in shutdown to release ISR registered in
|
||||
startup.
|
||||
-change many functions to take driver private bflb_uart_port *
|
||||
instead of serial_core uart_port *
|
||||
-add to_bflb_uart_port() to assist with above
|
||||
-switch to using uart_port_tx_limited() serial_core helper
|
||||
which is the preferred way to do transmission instead of
|
||||
accessing serial_core xmit buffer directly
|
||||
---
|
||||
drivers/tty/serial/bflb_uart.c | 133 ++++++++++++++++++++-------------
|
||||
1 file changed, 79 insertions(+), 54 deletions(-)
|
||||
|
||||
diff --git a/drivers/tty/serial/bflb_uart.c b/drivers/tty/serial/bflb_uart.c
|
||||
index b091ad7a891a..5911f489959c 100644
|
||||
--- a/drivers/tty/serial/bflb_uart.c
|
||||
+++ b/drivers/tty/serial/bflb_uart.c
|
||||
@@ -82,12 +82,17 @@
|
||||
#define BFLB_UART_MAXPORTS 8
|
||||
#define BFLB_UART_BAUD 2000000
|
||||
#define BFLB_UART_RX_FIFO_TH 7
|
||||
+#define BFLB_UART_TX_FIFO_DEPTH 32
|
||||
|
||||
struct bflb_uart_port {
|
||||
struct uart_port port;
|
||||
struct clk *clk;
|
||||
};
|
||||
|
||||
+#define to_bflb_uart_port(p) (container_of((p), \
|
||||
+ struct bflb_uart_port, \
|
||||
+ port))
|
||||
+
|
||||
static struct bflb_uart_port *bflb_uart_ports[BFLB_UART_MAXPORTS];
|
||||
|
||||
static inline u32 rdl(struct uart_port *port, u32 reg)
|
||||
@@ -227,91 +232,104 @@ static void bflb_uart_set_termios(struct uart_port *port,
|
||||
spin_unlock_irqrestore(&port->lock, flags);
|
||||
}
|
||||
|
||||
-static void bflb_uart_rx_chars(struct uart_port *port)
|
||||
+static void bflb_uart_rx_chars(struct bflb_uart_port *bp)
|
||||
{
|
||||
unsigned char ch, flag;
|
||||
unsigned long status;
|
||||
|
||||
- while ((status = rdl(port, UART_FIFO_CONFIG_1)) & UART_RX_FIFO_CNT_MSK) {
|
||||
- ch = rdl(port, UART_FIFO_RDATA) & UART_FIFO_RDATA_MSK;
|
||||
+ while ((status = rdl(&bp->port, UART_FIFO_CONFIG_1)) & UART_RX_FIFO_CNT_MSK) {
|
||||
+ ch = rdl(&bp->port, UART_FIFO_RDATA) & UART_FIFO_RDATA_MSK;
|
||||
flag = TTY_NORMAL;
|
||||
- port->icount.rx++;
|
||||
+ bp->port.icount.rx++;
|
||||
|
||||
- if (uart_handle_sysrq_char(port, ch))
|
||||
+ if (uart_handle_sysrq_char(&bp->port, ch))
|
||||
continue;
|
||||
- uart_insert_char(port, 0, 0, ch, flag);
|
||||
+ uart_insert_char(&bp->port, 0, 0, ch, flag);
|
||||
}
|
||||
|
||||
- spin_unlock(&port->lock);
|
||||
- tty_flip_buffer_push(&port->state->port);
|
||||
- spin_lock(&port->lock);
|
||||
+ spin_unlock(&bp->port.lock);
|
||||
+ tty_flip_buffer_push(&bp->port.state->port);
|
||||
+ spin_lock(&bp->port.lock);
|
||||
}
|
||||
|
||||
-static void bflb_uart_tx_chars(struct uart_port *port)
|
||||
+/**
|
||||
+ * bflb_uart_txfifo_space() - How much space is left int the TX FIFO?
|
||||
+ * @bp: pointer to a struct bflb_uart_port
|
||||
+ *
|
||||
+ * Read the transmit FIFO count to find out how much space is left
|
||||
+ *
|
||||
+ * Returns: UART_TX_FIFO_CNT - count of space left in the TX FIFO
|
||||
+ */
|
||||
+static int bflb_uart_txfifo_space(struct bflb_uart_port *bp)
|
||||
{
|
||||
- struct circ_buf *xmit = &port->state->xmit;
|
||||
- unsigned int pending, count;
|
||||
+ return (rdl(&bp->port, UART_FIFO_CONFIG_1)
|
||||
+ & UART_TX_FIFO_CNT_MSK) >> UART_TX_FIFO_CNT_SFT;
|
||||
+}
|
||||
|
||||
- if (port->x_char) {
|
||||
- /* Send special char - probably flow control */
|
||||
- wrl(port, UART_FIFO_WDATA, port->x_char);
|
||||
- port->x_char = 0;
|
||||
- port->icount.tx++;
|
||||
- return;
|
||||
- }
|
||||
+/**
|
||||
+ * bflb_uart_tx_char() - enqueue a byte to transmit onto the TX FIFO
|
||||
+ * @bp: pointer to a struct bflb_uart_port
|
||||
+ * @ch: character to transmit
|
||||
+ *
|
||||
+ * Enqueue a byte @ch onto the transmit FIFO, given a pointer @bp to the
|
||||
+ * struct bflb_uart_port * to transmit on.
|
||||
+ *
|
||||
+ * Context: Any context.
|
||||
+ */
|
||||
+static void bflb_uart_tx_char(struct bflb_uart_port *bp, int ch)
|
||||
+{
|
||||
+ wrl(&bp->port, UART_FIFO_WDATA, ch);
|
||||
+}
|
||||
|
||||
- pending = uart_circ_chars_pending(xmit);
|
||||
- if (pending > 0) {
|
||||
- count = (rdl(port, UART_FIFO_CONFIG_1) &
|
||||
- UART_TX_FIFO_CNT_MSK) >> UART_TX_FIFO_CNT_SFT;
|
||||
- if (count > pending)
|
||||
- count = pending;
|
||||
- if (count > 0) {
|
||||
- pending -= count;
|
||||
- while (count--) {
|
||||
- wrl(port, UART_FIFO_WDATA, xmit->buf[xmit->tail]);
|
||||
- xmit->tail = (xmit->tail + 1) & (UART_XMIT_SIZE - 1);
|
||||
- port->icount.tx++;
|
||||
- }
|
||||
- if (pending < WAKEUP_CHARS)
|
||||
- uart_write_wakeup(port);
|
||||
- }
|
||||
- }
|
||||
+/**
|
||||
+ * bflb_uart_tx_chars() - enqueue multiple bytes onto the TX FIFO
|
||||
+ * @bp: pointer to a struct bflb_uart_port
|
||||
+ *
|
||||
+ * Transfer up to a TX FIFO size's worth of characters from the Linux serial
|
||||
+ * transmit buffer to the BFLB UART TX FIFO.
|
||||
+ *
|
||||
+ * Context: Any context. Expects @bp->port.lock to be held by caller.
|
||||
+ */
|
||||
+static void bflb_uart_tx_chars(struct bflb_uart_port *bp)
|
||||
+{
|
||||
+ u8 ch;
|
||||
|
||||
- if (pending == 0)
|
||||
- bflb_uart_stop_tx(port);
|
||||
+ uart_port_tx_limited(&bp->port, ch, BFLB_UART_TX_FIFO_DEPTH,
|
||||
+ bflb_uart_txfifo_space(bp),
|
||||
+ bflb_uart_tx_char(bp, ch),
|
||||
+ ({}));
|
||||
}
|
||||
|
||||
static irqreturn_t bflb_uart_interrupt(int irq, void *data)
|
||||
{
|
||||
- struct uart_port *port = data;
|
||||
+ struct bflb_uart_port *bp = data;
|
||||
u32 isr, val;
|
||||
|
||||
- isr = rdl(port, UART_INT_STS);
|
||||
- wrl(port, UART_INT_CLEAR, isr);
|
||||
+ isr = rdl(&bp->port, UART_INT_STS);
|
||||
+ wrl(&bp->port, UART_INT_CLEAR, isr);
|
||||
|
||||
- isr &= ~rdl(port, UART_INT_MASK);
|
||||
+ isr &= ~rdl(&bp->port, UART_INT_MASK);
|
||||
|
||||
- spin_lock(&port->lock);
|
||||
+ spin_lock(&bp->port.lock);
|
||||
|
||||
if (isr & UART_URX_FER_INT) {
|
||||
/* RX FIFO error interrupt */
|
||||
- val = rdl(port, UART_FIFO_CONFIG_0);
|
||||
+ val = rdl(&bp->port, UART_FIFO_CONFIG_0);
|
||||
if (val & UART_RX_FIFO_OVERFLOW)
|
||||
- port->icount.overrun++;
|
||||
+ bp->port.icount.overrun++;
|
||||
|
||||
val |= UART_RX_FIFO_CLR;
|
||||
- wrl(port, UART_FIFO_CONFIG_0, val);
|
||||
+ wrl(&bp->port, UART_FIFO_CONFIG_0, val);
|
||||
}
|
||||
|
||||
if (isr & (UART_URX_FIFO_INT | UART_URX_RTO_INT)) {
|
||||
- bflb_uart_rx_chars(port);
|
||||
+ bflb_uart_rx_chars(bp);
|
||||
}
|
||||
if (isr & (UART_UTX_FIFO_INT | UART_UTX_END_INT)) {
|
||||
- bflb_uart_tx_chars(port);
|
||||
+ bflb_uart_tx_chars(bp);
|
||||
}
|
||||
|
||||
- spin_unlock(&port->lock);
|
||||
+ spin_unlock(&bp->port.lock);
|
||||
|
||||
return IRQ_RETVAL(isr);
|
||||
}
|
||||
@@ -335,19 +353,22 @@ static void bflb_uart_config_port(struct uart_port *port, int flags)
|
||||
static int bflb_uart_startup(struct uart_port *port)
|
||||
{
|
||||
unsigned long flags;
|
||||
- int ret;
|
||||
u32 val;
|
||||
+ struct bflb_uart_port *bp = to_bflb_uart_port(port);
|
||||
+ int ret;
|
||||
+
|
||||
+ dev_dbg(port->dev, "startup %s\n", port->name);
|
||||
+
|
||||
+ spin_lock_irqsave(&port->lock, flags);
|
||||
|
||||
ret = devm_request_irq(port->dev, port->irq, bflb_uart_interrupt,
|
||||
- IRQF_SHARED, port->name, port);
|
||||
+ IRQF_SHARED, port->name, bp);
|
||||
if (ret) {
|
||||
dev_err(port->dev, "fail to request serial irq %d, ret=%d\n",
|
||||
port->irq, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
- spin_lock_irqsave(&port->lock, flags);
|
||||
-
|
||||
val = rdl(port, UART_INT_MASK);
|
||||
val |= 0xfff;
|
||||
wrl(port, UART_INT_MASK, val);
|
||||
@@ -383,10 +404,14 @@ static int bflb_uart_startup(struct uart_port *port)
|
||||
static void bflb_uart_shutdown(struct uart_port *port)
|
||||
{
|
||||
unsigned long flags;
|
||||
+ struct bflb_uart_port *bp = to_bflb_uart_port(port);
|
||||
+
|
||||
+ dev_dbg(port->dev, "shutdown %s\n", port->name);
|
||||
|
||||
spin_lock_irqsave(&port->lock, flags);
|
||||
/* mask all interrupts now */
|
||||
wrl(port, UART_INT_MASK, UART_UTX_END_INT | UART_URX_END_INT);
|
||||
+ devm_free_irq(port->dev, port->irq, bp);
|
||||
spin_unlock_irqrestore(&port->lock, flags);
|
||||
}
|
||||
|
||||
@@ -589,7 +614,7 @@ static int bflb_uart_probe(struct platform_device *pdev)
|
||||
port->line = index;
|
||||
port->type = PORT_BFLB;
|
||||
port->iotype = UPIO_MEM;
|
||||
- port->fifosize = 32;
|
||||
+ port->fifosize = BFLB_UART_TX_FIFO_DEPTH;
|
||||
port->ops = &bflb_uart_ops;
|
||||
port->flags = UPF_BOOT_AUTOCONF;
|
||||
port->dev = &pdev->dev;
|
||||
--
|
||||
2.25.1
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
From 83dd2f89365b55df3901da4ecabeb38cdff102f5 Mon Sep 17 00:00:00 2001
|
||||
From: Allen Martin <armartin@gmail.com>
|
||||
Date: Sat, 21 Jan 2023 03:35:04 -0800
|
||||
Subject: [PATCH 21/21] mmc: sdhci-bflb: remove unnecessary quirks
|
||||
|
||||
Remove quirks that were added during bringup but are not required.
|
||||
This will enable DMA and ADMA on sdcard.
|
||||
---
|
||||
drivers/mmc/host/sdhci-bflb.c | 6 +-----
|
||||
1 file changed, 1 insertion(+), 5 deletions(-)
|
||||
|
||||
diff --git a/drivers/mmc/host/sdhci-bflb.c b/drivers/mmc/host/sdhci-bflb.c
|
||||
index aacf234387af..1e590a151c04 100644
|
||||
--- a/drivers/mmc/host/sdhci-bflb.c
|
||||
+++ b/drivers/mmc/host/sdhci-bflb.c
|
||||
@@ -55,11 +55,7 @@ static const struct sdhci_pltfm_data sdhci_bflb_pdata = {
|
||||
.quirks = SDHCI_QUIRK_NO_SIMULT_VDD_AND_POWER |
|
||||
SDHCI_QUIRK_NO_BUSY_IRQ |
|
||||
SDHCI_QUIRK_BROKEN_TIMEOUT_VAL |
|
||||
- SDHCI_QUIRK_BROKEN_DMA |
|
||||
- SDHCI_QUIRK_BROKEN_ADMA |
|
||||
- SDHCI_QUIRK_BROKEN_CARD_DETECTION |
|
||||
- SDHCI_QUIRK_INVERTED_WRITE_PROTECT |
|
||||
- SDHCI_QUIRK_NO_HISPD_BIT,
|
||||
+ SDHCI_QUIRK_INVERTED_WRITE_PROTECT,
|
||||
};
|
||||
|
||||
static int sdhci_bflb_probe(struct platform_device *pdev)
|
||||
--
|
||||
2.25.1
|
||||
|
|
@ -22,7 +22,7 @@ BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_BOUFFALO_BR_PATH)/board/pine64/ox64/rootfs-ov
|
|||
BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_BOUFFALO_BR_PATH)/board/pine64/ox64/post-build.sh"
|
||||
BR2_LINUX_KERNEL=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="v6.2-rc2"
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="v6.2-rc5"
|
||||
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_BOUFFALO_BR_PATH)/board/pine64/ox64/linux_defconfig"
|
||||
BR2_LINUX_KERNEL_LZ4=y
|
||||
|
|
|
@ -22,7 +22,7 @@ BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_BOUFFALO_BR_PATH)/board/pine64/ox64/rootfs-ov
|
|||
BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_BOUFFALO_BR_PATH)/board/pine64/ox64/post-build.sh"
|
||||
BR2_LINUX_KERNEL=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="v6.2-rc2"
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="v6.2-rc5"
|
||||
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_BOUFFALO_BR_PATH)/board/pine64/ox64/linux_defconfig"
|
||||
BR2_LINUX_KERNEL_LZ4=y
|
||||
|
|
Loading…
Add table
Reference in a new issue