Refreshed all patches.
Altered patches:
- 950-0064-mfd-Add-Raspberry-Pi-Sense-HAT-core-driver.patch
- 0005-mtd-physmap_of-Move-custom-initialization.patch
Remove upstreamed:
- 0001-pinctrl-gemini-Mask-and-set-properly.patch
- 0002-pinctrl-gemini-Fix-up-TVC-clock-group.patch
Compile-tested on: cns3xxx
Runtime-tested on: cns3xxx
Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
LINUX_VERSION-4.9 = .202
LINUX_VERSION-4.14 = .156
-LINUX_VERSION-4.19 = .85
+LINUX_VERSION-4.19 = .86
LINUX_KERNEL_HASH-4.9.202 = 8108ec1cd10fc40821c84e9f087dba10b1767aad66596f4a36925faef55e4ebf
LINUX_KERNEL_HASH-4.14.156 = f8889feb0cbd7df36ff35bd4c72c1e2010567621bfcb218fcfa501bc5c7787c0
-LINUX_KERNEL_HASH-4.19.85 = 7bf435970aeeafd46263f49730087a61c4858d8b8fc5a4002ceac971b45f4fb7
+LINUX_KERNEL_HASH-4.19.86 = bf2cbba319d43d1bd9e876ac0b55ab83118d1a1e61cce3c929d5371f7567bff6
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))
return neigh_create(&arp_tbl, pkey, dev);
--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
-@@ -461,48 +461,53 @@ static void tcp_options_write(__be32 *pt
+@@ -444,48 +444,53 @@ static void tcp_options_write(__be32 *pt
u16 options = opts->options; /* mungable copy */
if (unlikely(OPTION_MD5 & options)) {
}
if (unlikely(opts->num_sack_blocks)) {
-@@ -510,16 +515,17 @@ static void tcp_options_write(__be32 *pt
+@@ -493,16 +498,17 @@ static void tcp_options_write(__be32 *pt
tp->duplicate_sack : tp->selective_acks;
int this_sack;
}
tp->rx_opt.dsack = 0;
-@@ -532,13 +538,14 @@ static void tcp_options_write(__be32 *pt
+@@ -515,13 +521,14 @@ static void tcp_options_write(__be32 *pt
if (foc->exp) {
len = TCPOLEN_EXP_FASTOPEN_BASE + foc->len;
EXPORT_SYMBOL(xfrm_parse_spi);
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
-@@ -3912,14 +3912,16 @@ static bool tcp_parse_aligned_timestamp(
+@@ -3891,14 +3891,16 @@ static bool tcp_parse_aligned_timestamp(
{
const __be32 *ptr = (const __be32 *)(th + 1);
--- a/drivers/video/fbdev/Kconfig
+++ b/drivers/video/fbdev/Kconfig
-@@ -236,6 +236,20 @@ config FB_TILEBLITTING
+@@ -242,6 +242,20 @@ config FB_TILEBLITTING
comment "Frame buffer hardware drivers"
depends on FB
+
--- a/drivers/video/fbdev/Kconfig
+++ b/drivers/video/fbdev/Kconfig
-@@ -2355,3 +2355,16 @@ config FB_SM712
- This driver is also available as a module. The module will be
+@@ -2350,6 +2350,19 @@ config FB_SM712
called sm712fb. If you want to compile it as a module, say M
here and read <file:Documentation/kbuild/modules.txt>.
-+
+
+config FB_RPISENSE
+ tristate "Raspberry Pi Sense HAT framebuffer"
+ depends on FB
+
+ help
+ This is the framebuffer driver for the Raspberry Pi Sense HAT
++
+ source "drivers/video/fbdev/omap/Kconfig"
+ source "drivers/video/fbdev/omap2/Kconfig"
+ source "drivers/video/fbdev/mmp/Kconfig"
--- a/drivers/video/fbdev/Makefile
+++ b/drivers/video/fbdev/Makefile
@@ -138,6 +138,7 @@ obj-$(CONFIG_FB_DA8XX) += da8xx-fb.o
--- a/drivers/i2c/busses/Kconfig
+++ b/drivers/i2c/busses/Kconfig
-@@ -459,6 +459,18 @@ config I2C_CBUS_GPIO
+@@ -460,6 +460,18 @@ config I2C_CBUS_GPIO
This driver can also be built as a module. If so, the module
will be called i2c-cbus-gpio.
--- a/drivers/usb/dwc2/params.c
+++ b/drivers/usb/dwc2/params.c
-@@ -151,6 +151,36 @@ static void dwc2_set_stm32f7_hsotg_param
+@@ -152,6 +152,36 @@ static void dwc2_set_stm32f7_hsotg_param
p->host_perio_tx_fifo_size = 256;
}
const struct of_device_id dwc2_of_match_table[] = {
{ .compatible = "brcm,bcm2835-usb", .data = dwc2_set_bcm_params },
{ .compatible = "hisilicon,hi6220-usb", .data = dwc2_set_his_params },
-@@ -819,17 +849,23 @@ int dwc2_get_hwparams(struct dwc2_hsotg
+@@ -820,17 +850,23 @@ int dwc2_get_hwparams(struct dwc2_hsotg
int dwc2_init_params(struct dwc2_hsotg *hsotg)
{
+++ /dev/null
-From f8ac3d3472a8dc99c8647a637611d146d88be8cb Mon Sep 17 00:00:00 2001
-From: Linus Walleij <linus.walleij@linaro.org>
-Date: Tue, 9 Oct 2018 10:09:14 +0200
-Subject: [PATCH 01/18] pinctrl: gemini: Mask and set properly
-
-The code was written under the assumption that the
-regmap_update_bits() would mask the bits in the mask and
-set the bits in the value.
-
-It missed the points that it will not set bits in the value
-unless these are also masked in the mask. Set value bits
-that are not in the mask will simply be ignored.
-
-Fixes: 06351d133dea ("pinctrl: add a Gemini SoC pin controller")
-Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
----
- drivers/pinctrl/pinctrl-gemini.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
---- a/drivers/pinctrl/pinctrl-gemini.c
-+++ b/drivers/pinctrl/pinctrl-gemini.c
-@@ -2184,7 +2184,8 @@ static int gemini_pmx_set_mux(struct pin
- func->name, grp->name);
-
- regmap_read(pmx->map, GLOBAL_MISC_CTRL, &before);
-- regmap_update_bits(pmx->map, GLOBAL_MISC_CTRL, grp->mask,
-+ regmap_update_bits(pmx->map, GLOBAL_MISC_CTRL,
-+ grp->mask | grp->value,
- grp->value);
- regmap_read(pmx->map, GLOBAL_MISC_CTRL, &after);
-
+++ /dev/null
-From ce81398dccb984855de606b75db25eddecdaa9e5 Mon Sep 17 00:00:00 2001
-From: Linus Walleij <linus.walleij@linaro.org>
-Date: Wed, 10 Oct 2018 20:25:39 +0200
-Subject: [PATCH 02/18] pinctrl: gemini: Fix up TVC clock group
-
-The previous fix made the TVC clock get muxed in on the
-D-Link DIR-685 instead of giving nagging warnings of this
-not working. Not good. We didn't want that, as it breaks
-video.
-
-Create a specific group for the TVC CLK, and break out
-a specific GPIO group for it on the SL3516 so we can use
-that line as GPIO if we don't need the TVC CLK.
-
-Fixes: d17f477c5bc6 ("pinctrl: gemini: Mask and set properly")
-Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
----
- drivers/pinctrl/pinctrl-gemini.c | 44 ++++++++++++++++++++++++++------
- 1 file changed, 36 insertions(+), 8 deletions(-)
-
---- a/drivers/pinctrl/pinctrl-gemini.c
-+++ b/drivers/pinctrl/pinctrl-gemini.c
-@@ -591,13 +591,16 @@ static const unsigned int tvc_3512_pins[
- 319, /* TVC_DATA[1] */
- 301, /* TVC_DATA[2] */
- 283, /* TVC_DATA[3] */
-- 265, /* TVC_CLK */
- 320, /* TVC_DATA[4] */
- 302, /* TVC_DATA[5] */
- 284, /* TVC_DATA[6] */
- 266, /* TVC_DATA[7] */
- };
-
-+static const unsigned int tvc_clk_3512_pins[] = {
-+ 265, /* TVC_CLK */
-+};
-+
- /* NAND flash pins */
- static const unsigned int nflash_3512_pins[] = {
- 199, 200, 201, 202, 216, 217, 218, 219, 220, 234, 235, 236, 237, 252,
-@@ -629,7 +632,7 @@ static const unsigned int pflash_3512_pi
- /* Serial flash pins CE0, CE1, DI, DO, CK */
- static const unsigned int sflash_3512_pins[] = { 230, 231, 232, 233, 211 };
-
--/* The GPIO0A (0) pin overlap with TVC and extended parallel flash */
-+/* The GPIO0A (0) pin overlap with TVC CLK and extended parallel flash */
- static const unsigned int gpio0a_3512_pins[] = { 265 };
-
- /* The GPIO0B (1-4) pins overlap with TVC and ICE */
-@@ -823,7 +826,13 @@ static const struct gemini_pin_group gem
- .num_pins = ARRAY_SIZE(tvc_3512_pins),
- /* Conflict with character LCD and ICE */
- .mask = LCD_PADS_ENABLE,
-- .value = TVC_PADS_ENABLE | TVC_CLK_PAD_ENABLE,
-+ .value = TVC_PADS_ENABLE,
-+ },
-+ {
-+ .name = "tvcclkgrp",
-+ .pins = tvc_clk_3512_pins,
-+ .num_pins = ARRAY_SIZE(tvc_clk_3512_pins),
-+ .value = TVC_CLK_PAD_ENABLE,
- },
- /*
- * The construction is done such that it is possible to use a serial
-@@ -860,8 +869,8 @@ static const struct gemini_pin_group gem
- .name = "gpio0agrp",
- .pins = gpio0a_3512_pins,
- .num_pins = ARRAY_SIZE(gpio0a_3512_pins),
-- /* Conflict with TVC */
-- .mask = TVC_PADS_ENABLE,
-+ /* Conflict with TVC CLK */
-+ .mask = TVC_CLK_PAD_ENABLE,
- },
- {
- .name = "gpio0bgrp",
-@@ -1531,13 +1540,16 @@ static const unsigned int tvc_3516_pins[
- 311, /* TVC_DATA[1] */
- 394, /* TVC_DATA[2] */
- 374, /* TVC_DATA[3] */
-- 333, /* TVC_CLK */
- 354, /* TVC_DATA[4] */
- 395, /* TVC_DATA[5] */
- 312, /* TVC_DATA[6] */
- 334, /* TVC_DATA[7] */
- };
-
-+static const unsigned int tvc_clk_3516_pins[] = {
-+ 333, /* TVC_CLK */
-+};
-+
- /* NAND flash pins */
- static const unsigned int nflash_3516_pins[] = {
- 243, 260, 261, 224, 280, 262, 281, 264, 300, 263, 282, 301, 320, 283,
-@@ -1570,7 +1582,7 @@ static const unsigned int pflash_3516_pi
- static const unsigned int sflash_3516_pins[] = { 296, 338, 295, 359, 339 };
-
- /* The GPIO0A (0-4) pins overlap with TVC and extended parallel flash */
--static const unsigned int gpio0a_3516_pins[] = { 333, 354, 395, 312, 334 };
-+static const unsigned int gpio0a_3516_pins[] = { 354, 395, 312, 334 };
-
- /* The GPIO0B (5-7) pins overlap with ICE */
- static const unsigned int gpio0b_3516_pins[] = { 375, 396, 376 };
-@@ -1602,6 +1614,9 @@ static const unsigned int gpio0j_3516_pi
- /* The GPIO0K (30,31) pins overlap with NAND flash */
- static const unsigned int gpio0k_3516_pins[] = { 275, 298 };
-
-+/* The GPIO0L (0) pins overlap with TVC_CLK */
-+static const unsigned int gpio0l_3516_pins[] = { 333 };
-+
- /* The GPIO1A (0-4) pins that overlap with IDE and parallel flash */
- static const unsigned int gpio1a_3516_pins[] = { 221, 200, 222, 201, 220 };
-
-@@ -1761,7 +1776,13 @@ static const struct gemini_pin_group gem
- .num_pins = ARRAY_SIZE(tvc_3516_pins),
- /* Conflict with character LCD */
- .mask = LCD_PADS_ENABLE,
-- .value = TVC_PADS_ENABLE | TVC_CLK_PAD_ENABLE,
-+ .value = TVC_PADS_ENABLE,
-+ },
-+ {
-+ .name = "tvcclkgrp",
-+ .pins = tvc_clk_3516_pins,
-+ .num_pins = ARRAY_SIZE(tvc_clk_3516_pins),
-+ .value = TVC_CLK_PAD_ENABLE,
- },
- /*
- * The construction is done such that it is possible to use a serial
-@@ -1873,6 +1894,13 @@ static const struct gemini_pin_group gem
- .value = PFLASH_PADS_DISABLE | NAND_PADS_DISABLE,
- },
- {
-+ .name = "gpio0lgrp",
-+ .pins = gpio0l_3516_pins,
-+ .num_pins = ARRAY_SIZE(gpio0l_3516_pins),
-+ /* Conflict with TVE CLK */
-+ .mask = TVC_CLK_PAD_ENABLE,
-+ },
-+ {
- .name = "gpio1agrp",
- .pins = gpio1a_3516_pins,
- .num_pins = ARRAY_SIZE(gpio1a_3516_pins),
--- a/drivers/mtd/maps/physmap_of_core.c
+++ b/drivers/mtd/maps/physmap_of_core.c
-@@ -239,13 +239,6 @@ static int of_flash_probe(struct platfor
+@@ -231,6 +231,9 @@ static int of_flash_probe(struct platfor
else if (of_property_read_bool(dp, "little-endian"))
info->list[i].map.swap = CFI_LITTLE_ENDIAN;
-- err = of_flash_probe_gemini(dev, dp, &info->list[i].map);
-- if (err)
-- goto err_out;
-- err = of_flash_probe_versatile(dev, dp, &info->list[i].map);
-- if (err)
-- goto err_out;
--
- err = -ENOMEM;
- info->list[i].map.virt = ioremap(info->list[i].map.phys,
- info->list[i].map.size);
-@@ -257,6 +250,14 @@ static int of_flash_probe(struct platfor
-
- simple_map_init(&info->list[i].map);
-
-+ /* Variants can override map accessors */
-+ err = of_flash_probe_gemini(dev, dp, &info->list[i].map);
-+ if (err)
-+ goto err_out;
-+ err = of_flash_probe_versatile(dev, dp, &info->list[i].map);
-+ if (err)
-+ goto err_out;
++ simple_map_init(&info->list[i].map);
+
++ /* Variants can override map accessors */
+ err = of_flash_probe_gemini(dev, dp, &info->list[i].map);
+ if (err)
+ goto err_out;
+@@ -238,8 +241,6 @@ static int of_flash_probe(struct platfor
+ if (err)
+ goto err_out;
+
+- simple_map_init(&info->list[i].map);
+-
/*
* On some platforms (e.g. MPC5200) a direct 1:1 mapping
* may cause problems with JFFS2 usage, as the local bus (LPB)
--- a/drivers/usb/dwc2/params.c
+++ b/drivers/usb/dwc2/params.c
-@@ -272,6 +272,23 @@ static void dwc2_set_param_power_down(st
+@@ -273,6 +273,23 @@ static void dwc2_set_param_power_down(st
hsotg->params.power_down = val;
}
/**
* dwc2_set_default_params() - Set all core parameters to their
* auto-detected default values.
-@@ -290,6 +307,7 @@ static void dwc2_set_default_params(stru
+@@ -291,6 +308,7 @@ static void dwc2_set_default_params(stru
dwc2_set_param_speed(hsotg);
dwc2_set_param_phy_utmi_width(hsotg);
dwc2_set_param_power_down(hsotg);
p->phy_ulpi_ddr = false;
p->phy_ulpi_ext_vbus = false;
-@@ -302,11 +320,6 @@ static void dwc2_set_default_params(stru
+@@ -303,11 +321,6 @@ static void dwc2_set_default_params(stru
p->reload_ctl = (hw->snpsid >= DWC2_CORE_REV_2_92a);
p->uframe_sched = true;
p->external_id_pin_ctl = false;
EXPORT_SYMBOL(default_qdisc_ops);
/* Main transmission queue. */
-@@ -1013,7 +1013,7 @@ static void attach_one_default_qdisc(str
+@@ -1025,7 +1025,7 @@ static void attach_one_default_qdisc(str
void *_unused)
{
struct Qdisc *qdisc;
--- a/net/sched/sch_generic.c
+++ b/net/sched/sch_generic.c
-@@ -600,207 +600,6 @@ struct Qdisc_ops noqueue_qdisc_ops __rea
+@@ -612,207 +612,6 @@ struct Qdisc_ops noqueue_qdisc_ops __rea
.owner = THIS_MODULE,
};
{
int set;
-@@ -982,7 +982,7 @@ void radix__tlb_flush(struct mmu_gather
+@@ -983,7 +983,7 @@ void radix__tlb_flush(struct mmu_gather
tlb->need_flush_all = 0;
}
__u16 tc_index; /* traffic control index */
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -5468,6 +5468,9 @@ static enum gro_result dev_gro_receive(s
+@@ -5482,6 +5482,9 @@ static enum gro_result dev_gro_receive(s
int same_flow;
int grow;
if (netif_elide_gro(skb->dev))
goto normal;
-@@ -6962,6 +6965,48 @@ static void __netdev_adjacent_dev_unlink
+@@ -6976,6 +6979,48 @@ static void __netdev_adjacent_dev_unlink
&upper_dev->adj_list.lower);
}
static int __netdev_upper_dev_link(struct net_device *dev,
struct net_device *upper_dev, bool master,
void *upper_priv, void *upper_info,
-@@ -7009,6 +7054,7 @@ static int __netdev_upper_dev_link(struc
+@@ -7023,6 +7068,7 @@ static int __netdev_upper_dev_link(struc
if (ret)
return ret;
ret = call_netdevice_notifiers_info(NETDEV_CHANGEUPPER,
&changeupper_info.info);
ret = notifier_to_errno(ret);
-@@ -7095,6 +7141,7 @@ void netdev_upper_dev_unlink(struct net_
+@@ -7109,6 +7155,7 @@ void netdev_upper_dev_unlink(struct net_
__netdev_adjacent_dev_unlink_neighbour(dev, upper_dev);
call_netdevice_notifiers_info(NETDEV_CHANGEUPPER,
&changeupper_info.info);
}
-@@ -7718,6 +7765,7 @@ int dev_set_mac_address(struct net_devic
+@@ -7732,6 +7779,7 @@ int dev_set_mac_address(struct net_devic
if (err)
return err;
dev->addr_assign_type = NET_ADDR_SET;
#include <linux/mtd/mtd.h>
#include <linux/mtd/partitions.h>
-@@ -180,6 +181,10 @@ static int m25p_probe(struct spi_mem *sp
+@@ -173,6 +174,10 @@ static int m25p_probe(struct spi_mem *sp
};
char *flash_name;
int ret;
data = dev_get_platdata(&spimem->spi->dev);
-@@ -218,6 +223,8 @@ static int m25p_probe(struct spi_mem *sp
+@@ -211,6 +216,8 @@ static int m25p_probe(struct spi_mem *sp
if (data && data->name)
nor->mtd.name = data->name;
--- a/drivers/i2c/busses/Kconfig
+++ b/drivers/i2c/busses/Kconfig
-@@ -690,6 +690,16 @@ config I2C_MESON
+@@ -691,6 +691,16 @@ config I2C_MESON
If you say yes to this option, support will be included for the
I2C interface on the Amlogic Meson family of SoCs.
--- a/drivers/usb/dwc2/params.c
+++ b/drivers/usb/dwc2/params.c
-@@ -90,7 +90,14 @@ static void dwc2_set_rk_params(struct dw
- GAHBCFG_HBSTLEN_SHIFT;
+@@ -91,7 +91,14 @@ static void dwc2_set_rk_params(struct dw
+ p->power_down = 0;
}
-static void dwc2_set_ltq_params(struct dwc2_hsotg *hsotg)
{
struct dwc2_core_params *p = &hsotg->params;
-@@ -98,12 +105,20 @@ static void dwc2_set_ltq_params(struct d
+@@ -99,12 +106,20 @@ static void dwc2_set_ltq_params(struct d
p->host_rx_fifo_size = 288;
p->host_nperio_tx_fifo_size = 128;
p->host_perio_tx_fifo_size = 96;
static void dwc2_set_amlogic_params(struct dwc2_hsotg *hsotg)
{
struct dwc2_core_params *p = &hsotg->params;
-@@ -155,8 +170,11 @@ const struct of_device_id dwc2_of_match_
+@@ -156,8 +171,11 @@ const struct of_device_id dwc2_of_match_
{ .compatible = "brcm,bcm2835-usb", .data = dwc2_set_bcm_params },
{ .compatible = "hisilicon,hi6220-usb", .data = dwc2_set_his_params },
{ .compatible = "rockchip,rk3066-usb", .data = dwc2_set_rk_params },