diff --git a/arch/um/include/asm/io-mock-shared.h b/arch/um/include/asm/io-mock-shared.h
index 2e189e0..a0c19f2 100644
--- a/arch/um/include/asm/io-mock-shared.h
+++ b/arch/um/include/asm/io-mock-shared.h
@@ -60,4 +60,32 @@
 void writeq_relaxed(u64, const volatile void __iomem *);
 #endif /* CONFIG_64BIT */
 
+#define kunit_readb kunit_readb
+u8 kunit_readb(const volatile void __iomem *);
+
+#define kunit_readw kunit_readw
+u16 kunit_readw(const volatile void __iomem *);
+
+#define kunit_readl kunit_readl
+u32 kunit_readl(const volatile void __iomem *);
+
+#ifdef CONFIG_64BIT
+#define kunit_readq kunit_readq
+u64 kunit_readq(const volatile void __iomem *);
+#endif /* CONFIG_64BIT */
+
+#define kunit_writeb kunit_writeb
+void kunit_writeb(u8, const volatile void __iomem *);
+
+#define kunit_writew kunit_writew
+void kunit_writew(u16, const volatile void __iomem *);
+
+#define kunit_writel kunit_writel
+void kunit_writel(u32, const volatile void __iomem *);
+
+#ifdef CONFIG_64BIT
+#define kunit_writeq kunit_writeq
+void kunit_writeq(u64, const volatile void __iomem *);
+#endif /* CONFIG_64BIT */
+
 #endif /* _ASM_UM_IO_MOCK_SHARED_H */
diff --git a/arch/um/kernel/io-mock.c b/arch/um/kernel/io-mock.c
index 420c6f1..babe511 100644
--- a/arch/um/kernel/io-mock.c
+++ b/arch/um/kernel/io-mock.c
@@ -38,3 +38,31 @@
 DEFINE_FUNCTION_MOCK_VOID_RETURN(writeq,
 				 PARAMS(u64, const volatile void __iomem *));
 #endif /* CONFIG_64BIT */
+
+DEFINE_FUNCTION_MOCK(kunit_readb,
+		     RETURNS(u8), PARAMS(const volatile void __iomem *));
+
+DEFINE_FUNCTION_MOCK(kunit_readw,
+		     RETURNS(u16), PARAMS(const volatile void __iomem *));
+
+DEFINE_FUNCTION_MOCK(kunit_readl,
+		     RETURNS(u32), PARAMS(const volatile void __iomem *));
+
+#ifdef CONFIG_64BIT
+DEFINE_FUNCTION_MOCK(kunit_readq,
+		     RETURNS(u64), PARAMS(const volatile void __iomem *));
+#endif /* CONFIG_64BIT */
+
+DEFINE_FUNCTION_MOCK_VOID_RETURN(kunit_writeb,
+				 PARAMS(u8, const volatile void __iomem *));
+
+DEFINE_FUNCTION_MOCK_VOID_RETURN(kunit_writew,
+				 PARAMS(u16, const volatile void __iomem *));
+
+DEFINE_FUNCTION_MOCK_VOID_RETURN(kunit_writel,
+				 PARAMS(u32, const volatile void __iomem *));
+
+#ifdef CONFIG_64BIT
+DEFINE_FUNCTION_MOCK_VOID_RETURN(kunit_writeq,
+				 PARAMS(u64, const volatile void __iomem *));
+#endif /* CONFIG_64BIT */
diff --git a/drivers/i2c/busses/i2c-aspeed.c b/drivers/i2c/busses/i2c-aspeed.c
index 41fc416..b16c1cb 100644
--- a/drivers/i2c/busses/i2c-aspeed.c
+++ b/drivers/i2c/busses/i2c-aspeed.c
@@ -87,7 +87,7 @@
 	u32 command;
 
 	spin_lock_irqsave(&bus->lock, flags);
-	command = readl(bus->base + ASPEED_I2C_CMD_REG);
+	command = kunit_readl(bus->base + ASPEED_I2C_CMD_REG);
 
 	if (command & ASPEED_I2CD_SDA_LINE_STS) {
 		/* Bus is idle: no recovery needed. */
@@ -97,7 +97,7 @@
 			command);
 
 		reinit_completion(&bus->cmd_complete);
