diff --git a/meta-phosphor/common/recipes-kernel/linux/linux-obmc.inc b/meta-phosphor/common/recipes-kernel/linux/linux-obmc.inc
index c26f4af..78da469 100644
--- a/meta-phosphor/common/recipes-kernel/linux/linux-obmc.inc
+++ b/meta-phosphor/common/recipes-kernel/linux/linux-obmc.inc
@@ -10,7 +10,6 @@
 SRC_URI = "${KSRC}"
 SRC_URI += "file://phosphor-gpio-keys.scc"
 SRC_URI += "file://phosphor-gpio-keys.cfg"
-SRC_URI += "file://v3-0001-drivers-fsi-Increase-delay-before-sampling-input-.patch"
 
 LINUX_VERSION_EXTENSION ?= "-${SRCREV}"
 
diff --git a/meta-phosphor/common/recipes-kernel/linux/linux-obmc/v3-0001-drivers-fsi-Increase-delay-before-sampling-input-.patch b/meta-phosphor/common/recipes-kernel/linux/linux-obmc/v3-0001-drivers-fsi-Increase-delay-before-sampling-input-.patch
deleted file mode 100644
index affb745..0000000
--- a/meta-phosphor/common/recipes-kernel/linux/linux-obmc/v3-0001-drivers-fsi-Increase-delay-before-sampling-input-.patch
+++ /dev/null
@@ -1,195 +0,0 @@
-From d100e52bdaef13d3f9aab162719919f660111479 Mon Sep 17 00:00:00 2001
-From: Christopher Bostic <cbostic@linux.vnet.ibm.com>
-Date: Fri, 17 Mar 2017 16:00:48 -0500
-Subject: [PATCH linux dev-4.7 v3] drivers/fsi: Increase delay before sampling
- input on SDA
-To: joel@jms.id.au
-Cc: openbmc@lists.ozlabs.org
-
-During high cpu loads the SDA in line can shift relative to the
-clock signal which can corrupt the received input data.  Slow
-down the time to sample input to account for this.
-
-Add sysfs files to adjust the three main openfsi protocol timing
-values: clock delay; sample delay; clock off time.
-
-Signed-off-by: Christopher Bostic <cbostic@linux.vnet.ibm.com>
----
-v3 - Add sysfs files to adjust protocol timings
-
-v2 - Increase delay for SDA in sampling only.
-
-   - Decrease the original delay for SDA sampling from 1us to 200ns
----
- drivers/fsi/fsi-master-gpio.c | 107 ++++++++++++++++++++++++++++++++++++++++--
- 1 file changed, 103 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/fsi/fsi-master-gpio.c b/drivers/fsi/fsi-master-gpio.c
-index a8976d5..0907977 100644
---- a/drivers/fsi/fsi-master-gpio.c
-+++ b/drivers/fsi/fsi-master-gpio.c
-@@ -14,6 +14,7 @@
- #include "fsi-master.h"
- 
- #define	FSI_GPIO_STD_DLY	1	/* Standard pin delay in nS */
-+#define	FSI_GPIO_SDA_IN_DLY	200	/* Wait to sample SDA line, in nS */
- #define	FSI_ECHO_DELAY_CLOCKS	16	/* Number clocks for echo delay */
- #define	FSI_PRE_BREAK_CLOCKS	50	/* Number clocks to prep for break */
- #define	FSI_BREAK_CLOCKS	256	/* Number of clocks to issue break */
-@@ -65,6 +66,10 @@
- 
- static DEFINE_SPINLOCK(fsi_gpio_cmd_lock);	/* lock around fsi commands */
- 
-+static int clock_delay = FSI_GPIO_STD_DLY;
-+static int clock_off_time = FSI_GPIO_STD_DLY;
-+static int sample_delay = FSI_GPIO_SDA_IN_DLY;
-+
- struct fsi_master_gpio {
- 	struct fsi_master	master;
- 	struct gpio_desc	*gpio_clk;
-@@ -86,9 +91,11 @@ static void clock_toggle(struct fsi_master_gpio *master, int count)
- 	int i;
- 
- 	for (i = 0; i < count; i++) {
--		ndelay(FSI_GPIO_STD_DLY);
-+		udelay(clock_delay / 1000);
-+		ndelay(clock_delay % 1000);
- 		gpiod_set_value(master->gpio_clk, 0);
--		ndelay(FSI_GPIO_STD_DLY);
-+		udelay(clock_off_time / 1000);
-+		ndelay(clock_off_time % 1000);
- 		gpiod_set_value(master->gpio_clk, 1);
- 	}
- }
-@@ -97,7 +104,8 @@ static int sda_in(struct fsi_master_gpio *master)
- {
- 	int in;
- 
--	ndelay(FSI_GPIO_STD_DLY);
-+	udelay(sample_delay / 1000);
-+	ndelay(sample_delay % 1000);
- 	in = gpiod_get_value(master->gpio_data);
- 	return in ? 1 : 0;
- }
-@@ -497,10 +505,77 @@ static ssize_t store_scan(struct device *dev,
- 
- static DEVICE_ATTR(scan, 0200, NULL, store_scan);
- 
-+static ssize_t clock_delay_show(struct device *dev,
-+				struct device_attribute *attr, char *buf)
-+{
-+	return snprintf(buf, PAGE_SIZE - 1, "%u\n", clock_delay);
-+}
-+
-+static ssize_t clock_delay_store(struct device *dev,
-+				struct device_attribute *attr,
-+				const char *buf, size_t count)
-+{
-+	int rc;
-+	unsigned long val = 0;
-+
-+	rc = kstrtoul(buf, 0, &val);
-+	clock_delay = val;
-+
-+	return count;
-+}
-+
-+DEVICE_ATTR(clock_delay, S_IRUGO | S_IWUSR, clock_delay_show,
-+		clock_delay_store);
-+
-+static ssize_t clock_off_time_show(struct device *dev,
-+				struct device_attribute *attr, char *buf)
-+{
-+	return snprintf(buf, PAGE_SIZE - 1, "%u\n", clock_off_time);
-+}
-+
-+static ssize_t clock_off_time_store(struct device *dev,
-+				struct device_attribute *attr,
-+				const char *buf, size_t count)
-+{
-+	int rc;
-+	unsigned long val = 0;
-+
-+	rc = kstrtoul(buf, 0, &val);
-+	clock_off_time = val;
-+
-+	return count;
-+}
-+
-+DEVICE_ATTR(clock_off_time, S_IRUGO | S_IWUSR, clock_off_time_show,
-+		clock_off_time_store);
-+
-+static ssize_t sample_delay_show(struct device *dev,
-+				struct device_attribute *attr, char *buf)
-+{
-+	return snprintf(buf, PAGE_SIZE - 1, "%u\n", sample_delay);
-+}
-+
-+static ssize_t sample_delay_store(struct device *dev,
-+				struct device_attribute *attr,
-+				const char *buf, size_t count)
-+{
-+	int rc;
-+	unsigned long val = 0;
-+
-+	rc = kstrtoul(buf, 0, &val);
-+	sample_delay = val;
-+
-+	return count;
-+}
-+
-+DEVICE_ATTR(sample_delay, S_IRUGO | S_IWUSR, sample_delay_show,
-+		sample_delay_store);
-+
- static int fsi_master_gpio_probe(struct platform_device *pdev)
- {
- 	struct fsi_master_gpio *master;
- 	struct gpio_desc *gpio;
-+	int rc;
- 
- 	master = devm_kzalloc(&pdev->dev, sizeof(*master), GFP_KERNEL);
- 	if (!master)
-@@ -548,8 +623,29 @@ static int fsi_master_gpio_probe(struct platform_device *pdev)
- 	master->master.send_break = fsi_master_gpio_break;
- 	master->master.link_enable = fsi_master_gpio_link_enable;
- 	platform_set_drvdata(pdev, master);
-+	rc = device_create_file(&pdev->dev, &dev_attr_clock_off_time);
-+	if (rc)
-+		goto done;
-+	rc = device_create_file(&pdev->dev, &dev_attr_clock_delay);
-+	if (rc)
-+		goto rem_clock_off;
-+	rc = device_create_file(&pdev->dev, &dev_attr_sample_delay);
-+	if (rc)
-+		goto rem_clock_delay;
-+	rc = device_create_file(&pdev->dev, &dev_attr_scan);
-+	if (rc)
-+		goto rem_sample_delay;
- 
--	return device_create_file(&pdev->dev, &dev_attr_scan);
-+	return rc;
-+
-+rem_sample_delay:
-+	device_remove_file(&pdev->dev, &dev_attr_sample_delay);
-+rem_clock_delay:
-+	device_remove_file(&pdev->dev, &dev_attr_clock_delay);
-+rem_clock_off:
-+	device_remove_file(&pdev->dev, &dev_attr_clock_off_time);
-+done:
-+	return rc;
- }
- 
- 
-@@ -576,6 +672,9 @@ static int fsi_master_gpio_remove(struct platform_device *pdev)
- 		devm_gpiod_put(&pdev->dev, master->gpio_mux);
- 	}
- 	fsi_master_unregister(&master->master);
-+	device_remove_file(&pdev->dev, &dev_attr_clock_off_time);
-+	device_remove_file(&pdev->dev, &dev_attr_clock_delay);
-+	device_remove_file(&pdev->dev, &dev_attr_sample_delay);
- 	device_remove_file(&pdev->dev, &dev_attr_scan);
- 
- 	return 0;
--- 
-1.8.2.2
-
diff --git a/meta-phosphor/common/recipes-kernel/linux/linux-obmc_4.7.bb b/meta-phosphor/common/recipes-kernel/linux/linux-obmc_4.7.bb
index d573957..485ba73 100644
--- a/meta-phosphor/common/recipes-kernel/linux/linux-obmc_4.7.bb
+++ b/meta-phosphor/common/recipes-kernel/linux/linux-obmc_4.7.bb
@@ -1,6 +1,6 @@
 KBRANCH ?= "dev-4.7"
 LINUX_VERSION ?= "4.7.10"
 
-SRCREV="b6e95d08c1fd39409fe0d127007a4166024fc8e7"
+SRCREV="912e689d0b12445025dab6053825c81e7777bcd3"
 
 require linux-obmc.inc
