LINUX_VERSION-4.14 = .193
LINUX_VERSION-4.19 = .138
-LINUX_VERSION-5.4 = .58
+LINUX_VERSION-5.4 = .59
LINUX_KERNEL_HASH-4.14.193 = 0b0fb41d4430e1a42738b341cbfd2f41951aa5cd02acabbd53f076119c8b9f03
LINUX_KERNEL_HASH-4.19.138 = d15c27d05f6c527269b75b30cc72972748e55720e7e00ad8abbaa4fe3b1d5e02
-LINUX_KERNEL_HASH-5.4.58 = 702fe2af119375387b314481b603d8ce71e71b4e5bae4cb70a980e0951b21647
+LINUX_KERNEL_HASH-5.4.59 = 9bcb9db2e4435f2e5948375862baf0973f1d7860ebe3d750383e5a6deac4b2fd
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))
--- a/drivers/spi/spidev.c
+++ b/drivers/spi/spidev.c
-@@ -729,7 +729,7 @@ static int spidev_probe(struct spi_devic
+@@ -734,7 +734,7 @@ static int spidev_probe(struct spi_devic
* compatible string, it is a Linux implementation thing
* rather than a description of the hardware.
*/
--- a/drivers/cpufreq/Kconfig.arm
+++ b/drivers/cpufreq/Kconfig.arm
-@@ -300,6 +300,15 @@ config ARM_TANGO_CPUFREQ
+@@ -301,6 +301,15 @@ config ARM_TANGO_CPUFREQ
depends on CPUFREQ_DT && ARCH_TANGO
default y
bcm2835_camera = vchiq_register_child(pdev, "bcm2835-camera");
bcm2835_audio = vchiq_register_child(pdev, "bcm2835_audio");
-@@ -3265,6 +3267,7 @@ failed_platform_init:
- static int vchiq_remove(struct platform_device *pdev)
+@@ -3266,6 +3268,7 @@ static int vchiq_remove(struct platform_
{
+ platform_device_unregister(bcm2835_audio);
platform_device_unregister(bcm2835_camera);
+ platform_device_unregister(vcsm_cma);
vchiq_debugfs_deinit();
bcm2835_camera = vchiq_register_child(pdev, "bcm2835-camera");
bcm2835_audio = vchiq_register_child(pdev, "bcm2835_audio");
-@@ -3267,6 +3269,7 @@ failed_platform_init:
- static int vchiq_remove(struct platform_device *pdev)
+@@ -3268,6 +3270,7 @@ static int vchiq_remove(struct platform_
{
+ platform_device_unregister(bcm2835_audio);
platform_device_unregister(bcm2835_camera);
+ platform_device_unregister(bcm2835_codec);
platform_device_unregister(vcsm_cma);
+++ /dev/null
-From 79a2c3013a3b2a4304f953a4a55c49c1bc85202b Mon Sep 17 00:00:00 2001
-From: Phil Elwell <phil@raspberrypi.com>
-Date: Mon, 3 Feb 2020 17:33:01 +0000
-Subject: [PATCH] staging: vchiq_arm: Add a matching unregister call
-
-All the registered children of vchiq have a corresponding call to
-platform_device_unregister except bcm2835_audio. Fix that.
-
-Fixes: 25c7597af20d ("staging: vchiq_arm: Register a platform device for audio")
-
-Signed-off-by: Phil Elwell <phil@raspberrypi.com>
----
- drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c | 1 +
- 1 file changed, 1 insertion(+)
-
---- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
-+++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
-@@ -3293,6 +3293,7 @@ failed_platform_init:
-
- static int vchiq_remove(struct platform_device *pdev)
- {
-+ platform_device_unregister(bcm2835_audio);
- platform_device_unregister(bcm2835_camera);
- platform_device_unregister(bcm2835_codec);
- platform_device_unregister(vcsm_cma);
return ret;
--- a/drivers/pci/controller/pcie-cadence-host.c
+++ b/drivers/pci/controller/pcie-cadence-host.c
-@@ -211,7 +211,7 @@ static int cdns_pcie_host_init(struct de
+@@ -216,7 +216,7 @@ static int cdns_pcie_host_init(struct de
int err;
/* Parse our PCI ranges and request their resources */
--- a/drivers/spi/spidev.c
+++ b/drivers/spi/spidev.c
-@@ -394,7 +394,6 @@ spidev_ioctl(struct file *filp, unsigned
+@@ -399,7 +399,6 @@ spidev_ioctl(struct file *filp, unsigned
else
retval = get_user(tmp, (u32 __user *)arg);
if (retval == 0) {
u32 save = spi->mode;
if (tmp & ~SPI_MODE_MASK) {
-@@ -402,10 +401,6 @@ spidev_ioctl(struct file *filp, unsigned
+@@ -407,10 +406,6 @@ spidev_ioctl(struct file *filp, unsigned
break;
}
--- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
-@@ -4921,6 +4921,80 @@ static int mv88e6xxx_port_mdb_del(struct
+@@ -4920,6 +4920,80 @@ static int mv88e6xxx_port_mdb_del(struct
return err;
}
static int mv88e6xxx_port_egress_floods(struct dsa_switch *ds, int port,
bool unicast, bool multicast)
{
-@@ -4975,6 +5049,8 @@ static const struct dsa_switch_ops mv88e
+@@ -4974,6 +5048,8 @@ static const struct dsa_switch_ops mv88e
.port_mdb_prepare = mv88e6xxx_port_mdb_prepare,
.port_mdb_add = mv88e6xxx_port_mdb_add,
.port_mdb_del = mv88e6xxx_port_mdb_del,
--- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
-@@ -4988,7 +4988,7 @@ static void mv88e6xxx_port_mirror_del(st
+@@ -4987,7 +4987,7 @@ static void mv88e6xxx_port_mirror_del(st
if (chip->info->ops->set_egress_port(chip,
direction,
dsa_upstream_port(ds,
#include "leds.h"
static struct class *leds_class;
-@@ -276,8 +277,10 @@ int led_classdev_register_ext(struct dev
+@@ -277,8 +278,10 @@ int led_classdev_register_ext(struct dev
mutex_unlock(&led_cdev->led_access);
return PTR_ERR(led_cdev->dev);
}
/* Align . to a 8 byte boundary equals to maximum function alignment. */
#define ALIGN_FUNCTION() . = ALIGN(8)
-@@ -406,14 +416,14 @@
+@@ -407,14 +417,14 @@
/* Kernel symbol table: Normal symbols */ \
__ksymtab : AT(ADDR(__ksymtab) - LOAD_OFFSET) { \
__start___ksymtab = .; \
__stop___ksymtab_gpl = .; \
} \
\
-@@ -475,7 +485,7 @@
+@@ -476,7 +486,7 @@
\
/* Kernel symbol table: strings */ \
__ksymtab_strings : AT(ADDR(__ksymtab_strings) - LOAD_OFFSET) { \
} \
\
/* __*init sections */ \
-@@ -884,6 +894,8 @@
+@@ -885,6 +895,8 @@
EXIT_TEXT \
EXIT_DATA \
EXIT_CALL \
--- a/net/core/sock.c
+++ b/net/core/sock.c
-@@ -3608,6 +3608,8 @@ static __net_initdata struct pernet_oper
+@@ -3613,6 +3613,8 @@ static __net_initdata struct pernet_oper
static int __init proto_init(void)
{
+MODULE_LICENSE("GPL");
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
-@@ -2668,6 +2668,7 @@ int wake_up_state(struct task_struct *p,
+@@ -2679,6 +2679,7 @@ int wake_up_state(struct task_struct *p,
{
return try_to_wake_up(p, state, 0);
}
--- a/drivers/spi/spidev.c
+++ b/drivers/spi/spidev.c
-@@ -673,6 +673,7 @@ static const struct of_device_id spidev_
+@@ -678,6 +678,7 @@ static const struct of_device_id spidev_
{ .compatible = "lwn,bk4" },
{ .compatible = "dh,dhcom-board" },
{ .compatible = "menlo,m53cpld" },
#define PACKET_FANOUT_LB 1
--- a/net/packet/af_packet.c
+++ b/net/packet/af_packet.c
-@@ -1795,6 +1795,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -1797,6 +1797,7 @@ static int packet_rcv_spkt(struct sk_buf
{
struct sock *sk;
struct sockaddr_pkt *spkt;
/*
* When we registered the protocol we saved the socket in the data
-@@ -1802,6 +1803,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -1804,6 +1805,7 @@ static int packet_rcv_spkt(struct sk_buf
*/
sk = pt->af_packet_priv;
/*
* Yank back the headers [hope the device set this
-@@ -1814,7 +1816,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -1816,7 +1818,7 @@ static int packet_rcv_spkt(struct sk_buf
* so that this procedure is noop.
*/
goto out;
if (!net_eq(dev_net(dev), sock_net(sk)))
-@@ -2052,12 +2054,12 @@ static int packet_rcv(struct sk_buff *sk
+@@ -2054,12 +2056,12 @@ static int packet_rcv(struct sk_buff *sk
unsigned int snaplen, res;
bool is_drop_n_account = false;
if (!net_eq(dev_net(dev), sock_net(sk)))
goto drop;
-@@ -2182,12 +2184,12 @@ static int tpacket_rcv(struct sk_buff *s
+@@ -2184,12 +2186,12 @@ static int tpacket_rcv(struct sk_buff *s
BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h2)) != 32);
BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h3)) != 48);
if (!net_eq(dev_net(dev), sock_net(sk)))
goto drop;
-@@ -3279,6 +3281,7 @@ static int packet_create(struct net *net
+@@ -3284,6 +3286,7 @@ static int packet_create(struct net *net
mutex_init(&po->pg_vec_lock);
po->rollover = NULL;
po->prot_hook.func = packet_rcv;
if (sock->type == SOCK_PACKET)
po->prot_hook.func = packet_rcv_spkt;
-@@ -3912,6 +3915,16 @@ packet_setsockopt(struct socket *sock, i
+@@ -3917,6 +3920,16 @@ packet_setsockopt(struct socket *sock, i
po->xmit = val ? packet_direct_xmit : dev_queue_xmit;
return 0;
}
default:
return -ENOPROTOOPT;
}
-@@ -3968,6 +3981,13 @@ static int packet_getsockopt(struct sock
+@@ -3973,6 +3986,13 @@ static int packet_getsockopt(struct sock
case PACKET_VNET_HDR:
val = po->has_vnet_hdr;
break;
--------------------
--- a/drivers/cpufreq/Kconfig.arm
+++ b/drivers/cpufreq/Kconfig.arm
-@@ -134,7 +134,7 @@ config ARM_OMAP2PLUS_CPUFREQ
+@@ -135,7 +135,7 @@ config ARM_OMAP2PLUS_CPUFREQ
config ARM_QCOM_CPUFREQ_NVMEM
tristate "Qualcomm nvmem based CPUFreq"
+++ /dev/null
-From 907137d9ef048e7d0282c28e47b32aa4084ad395 Mon Sep 17 00:00:00 2001
-From: Hauke Mehrtens <hauke@hauke-m.de>
-Date: Mon, 6 Jul 2020 00:05:12 +0200
-Subject: [PATCH v2] spi: lantiq-ssc: Fix warning by using WQ_MEM_RECLAIM
-
-The lantiq-ssc driver uses internally an own workqueue to wait till the
-data is not only written out of the FIFO but really written to the wire.
-This workqueue is flushed while the SPI subsystem is working in some
-other system workqueue.
-
-The system workqueue is marked as WQ_MEM_RECLAIM, but the workqueue in
-the lantiq-ssc driver does not use WQ_MEM_RECLAIM for now. Add this flag
-too to prevent this warning.
-
-This fixes the following warning:
-[ 2.975956] WARNING: CPU: 1 PID: 17 at kernel/workqueue.c:2614 check_flush_dependency+0x168/0x184
-[ 2.984752] workqueue: WQ_MEM_RECLAIM kblockd:blk_mq_run_work_fn is flushing !WQ_MEM_RECLAIM 1e100800.spi:0x0
-
-Fixes: 891b7c5fbf61 ("mtd_blkdevs: convert to blk-mq")
-Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
----
- drivers/spi/spi-lantiq-ssc.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/drivers/spi/spi-lantiq-ssc.c
-+++ b/drivers/spi/spi-lantiq-ssc.c
-@@ -907,7 +907,7 @@ static int lantiq_ssc_probe(struct platf
- master->bits_per_word_mask = SPI_BPW_RANGE_MASK(2, 8) |
- SPI_BPW_MASK(16) | SPI_BPW_MASK(32);
-
-- spi->wq = alloc_ordered_workqueue(dev_name(dev), 0);
-+ spi->wq = alloc_ordered_workqueue(dev_name(dev), WQ_MEM_RECLAIM);
- if (!spi->wq) {
- err = -ENOMEM;
- goto err_clk_put;
static void enable_rams_ecc(struct fman_fpm_regs __iomem *fpm_rg)
{
-@@ -1919,7 +1941,10 @@ _return:
+@@ -1918,7 +1940,10 @@ _return:
static int fman_init(struct fman *fman)
{
struct fman_cfg *cfg = NULL;
if (is_init_done(fman->cfg))
return -EINVAL;
-@@ -1939,6 +1964,7 @@ static int fman_init(struct fman *fman)
+@@ -1938,6 +1963,7 @@ static int fman_init(struct fman *fman)
memset_io((void __iomem *)(fman->base_addr + CGP_OFFSET), 0,
fman->state->fm_port_num_of_cg);
/* Save LIODN info before FMan reset
* Skipping non-existent port 0 (i = 1)
*/
-@@ -1958,6 +1984,9 @@ static int fman_init(struct fman *fman)
+@@ -1957,6 +1983,9 @@ static int fman_init(struct fman *fman)
}
fman->liodn_base[i] = liodn_base;
}
err = fman_reset(fman);
if (err)
-@@ -2186,8 +2215,12 @@ int fman_set_port_params(struct fman *fm
+@@ -2185,8 +2214,12 @@ int fman_set_port_params(struct fman *fm
if (err)
goto return_err;
ret = snd_pcm_hw_constraint_list(substream->runtime, 0,
SNDRV_PCM_HW_PARAM_RATE, &fsl_sai_rate_constraints);
-@@ -1048,35 +1038,30 @@ static int fsl_sai_remove(struct platfor
+@@ -1049,35 +1039,30 @@ static int fsl_sai_remove(struct platfor
static const struct fsl_sai_soc_data fsl_sai_vf610_data = {
.use_imx_pcm = false,
--- a/sound/soc/fsl/fsl_sai.c
+++ b/sound/soc/fsl/fsl_sai.c
-@@ -1043,19 +1043,12 @@ static const struct fsl_sai_soc_data fsl
+@@ -1044,19 +1044,12 @@ static const struct fsl_sai_soc_data fsl
.reg_offset = 8,
};
--- a/sound/soc/fsl/fsl_sai.c
+++ b/sound/soc/fsl/fsl_sai.c
-@@ -1031,24 +1031,10 @@ static const struct fsl_sai_soc_data fsl
+@@ -1032,24 +1032,10 @@ static const struct fsl_sai_soc_data fsl
.reg_offset = 0,
};
FSL_SAI_CR3_TRCE_MASK, 0);
}
-@@ -643,20 +633,18 @@ static const struct snd_soc_dai_ops fsl_
+@@ -643,20 +633,17 @@ static const struct snd_soc_dai_ops fsl_
static int fsl_sai_dai_probe(struct snd_soc_dai *cpu_dai)
{
struct fsl_sai *sai = dev_get_drvdata(cpu_dai->dev);
+ regmap_write(sai->regmap, FSL_SAI_RCSR, 0);
- regmap_update_bits(sai->regmap, FSL_SAI_TCR1(ofs),
-- FSL_SAI_CR1_RFW_MASK,
+- FSL_SAI_CR1_RFW_MASK(sai->soc_data->fifo_depth),
+ regmap_update_bits(sai->regmap, FSL_SAI_TCR1, FSL_SAI_CR1_RFW_MASK,
sai->soc_data->fifo_depth - FSL_SAI_MAXBURST_TX);
- regmap_update_bits(sai->regmap, FSL_SAI_RCR1(ofs),
-- FSL_SAI_CR1_RFW_MASK, FSL_SAI_MAXBURST_RX - 1);
+- FSL_SAI_CR1_RFW_MASK(sai->soc_data->fifo_depth),
+ regmap_update_bits(sai->regmap, FSL_SAI_RCR1, FSL_SAI_CR1_RFW_MASK,
-+ FSL_SAI_MAXBURST_RX - 1);
+ FSL_SAI_MAXBURST_RX - 1);
snd_soc_dai_init_dma_data(cpu_dai, &sai->dma_params_tx,
- &sai->dma_params_rx);
-@@ -693,12 +681,12 @@ static const struct snd_soc_component_dr
+@@ -694,12 +681,12 @@ static const struct snd_soc_component_dr
.name = "fsl-sai",
};
{FSL_SAI_TDR0, 0},
{FSL_SAI_TDR1, 0},
{FSL_SAI_TDR2, 0},
-@@ -707,50 +695,24 @@ static struct reg_default fsl_sai_reg_de
+@@ -708,50 +695,24 @@ static struct reg_default fsl_sai_reg_de
{FSL_SAI_TDR5, 0},
{FSL_SAI_TDR6, 0},
{FSL_SAI_TDR7, 0},
case FSL_SAI_TFR0:
case FSL_SAI_TFR1:
case FSL_SAI_TFR2:
-@@ -760,6 +722,12 @@ static bool fsl_sai_readable_reg(struct
+@@ -761,6 +722,12 @@ static bool fsl_sai_readable_reg(struct
case FSL_SAI_TFR6:
case FSL_SAI_TFR7:
case FSL_SAI_TMR:
case FSL_SAI_RDR0:
case FSL_SAI_RDR1:
case FSL_SAI_RDR2:
-@@ -785,13 +753,9 @@ static bool fsl_sai_readable_reg(struct
+@@ -786,13 +753,9 @@ static bool fsl_sai_readable_reg(struct
static bool fsl_sai_volatile_reg(struct device *dev, unsigned int reg)
{
case FSL_SAI_TFR0:
case FSL_SAI_TFR1:
case FSL_SAI_TFR2:
-@@ -824,16 +788,13 @@ static bool fsl_sai_volatile_reg(struct
+@@ -825,16 +788,13 @@ static bool fsl_sai_volatile_reg(struct
static bool fsl_sai_writeable_reg(struct device *dev, unsigned int reg)
{
case FSL_SAI_TDR0:
case FSL_SAI_TDR1:
case FSL_SAI_TDR2:
-@@ -843,6 +804,12 @@ static bool fsl_sai_writeable_reg(struct
+@@ -844,6 +804,12 @@ static bool fsl_sai_writeable_reg(struct
case FSL_SAI_TDR6:
case FSL_SAI_TDR7:
case FSL_SAI_TMR:
case FSL_SAI_RMR:
return true;
default:
-@@ -850,15 +817,15 @@ static bool fsl_sai_writeable_reg(struct
+@@ -851,15 +817,15 @@ static bool fsl_sai_writeable_reg(struct
}
}
.readable_reg = fsl_sai_readable_reg,
.volatile_reg = fsl_sai_volatile_reg,
.writeable_reg = fsl_sai_writeable_reg,
-@@ -890,12 +857,6 @@ static int fsl_sai_probe(struct platform
+@@ -891,12 +857,6 @@ static int fsl_sai_probe(struct platform
if (IS_ERR(base))
return PTR_ERR(base);
sai->regmap = devm_regmap_init_mmio_clk(&pdev->dev,
"bus", base, &fsl_sai_regmap_config);
-@@ -1022,13 +983,11 @@ static int fsl_sai_remove(struct platfor
+@@ -1023,13 +983,11 @@ static int fsl_sai_remove(struct platfor
static const struct fsl_sai_soc_data fsl_sai_vf610_data = {
.use_imx_pcm = false,
.fifo_depth = 32,
};
static const struct of_device_id fsl_sai_ids[] = {
-@@ -1061,7 +1020,6 @@ static int fsl_sai_runtime_suspend(struc
+@@ -1062,7 +1020,6 @@ static int fsl_sai_runtime_suspend(struc
static int fsl_sai_runtime_resume(struct device *dev)
{
struct fsl_sai *sai = dev_get_drvdata(dev);
int ret;
ret = clk_prepare_enable(sai->bus_clk);
-@@ -1083,11 +1041,11 @@ static int fsl_sai_runtime_resume(struct
+@@ -1084,11 +1041,11 @@ static int fsl_sai_runtime_resume(struct
}
regcache_cache_only(sai->regmap, false);
#include <linux/platform_data/x86/apple.h>
#include <linux/pm_runtime.h>
#include <linux/switchtec.h>
-@@ -5617,3 +5618,34 @@ static void apex_pci_fixup_class(struct
+@@ -5619,3 +5620,34 @@ static void apex_pci_fixup_class(struct
}
DECLARE_PCI_FIXUP_CLASS_HEADER(0x1ac1, 0x089a,
PCI_CLASS_NOT_DEFINED, 8, apex_pci_fixup_class);