linux-obmc: bump 4.7 version

Brad Bishop (1):
      drivers/fsi: Add FSI SBEFIFO driver

Christopher Bostic (1):
      drivers/fsi: Increase delay before sampling input on SDA

Edward A. James (6):
      drivers: fsi: Increase clock delays
      drivers/fsi: Change interrupt handler device traversal.
      drivers/fsi: Look for Hub sourced IRQs
      drivers/fsi: Scan for hub link IRQ sources
      drivers/fsi: Set IRQ masks along hub path
      drivers: fsi: Fix hub unregistration

Joel Stanley (1):
      ARM: aspeed: witherspoon: Take UART1 out of reset

KenChenIEC (1):
      ARM: dts: aspeed: Modify Laanyang BMC device tree

Change-Id: I59c0653d15af5bda2cb6b46d670088b85b1745ea
Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
diff --git a/common/recipes-kernel/linux/linux-obmc.inc b/common/recipes-kernel/linux/linux-obmc.inc
index c26f4af..78da469 100644
--- a/common/recipes-kernel/linux/linux-obmc.inc
+++ b/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/common/recipes-kernel/linux/linux-obmc/v3-0001-drivers-fsi-Increase-delay-before-sampling-input-.patch b/common/recipes-kernel/linux/linux-obmc/v3-0001-drivers-fsi-Increase-delay-before-sampling-input-.patch
deleted file mode 100644
index affb745..0000000
--- a/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/common/recipes-kernel/linux/linux-obmc_4.7.bb b/common/recipes-kernel/linux/linux-obmc_4.7.bb
index d573957..485ba73 100644
--- a/common/recipes-kernel/linux/linux-obmc_4.7.bb
+++ b/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