diff --git a/board/czechlight/clearfog/linux.fragment b/board/czechlight/clearfog/linux.fragment
index f0fae65..50239e9 100644
--- a/board/czechlight/clearfog/linux.fragment
+++ b/board/czechlight/clearfog/linux.fragment
@@ -51,4 +51,4 @@
 CONFIG_KEYBOARD_ATKBD=N
 CONFIG_INPUT_MOUSE=N
 
-CONFIG_LOCALVERSION="-6-gfc198736eda4"
+CONFIG_LOCALVERSION="-6-ge8ddee461538"
diff --git a/board/czechlight/clearfog/patches/linux.patch b/board/czechlight/clearfog/patches/linux.patch
index 934e3e5..67a380f 100644
--- a/board/czechlight/clearfog/patches/linux.patch
+++ b/board/czechlight/clearfog/patches/linux.patch
@@ -197,30 +197,10 @@
  	data->ngpio = ngpio;
  
 diff --git a/drivers/spi/spi-orion.c b/drivers/spi/spi-orion.c
-index 565cd4c48d7b..cb252d98184c 100644
+index 565cd4c48d7b..3298f6d17f4a 100644
 --- a/drivers/spi/spi-orion.c
 +++ b/drivers/spi/spi-orion.c
-@@ -86,10 +86,6 @@ struct orion_direct_acc {
- 	u32			size;
- };
- 
--struct orion_child_options {
--	struct orion_direct_acc direct_access;
--};
--
- struct orion_spi {
- 	struct spi_master	*master;
- 	void __iomem		*base;
-@@ -98,7 +94,7 @@ struct orion_spi {
- 	const struct orion_spi_dev *devdata;
- 	struct device		*dev;
- 
--	struct orion_child_options	child[ORION_NUM_CHIPSELECTS];
-+	struct orion_direct_acc	direct_access[ORION_NUM_CHIPSELECTS];
- };
- 
- #ifdef CONFIG_PM
-@@ -473,7 +469,7 @@ orion_spi_write_read(struct spi_device *spi, struct spi_transfer *xfer)
+@@ -473,7 +473,7 @@ orion_spi_write_read(struct spi_device *spi, struct spi_transfer *xfer)
  	int cs = spi->chip_select;
  	void __iomem *vaddr;
  
@@ -229,48 +209,11 @@
  	count = xfer->len;
  
  	orion_spi = spi_master_get_devdata(spi->master);
-@@ -483,7 +479,7 @@ orion_spi_write_read(struct spi_device *spi, struct spi_transfer *xfer)
- 	 * and SPI_CS_WORD flag is not set.
- 	 * Otherwise fall back to PIO mode for this transfer.
- 	 */
--	vaddr = orion_spi->child[cs].direct_access.vaddr;
-+	vaddr = orion_spi->direct_access[cs].vaddr;
- 
- 	if (vaddr && xfer->tx_buf && word_len == 8 && (spi->mode & SPI_CS_WORD) == 0) {
- 		unsigned int cnt = count / 4;
-@@ -736,7 +732,6 @@ static int orion_spi_probe(struct platform_device *pdev)
- 	}
- 
- 	for_each_available_child_of_node(pdev->dev.of_node, np) {
--		struct orion_direct_acc *dir_acc;
- 		u32 cs;
- 
- 		/* Get chip-select number from the "reg" property */
-@@ -765,14 +760,15 @@ static int orion_spi_probe(struct platform_device *pdev)
- 		 * This needs to get extended for the direct SPI NOR / SPI NAND
- 		 * support, once this gets implemented.
- 		 */
--		dir_acc = &spi->child[cs].direct_access;
--		dir_acc->vaddr = devm_ioremap(&pdev->dev, r->start, PAGE_SIZE);
--		if (!dir_acc->vaddr) {
-+		spi->direct_access[cs].vaddr = devm_ioremap(&pdev->dev,
-+							    r->start,
-+							    PAGE_SIZE);
-+		if (!spi->direct_access[cs].vaddr) {
- 			status = -ENOMEM;
- 			of_node_put(np);
- 			goto out_rel_axi_clk;
- 		}
--		dir_acc->size = PAGE_SIZE;
-+		spi->direct_access[cs].size = PAGE_SIZE;
- 
- 		dev_info(&pdev->dev, "CS%d configured for direct access\n", cs);
- 	}
 diff --git a/drivers/tty/serial/max310x.c b/drivers/tty/serial/max310x.c
-index dde0824b2fa5..bdfcd01401dd 100644
+index 4eb24e3407f8..7e71b36a16ab 100644
 --- a/drivers/tty/serial/max310x.c
 +++ b/drivers/tty/serial/max310x.c
-@@ -235,6 +235,10 @@
+@@ -237,6 +237,10 @@
  #define MAX310x_REV_MASK		(0xf8)
  #define MAX310X_WRITE_BIT		0x80
  
@@ -281,7 +224,19 @@
  /* MAX3107 specific */
  #define MAX3107_REV_ID			(0xa0)
  
-@@ -610,11 +614,14 @@ static u32 max310x_set_ref_clk(struct device *dev, struct max310x_port *s,
+@@ -525,6 +529,11 @@ static bool max310x_reg_precious(struct device *dev, unsigned int reg)
+ 	return false;
+ }
+ 
++static bool max310x_reg_noinc(struct device *dev, unsigned int reg)
++{
++	return reg == MAX310X_RHR_REG;
++}
++
+ static int max310x_set_baud(struct uart_port *port, int baud)
+ {
+ 	unsigned int mode = 0, div = 0, frac = 0, c = 0, F = 0;
+@@ -636,11 +645,14 @@ static u32 max310x_set_ref_clk(struct device *dev, struct max310x_port *s,
  
  	/* Wait for crystal */
  	if (xtal) {
@@ -300,7 +255,24 @@
  		}
  	}
  
-@@ -1335,6 +1342,10 @@ static int max310x_probe(struct device *dev, const struct max310x_devtype *devty
+@@ -651,14 +663,14 @@ static void max310x_batch_write(struct uart_port *port, u8 *txbuf, unsigned int
+ {
+ 	struct max310x_one *one = to_max310x_port(port);
+ 
+-	regmap_raw_write(one->regmap, MAX310X_THR_REG, txbuf, len);
++	regmap_noinc_write(one->regmap, MAX310X_THR_REG, txbuf, len);
+ }
+ 
+ static void max310x_batch_read(struct uart_port *port, u8 *rxbuf, unsigned int len)
+ {
+ 	struct max310x_one *one = to_max310x_port(port);
+ 
+-	regmap_raw_read(one->regmap, MAX310X_RHR_REG, rxbuf, len);
++	regmap_noinc_read(one->regmap, MAX310X_RHR_REG, rxbuf, len);
+ }
+ 
+ static void max310x_handle_rx(struct uart_port *port, unsigned int rxlen)
+@@ -1344,6 +1356,10 @@ static int max310x_probe(struct device *dev, const struct max310x_devtype *devty
  	}
  
  	uartclk = max310x_set_ref_clk(dev, s, freq, xtal);
@@ -311,3 +283,14 @@
  	dev_dbg(dev, "Reference clock set to %i Hz\n", uartclk);
  
  	for (i = 0; i < devtype->nr; i++) {
+@@ -1469,6 +1485,10 @@ static struct regmap_config regcfg = {
+ 	.writeable_reg = max310x_reg_writeable,
+ 	.volatile_reg = max310x_reg_volatile,
+ 	.precious_reg = max310x_reg_precious,
++	.writeable_noinc_reg = max310x_reg_noinc,
++	.readable_noinc_reg = max310x_reg_noinc,
++	.max_raw_read = MAX310X_FIFO_SIZE,
++	.max_raw_write = MAX310X_FIFO_SIZE,
+ };
+ 
+ #ifdef CONFIG_SPI_MASTER
diff --git a/configs/czechlight_clearfog_defconfig b/configs/czechlight_clearfog_defconfig
index 654a5cc..561a561 100644
--- a/configs/czechlight_clearfog_defconfig
+++ b/configs/czechlight_clearfog_defconfig
@@ -27,7 +27,7 @@
 BR2_ROOTFS_POST_SCRIPT_ARGS="-c $(BR2_EXTERNAL_CZECHLIGHT_PATH)/board/czechlight/clearfog/genimage.cfg"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.16.10"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.2.9"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_CZECHLIGHT_PATH)/board/czechlight/clearfog/patches/linux.patch"
 BR2_LINUX_KERNEL_DEFCONFIG="mvebu_v7"
 BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_CZECHLIGHT_PATH)/board/czechlight/clearfog/linux.fragment $(BR2_EXTERNAL_CZECHLIGHT_PATH)/board/czechlight/common/linux.fragment"