-		writel(ASPEED_I2CD_M_STOP_CMD, bus->base + ASPEED_I2C_CMD_REG);
+		kunit_writel(ASPEED_I2CD_M_STOP_CMD, bus->base + ASPEED_I2C_CMD_REG);
 		spin_unlock_irqrestore(&bus->lock, flags);
 
 		time_left = wait_for_completion_timeout(
@@ -109,7 +109,7 @@
 		else if (bus->cmd_err)
 			goto reset_out;
 		/* Recovery failed. */
-		else if (!(readl(bus->base + ASPEED_I2C_CMD_REG) &
+		else if (!(kunit_readl(bus->base + ASPEED_I2C_CMD_REG) &
 			   ASPEED_I2CD_SCL_LINE_STS))
 			goto reset_out;
 	/* Bus error. */
@@ -119,7 +119,7 @@
 
 		reinit_completion(&bus->cmd_complete);
 		/* Writes 1 to 8 SCL clock cycles until SDA is released. */
-		writel(ASPEED_I2CD_BUS_RECOVER_CMD,
+		kunit_writel(ASPEED_I2CD_BUS_RECOVER_CMD,
 		       bus->base + ASPEED_I2C_CMD_REG);
 		spin_unlock_irqrestore(&bus->lock, flags);
 
@@ -132,7 +132,7 @@
 		else if (bus->cmd_err)
 			goto reset_out;
 		/* Recovery failed. */
-		else if (!(readl(bus->base + ASPEED_I2C_CMD_REG) &
+		else if (!(kunit_readl(bus->base + ASPEED_I2C_CMD_REG) &
 			   ASPEED_I2CD_SDA_LINE_STS))
 			goto reset_out;
 	}
@@ -161,8 +161,8 @@
 		goto out;
 	}
 
-	command = readl(bus->base + ASPEED_I2C_CMD_REG);
-	irq_status = readl(bus->base + ASPEED_I2C_INTR_STS_REG);
+	command = kunit_readl(bus->base + ASPEED_I2C_CMD_REG);
+	irq_status = kunit_readl(bus->base + ASPEED_I2C_INTR_STS_REG);
 
 	/* Slave was requested, restart state machine. */
 	if (irq_status & ASPEED_I2CD_INTR_SLAVE_MATCH) {
@@ -181,7 +181,7 @@
 
 	/* Slave was sent something. */
 	if (irq_status & ASPEED_I2CD_INTR_RX_DONE) {
-		value = readl(bus->base + ASPEED_I2C_BYTE_BUF_REG) >> 8;
+		value = kunit_readl(bus->base + ASPEED_I2C_BYTE_BUF_REG) >> 8;
 		/* Handle address frame. */
 		if (bus->slave_state == ASPEED_I2C_SLAVE_START) {
 			if (value & 0x1)
@@ -211,8 +211,8 @@
 		bus->slave_state = ASPEED_I2C_SLAVE_READ_PROCESSED;
 
 		i2c_slave_event(slave, I2C_SLAVE_READ_REQUESTED, &value);
-		writel(value, bus->base + ASPEED_I2C_BYTE_BUF_REG);
-		writel(ASPEED_I2CD_S_TX_CMD, bus->base + ASPEED_I2C_CMD_REG);
+		kunit_writel(value, bus->base + ASPEED_I2C_BYTE_BUF_REG);
+		kunit_writel(ASPEED_I2CD_S_TX_CMD, bus->base + ASPEED_I2C_CMD_REG);
 		break;
 	case ASPEED_I2C_SLAVE_READ_PROCESSED:
 		status_ack |= ASPEED_I2CD_INTR_TX_ACK;
@@ -220,8 +220,8 @@
 			dev_err(bus->dev,
 				"Expected ACK after processed read.\n");
 		i2c_slave_event(slave, I2C_SLAVE_READ_PROCESSED, &value);
-		writel(value, bus->base + ASPEED_I2C_BYTE_BUF_REG);
-		writel(ASPEED_I2CD_S_TX_CMD, bus->base + ASPEED_I2C_CMD_REG);
+		kunit_writel(value, bus->base + ASPEED_I2C_BYTE_BUF_REG);
+		kunit_writel(ASPEED_I2CD_S_TX_CMD, bus->base + ASPEED_I2C_CMD_REG);
 		break;
 	case ASPEED_I2C_SLAVE_WRITE_REQUESTED:
 		bus->slave_state = ASPEED_I2C_SLAVE_WRITE_RECEIVED;
@@ -243,7 +243,7 @@
 		dev_err(bus->dev,
 			"irq handled != irq. expected %x, but was %x\n",
 			irq_status, status_ack);
-	writel(status_ack, bus->base + ASPEED_I2C_INTR_STS_REG);
+	kunit_writel(status_ack, bus->base + ASPEED_I2C_INTR_STS_REG);
 
 out:
 	return irq_handled;
@@ -267,15 +267,15 @@
 			command |= ASPEED_I2CD_M_S_RX_CMD_LAST;
 	}
 
-	writel(slave_addr, bus->base + ASPEED_I2C_BYTE_BUF_REG);
-	writel(command, bus->base + ASPEED_I2C_CMD_REG);
+	kunit_writel(slave_addr, bus->base + ASPEED_I2C_BYTE_BUF_REG);
+	kunit_writel(command, bus->base + ASPEED_I2C_CMD_REG);
 }
 
 /* precondition: bus.lock has been acquired. */
 static void aspeed_i2c_do_stop(struct aspeed_i2c_bus *bus)
 {
 	bus->master_state = ASPEED_I2C_MASTER_STOP;
-	writel(ASPEED_I2CD_M_STOP_CMD, bus->base + ASPEED_I2C_CMD_REG);
+	kunit_writel(ASPEED_I2CD_M_STOP_CMD, bus->base + ASPEED_I2C_CMD_REG);
 }
 
 /* precondition: bus.lock has been acquired. */
@@ -309,9 +309,9 @@
 	u8 recv_byte;
 	int ret;
 
-	irq_status = readl(bus->base + ASPEED_I2C_INTR_STS_REG);
+	irq_status = kunit_readl(bus->base + ASPEED_I2C_INTR_STS_REG);
 	/* Ack all interrupt bits. */
-	writel(irq_status, bus->base + ASPEED_I2C_INTR_STS_REG);
+	kunit_writel(irq_status, bus->base + ASPEED_I2C_INTR_STS_REG);
 
 	if (irq_status & ASPEED_I2CD_INTR_BUS_RECOVER_DONE) {
 		bus->master_state = ASPEED_I2C_MASTER_INACTIVE;
@@ -382,9 +382,9 @@
 	case ASPEED_I2C_MASTER_TX_FIRST:
 		if (bus->buf_index < msg->len) {
 			bus->master_state = ASPEED_I2C_MASTER_TX;
-			writel(msg->buf[bus->buf_index++],
+			kunit_writel(msg->buf[bus->buf_index++],
 			       bus->base + ASPEED_I2C_BYTE_BUF_REG);
-			writel(ASPEED_I2CD_M_TX_CMD,
+			kunit_writel(ASPEED_I2CD_M_TX_CMD,
 			       bus->base + ASPEED_I2C_CMD_REG);
 		} else {
 			aspeed_i2c_next_msg_or_stop(bus);
@@ -402,7 +402,7 @@
 		}
 		status_ack |= ASPEED_I2CD_INTR_RX_DONE;
 
-		recv_byte = readl(bus->base + ASPEED_I2C_BYTE_BUF_REG) >> 8;
+		recv_byte = kunit_readl(bus->base + ASPEED_I2C_BYTE_BUF_REG) >> 8;
 		msg->buf[bus->buf_index++] = recv_byte;
 
 		if (msg->flags & I2C_M_RECV_LEN) {
@@ -421,7 +421,7 @@
 			command = ASPEED_I2CD_M_RX_CMD;
 			if (bus->buf_index + 1 == msg->len)
 				command |= ASPEED_I2CD_M_S_RX_CMD_LAST;
-			writel(command, bus->base + ASPEED_I2C_CMD_REG);
+			kunit_writel(command, bus->base + ASPEED_I2C_CMD_REG);
 		} else {
 			aspeed_i2c_next_msg_or_stop(bus);
 		}
@@ -504,7 +504,7 @@
 	/* If bus is busy, attempt recovery. We assume a single master
 	 * environment.
 	 */
-	if (readl(bus->base + ASPEED_I2C_CMD_REG) & ASPEED_I2CD_BUS_BUSY_STS) {
+	if (kunit_readl(bus->base + ASPEED_I2C_CMD_REG) & ASPEED_I2CD_BUS_BUSY_STS) {
 		spin_unlock_irqrestore(&bus->lock, flags);
 		ret = aspeed_i2c_recover_bus(bus);
 		if (ret)
@@ -542,15 +542,15 @@
 	u32 addr_reg_val, func_ctrl_reg_val;
 
 	/* Set slave addr. */
-	addr_reg_val = readl(bus->base + ASPEED_I2C_DEV_ADDR_REG);
+	addr_reg_val = kunit_readl(bus->base + ASPEED_I2C_DEV_ADDR_REG);
 	addr_reg_val &= ~ASPEED_I2CD_DEV_ADDR_MASK;
 	addr_reg_val |= slave_addr & ASPEED_I2CD_DEV_ADDR_MASK;
-	writel(addr_reg_val, bus->base + ASPEED_I2C_DEV_ADDR_REG);
+	kunit_writel(addr_reg_val, bus->base + ASPEED_I2C_DEV_ADDR_REG);
 
 	/* Turn on slave mode. */
-	func_ctrl_reg_val = readl(bus->base + ASPEED_I2C_FUN_CTRL_REG);
+	func_ctrl_reg_val = kunit_readl(bus->base + ASPEED_I2C_FUN_CTRL_REG);
 	func_ctrl_reg_val |= ASPEED_I2CD_SLAVE_EN;
-	writel(func_ctrl_reg_val, bus->base + ASPEED_I2C_FUN_CTRL_REG);
+	kunit_writel(func_ctrl_reg_val, bus->base + ASPEED_I2C_FUN_CTRL_REG);
 }
 
 static int aspeed_i2c_reg_slave(struct i2c_client *client)
@@ -586,9 +586,9 @@
 	}
 
 	/* Turn off slave mode. */
-	func_ctrl_reg_val = readl(bus->base + ASPEED_I2C_FUN_CTRL_REG);
+	func_ctrl_reg_val = kunit_readl(bus->base + ASPEED_I2C_FUN_CTRL_REG);
 	func_ctrl_reg_val &= ~ASPEED_I2CD_SLAVE_EN;
-	writel(func_ctrl_reg_val, bus->base + ASPEED_I2C_FUN_CTRL_REG);
+	kunit_writel(func_ctrl_reg_val, bus->base + ASPEED_I2C_FUN_CTRL_REG);
 
 	bus->slave = NULL;
 	spin_unlock_irqrestore(&bus->lock, flags);
@@ -690,13 +690,13 @@
 	u32 divisor, clk_reg_val;
 
 	divisor = DIV_ROUND_UP(bus->parent_clk_frequency, bus->bus_frequency);
-	clk_reg_val = readl(bus->base + ASPEED_I2C_AC_TIMING_REG1);
+	clk_reg_val = kunit_readl(bus->base + ASPEED_I2C_AC_TIMING_REG1);
 	clk_reg_val &= (ASPEED_I2CD_TIME_TBUF_MASK |
 			ASPEED_I2CD_TIME_THDSTA_MASK |
 			ASPEED_I2CD_TIME_TACST_MASK);
 	clk_reg_val |= bus->get_clk_reg_val(divisor);
-	writel(clk_reg_val, bus->base + ASPEED_I2C_AC_TIMING_REG1);
-	writel(ASPEED_NO_TIMEOUT_CTRL, bus->base + ASPEED_I2C_AC_TIMING_REG2);
+	kunit_writel(clk_reg_val, bus->base + ASPEED_I2C_AC_TIMING_REG1);
+	kunit_writel(ASPEED_NO_TIMEOUT_CTRL, bus->base + ASPEED_I2C_AC_TIMING_REG2);
 
 	return 0;
 }
@@ -709,7 +709,7 @@
 	int ret;
 
 	/* Disable everything. */
-	writel(0, bus->base + ASPEED_I2C_FUN_CTRL_REG);
+	kunit_writel(0, bus->base + ASPEED_I2C_FUN_CTRL_REG);
 
 	ret = aspeed_i2c_init_clk(bus);
 	if (ret < 0)
@@ -719,7 +719,7 @@
 		fun_ctrl_reg |= ASPEED_I2CD_MULTI_MASTER_DIS;
 
 	/* Enable Master Mode */
-	writel(readl(bus->base + ASPEED_I2C_FUN_CTRL_REG) | fun_ctrl_reg,
+	kunit_writel(kunit_readl(bus->base + ASPEED_I2C_FUN_CTRL_REG) | fun_ctrl_reg,
 	       bus->base + ASPEED_I2C_FUN_CTRL_REG);
 
 #if IS_ENABLED(CONFIG_I2C_SLAVE)
@@ -729,7 +729,7 @@
 #endif /* CONFIG_I2C_SLAVE */
 
 	/* Set interrupt generation of I2C controller */
-	writel(ASPEED_I2CD_INTR_ALL, bus->base + ASPEED_I2C_INTR_CTRL_REG);
+	kunit_writel(ASPEED_I2CD_INTR_ALL, bus->base + ASPEED_I2C_INTR_CTRL_REG);
 
 	return 0;
 }
@@ -743,8 +743,8 @@
 	spin_lock_irqsave(&bus->lock, flags);
 
 	/* Disable and ack all interrupts. */
-	writel(0, bus->base + ASPEED_I2C_INTR_CTRL_REG);
-	writel(0xffffffff, bus->base + ASPEED_I2C_INTR_STS_REG);
+	kunit_writel(0, bus->base + ASPEED_I2C_INTR_CTRL_REG);
+	kunit_writel(0xffffffff, bus->base + ASPEED_I2C_INTR_STS_REG);
 
 	ret = aspeed_i2c_init(bus, pdev);
 
@@ -827,8 +827,8 @@
 	bus->dev = &pdev->dev;
 
 	/* Clean up any left over interrupt state. */
-	writel(0, bus->base + ASPEED_I2C_INTR_CTRL_REG);
-	writel(0xffffffff, bus->base + ASPEED_I2C_INTR_STS_REG);
+	kunit_writel(0, bus->base + ASPEED_I2C_INTR_CTRL_REG);
+	kunit_writel(0xffffffff, bus->base + ASPEED_I2C_INTR_STS_REG);
 	/*
 	 * bus.lock does not need to be held because the interrupt handler has
 	 * not been enabled yet.
@@ -863,8 +863,8 @@
 	spin_lock_irqsave(&bus->lock, flags);
 
 	/* Disable everything. */
-	writel(0, bus->base + ASPEED_I2C_FUN_CTRL_REG);
-	writel(0, bus->base + ASPEED_I2C_INTR_CTRL_REG);
+	kunit_writel(0, bus->base + ASPEED_I2C_FUN_CTRL_REG);
+	kunit_writel(0, bus->base + ASPEED_I2C_INTR_CTRL_REG);
 
 	spin_unlock_irqrestore(&bus->lock, flags);
 
diff --git a/test/fake.c b/test/fake.c
index ffce16a..120b54c 100644
--- a/test/fake.c
+++ b/test/fake.c
@@ -97,11 +97,11 @@
 	fd->writel_action.do_action = fake_writel_action;
 
 	mock_set_default_action(mock_get_global_mock(),
-				"readl",
-				readl,
+				"kunit_readl",
+				kunit_readl,
 				&fd->readl_action);
 	mock_set_default_action(mock_get_global_mock(),
-				"writel",
-				writel,
+				"kunit_writel",
+				kunit_writel,
 				&fd->writel_action);
 }
