Refreshed all patches.
Removed upstreamed patches:
- 081-spi-bcm-qspi-switch-back-to-reading-flash-using-smal.patch
Altered patches:
- 0054-cpufreq-dt-Handle-OPP-voltage-adjust-events
Compile-tested on: cns3xxx, imx6, ipq806x, x86_64
Runtime-tested on: cns3xxx, imx6, x86_64
Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
LINUX_RELEASE?=1
LINUX_VERSION-4.9 = .137
-LINUX_VERSION-4.14 = .80
+LINUX_VERSION-4.14 = .81
LINUX_KERNEL_HASH-4.9.137 = 6db2512a9094bf4c830124641d1275635600b052962a7db3556da18914ea2589
-LINUX_KERNEL_HASH-4.14.80 = 9ddc7bc11cbea6475ac5abf18e01a143d7d506bece591e0dcb15c9452d3ed7d2
+LINUX_KERNEL_HASH-4.14.81 = 4b36dfd053844ef0617799d432eed67aa4795d3403216d6789288aa7a0e75bde
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))
+++ /dev/null
-From 940ec770c295682993d1cccce3081fd7c74fece8 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
-Date: Thu, 11 Oct 2018 09:42:17 +0200
-Subject: [PATCH] spi: bcm-qspi: switch back to reading flash using smaller
- chunks
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Fixing/optimizing bcm_qspi_bspi_read() performance introduced two
-changes:
-1) It added a loop to read all requested data using multiple BSPI ops.
-2) It bumped max size of a single BSPI block request from 256 to 512 B.
-
-The later change resulted in occasional BSPI timeouts causing a
-regression.
-
-For some unknown reason hardware doesn't always handle reads as expected
-when using 512 B chunks. In such cases it may happen that BSPI returns
-amount of requested bytes without the last 1-3 ones. It provides the
-remaining bytes later but doesn't raise an interrupt until another LR
-start.
-
-Switching back to 256 B reads fixes that problem and regression.
-
-Fixes: 345309fa7c0c ("spi: bcm-qspi: Fix bcm_qspi_bspi_read() performance")
-Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
-Signed-off-by: Mark Brown <broonie@kernel.org>
-Cc: stable@vger.kernel.org
----
- drivers/spi/spi-bcm-qspi.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/drivers/spi/spi-bcm-qspi.c
-+++ b/drivers/spi/spi-bcm-qspi.c
-@@ -88,7 +88,7 @@
- #define BSPI_BPP_MODE_SELECT_MASK BIT(8)
- #define BSPI_BPP_ADDR_SELECT_MASK BIT(16)
-
--#define BSPI_READ_LENGTH 512
-+#define BSPI_READ_LENGTH 256
-
- /* MSPI register offsets */
- #define MSPI_SPCR0_LSB 0x000
--- a/drivers/pcmcia/yenta_socket.c
+++ b/drivers/pcmcia/yenta_socket.c
-@@ -919,6 +919,8 @@ static unsigned int yenta_probe_irq(stru
+@@ -920,6 +920,8 @@ static unsigned int yenta_probe_irq(stru
* Probe for usable interrupts using the force
* register to generate bogus card status events.
*/
cb_writel(socket, CB_SOCKET_EVENT, -1);
cb_writel(socket, CB_SOCKET_MASK, CB_CSTSMASK);
reg = exca_readb(socket, I365_CSCINT);
-@@ -934,6 +936,7 @@ static unsigned int yenta_probe_irq(stru
+@@ -935,6 +937,7 @@ static unsigned int yenta_probe_irq(stru
}
cb_writel(socket, CB_SOCKET_MASK, 0);
exca_writeb(socket, I365_CSCINT, reg);
mask = probe_irq_mask(val) & 0xffff;
-@@ -1018,6 +1021,10 @@ static void yenta_get_socket_capabilitie
+@@ -1019,6 +1022,10 @@ static void yenta_get_socket_capabilitie
else
socket->socket.irq_mask = 0;
dev_info(&socket->dev->dev, "ISA IRQ mask 0x%04x, PCI irq %d\n",
socket->socket.irq_mask, socket->cb_irq);
}
-@@ -1250,6 +1257,15 @@ static int yenta_probe(struct pci_dev *d
+@@ -1251,6 +1258,15 @@ static int yenta_probe(struct pci_dev *d
dev_info(&dev->dev, "Socket status: %08x\n",
cb_readl(socket, CB_SOCKET_STATE));
device, it has to decide which ones to send first, which ones to
--- a/net/sched/sch_api.c
+++ b/net/sched/sch_api.c
-@@ -2029,7 +2029,7 @@ static int __init pktsched_init(void)
+@@ -2028,7 +2028,7 @@ static int __init pktsched_init(void)
return err;
}
+}
--- a/fs/jffs2/super.c
+++ b/fs/jffs2/super.c
-@@ -372,14 +372,41 @@ static int __init init_jffs2_fs(void)
+@@ -370,14 +370,41 @@ static int __init init_jffs2_fs(void)
BUILD_BUG_ON(sizeof(struct jffs2_raw_inode) != 68);
BUILD_BUG_ON(sizeof(struct jffs2_raw_summary) != 32);
/*
* Some BIOS implementations leave the Intel GPU interrupts enabled,
* even though no one is handling them (f.e. i915 driver is never loaded).
-@@ -3167,6 +3171,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN
+@@ -3171,6 +3175,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x010a, disable_igfx_irq);
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0152, disable_igfx_irq);
--- a/drivers/cpufreq/cpufreq-dt.c
+++ b/drivers/cpufreq/cpufreq-dt.c
-@@ -220,7 +220,10 @@ static int cpufreq_init(struct cpufreq_p
+@@ -231,7 +231,10 @@ static int cpufreq_init(struct cpufreq_p
}
if (fallback) {
/*
* OPP tables are initialized only for policy->cpu, do it for
-@@ -372,6 +375,8 @@ static int dt_cpufreq_probe(struct platf
+@@ -376,6 +379,8 @@ static int dt_cpufreq_probe(struct platf
if (data && data->have_governor_per_policy)
dt_cpufreq_driver.flags |= CPUFREQ_HAVE_GOVERNOR_PER_POLICY;
+ struct notifier_block opp_nb;
+ struct mutex lock;
+ unsigned long opp_freq;
+ bool have_static_opps;
};
- static struct freq_attr *cpufreq_dt_attr[] = {
-@@ -43,9 +46,16 @@ static struct freq_attr *cpufreq_dt_attr
+@@ -44,9 +47,16 @@ static struct freq_attr *cpufreq_dt_attr
static int set_target(struct cpufreq_policy *policy, unsigned int index)
{
struct private_data *priv = policy->driver_data;
}
/*
-@@ -86,6 +96,39 @@ node_put:
+@@ -87,6 +97,39 @@ node_put:
return name;
}
static int resources_available(void)
{
struct device *cpu_dev;
-@@ -152,6 +195,7 @@ static int cpufreq_init(struct cpufreq_p
+@@ -153,6 +196,7 @@ static int cpufreq_init(struct cpufreq_p
bool fallback = false;
const char *name;
int ret;
cpu_dev = get_cpu_device(policy->cpu);
if (!cpu_dev) {
-@@ -241,13 +285,16 @@ static int cpufreq_init(struct cpufreq_p
- goto out_free_opp;
+@@ -246,10 +290,13 @@ static int cpufreq_init(struct cpufreq_p
+ __func__, ret);
}
+ mutex_init(&priv->lock);
+ dev_pm_opp_register_notifier(cpu_dev, &priv->opp_nb);
+
- priv->reg_name = name;
- priv->opp_table = opp_table;
-
ret = dev_pm_opp_init_cpufreq_table(cpu_dev, &freq_table);
if (ret) {
dev_err(cpu_dev, "failed to init cpufreq table: %d\n", ret);
-- goto out_free_priv;
+- goto out_free_opp;
+ goto out_unregister_nb;
}
priv->cpu_dev = cpu_dev;
-@@ -283,6 +330,8 @@ static int cpufreq_init(struct cpufreq_p
+@@ -285,6 +332,8 @@ static int cpufreq_init(struct cpufreq_p
out_free_cpufreq_table:
dev_pm_opp_free_cpufreq_table(cpu_dev, &freq_table);
+out_unregister_nb:
+ dev_pm_opp_unregister_notifier(cpu_dev, &priv->opp_nb);
- out_free_priv:
- kfree(priv);
out_free_opp:
+ if (priv->have_static_opps)
+ dev_pm_opp_of_cpumask_remove_table(policy->cpus);
--- a/drivers/cpufreq/cpufreq-dt.c
+++ b/drivers/cpufreq/cpufreq-dt.c
-@@ -48,11 +48,41 @@ static int set_target(struct cpufreq_pol
+@@ -49,11 +49,41 @@ static int set_target(struct cpufreq_pol
struct private_data *priv = policy->driver_data;
int ret;
unsigned long target_freq = policy->freq_table[index].frequency * 1000;
mutex_unlock(&priv->lock);
return ret;
-@@ -196,6 +226,8 @@ static int cpufreq_init(struct cpufreq_p
+@@ -197,6 +227,8 @@ static int cpufreq_init(struct cpufreq_p
const char *name;
int ret;
struct srcu_notifier_head *opp_srcu_head;
cpu_dev = get_cpu_device(policy->cpu);
if (!cpu_dev) {
-@@ -303,6 +335,13 @@ static int cpufreq_init(struct cpufreq_p
+@@ -305,6 +337,13 @@ static int cpufreq_init(struct cpufreq_p
policy->suspend_freq = dev_pm_opp_get_suspend_opp_freq(cpu_dev) / 1000;
--- a/drivers/cpufreq/cpufreq-dt.c
+++ b/drivers/cpufreq/cpufreq-dt.c
-@@ -143,8 +143,10 @@ static int opp_notifier(struct notifier_
+@@ -144,8 +144,10 @@ static int opp_notifier(struct notifier_
ret = PTR_ERR(cpu_reg);
goto out;
}
};
--- a/drivers/net/phy/phylink.c
+++ b/drivers/net/phy/phylink.c
-@@ -1042,34 +1042,6 @@ int phylink_ethtool_set_pauseparam(struc
+@@ -1045,34 +1045,6 @@ int phylink_ethtool_set_pauseparam(struc
}
EXPORT_SYMBOL_GPL(phylink_ethtool_set_pauseparam);
--- a/drivers/net/phy/phylink.c
+++ b/drivers/net/phy/phylink.c
-@@ -757,8 +757,8 @@ void phylink_start(struct phylink *pl)
+@@ -760,8 +760,8 @@ void phylink_start(struct phylink *pl)
clear_bit(PHYLINK_DISABLE_STOPPED, &pl->phylink_disable_state);
phylink_run_resolve(pl);
if (pl->phydev)
phy_start(pl->phydev);
}
-@@ -770,8 +770,8 @@ void phylink_stop(struct phylink *pl)
+@@ -773,8 +773,8 @@ void phylink_stop(struct phylink *pl)
if (pl->phydev)
phy_stop(pl->phydev);
---- a/arch/arm/boot/dts/ox820-cloudengines-pogoplug-series-3.dts 2018-08-14 18:03:56.542679083 +0200
-+++ b/arch/arm/boot/dts/ox820-cloudengines-pogoplug-series-3.dts 2018-11-04 18:19:35.154886643 +0100
+--- a/arch/arm/boot/dts/ox820-cloudengines-pogoplug-series-3.dts
++++ b/arch/arm/boot/dts/ox820-cloudengines-pogoplug-series-3.dts
@@ -15,7 +15,7 @@
compatible = "cloudengines,pogoplugv3", "oxsemi,ox820";