diff --git a/drivers/i2c/busses/i2c-aspeed-test.c b/drivers/i2c/busses/i2c-aspeed-test.c
index 28fa60c..abd7e68 100644
--- a/drivers/i2c/busses/i2c-aspeed-test.c
+++ b/drivers/i2c/busses/i2c-aspeed-test.c
@@ -6,6 +6,7 @@
 #include <linux/interrupt.h>
 #include <asm/io-mock.h>
 #include "i2c-aspeed.h"
+#include "i2c-aspeed-fake.h"
 
 #define ASPEED_I2C_MAX_BASE_DIVISOR		(1 << ASPEED_I2CD_TIME_BASE_DIVISOR_MASK)
 #define ASPEED_I2C_24XX_CLK_HIGH_LOW_MASK	GENMASK(2, 0)
@@ -23,6 +24,7 @@
 	void *irq_ctx;
 	struct work_struct call_irq_handler;
 	struct i2c_client *client;
+	struct aspeed_i2c_fake *i2c_fake;
 };
 
 DEFINE_FUNCTION_MOCK(devm_ioremap_resource,
@@ -53,9 +55,7 @@
 	EXPECT_EQ(ctx->test, IRQ_HANDLED, ctx->irq_handler(0, ctx->irq_ctx));
 }
 
-static void *schedule_irq_handler_call(struct test *test,
-				       const void *params[],
-				       int len)
+static void *schedule_irq_handler_call(struct test *test, const void *params[], int len)
 {
 	struct aspeed_i2c_test *ctx = test->priv;
 
@@ -64,6 +64,13 @@
 	return ctx;
 }
 
+static void schedule_irq_handler_call_new(struct test *test)
+{
+	struct aspeed_i2c_test *ctx = test->priv;
+
+	ASSERT_TRUE(ctx->test, schedule_work(&ctx->call_irq_handler));
+}
+
 /* Adds expectations which are common to many test cases which test conditions
  * that eventually lead to a transfer (e.g after performing some recovery steps etc).
  */
@@ -179,14 +186,20 @@
 
 static void aspeed_i2c_master_xfer_test_basic(struct test *test)
 {
-        struct mock_expectation *read_cmd_reg;
+        struct aspeed_i2c_test *ctx = test->priv;
+	struct aspeed_i2c_fake *i2c_fake = ctx->i2c_fake;
+        struct i2c_client *client = ctx->client;
+        u8 msg[] = {0xae, 0x00};
+	int i;
 
-        /* Set expectation to return a value indicating the bus is not busy */
-        read_cmd_reg = Returns(EXPECT_CALL(readl(u32_eq(test,
-                                                        ASPEED_I2C_CMD_REG))),
-                               u32_return(test, !ASPEED_I2CD_BUS_BUSY_STS));
-
-        aspeed_i2c_master_xfer_start_transaction(test, /*precondition=*/read_cmd_reg);
+        ASSERT_EQ(test,
+                  ARRAY_SIZE(msg),
+                  i2c_master_send(client, msg, ARRAY_SIZE(msg)));
+	ASSERT_EQ(test, i2c_fake->msgs_count, 1);
+	EXPECT_EQ(test, client->addr, i2c_fake->msgs->addr);
+	EXPECT_EQ(test, i2c_fake->msgs->len, ARRAY_SIZE(msg));
+	for (i = 0; i < ARRAY_SIZE(msg); i++)
+		EXPECT_EQ(test, i2c_fake->msgs->buf[i], msg[i]);
 }
 
 static void aspeed_i2c_master_xfer_test_idle_bus(struct test *test)
@@ -529,47 +542,42 @@
 	struct mock_param_capturer *adap_capturer,
 				   *irq_capturer,
 				   *irq_ctx_capturer;
+	struct aspeed_i2c_fake *i2c_fake;
 	struct aspeed_i2c_test *ctx;
 
