KERNEL_PATCHVER:=$(KERNEL_TESTING_PATCHVER)
endif
-LINUX_VERSION-5.4 = .171
+LINUX_VERSION-5.4 = .179
-LINUX_KERNEL_HASH-5.4.171 = afbcc8ed7d85485af299567f307b03057ffff3ec7bee02a21c33933d435b4958
+LINUX_KERNEL_HASH-5.4.179 = 2c9bdec0922a95aff34e8d53d2e0ecf7e842033cd908d2959a43d34afb5d897d
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))
--- a/drivers/clk/bcm/clk-bcm2835.c
+++ b/drivers/clk/bcm/clk-bcm2835.c
-@@ -2267,8 +2267,15 @@ static int bcm2835_clk_probe(struct plat
+@@ -2262,8 +2262,15 @@ static int bcm2835_clk_probe(struct plat
if (ret)
return ret;
}
static const struct cprman_plat_data cprman_bcm2835_plat_data = {
-@@ -2294,7 +2301,11 @@ static struct platform_driver bcm2835_cl
+@@ -2289,7 +2296,11 @@ static struct platform_driver bcm2835_cl
.probe = bcm2835_clk_probe,
};
--- a/drivers/clk/bcm/clk-bcm2835.c
+++ b/drivers/clk/bcm/clk-bcm2835.c
-@@ -1381,6 +1381,11 @@ bcm2835_register_pll_divider(struct bcm2
+@@ -1376,6 +1376,11 @@ bcm2835_register_pll_divider(struct bcm2
divider->div.hw.init = &init;
divider->div.table = NULL;
--- a/drivers/clk/bcm/clk-bcm2835.c
+++ b/drivers/clk/bcm/clk-bcm2835.c
-@@ -1311,6 +1311,8 @@ static const struct clk_ops bcm2835_vpu_
+@@ -1306,6 +1306,8 @@ static const struct clk_ops bcm2835_vpu_
.debug_init = bcm2835_clock_debug_init,
};
static struct clk_hw *bcm2835_register_pll(struct bcm2835_cprman *cprman,
const struct bcm2835_pll_data *data)
{
-@@ -1327,6 +1329,9 @@ static struct clk_hw *bcm2835_register_p
+@@ -1322,6 +1324,9 @@ static struct clk_hw *bcm2835_register_p
init.ops = &bcm2835_pll_clk_ops;
init.flags = CLK_IGNORE_UNUSED;
pll = kzalloc(sizeof(*pll), GFP_KERNEL);
if (!pll)
return NULL;
-@@ -1382,8 +1387,10 @@ bcm2835_register_pll_divider(struct bcm2
+@@ -1377,8 +1382,10 @@ bcm2835_register_pll_divider(struct bcm2
divider->div.table = NULL;
if (!(cprman_read(cprman, data->cm_reg) & data->hold_mask)) {
}
divider->cprman = cprman;
-@@ -2191,6 +2198,8 @@ static const struct bcm2835_clk_desc clk
+@@ -2186,6 +2193,8 @@ static const struct bcm2835_clk_desc clk
.ctl_reg = CM_PERIICTL),
};
/*
* Permanently take a reference on the parent of the SDRAM clock.
*
-@@ -2210,6 +2219,19 @@ static int bcm2835_mark_sdc_parent_criti
+@@ -2205,6 +2214,19 @@ static int bcm2835_mark_sdc_parent_criti
return clk_prepare_enable(parent);
}
static int bcm2835_clk_probe(struct platform_device *pdev)
{
struct device *dev = &pdev->dev;
-@@ -2220,6 +2242,7 @@ static int bcm2835_clk_probe(struct plat
+@@ -2215,6 +2237,7 @@ static int bcm2835_clk_probe(struct plat
const size_t asize = ARRAY_SIZE(clk_desc_array);
const struct cprman_plat_data *pdata;
size_t i;
int ret;
pdata = of_device_get_match_data(&pdev->dev);
-@@ -2239,6 +2262,13 @@ static int bcm2835_clk_probe(struct plat
+@@ -2234,6 +2257,13 @@ static int bcm2835_clk_probe(struct plat
if (IS_ERR(cprman->regs))
return PTR_ERR(cprman->regs);
spinlock_t regs_lock; /* spinlock for all clocks */
unsigned int soc;
-@@ -1015,6 +1019,30 @@ static unsigned long bcm2835_clock_get_r
+@@ -1010,6 +1014,30 @@ static unsigned long bcm2835_clock_get_r
return bcm2835_clock_rate_from_divisor(clock, parent_rate, div);
}
static void bcm2835_clock_wait_busy(struct bcm2835_clock *clock)
{
struct bcm2835_cprman *cprman = clock->cprman;
-@@ -1303,7 +1331,7 @@ static int bcm2835_vpu_clock_is_on(struc
+@@ -1298,7 +1326,7 @@ static int bcm2835_vpu_clock_is_on(struc
*/
static const struct clk_ops bcm2835_vpu_clock_clk_ops = {
.is_prepared = bcm2835_vpu_clock_is_on,
.set_rate = bcm2835_clock_set_rate,
.determine_rate = bcm2835_clock_determine_rate,
.set_parent = bcm2835_clock_set_parent,
-@@ -2241,6 +2269,7 @@ static int bcm2835_clk_probe(struct plat
+@@ -2236,6 +2264,7 @@ static int bcm2835_clk_probe(struct plat
const struct bcm2835_clk_desc *desc;
const size_t asize = ARRAY_SIZE(clk_desc_array);
const struct cprman_plat_data *pdata;
size_t i;
u32 clk_id;
int ret;
-@@ -2262,6 +2291,14 @@ static int bcm2835_clk_probe(struct plat
+@@ -2257,6 +2286,14 @@ static int bcm2835_clk_probe(struct plat
if (IS_ERR(cprman->regs))
return PTR_ERR(cprman->regs);
--- a/drivers/clk/bcm/clk-bcm2835.c
+++ b/drivers/clk/bcm/clk-bcm2835.c
-@@ -1473,6 +1473,15 @@ static struct clk_hw *bcm2835_register_c
+@@ -1468,6 +1468,15 @@ static struct clk_hw *bcm2835_register_c
init.flags = data->flags | CLK_IGNORE_UNUSED;
/*
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
-@@ -8512,8 +8512,6 @@ int alloc_contig_range(unsigned long sta
+@@ -8514,8 +8514,6 @@ int alloc_contig_range(unsigned long sta
/* Make sure the range is really isolated. */
if (test_pages_isolated(outer_start, end, false)) {
--- a/drivers/tty/serial/amba-pl011.c
+++ b/drivers/tty/serial/amba-pl011.c
-@@ -2578,7 +2578,12 @@ static int pl011_setup_port(struct devic
+@@ -2557,7 +2557,12 @@ static int pl011_setup_port(struct devic
if (IS_ERR(base))
return PTR_ERR(base);
/* Clear pending error and receive interrupts */
pl011_write(UART011_OEIS | UART011_BEIS | UART011_PEIS |
-@@ -2324,7 +2341,7 @@ static int pl011_console_setup(struct co
+@@ -2303,7 +2320,7 @@ static int pl011_console_setup(struct co
plat->init();
}
if (uap->vendor->fixed_options) {
baud = uap->fixed_baud;
-@@ -2509,6 +2526,7 @@ static struct uart_driver amba_reg = {
+@@ -2488,6 +2505,7 @@ static struct uart_driver amba_reg = {
.cons = AMBA_CONSOLE,
};
static int pl011_probe_dt_alias(int index, struct device *dev)
{
struct device_node *np;
-@@ -2540,6 +2558,7 @@ static int pl011_probe_dt_alias(int inde
+@@ -2519,6 +2537,7 @@ static int pl011_probe_dt_alias(int inde
return ret;
}
- reg
--- a/drivers/tty/serial/amba-pl011.c
+++ b/drivers/tty/serial/amba-pl011.c
-@@ -2665,6 +2665,11 @@ static int pl011_probe(struct amba_devic
+@@ -2644,6 +2644,11 @@ static int pl011_probe(struct amba_devic
if (IS_ERR(uap->clk))
return PTR_ERR(uap->clk);
--- a/drivers/pinctrl/bcm/pinctrl-bcm2835.c
+++ b/drivers/pinctrl/bcm/pinctrl-bcm2835.c
-@@ -350,7 +350,7 @@ static const struct gpio_chip bcm2835_gp
+@@ -359,7 +359,7 @@ static const struct gpio_chip bcm2835_gp
.get = bcm2835_gpio_get,
.set = bcm2835_gpio_set,
.set_config = gpiochip_generic_config,
}
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
-@@ -5379,7 +5379,7 @@ static void port_event(struct usb_hub *h
+@@ -5382,7 +5382,7 @@ static void port_event(struct usb_hub *h
port_dev->over_current_count++;
port_over_current_notify(port_dev);
--- a/kernel/cgroup/cgroup.c
+++ b/kernel/cgroup/cgroup.c
-@@ -5744,6 +5744,9 @@ int __init cgroup_init_early(void)
+@@ -5749,6 +5749,9 @@ int __init cgroup_init_early(void)
return 0;
}
/**
* cgroup_init - cgroup initialization
*
-@@ -5782,6 +5785,12 @@ int __init cgroup_init(void)
+@@ -5787,6 +5790,12 @@ int __init cgroup_init(void)
mutex_unlock(&cgroup_mutex);
for_each_subsys(ss, ssid) {
if (ss->early_init) {
struct cgroup_subsys_state *css =
-@@ -6191,6 +6200,10 @@ static int __init cgroup_disable(char *s
+@@ -6196,6 +6205,10 @@ static int __init cgroup_disable(char *s
strcmp(token, ss->legacy_name))
continue;
static_branch_disable(cgroup_subsys_enabled_key[i]);
pr_info("Disabling %s control group subsystem\n",
ss->name);
-@@ -6200,6 +6213,31 @@ static int __init cgroup_disable(char *s
+@@ -6205,6 +6218,31 @@ static int __init cgroup_disable(char *s
}
__setup("cgroup_disable=", cgroup_disable);
--- a/drivers/clk/bcm/clk-bcm2835.c
+++ b/drivers/clk/bcm/clk-bcm2835.c
-@@ -2354,7 +2354,7 @@ static int bcm2835_clk_probe(struct plat
+@@ -2349,7 +2349,7 @@ static int bcm2835_clk_probe(struct plat
return ret;
/* note that we have registered all the clocks */
/* Disable rate control for now */
bcmgenet_tdma_ring_writel(priv, index, flow_period_val,
TDMA_FLOW_PERIOD);
-@@ -3574,9 +3574,12 @@ static int bcmgenet_probe(struct platfor
+@@ -3576,9 +3576,12 @@ static int bcmgenet_probe(struct platfor
netif_set_real_num_rx_queues(priv->dev, priv->hw_params->rx_queues + 1);
/* Set default coalescing parameters */
--- a/drivers/clk/bcm/clk-bcm2835.c
+++ b/drivers/clk/bcm/clk-bcm2835.c
-@@ -1114,15 +1114,19 @@ static int bcm2835_clock_set_rate(struct
+@@ -1109,15 +1109,19 @@ static int bcm2835_clock_set_rate(struct
spin_lock(&cprman->regs_lock);
ctl |= (div & CM_DIV_FRAC_MASK) ? CM_FRAC : 0;
cprman_write(cprman, data->ctl_reg, ctl);
-@@ -1494,7 +1498,7 @@ static struct clk_hw *bcm2835_register_c
+@@ -1489,7 +1493,7 @@ static struct clk_hw *bcm2835_register_c
init.ops = &bcm2835_vpu_clock_clk_ops;
} else {
init.ops = &bcm2835_clock_clk_ops;
--- a/drivers/clk/bcm/clk-bcm2835.c
+++ b/drivers/clk/bcm/clk-bcm2835.c
-@@ -1103,8 +1103,10 @@ static int bcm2835_clock_on(struct clk_h
+@@ -1098,8 +1098,10 @@ static int bcm2835_clock_on(struct clk_h
return 0;
}
{
struct bcm2835_clock *clock = bcm2835_clock_from_hw(hw);
struct bcm2835_cprman *cprman = clock->cprman;
-@@ -1126,6 +1128,11 @@ static int bcm2835_clock_set_rate(struct
+@@ -1121,6 +1123,11 @@ static int bcm2835_clock_set_rate(struct
bcm2835_clock_wait_busy(clock);
}
ctl &= ~CM_FRAC;
ctl |= (div & CM_DIV_FRAC_MASK) ? CM_FRAC : 0;
cprman_write(cprman, data->ctl_reg, ctl);
-@@ -1137,6 +1144,12 @@ static int bcm2835_clock_set_rate(struct
+@@ -1132,6 +1139,12 @@ static int bcm2835_clock_set_rate(struct
return 0;
}
static bool
bcm2835_clk_is_pllc(struct clk_hw *hw)
{
-@@ -1320,6 +1333,7 @@ static const struct clk_ops bcm2835_cloc
+@@ -1315,6 +1328,7 @@ static const struct clk_ops bcm2835_cloc
.unprepare = bcm2835_clock_off,
.recalc_rate = bcm2835_clock_get_rate,
.set_rate = bcm2835_clock_set_rate,
.determine_rate = bcm2835_clock_determine_rate,
.set_parent = bcm2835_clock_set_parent,
.get_parent = bcm2835_clock_get_parent,
-@@ -1498,7 +1512,6 @@ static struct clk_hw *bcm2835_register_c
+@@ -1493,7 +1507,6 @@ static struct clk_hw *bcm2835_register_c
init.ops = &bcm2835_vpu_clock_clk_ops;
} else {
init.ops = &bcm2835_clock_clk_ops;
--- a/drivers/usb/core/hcd.c
+++ b/drivers/usb/core/hcd.c
-@@ -1941,6 +1941,16 @@ reset:
+@@ -1962,6 +1962,16 @@ reset:
return ret;
}
--- a/drivers/clk/bcm/clk-bcm2835.c
+++ b/drivers/clk/bcm/clk-bcm2835.c
-@@ -2280,9 +2280,11 @@ static bool bcm2835_clk_is_claimed(const
+@@ -2275,9 +2275,11 @@ static bool bcm2835_clk_is_claimed(const
int i;
for (i = 0; i < ARRAY_SIZE(clk_desc_array); i++) {
+++ /dev/null
-From cf658ebc86b3e22c0b77e136fbbf19b580c7c256 Mon Sep 17 00:00:00 2001
-From: Stefan Wahren <wahrenst@gmx.net>
-Date: Sun, 21 Jul 2019 16:01:36 +0200
-Subject: [PATCH] pinctrl: bcm2835: Add support for BCM2711 pull-up
- functionality
-
-commit e38a9a437fb93ddafab5030165e4c6a3a5021669 upstream.
-
-The BCM2711 has a new way of selecting the pull-up/pull-down setting
-for a GPIO pin. The registers used for the BCM2835, GP_PUD and
-GP_PUDCLKn0, are no longer connected. A new set of registers,
-GP_GPIO_PUP_PDN_CNTRL_REGx must be used. This commit will add
-a new compatible string "brcm,bcm2711-gpio" and the kernel
-driver will use it to select which method is used to select
-pull-up/pull-down.
-
-This patch based on a patch by Al Cooper which was intended for the
-BCM7211. This is a bugfixed and improved version.
-
-Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
-Acked-by: Eric Anholt <eric@anholt.net>
----
- drivers/pinctrl/bcm/pinctrl-bcm2835.c | 6 ++++++
- 1 file changed, 6 insertions(+)
-
---- a/drivers/pinctrl/bcm/pinctrl-bcm2835.c
-+++ b/drivers/pinctrl/bcm/pinctrl-bcm2835.c
-@@ -1168,6 +1168,12 @@ static int bcm2835_pinctrl_probe(struct
- (const struct pinconf_ops *)match->data;
- }
-
-+ match = of_match_node(bcm2835_pinctrl_match, pdev->dev.of_node);
-+ if (match) {
-+ bcm2835_pinctrl_desc.confops =
-+ (const struct pinconf_ops *)match->data;
-+ }
-+
- pc->pctl_dev = devm_pinctrl_register(dev, &bcm2835_pinctrl_desc, pc);
- if (IS_ERR(pc->pctl_dev)) {
- gpiochip_remove(&pc->gpio_chip);
+++ /dev/null
-From b1d33d1e5a44afd2025c5a44a85dc2fab00ec6a7 Mon Sep 17 00:00:00 2001
-From: popcornmix <popcornmix@gmail.com>
-Date: Tue, 5 Nov 2019 11:28:19 +0000
-Subject: [PATCH] Revert "pinctrl: bcm2835: Pass irqchip when adding
- gpiochip"
-
-This reverts commit 73345a18d464b1b945b29f54f630ace6873344e2.
----
- drivers/pinctrl/bcm/pinctrl-bcm2835.c | 55 +++++++++++++++------------
- 1 file changed, 30 insertions(+), 25 deletions(-)
-
---- a/drivers/pinctrl/bcm/pinctrl-bcm2835.c
-+++ b/drivers/pinctrl/bcm/pinctrl-bcm2835.c
-@@ -78,6 +78,7 @@
- struct bcm2835_pinctrl {
- struct device *dev;
- void __iomem *base;
-+ int irq[BCM2835_NUM_IRQS];
-
- /* note: locking assumes each bank will have its own unsigned long */
- unsigned long enabled_irq_map[BCM2835_NUM_BANKS];
-@@ -381,14 +382,14 @@ static void bcm2835_gpio_irq_handler(str
- int group;
- int i;
-
-- for (i = 0; i < BCM2835_NUM_IRQS; i++) {
-- if (chip->irq.parents[i] == irq) {
-+ for (i = 0; i < ARRAY_SIZE(pc->irq); i++) {
-+ if (pc->irq[i] == irq) {
- group = i;
- break;
- }
- }
- /* This should not happen, every IRQ has a bank */
-- if (i == BCM2835_NUM_IRQS)
-+ if (i == ARRAY_SIZE(pc->irq))
- BUG();
-
- chained_irq_enter(host_chip, desc);
-@@ -1086,7 +1087,6 @@ static int bcm2835_pinctrl_probe(struct
- struct device *dev = &pdev->dev;
- struct device_node *np = dev->of_node;
- struct bcm2835_pinctrl *pc;
-- struct gpio_irq_chip *girq;
- struct resource iomem;
- int err, i;
- const struct of_device_id *match;
-@@ -1135,33 +1135,38 @@ static int bcm2835_pinctrl_probe(struct
- raw_spin_lock_init(&pc->irq_lock[i]);
- }
-
-- girq = &pc->gpio_chip.irq;
-- girq->chip = &bcm2835_gpio_irq_chip;
-- girq->parent_handler = bcm2835_gpio_irq_handler;
-- girq->num_parents = BCM2835_NUM_IRQS;
-- girq->parents = devm_kcalloc(dev, BCM2835_NUM_IRQS,
-- sizeof(*girq->parents),
-- GFP_KERNEL);
-- if (!girq->parents)
-- return -ENOMEM;
-- /*
-- * Use the same handler for all groups: this is necessary
-- * since we use one gpiochip to cover all lines - the
-- * irq handler then needs to figure out which group and
-- * bank that was firing the IRQ and look up the per-group
-- * and bank data.
-- */
-- for (i = 0; i < BCM2835_NUM_IRQS; i++)
-- girq->parents[i] = irq_of_parse_and_map(np, i);
-- girq->default_type = IRQ_TYPE_NONE;
-- girq->handler = handle_level_irq;
--
- err = gpiochip_add_data(&pc->gpio_chip, pc);
- if (err) {
- dev_err(dev, "could not add GPIO chip\n");
- return err;
- }
-
-+ err = gpiochip_irqchip_add(&pc->gpio_chip, &bcm2835_gpio_irq_chip,
-+ 0, handle_level_irq, IRQ_TYPE_NONE);
-+ if (err) {
-+ dev_info(dev, "could not add irqchip\n");
-+ return err;
-+ }
-+
-+ for (i = 0; i < BCM2835_NUM_IRQS; i++) {
-+ pc->irq[i] = irq_of_parse_and_map(np, i);
-+
-+ if (pc->irq[i] == 0)
-+ continue;
-+
-+ /*
-+ * Use the same handler for all groups: this is necessary
-+ * since we use one gpiochip to cover all lines - the
-+ * irq handler then needs to figure out which group and
-+ * bank that was firing the IRQ and look up the per-group
-+ * and bank data.
-+ */
-+ gpiochip_set_chained_irqchip(&pc->gpio_chip,
-+ &bcm2835_gpio_irq_chip,
-+ pc->irq[i],
-+ bcm2835_gpio_irq_handler);
-+ }
-+
- match = of_match_node(bcm2835_pinctrl_match, pdev->dev.of_node);
- if (match) {
- bcm2835_pinctrl_desc.confops =
--- a/drivers/clk/bcm/clk-bcm2835.c
+++ b/drivers/clk/bcm/clk-bcm2835.c
-@@ -1734,16 +1734,12 @@ static const struct bcm2835_clk_desc clk
+@@ -1729,16 +1729,12 @@ static const struct bcm2835_clk_desc clk
.hold_mask = CM_PLLA_HOLDCORE,
.fixed_divider = 1,
.flags = CLK_SET_RATE_PARENT),
[BCM2835_PLLA_DSI0] = REGISTER_PLL_DIV(
SOC_ALL,
.name = "plla_dsi0",
-@@ -2021,14 +2017,12 @@ static const struct bcm2835_clk_desc clk
+@@ -2016,14 +2012,12 @@ static const struct bcm2835_clk_desc clk
.int_bits = 6,
.frac_bits = 0,
.tcnt_mux = 3),
--- a/drivers/pinctrl/bcm/pinctrl-bcm2835.c
+++ b/drivers/pinctrl/bcm/pinctrl-bcm2835.c
-@@ -1135,7 +1135,7 @@ static int bcm2835_pinctrl_probe(struct
- raw_spin_lock_init(&pc->irq_lock[i]);
- }
+@@ -1315,7 +1315,7 @@ static int bcm2835_pinctrl_probe(struct
+ girq->default_type = IRQ_TYPE_NONE;
+ girq->handler = handle_level_irq;
- err = gpiochip_add_data(&pc->gpio_chip, pc);
+ err = devm_gpiochip_add_data(dev, &pc->gpio_chip, pc);
if (err) {
dev_err(dev, "could not add GPIO chip\n");
- return err;
+ goto out_remove;
+++ /dev/null
-From 27cb8bf0442f677380a1df93b93b7589b7ce5243 Mon Sep 17 00:00:00 2001
-From: Phil Elwell <phil@raspberrypi.org>
-Date: Mon, 6 Jan 2020 14:05:42 +0000
-Subject: [PATCH] pinctrl: bcm2835: Change init order for gpio hogs
-
-pinctrl-bcm2835 is a combined pinctrl/gpio driver. Currently the gpio
-side is registered first, but this breaks gpio hogs (which are
-configured during gpiochip_add_data). Part of the hog initialisation
-is a call to pinctrl_gpio_request, and since the pinctrl driver hasn't
-yet been registered this results in an -EPROBE_DEFER from which it can
-never recover.
-
-Change the initialisation sequence to register the pinctrl driver
-first.
-
-See: https://www.raspberrypi.org/forums/viewtopic.php?f=107&t=260600
-
-Signed-off-by: Phil Elwell <phil@raspberrypi.org>
----
- drivers/pinctrl/bcm/pinctrl-bcm2835.c | 40 ++++++++++++---------------
- 1 file changed, 17 insertions(+), 23 deletions(-)
-
---- a/drivers/pinctrl/bcm/pinctrl-bcm2835.c
-+++ b/drivers/pinctrl/bcm/pinctrl-bcm2835.c
-@@ -1135,9 +1135,25 @@ static int bcm2835_pinctrl_probe(struct
- raw_spin_lock_init(&pc->irq_lock[i]);
- }
-
-+ match = of_match_node(bcm2835_pinctrl_match, pdev->dev.of_node);
-+ if (match) {
-+ bcm2835_pinctrl_desc.confops =
-+ (const struct pinconf_ops *)match->data;
-+ }
-+
-+ pc->pctl_dev = devm_pinctrl_register(dev, &bcm2835_pinctrl_desc, pc);
-+ if (IS_ERR(pc->pctl_dev))
-+ return PTR_ERR(pc->pctl_dev);
-+
-+ pc->gpio_range = bcm2835_pinctrl_gpio_range;
-+ pc->gpio_range.base = pc->gpio_chip.base;
-+ pc->gpio_range.gc = &pc->gpio_chip;
-+ pinctrl_add_gpio_range(pc->pctl_dev, &pc->gpio_range);
-+
- err = devm_gpiochip_add_data(dev, &pc->gpio_chip, pc);
- if (err) {
- dev_err(dev, "could not add GPIO chip\n");
-+ pinctrl_remove_gpio_range(pc->pctl_dev, &pc->gpio_range);
- return err;
- }
-
-@@ -1145,6 +1161,7 @@ static int bcm2835_pinctrl_probe(struct
- 0, handle_level_irq, IRQ_TYPE_NONE);
- if (err) {
- dev_info(dev, "could not add irqchip\n");
-+ pinctrl_remove_gpio_range(pc->pctl_dev, &pc->gpio_range);
- return err;
- }
-
-@@ -1167,29 +1184,6 @@ static int bcm2835_pinctrl_probe(struct
- bcm2835_gpio_irq_handler);
- }
-
-- match = of_match_node(bcm2835_pinctrl_match, pdev->dev.of_node);
-- if (match) {
-- bcm2835_pinctrl_desc.confops =
-- (const struct pinconf_ops *)match->data;
-- }
--
-- match = of_match_node(bcm2835_pinctrl_match, pdev->dev.of_node);
-- if (match) {
-- bcm2835_pinctrl_desc.confops =
-- (const struct pinconf_ops *)match->data;
-- }
--
-- pc->pctl_dev = devm_pinctrl_register(dev, &bcm2835_pinctrl_desc, pc);
-- if (IS_ERR(pc->pctl_dev)) {
-- gpiochip_remove(&pc->gpio_chip);
-- return PTR_ERR(pc->pctl_dev);
-- }
--
-- pc->gpio_range = bcm2835_pinctrl_gpio_range;
-- pc->gpio_range.base = pc->gpio_chip.base;
-- pc->gpio_range.gc = &pc->gpio_chip;
-- pinctrl_add_gpio_range(pc->pctl_dev, &pc->gpio_range);
--
- return 0;
- }
-
--- a/arch/arm/boot/dts/bcm283x.dtsi
+++ b/arch/arm/boot/dts/bcm283x.dtsi
-@@ -635,22 +635,16 @@
+@@ -636,22 +636,16 @@
};
clocks {
arm-pmu {
--- a/arch/arm/boot/dts/bcm283x.dtsi
+++ b/arch/arm/boot/dts/bcm283x.dtsi
-@@ -432,18 +432,6 @@
+@@ -433,18 +433,6 @@
status = "disabled";
};
dpi: dpi@7e208000 {
compatible = "brcm,bcm2835-dpi";
reg = <0x7e208000 0x8c>;
-@@ -608,12 +596,6 @@
+@@ -609,12 +597,6 @@
status = "disabled";
};
--- a/drivers/clk/bcm/clk-bcm2835.c
+++ b/drivers/clk/bcm/clk-bcm2835.c
-@@ -2401,7 +2401,7 @@ static int __init __bcm2835_clk_driver_i
+@@ -2396,7 +2396,7 @@ static int __init __bcm2835_clk_driver_i
{
return platform_driver_register(&bcm2835_clk_driver);
}
static void pl011_stop_rx(struct uart_port *port)
{
struct uart_amba_port *uap =
-@@ -2167,6 +2193,8 @@ static const struct uart_ops amba_pl011_
+@@ -2150,6 +2176,8 @@ static const struct uart_ops amba_pl011_
.stop_tx = pl011_stop_tx,
.start_tx = pl011_start_tx,
.stop_rx = pl011_stop_rx,
compatible = "brcm,bcm2835-rng";
reg = <0x7e104000 0x10>;
interrupts = <2 29>;
-@@ -269,35 +212,6 @@
+@@ -270,35 +213,6 @@
brcm,function = <BCM2835_FSEL_ALT2>;
};
sdhost_gpio48: sdhost_gpio48 {
brcm,pins = <48 49 50 51 52 53>;
brcm,function = <BCM2835_FSEL_ALT0>;
-@@ -379,7 +293,7 @@
+@@ -380,7 +294,7 @@
};
uart0: serial@7e201000 {
reg = <0x7e201000 0x200>;
interrupts = <2 25>;
clocks = <&clocks BCM2835_CLOCK_UART>,
-@@ -393,8 +307,6 @@
+@@ -394,8 +308,6 @@
reg = <0x7e202000 0x100>;
interrupts = <2 24>;
clocks = <&clocks BCM2835_CLOCK_VPU>;
status = "disabled";
};
-@@ -402,10 +314,6 @@
+@@ -403,10 +315,6 @@
compatible = "brcm,bcm2835-i2s";
reg = <0x7e203000 0x24>;
clocks = <&clocks BCM2835_CLOCK_PCM>;
status = "disabled";
};
-@@ -414,8 +322,6 @@
+@@ -415,8 +323,6 @@
reg = <0x7e204000 0x200>;
interrupts = <2 22>;
clocks = <&clocks BCM2835_CLOCK_VPU>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
-@@ -541,32 +447,6 @@
+@@ -542,32 +448,6 @@
status = "disabled";
};
i2c1: i2c@7e804000 {
compatible = "brcm,bcm2835-i2c";
reg = <0x7e804000 0x1000>;
-@@ -577,16 +457,6 @@
+@@ -578,16 +458,6 @@
status = "disabled";
};
vec: vec@7e806000 {
compatible = "brcm,bcm2835-vec";
reg = <0x7e806000 0x1000>;
-@@ -595,20 +465,6 @@
+@@ -596,20 +466,6 @@
status = "disabled";
};
usb: usb@7e980000 {
compatible = "brcm,bcm2835-usb";
reg = <0x7e980000 0x10000>;
-@@ -620,10 +476,6 @@
+@@ -621,10 +477,6 @@
phys = <&usbphy>;
phy-names = "usb2-phy";
};
--- a/drivers/pci/controller/pci-aardvark.c
+++ b/drivers/pci/controller/pci-aardvark.c
-@@ -1523,7 +1523,8 @@ static int advk_pcie_probe(struct platfo
+@@ -1525,7 +1525,8 @@ static int advk_pcie_probe(struct platfo
return ret;
}
+};
--- a/arch/arm/boot/dts/bcm283x.dtsi
+++ b/arch/arm/boot/dts/bcm283x.dtsi
-@@ -340,7 +340,7 @@
+@@ -341,7 +341,7 @@
status = "disabled";
};
compatible = "brcm,bcm2835-i2c";
reg = <0x7e205000 0x200>;
interrupts = <2 21>;
-@@ -350,6 +350,30 @@
+@@ -351,6 +351,30 @@
status = "disabled";
};
if ((rcsi2_read(priv, PHCLM_REG) & PHCLM_STOPSTATECKL) &&
(rcsi2_read(priv, PHDLM_REG) & lane_mask) == lane_mask)
-@@ -445,7 +447,8 @@ static int rcsi2_set_phypll(struct rcar_
+@@ -452,7 +454,8 @@ static int rcsi2_set_phypll(struct rcar_
return 0;
}
{
struct v4l2_subdev *source;
struct v4l2_ctrl *ctrl;
-@@ -470,15 +473,63 @@ static int rcsi2_calc_mbps(struct rcar_c
+@@ -477,15 +480,63 @@ static int rcsi2_calc_mbps(struct rcar_c
* bps = link_freq * 2
*/
mbps = v4l2_ctrl_g_ctrl_int64(ctrl) * bpp;
unsigned int i;
int mbps, ret;
-@@ -522,10 +573,18 @@ static int rcsi2_start_receiver(struct r
+@@ -529,10 +580,18 @@ static int rcsi2_start_receiver(struct r
fld |= FLD_FLD_NUM(1);
}
if (mbps < 0)
return mbps;
-@@ -572,7 +631,7 @@ static int rcsi2_start_receiver(struct r
+@@ -579,7 +638,7 @@ static int rcsi2_start_receiver(struct r
rcsi2_write(priv, PHYCNT_REG, phycnt | PHYCNT_SHUTDOWNZ);
rcsi2_write(priv, PHYCNT_REG, phycnt | PHYCNT_SHUTDOWNZ | PHYCNT_RSTZ);
if (ret)
return ret;
-@@ -749,6 +808,7 @@ static int rcsi2_notify_bound(struct v4l
+@@ -756,6 +815,7 @@ static int rcsi2_notify_bound(struct v4l
}
priv->remote = subdev;
--- a/drivers/bluetooth/hci_bcm.c
+++ b/drivers/bluetooth/hci_bcm.c
-@@ -1427,6 +1427,7 @@ static const struct of_device_id bcm_blu
+@@ -1432,6 +1432,7 @@ static const struct of_device_id bcm_blu
{ .compatible = "brcm,bcm4345c5" },
{ .compatible = "brcm,bcm4330-bt" },
{ .compatible = "brcm,bcm43438-bt" },
--- a/drivers/bluetooth/hci_bcm.c
+++ b/drivers/bluetooth/hci_bcm.c
-@@ -1428,6 +1428,7 @@ static const struct of_device_id bcm_blu
+@@ -1433,6 +1433,7 @@ static const struct of_device_id bcm_blu
{ .compatible = "brcm,bcm4330-bt" },
{ .compatible = "brcm,bcm43438-bt" },
{ .compatible = "brcm,bcm43540-bt" },
else if (hu->proto->oper_speed)
speed = hu->proto->oper_speed;
else
-@@ -1377,6 +1395,7 @@ static struct platform_driver bcm_driver
+@@ -1382,6 +1400,7 @@ static struct platform_driver bcm_driver
static int bcm_serdev_probe(struct serdev_device *serdev)
{
struct bcm_device *bcmdev;
int err;
bcmdev = devm_kzalloc(&serdev->dev, sizeof(*bcmdev), GFP_KERNEL);
-@@ -1411,6 +1430,10 @@ static int bcm_serdev_probe(struct serde
+@@ -1416,6 +1435,10 @@ static int bcm_serdev_probe(struct serde
if (err)
dev_err(&serdev->dev, "Failed to power down\n");
return hci_uart_register_device(&bcmdev->serdev_hu, &bcm_proto);
}
-@@ -1422,12 +1445,16 @@ static void bcm_serdev_remove(struct ser
+@@ -1427,12 +1450,16 @@ static void bcm_serdev_remove(struct ser
}
#ifdef CONFIG_OF
return 0;
}
-@@ -1149,6 +1162,9 @@ static int bcm_probe(struct platform_dev
- dev->dev = &pdev->dev;
- dev->irq = platform_get_irq(pdev, 0);
+@@ -1154,6 +1167,9 @@ static int bcm_probe(struct platform_dev
+
+ dev->irq = ret;
+ /* Initialize routing field to an unused value */
+ dev->pcm_int_params[0] = 0xff;
if (has_acpi_companion(&pdev->dev)) {
ret = bcm_acpi_probe(dev);
if (ret)
-@@ -1409,6 +1425,9 @@ static int bcm_serdev_probe(struct serde
+@@ -1414,6 +1430,9 @@ static int bcm_serdev_probe(struct serde
bcmdev->serdev_hu.serdev = serdev;
serdev_device_set_drvdata(serdev, bcmdev);
if (err)
goto err_unset_hu;
}
-@@ -1450,8 +1457,10 @@ static int bcm_serdev_probe(struct serde
+@@ -1455,8 +1462,10 @@ static int bcm_serdev_probe(struct serde
dev_err(&serdev->dev, "Failed to power down\n");
data = device_get_match_data(bcmdev->dev);
return hci_uart_register_device(&bcmdev->serdev_hu, &bcm_proto);
}
-@@ -1468,11 +1477,15 @@ static struct bcm_device_data bcm4354_de
+@@ -1473,11 +1482,15 @@ static struct bcm_device_data bcm4354_de
.no_early_set_baudrate = true,
};
/* Reinitialize TDMA and RDMA and SW housekeeping */
ret = bcmgenet_init_dma(priv);
-@@ -3665,7 +3673,7 @@ static int bcmgenet_resume(struct device
+@@ -3667,7 +3675,7 @@ static int bcmgenet_resume(struct device
bcmgenet_power_up(priv, GENET_POWER_WOL_MAGIC);
/* Disable RX/TX DMA and flush TX queues */
.phy_id = PHY_ID_BCM5461,
.phy_id_mask = 0xfffffff0,
.name = "Broadcom BCM5461",
-@@ -753,7 +762,8 @@ module_phy_driver(broadcom_drivers);
+@@ -754,7 +763,8 @@ module_phy_driver(broadcom_drivers);
static struct mdio_device_id __maybe_unused broadcom_tbl[] = {
{ PHY_ID_BCM5411, 0xfffffff0 },
{ PHY_ID_BCM5421, 0xfffffff0 },
}
static struct clk clk_pcie = {
-@@ -542,6 +556,21 @@ static struct clk_lookup bcm6368_clks[]
+@@ -548,6 +562,21 @@ static struct clk_lookup bcm6368_clks[]
CLKDEV_INIT(NULL, "ipsec", &clk_ipsec),
};
#define HSSPI_PLL_HZ_6328 133333333
#define HSSPI_PLL_HZ_6362 400000000
-@@ -574,6 +603,10 @@ static int __init bcm63xx_clk_init(void)
+@@ -580,6 +609,10 @@ static int __init bcm63xx_clk_init(void)
case BCM6368_CPU_ID:
clkdev_add_table(bcm6368_clks, ARRAY_SIZE(bcm6368_clks));
break;
mask = CKCTL_6328_HSSPI_EN;
else if (BCMCPU_IS_6362())
mask = CKCTL_6362_HSSPI_EN;
-@@ -450,6 +452,19 @@ static struct clk_lookup bcm3368_clks[]
+@@ -456,6 +458,19 @@ static struct clk_lookup bcm3368_clks[]
CLKDEV_INIT("bcm63xx_enet.1", "enet", &clk_enet1),
};
static struct clk_lookup bcm6328_clks[] = {
/* fixed rate clocks */
CLKDEV_INIT(NULL, "periph", &clk_periph),
-@@ -571,6 +586,7 @@ static struct clk_lookup bcm63268_clks[]
+@@ -577,6 +592,7 @@ static struct clk_lookup bcm63268_clks[]
CLKDEV_INIT(NULL, "pcie", &clk_pcie),
};
#define HSSPI_PLL_HZ_6328 133333333
#define HSSPI_PLL_HZ_6362 400000000
-@@ -580,6 +596,10 @@ static int __init bcm63xx_clk_init(void)
+@@ -586,6 +602,10 @@ static int __init bcm63xx_clk_init(void)
case BCM3368_CPU_ID:
clkdev_add_table(bcm3368_clks, ARRAY_SIZE(bcm3368_clks));
break;
--- a/arch/mips/bcm63xx/clk.c
+++ b/arch/mips/bcm63xx/clk.c
-@@ -495,6 +495,8 @@ static struct clk_lookup bcm3368_clks[]
+@@ -501,6 +501,8 @@ static struct clk_lookup bcm3368_clks[]
CLKDEV_INIT(NULL, "periph", &clk_periph),
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
/* gated clocks */
CLKDEV_INIT(NULL, "enet0", &clk_enet0),
CLKDEV_INIT(NULL, "enet1", &clk_enet1),
-@@ -511,7 +513,9 @@ static struct clk_lookup bcm6318_clks[]
+@@ -517,7 +519,9 @@ static struct clk_lookup bcm6318_clks[]
/* fixed rate clocks */
CLKDEV_INIT(NULL, "periph", &clk_periph),
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
/* gated clocks */
CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
CLKDEV_INIT(NULL, "usbh", &clk_usbh),
-@@ -525,7 +529,10 @@ static struct clk_lookup bcm6328_clks[]
+@@ -531,7 +535,10 @@ static struct clk_lookup bcm6328_clks[]
CLKDEV_INIT(NULL, "periph", &clk_periph),
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
/* gated clocks */
CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
CLKDEV_INIT(NULL, "usbh", &clk_usbh),
-@@ -538,6 +545,7 @@ static struct clk_lookup bcm6338_clks[]
+@@ -544,6 +551,7 @@ static struct clk_lookup bcm6338_clks[]
/* fixed rate clocks */
CLKDEV_INIT(NULL, "periph", &clk_periph),
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
/* gated clocks */
CLKDEV_INIT(NULL, "enet0", &clk_enet0),
CLKDEV_INIT(NULL, "enet1", &clk_enet1),
-@@ -552,6 +560,7 @@ static struct clk_lookup bcm6345_clks[]
+@@ -558,6 +566,7 @@ static struct clk_lookup bcm6345_clks[]
/* fixed rate clocks */
CLKDEV_INIT(NULL, "periph", &clk_periph),
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
/* gated clocks */
CLKDEV_INIT(NULL, "enet0", &clk_enet0),
CLKDEV_INIT(NULL, "enet1", &clk_enet1),
-@@ -566,6 +575,7 @@ static struct clk_lookup bcm6348_clks[]
+@@ -572,6 +581,7 @@ static struct clk_lookup bcm6348_clks[]
/* fixed rate clocks */
CLKDEV_INIT(NULL, "periph", &clk_periph),
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
/* gated clocks */
CLKDEV_INIT(NULL, "enet0", &clk_enet0),
CLKDEV_INIT(NULL, "enet1", &clk_enet1),
-@@ -582,6 +592,8 @@ static struct clk_lookup bcm6358_clks[]
+@@ -588,6 +598,8 @@ static struct clk_lookup bcm6358_clks[]
CLKDEV_INIT(NULL, "periph", &clk_periph),
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
/* gated clocks */
CLKDEV_INIT(NULL, "enet0", &clk_enet0),
CLKDEV_INIT(NULL, "enet1", &clk_enet1),
-@@ -601,7 +613,10 @@ static struct clk_lookup bcm6362_clks[]
+@@ -607,7 +619,10 @@ static struct clk_lookup bcm6362_clks[]
CLKDEV_INIT(NULL, "periph", &clk_periph),
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
/* gated clocks */
CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
CLKDEV_INIT(NULL, "usbh", &clk_usbh),
-@@ -617,6 +632,8 @@ static struct clk_lookup bcm6368_clks[]
+@@ -623,6 +638,8 @@ static struct clk_lookup bcm6368_clks[]
CLKDEV_INIT(NULL, "periph", &clk_periph),
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
/* gated clocks */
CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
CLKDEV_INIT(NULL, "usbh", &clk_usbh),
-@@ -631,7 +648,10 @@ static struct clk_lookup bcm63268_clks[]
+@@ -637,7 +654,10 @@ static struct clk_lookup bcm63268_clks[]
CLKDEV_INIT(NULL, "periph", &clk_periph),
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
* Internal peripheral clock
*/
static struct clk clk_periph = {
-@@ -618,6 +635,7 @@ static struct clk_lookup bcm6362_clks[]
+@@ -624,6 +641,7 @@ static struct clk_lookup bcm6362_clks[]
CLKDEV_INIT("bcm63xx-hsspi.0", "pll", &clk_hsspi_pll),
CLKDEV_INIT("10001000.spi", "pll", &clk_hsspi_pll),
/* gated clocks */
CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
CLKDEV_INIT(NULL, "usbh", &clk_usbh),
CLKDEV_INIT(NULL, "usbd", &clk_usbd),
-@@ -635,6 +653,7 @@ static struct clk_lookup bcm6368_clks[]
+@@ -641,6 +659,7 @@ static struct clk_lookup bcm6368_clks[]
CLKDEV_INIT("10000100.serial", "refclk", &clk_periph),
CLKDEV_INIT("10000120.serial", "refclk", &clk_periph),
/* gated clocks */
CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
CLKDEV_INIT(NULL, "usbh", &clk_usbh),
CLKDEV_INIT(NULL, "usbd", &clk_usbd),
-@@ -653,6 +672,7 @@ static struct clk_lookup bcm63268_clks[]
+@@ -659,6 +678,7 @@ static struct clk_lookup bcm63268_clks[]
CLKDEV_INIT("bcm63xx-hsspi.0", "pll", &clk_hsspi_pll),
CLKDEV_INIT("10001000.spi", "pll", &clk_hsspi_pll),
/* gated clocks */
--- a/drivers/net/phy/phylink.c
+++ b/drivers/net/phy/phylink.c
-@@ -565,26 +565,17 @@ static const struct sfp_upstream_ops sfp
+@@ -565,31 +565,17 @@ static const struct sfp_upstream_ops sfp
static int phylink_register_sfp(struct phylink *pl,
struct fwnode_handle *fwnode)
{
return ret;
}
+- if (!fwnode_device_is_available(ref.fwnode)) {
+- fwnode_handle_put(ref.fwnode);
+- return 0;
+- }
+-
- pl->sfp_bus = sfp_register_upstream(ref.fwnode, pl, &sfp_phylink_ops);
- if (!pl->sfp_bus)
- return -ENOMEM;
#include <linux/rtnetlink.h>
#include <linux/slab.h>
-@@ -520,45 +521,63 @@ static void sfp_upstream_clear(struct sf
+@@ -520,45 +521,68 @@ static void sfp_upstream_clear(struct sf
}
/**
+ else if (ret < 0)
+ return ERR_PTR(ret);
+
++ if (!fwnode_device_is_available(ref.fwnode)) {
++ fwnode_handle_put(ref.fwnode);
++ return NULL;
++ }
++
+ bus = sfp_bus_get(ref.fwnode);
+ fwnode_handle_put(ref.fwnode);
+ if (!bus)
{
struct fwnode_reference_args ref;
struct sfp_bus *bus;
-@@ -557,7 +563,39 @@ struct sfp_bus *sfp_register_upstream_no
+@@ -562,7 +568,39 @@ struct sfp_bus *sfp_register_upstream_no
if (!bus)
return ERR_PTR(-ENOMEM);
bus->upstream_ops = ops;
bus->upstream = upstream;
-@@ -570,33 +608,33 @@ struct sfp_bus *sfp_register_upstream_no
+@@ -575,33 +613,33 @@ struct sfp_bus *sfp_register_upstream_no
}
rtnl_unlock();
goto err;
--- a/net/core/net-procfs.c
+++ b/net/core/net-procfs.c
-@@ -279,10 +279,12 @@ static int __net_init dev_proc_net_init(
+@@ -309,10 +309,12 @@ static int __net_init dev_proc_net_init(
if (!proc_create_net("dev", 0444, net->proc_net, &dev_seq_ops,
sizeof(struct seq_net_private)))
goto out;
sizeof(struct seq_net_private)))
goto out_softnet;
-@@ -292,9 +294,11 @@ static int __net_init dev_proc_net_init(
+@@ -322,9 +324,11 @@ static int __net_init dev_proc_net_init(
out:
return rc;
out_ptype:
out_dev:
remove_proc_entry("dev", net->proc_net);
goto out;
-@@ -304,8 +308,10 @@ static void __net_exit dev_proc_net_exit
+@@ -334,8 +338,10 @@ static void __net_exit dev_proc_net_exit
{
wext_proc_exit(net);
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
-@@ -6884,7 +6884,7 @@ static void __ref alloc_node_mem_map(str
+@@ -6886,7 +6886,7 @@ static void __ref alloc_node_mem_map(str
mem_map = NODE_DATA(0)->node_mem_map;
#if defined(CONFIG_HAVE_MEMBLOCK_NODE_MAP) || defined(CONFIG_FLATMEM)
if (page_to_pfn(mem_map) != pgdat->node_start_pfn)
#define PACKET_FANOUT_LB 1
--- a/net/packet/af_packet.c
+++ b/net/packet/af_packet.c
-@@ -1797,6 +1797,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -1801,6 +1801,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
-@@ -1804,6 +1805,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -1808,6 +1809,7 @@ static int packet_rcv_spkt(struct sk_buf
*/
sk = pt->af_packet_priv;
/*
* Yank back the headers [hope the device set this
-@@ -1816,7 +1818,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -1820,7 +1822,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)))
-@@ -2054,12 +2056,12 @@ static int packet_rcv(struct sk_buff *sk
+@@ -2058,12 +2060,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;
-@@ -2185,12 +2187,12 @@ static int tpacket_rcv(struct sk_buff *s
+@@ -2189,12 +2191,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;
-@@ -3289,6 +3291,7 @@ static int packet_create(struct net *net
+@@ -3293,6 +3295,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;
-@@ -3924,6 +3927,16 @@ packet_setsockopt(struct socket *sock, i
+@@ -3930,6 +3933,16 @@ packet_setsockopt(struct socket *sock, i
po->xmit = val ? packet_direct_xmit : dev_queue_xmit;
return 0;
}
default:
return -ENOPROTOOPT;
}
-@@ -3980,6 +3993,13 @@ static int packet_getsockopt(struct sock
+@@ -3986,6 +3999,13 @@ static int packet_getsockopt(struct sock
case PACKET_VNET_HDR:
val = po->has_vnet_hdr;
break;
#define PPP_VERSION "2.4.2"
/*
-@@ -1373,12 +1378,37 @@ static void ppp_dev_priv_destructor(stru
+@@ -1378,12 +1383,37 @@ static void ppp_dev_priv_destructor(stru
ppp_destroy_interface(ppp);
}
--- a/net/ipv4/fib_semantics.c
+++ b/net/ipv4/fib_semantics.c
-@@ -141,6 +141,10 @@ const struct fib_prop fib_props[RTN_MAX
+@@ -142,6 +142,10 @@ const struct fib_prop fib_props[RTN_MAX
.error = -EINVAL,
.scope = RT_SCOPE_NOWHERE,
},
--- a/drivers/net/phy/sfp-bus.c
+++ b/drivers/net/phy/sfp-bus.c
-@@ -712,6 +712,27 @@ void sfp_module_remove(struct sfp_bus *b
+@@ -717,6 +717,27 @@ void sfp_module_remove(struct sfp_bus *b
}
EXPORT_SYMBOL_GPL(sfp_module_remove);
--- a/arch/arm/boot/compressed/head.S
+++ b/arch/arm/boot/compressed/head.S
-@@ -599,6 +599,41 @@ not_relocated: mov r0, #0
+@@ -600,6 +600,41 @@ not_relocated: mov r0, #0
bic r4, r4, #1
blne cache_on
--- a/arch/arm64/boot/dts/freescale/fsl-ls1028a-qds.dts
+++ b/arch/arm64/boot/dts/freescale/fsl-ls1028a-qds.dts
-@@ -222,6 +222,21 @@
+@@ -226,6 +226,21 @@
phy-connection-type = "rgmii-id";
};
--- a/arch/arm64/boot/dts/freescale/fsl-ls1028a-qds.dts
+++ b/arch/arm64/boot/dts/freescale/fsl-ls1028a-qds.dts
-@@ -244,3 +244,15 @@
+@@ -248,3 +248,15 @@
&sata {
status = "okay";
};
+++ /dev/null
-From d4c7270a63b1d78b89d91f74d782cce2a2bd9690 Mon Sep 17 00:00:00 2001
-From: Biwen Li <biwen.li@nxp.com>
-Date: Wed, 4 Sep 2019 11:39:30 +0800
-Subject: [PATCH] arm64: ls1028a-qds: correct bus of rtc
-
-The rtc is on i2c2 bus(hardware), not on i2c1 channel 3,
-so correct it
-
-Signed-off-by: Biwen Li <biwen.li@nxp.com>
----
- arch/arm64/boot/dts/freescale/fsl-ls1028a-qds.dts | 13 ++++++++-----
- 1 file changed, 8 insertions(+), 5 deletions(-)
-
---- a/arch/arm64/boot/dts/freescale/fsl-ls1028a-qds.dts
-+++ b/arch/arm64/boot/dts/freescale/fsl-ls1028a-qds.dts
-@@ -169,11 +169,6 @@
- vcc-supply = <&sb_3v3>;
- };
-
-- rtc@51 {
-- compatible = "nxp,pcf2129";
-- reg = <0x51>;
-- };
--
- eeprom@56 {
- compatible = "atmel,24c512";
- reg = <0x56>;
-@@ -217,6 +212,14 @@
-
- };
-
-+&i2c1 {
-+ status = "okay";
-+ rtc@51 {
-+ compatible = "nxp,pcf2129";
-+ reg = <0x51>;
-+ };
-+};
-+
- &enetc_port1 {
- phy-handle = <&qds_phy1>;
- phy-connection-type = "rgmii-id";
};
};
-@@ -259,3 +283,6 @@
+@@ -260,3 +284,6 @@
edp_num_lanes = <0x4>;
status = "okay";
};
--- a/arch/arm64/boot/dts/freescale/fsl-ls1028a-qds.dts
+++ b/arch/arm64/boot/dts/freescale/fsl-ls1028a-qds.dts
-@@ -273,14 +273,7 @@
+@@ -274,14 +274,7 @@
};
&hdptx0 {
-};
--- a/arch/arm64/boot/dts/freescale/fsl-ls1028a-qds.dts
+++ b/arch/arm64/boot/dts/freescale/fsl-ls1028a-qds.dts
-@@ -276,6 +276,3 @@
+@@ -277,6 +277,3 @@
lane-mapping = <0x4e>;
status = "okay";
};
}
/**
-@@ -3896,6 +3912,7 @@ static int cgroup_add_file(struct cgroup
+@@ -3901,6 +3917,7 @@ static int cgroup_add_file(struct cgroup
{
char name[CGROUP_FILE_NAME_MAX];
struct kernfs_node *kn;
struct lock_class_key *key = NULL;
int ret;
-@@ -3926,6 +3943,14 @@ static int cgroup_add_file(struct cgroup
+@@ -3931,6 +3948,14 @@ static int cgroup_add_file(struct cgroup
spin_unlock_irq(&cgroup_file_kn_lock);
}
}
/**
-@@ -3912,7 +3896,6 @@ static int cgroup_add_file(struct cgroup
+@@ -3917,7 +3901,6 @@ static int cgroup_add_file(struct cgroup
{
char name[CGROUP_FILE_NAME_MAX];
struct kernfs_node *kn;
struct lock_class_key *key = NULL;
int ret;
-@@ -3943,14 +3926,6 @@ static int cgroup_add_file(struct cgroup
+@@ -3948,14 +3931,6 @@ static int cgroup_add_file(struct cgroup
spin_unlock_irq(&cgroup_file_kn_lock);
}
IRQF_SHARED, dev_name(dev), pdev);
--- a/sound/soc/xilinx/xlnx_formatter_pcm.c
+++ b/sound/soc/xilinx/xlnx_formatter_pcm.c
-@@ -613,6 +613,7 @@ static int xlnx_formatter_pcm_probe(stru
+@@ -634,6 +634,7 @@ static int xlnx_formatter_pcm_probe(stru
aud_drv_data->mm2s_irq = platform_get_irq_byname(pdev,
"irq_mm2s");
if (aud_drv_data->mm2s_irq < 0) {
ret = aud_drv_data->mm2s_irq;
goto clk_err;
}
-@@ -639,6 +640,7 @@ static int xlnx_formatter_pcm_probe(stru
+@@ -660,6 +661,7 @@ static int xlnx_formatter_pcm_probe(stru
aud_drv_data->s2mm_irq = platform_get_irq_byname(pdev,
"irq_s2mm");
if (aud_drv_data->s2mm_irq < 0) {
--- a/drivers/usb/core/hcd.c
+++ b/drivers/usb/core/hcd.c
-@@ -2104,6 +2104,140 @@ int usb_hcd_get_frame_number (struct usb
+@@ -2125,6 +2125,140 @@ int usb_hcd_get_frame_number (struct usb
}
/*-------------------------------------------------------------------------*/
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
-@@ -4777,7 +4777,8 @@ hub_port_init(struct usb_hub *hub, struc
+@@ -4780,7 +4780,8 @@ hub_port_init(struct usb_hub *hub, struc
}
if (r) {
if (r != -ENODEV)
--- a/drivers/net/ethernet/xilinx/xilinx_axienet_main.c
+++ b/drivers/net/ethernet/xilinx/xilinx_axienet_main.c
-@@ -1499,9 +1499,10 @@ static void axienet_mac_link_down(struct
+@@ -1501,9 +1501,10 @@ static void axienet_mac_link_down(struct
}
static void axienet_mac_link_up(struct phylink_config *config,
/* Set to Direct mode */
reg = advk_readl(pcie, CTRL_CONFIG_REG);
reg &= ~(CTRL_MODE_MASK << CTRL_MODE_SHIFT);
-@@ -1493,6 +1502,62 @@ out_release_res:
+@@ -1495,6 +1504,62 @@ out_release_res:
return err;
}
static int advk_pcie_probe(struct platform_device *pdev)
{
struct device *dev = &pdev->dev;
-@@ -1625,6 +1690,10 @@ static int advk_pcie_probe(struct platfo
+@@ -1627,6 +1692,10 @@ static int advk_pcie_probe(struct platfo
else
pcie->link_gen = ret;
--- a/drivers/pci/controller/pci-aardvark.c
+++ b/drivers/pci/controller/pci-aardvark.c
-@@ -1526,7 +1526,9 @@ static int advk_pcie_enable_phy(struct a
+@@ -1528,7 +1528,9 @@ static int advk_pcie_enable_phy(struct a
}
ret = phy_power_on(pcie->phy);
--- a/drivers/pci/controller/pci-mvebu.c
+++ b/drivers/pci/controller/pci-mvebu.c
-@@ -936,6 +936,7 @@ static int mvebu_pcie_powerup(struct mve
+@@ -944,6 +944,7 @@ static int mvebu_pcie_powerup(struct mve
if (port->reset_gpio) {
u32 reset_udelay = PCI_PM_D3COLD_WAIT * 1000;
of_property_read_u32(port->dn, "reset-delay-us",
&reset_udelay);
-@@ -943,7 +944,13 @@ static int mvebu_pcie_powerup(struct mve
+@@ -951,7 +952,13 @@ static int mvebu_pcie_powerup(struct mve
udelay(100);
gpiod_set_value_cansleep(port->reset_gpio, 0);
}
return 0;
-@@ -1107,15 +1114,16 @@ static int mvebu_pcie_probe(struct platf
+@@ -1115,15 +1122,16 @@ static int mvebu_pcie_probe(struct platf
if (!child)
continue;
}
--- a/arch/mips/cavium-octeon/octeon-platform.c
+++ b/arch/mips/cavium-octeon/octeon-platform.c
-@@ -771,7 +771,7 @@ int __init octeon_prune_device_tree(void
+@@ -773,7 +773,7 @@ int __init octeon_prune_device_tree(void
if (fdt_check_header(initial_boot_params))
panic("Corrupt Device Tree.");
#include <linux/platform_data/x86/apple.h>
#include <linux/pm_runtime.h>
#include <linux/suspend.h>
-@@ -5790,3 +5791,34 @@ static void nvidia_ion_ahci_fixup(struct
+@@ -5793,3 +5794,34 @@ static void nvidia_ion_ahci_fixup(struct
pdev->dev_flags |= PCI_DEV_FLAGS_HAS_MSI_MASKING;
}
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_NVIDIA, 0x0ab8, nvidia_ion_ahci_fixup);
--- a/drivers/media/usb/uvc/uvc_driver.c
+++ b/drivers/media/usb/uvc/uvc_driver.c
-@@ -2916,6 +2916,18 @@ static const struct usb_device_id uvc_id
+@@ -2911,6 +2911,18 @@ static const struct usb_device_id uvc_id
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
.driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX) },
--- a/arch/x86/kernel/reboot.c
+++ b/arch/x86/kernel/reboot.c
-@@ -487,6 +487,16 @@ static const struct dmi_system_id reboot
+@@ -479,6 +479,16 @@ static const struct dmi_system_id reboot
},
},