-	mock_set_default_action(mock_get_global_mock(),
-				"readl",
-				readl,
-				u32_return(test, 0));
-	mock_set_default_action(mock_get_global_mock(),
-				"writel",
-				writel,
-				int_return(test, 0));
-
-	/* TODO(brendanhiggins@google.com): Fix this so mock_validate works. */
-	Between(1, 2, RetireOnSaturation(Returns(EXPECT_CALL(readl(any(test))),
-                                                 u32_return(test, 0))));
-        RetireOnSaturation(EXPECT_CALL(
-            writel(u32_eq(test, 0),
-                   u32_eq(test, ASPEED_I2C_INTR_CTRL_REG))));
-        RetireOnSaturation(EXPECT_CALL(
-            writel(any(test),
-                   u32_eq(test, ASPEED_I2C_INTR_STS_REG))));
-	RetireOnSaturation(EXPECT_CALL(
-            writel(u32_eq(test, 0),
-                   u32_eq(test, ASPEED_I2C_FUN_CTRL_REG))));
-	RetireOnSaturation(EXPECT_CALL(
-            writel(u32_ne(test, 0),
-                   u32_eq(test, ASPEED_I2C_FUN_CTRL_REG))));
-	RetireOnSaturation(EXPECT_CALL(
-            writel(u32_eq(test, ASPEED_I2CD_INTR_ALL),
-                   u32_eq(test, ASPEED_I2C_INTR_CTRL_REG))));
-	RetireOnSaturation(EXPECT_CALL(
-            writel(any(test),
-                   u32_eq(test, ASPEED_I2C_AC_TIMING_REG1))));
-	RetireOnSaturation(EXPECT_CALL(
-            writel(u32_eq(test, ASPEED_NO_TIMEOUT_CTRL),
-                   u32_eq(test, ASPEED_I2C_AC_TIMING_REG2))));
-
+	i2c_fake = aspeed_i2c_fake_init(test, schedule_irq_handler_call_new);
 	ctx = test_kzalloc(test, sizeof(*ctx), GFP_KERNEL);
 	if (!ctx)
 		return -ENOMEM;
 	test->priv = ctx;
 
+	ctx->i2c_fake = i2c_fake;
+
+	// /* TODO(brendanhiggins@google.com): Fix this so mock_validate works. */
+	// Between(1, 2, RetireOnSaturation(Returns(EXPECT_CALL(readl(any(test))),
+        //                                          u32_return(test, 0))));
+        // RetireOnSaturation(EXPECT_CALL(
+        //     writel(u32_eq(test, 0),
+        //            u32_eq(test, ASPEED_I2C_INTR_CTRL_REG))));
+        // RetireOnSaturation(EXPECT_CALL(
+        //     writel(any(test),
+        //            u32_eq(test, ASPEED_I2C_INTR_STS_REG))));
+	// RetireOnSaturation(EXPECT_CALL(
+        //     writel(u32_eq(test, 0),
+        //            u32_eq(test, ASPEED_I2C_FUN_CTRL_REG))));
+	// RetireOnSaturation(EXPECT_CALL(
+        //     writel(u32_ne(test, 0),
+        //            u32_eq(test, ASPEED_I2C_FUN_CTRL_REG))));
+	// RetireOnSaturation(EXPECT_CALL(
+        //     writel(u32_eq(test, ASPEED_I2CD_INTR_ALL),
+        //            u32_eq(test, ASPEED_I2C_INTR_CTRL_REG))));
+	// RetireOnSaturation(EXPECT_CALL(
+        //     writel(any(test),
+        //            u32_eq(test, ASPEED_I2C_AC_TIMING_REG1))));
+	// RetireOnSaturation(EXPECT_CALL(
+        //     writel(u32_eq(test, ASPEED_NO_TIMEOUT_CTRL),
+        //            u32_eq(test, ASPEED_I2C_AC_TIMING_REG2))));
+
 	Returns(EXPECT_CALL(devm_ioremap_resource(any(test), any(test))),
                 int_return(test, 0));
 
@@ -630,10 +638,10 @@
 }
 
 static struct test_case aspeed_i2c_test_cases[] = {
-        TEST_CASE(aspeed_i2c_master_xfer_test_basic),
-        TEST_CASE(aspeed_i2c_master_xfer_test_idle_bus),
-        TEST_CASE(aspeed_i2c_master_xfer_test_recover_bus_reset),
-        TEST_CASE(aspeed_i2c_master_xfer_test_recover_bus_error),
+	TEST_CASE(aspeed_i2c_master_xfer_test_basic),
+	TEST_CASE(aspeed_i2c_master_xfer_test_idle_bus),
+	// TEST_CASE(aspeed_i2c_master_xfer_test_recover_bus_reset),
+	// TEST_CASE(aspeed_i2c_master_xfer_test_recover_bus_error),
 	TEST_CASE(aspeed_i2c_24xx_get_clk_reg_val_test_min),
 	TEST_CASE(aspeed_i2c_24xx_get_clk_reg_val_test_max),
 	TEST_CASE(aspeed_i2c_24xx_get_clk_reg_val_test_datasheet),
