kernel: update kernel 4.9 to version 4.9.91
* Refreshed patches. * Deleted 210-Revert-led-core-Fix-brightness-setting-when-setting-.patch (was accepted upstream) * Deleted 812-pci-dwc-fix-enumeration.patch (was accepted upstream) Compile and run tested on lantiq Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
This commit is contained in:
parent
ef6939b0af
commit
aed03d5d0f
41 changed files with 144 additions and 254 deletions
|
@ -4,12 +4,12 @@ LINUX_RELEASE?=1
|
||||||
|
|
||||||
LINUX_VERSION-3.18 = .71
|
LINUX_VERSION-3.18 = .71
|
||||||
LINUX_VERSION-4.4 = .121
|
LINUX_VERSION-4.4 = .121
|
||||||
LINUX_VERSION-4.9 = .87
|
LINUX_VERSION-4.9 = .91
|
||||||
LINUX_VERSION-4.14 = .29
|
LINUX_VERSION-4.14 = .29
|
||||||
|
|
||||||
LINUX_KERNEL_HASH-3.18.71 = 5abc9778ad44ce02ed6c8ab52ece8a21c6d20d21f6ed8a19287b4a38a50c1240
|
LINUX_KERNEL_HASH-3.18.71 = 5abc9778ad44ce02ed6c8ab52ece8a21c6d20d21f6ed8a19287b4a38a50c1240
|
||||||
LINUX_KERNEL_HASH-4.4.121 = 44a88268b5088dc326b30c9b9133ac35a9a200b636b7268d08f32abeae6ca729
|
LINUX_KERNEL_HASH-4.4.121 = 44a88268b5088dc326b30c9b9133ac35a9a200b636b7268d08f32abeae6ca729
|
||||||
LINUX_KERNEL_HASH-4.9.87 = 7ac9f6af69dc5a7e38bf35cc3fa889e3a4b22504a85f57fdc87734a8abe4c917
|
LINUX_KERNEL_HASH-4.9.91 = 60caa752ec9fa1c426f6a2f37db3f268d0961b67a723b6443949112167b39832
|
||||||
LINUX_KERNEL_HASH-4.14.29 = 18f67b70ce9922c7ef95791bfd91f46e52ee9eb3e310978bb6ef6d2e93c14619
|
LINUX_KERNEL_HASH-4.14.29 = 18f67b70ce9922c7ef95791bfd91f46e52ee9eb3e310978bb6ef6d2e93c14619
|
||||||
|
|
||||||
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
|
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
|
||||||
|
|
|
@ -19,7 +19,7 @@ Signed-off-by: Eric Anholt <eric@anholt.net>
|
||||||
|
|
||||||
--- a/drivers/clk/bcm/clk-bcm2835.c
|
--- a/drivers/clk/bcm/clk-bcm2835.c
|
||||||
+++ b/drivers/clk/bcm/clk-bcm2835.c
|
+++ b/drivers/clk/bcm/clk-bcm2835.c
|
||||||
@@ -1262,6 +1262,15 @@ static struct clk_hw *bcm2835_register_c
|
@@ -1266,6 +1266,15 @@ static struct clk_hw *bcm2835_register_c
|
||||||
init.name = data->name;
|
init.name = data->name;
|
||||||
init.flags = data->flags | CLK_IGNORE_UNUSED;
|
init.flags = data->flags | CLK_IGNORE_UNUSED;
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ Signed-off-by: Martin Sperl <kernel@martin.sperl.org>
|
||||||
|
|
||||||
--- a/drivers/clk/bcm/clk-bcm2835.c
|
--- a/drivers/clk/bcm/clk-bcm2835.c
|
||||||
+++ b/drivers/clk/bcm/clk-bcm2835.c
|
+++ b/drivers/clk/bcm/clk-bcm2835.c
|
||||||
@@ -1903,8 +1903,15 @@ static int bcm2835_clk_probe(struct plat
|
@@ -1907,8 +1907,15 @@ static int bcm2835_clk_probe(struct plat
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ Signed-off-by: Martin Sperl <kernel@martin.sperl.org>
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct of_device_id bcm2835_clk_of_match[] = {
|
static const struct of_device_id bcm2835_clk_of_match[] = {
|
||||||
@@ -1921,7 +1928,11 @@ static struct platform_driver bcm2835_cl
|
@@ -1925,7 +1932,11 @@ static struct platform_driver bcm2835_cl
|
||||||
.probe = bcm2835_clk_probe,
|
.probe = bcm2835_clk_probe,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -707,7 +707,7 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||||
msleep(100); /* Cool down */
|
msleep(100); /* Cool down */
|
||||||
--- a/drivers/usb/core/message.c
|
--- a/drivers/usb/core/message.c
|
||||||
+++ b/drivers/usb/core/message.c
|
+++ b/drivers/usb/core/message.c
|
||||||
@@ -1908,6 +1908,85 @@ free_interfaces:
|
@@ -1912,6 +1912,85 @@ free_interfaces:
|
||||||
if (cp->string == NULL &&
|
if (cp->string == NULL &&
|
||||||
!(dev->quirks & USB_QUIRK_CONFIG_INTF_STRINGS))
|
!(dev->quirks & USB_QUIRK_CONFIG_INTF_STRINGS))
|
||||||
cp->string = usb_cache_string(dev, cp->desc.iConfiguration);
|
cp->string = usb_cache_string(dev, cp->desc.iConfiguration);
|
||||||
|
|
|
@ -14,7 +14,7 @@ use the same logic.
|
||||||
|
|
||||||
--- a/drivers/tty/serial/amba-pl011.c
|
--- a/drivers/tty/serial/amba-pl011.c
|
||||||
+++ b/drivers/tty/serial/amba-pl011.c
|
+++ b/drivers/tty/serial/amba-pl011.c
|
||||||
@@ -2441,7 +2441,12 @@ static int pl011_setup_port(struct devic
|
@@ -2446,7 +2446,12 @@ static int pl011_setup_port(struct devic
|
||||||
if (IS_ERR(base))
|
if (IS_ERR(base))
|
||||||
return PTR_ERR(base);
|
return PTR_ERR(base);
|
||||||
|
|
||||||
|
|
|
@ -39,7 +39,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||||
|
|
||||||
--- a/drivers/usb/dwc2/hcd.c
|
--- a/drivers/usb/dwc2/hcd.c
|
||||||
+++ b/drivers/usb/dwc2/hcd.c
|
+++ b/drivers/usb/dwc2/hcd.c
|
||||||
@@ -4365,6 +4365,9 @@ static int _dwc2_hcd_suspend(struct usb_
|
@@ -4366,6 +4366,9 @@ static int _dwc2_hcd_suspend(struct usb_
|
||||||
if (!HCD_HW_ACCESSIBLE(hcd))
|
if (!HCD_HW_ACCESSIBLE(hcd))
|
||||||
goto unlock;
|
goto unlock;
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,7 @@ Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
|
||||||
u32 ctl_reg;
|
u32 ctl_reg;
|
||||||
u32 div_reg;
|
u32 div_reg;
|
||||||
|
|
||||||
@@ -1017,10 +1020,60 @@ bcm2835_clk_is_pllc(struct clk_hw *hw)
|
@@ -1021,10 +1024,60 @@ bcm2835_clk_is_pllc(struct clk_hw *hw)
|
||||||
return strncmp(clk_hw_get_name(hw), "pllc", 4) == 0;
|
return strncmp(clk_hw_get_name(hw), "pllc", 4) == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -96,7 +96,7 @@ Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
|
||||||
struct clk_hw *parent, *best_parent = NULL;
|
struct clk_hw *parent, *best_parent = NULL;
|
||||||
bool current_parent_is_pllc;
|
bool current_parent_is_pllc;
|
||||||
unsigned long rate, best_rate = 0;
|
unsigned long rate, best_rate = 0;
|
||||||
@@ -1048,9 +1101,8 @@ static int bcm2835_clock_determine_rate(
|
@@ -1052,9 +1105,8 @@ static int bcm2835_clock_determine_rate(
|
||||||
if (bcm2835_clk_is_pllc(parent) && !current_parent_is_pllc)
|
if (bcm2835_clk_is_pllc(parent) && !current_parent_is_pllc)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
@ -108,7 +108,7 @@ Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
|
||||||
if (rate > best_rate && rate <= req->rate) {
|
if (rate > best_rate && rate <= req->rate) {
|
||||||
best_parent = parent;
|
best_parent = parent;
|
||||||
best_prate = prate;
|
best_prate = prate;
|
||||||
@@ -1271,6 +1323,13 @@ static struct clk_hw *bcm2835_register_c
|
@@ -1275,6 +1327,13 @@ static struct clk_hw *bcm2835_register_c
|
||||||
if ((cprman_read(cprman, data->ctl_reg) & CM_ENABLE) == 0)
|
if ((cprman_read(cprman, data->ctl_reg) & CM_ENABLE) == 0)
|
||||||
init.flags &= ~CLK_IS_CRITICAL;
|
init.flags &= ~CLK_IS_CRITICAL;
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,7 @@ Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
|
||||||
|
|
||||||
--- a/drivers/clk/bcm/clk-bcm2835.c
|
--- a/drivers/clk/bcm/clk-bcm2835.c
|
||||||
+++ b/drivers/clk/bcm/clk-bcm2835.c
|
+++ b/drivers/clk/bcm/clk-bcm2835.c
|
||||||
@@ -1870,7 +1870,12 @@ static const struct bcm2835_clk_desc clk
|
@@ -1874,7 +1874,12 @@ static const struct bcm2835_clk_desc clk
|
||||||
.ctl_reg = CM_VECCTL,
|
.ctl_reg = CM_VECCTL,
|
||||||
.div_reg = CM_VECDIV,
|
.div_reg = CM_VECDIV,
|
||||||
.int_bits = 4,
|
.int_bits = 4,
|
||||||
|
|
|
@ -18,7 +18,7 @@ Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
|
||||||
|
|
||||||
--- a/drivers/clk/bcm/clk-bcm2835.c
|
--- a/drivers/clk/bcm/clk-bcm2835.c
|
||||||
+++ b/drivers/clk/bcm/clk-bcm2835.c
|
+++ b/drivers/clk/bcm/clk-bcm2835.c
|
||||||
@@ -1029,7 +1029,7 @@ static unsigned long bcm2835_clock_choos
|
@@ -1033,7 +1033,7 @@ static unsigned long bcm2835_clock_choos
|
||||||
struct bcm2835_clock *clock = bcm2835_clock_from_hw(hw);
|
struct bcm2835_clock *clock = bcm2835_clock_from_hw(hw);
|
||||||
struct bcm2835_cprman *cprman = clock->cprman;
|
struct bcm2835_cprman *cprman = clock->cprman;
|
||||||
const struct bcm2835_clock_data *data = clock->data;
|
const struct bcm2835_clock_data *data = clock->data;
|
||||||
|
|
|
@ -31,7 +31,7 @@ Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
|
||||||
};
|
};
|
||||||
|
|
||||||
struct bcm2835_clock_data {
|
struct bcm2835_clock_data {
|
||||||
@@ -1252,7 +1253,7 @@ bcm2835_register_pll_divider(struct bcm2
|
@@ -1256,7 +1257,7 @@ bcm2835_register_pll_divider(struct bcm2
|
||||||
init.num_parents = 1;
|
init.num_parents = 1;
|
||||||
init.name = divider_name;
|
init.name = divider_name;
|
||||||
init.ops = &bcm2835_pll_divider_clk_ops;
|
init.ops = &bcm2835_pll_divider_clk_ops;
|
||||||
|
@ -40,7 +40,7 @@ Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
|
||||||
|
|
||||||
divider = devm_kzalloc(cprman->dev, sizeof(*divider), GFP_KERNEL);
|
divider = devm_kzalloc(cprman->dev, sizeof(*divider), GFP_KERNEL);
|
||||||
if (!divider)
|
if (!divider)
|
||||||
@@ -1475,7 +1476,8 @@ static const struct bcm2835_clk_desc clk
|
@@ -1479,7 +1480,8 @@ static const struct bcm2835_clk_desc clk
|
||||||
.a2w_reg = A2W_PLLA_CORE,
|
.a2w_reg = A2W_PLLA_CORE,
|
||||||
.load_mask = CM_PLLA_LOADCORE,
|
.load_mask = CM_PLLA_LOADCORE,
|
||||||
.hold_mask = CM_PLLA_HOLDCORE,
|
.hold_mask = CM_PLLA_HOLDCORE,
|
||||||
|
@ -50,7 +50,7 @@ Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
|
||||||
[BCM2835_PLLA_PER] = REGISTER_PLL_DIV(
|
[BCM2835_PLLA_PER] = REGISTER_PLL_DIV(
|
||||||
.name = "plla_per",
|
.name = "plla_per",
|
||||||
.source_pll = "plla",
|
.source_pll = "plla",
|
||||||
@@ -1483,7 +1485,8 @@ static const struct bcm2835_clk_desc clk
|
@@ -1487,7 +1489,8 @@ static const struct bcm2835_clk_desc clk
|
||||||
.a2w_reg = A2W_PLLA_PER,
|
.a2w_reg = A2W_PLLA_PER,
|
||||||
.load_mask = CM_PLLA_LOADPER,
|
.load_mask = CM_PLLA_LOADPER,
|
||||||
.hold_mask = CM_PLLA_HOLDPER,
|
.hold_mask = CM_PLLA_HOLDPER,
|
||||||
|
@ -60,7 +60,7 @@ Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
|
||||||
[BCM2835_PLLA_DSI0] = REGISTER_PLL_DIV(
|
[BCM2835_PLLA_DSI0] = REGISTER_PLL_DIV(
|
||||||
.name = "plla_dsi0",
|
.name = "plla_dsi0",
|
||||||
.source_pll = "plla",
|
.source_pll = "plla",
|
||||||
@@ -1499,7 +1502,8 @@ static const struct bcm2835_clk_desc clk
|
@@ -1503,7 +1506,8 @@ static const struct bcm2835_clk_desc clk
|
||||||
.a2w_reg = A2W_PLLA_CCP2,
|
.a2w_reg = A2W_PLLA_CCP2,
|
||||||
.load_mask = CM_PLLA_LOADCCP2,
|
.load_mask = CM_PLLA_LOADCCP2,
|
||||||
.hold_mask = CM_PLLA_HOLDCCP2,
|
.hold_mask = CM_PLLA_HOLDCCP2,
|
||||||
|
@ -70,7 +70,7 @@ Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
|
||||||
|
|
||||||
/* PLLB is used for the ARM's clock. */
|
/* PLLB is used for the ARM's clock. */
|
||||||
[BCM2835_PLLB] = REGISTER_PLL(
|
[BCM2835_PLLB] = REGISTER_PLL(
|
||||||
@@ -1523,7 +1527,8 @@ static const struct bcm2835_clk_desc clk
|
@@ -1527,7 +1531,8 @@ static const struct bcm2835_clk_desc clk
|
||||||
.a2w_reg = A2W_PLLB_ARM,
|
.a2w_reg = A2W_PLLB_ARM,
|
||||||
.load_mask = CM_PLLB_LOADARM,
|
.load_mask = CM_PLLB_LOADARM,
|
||||||
.hold_mask = CM_PLLB_HOLDARM,
|
.hold_mask = CM_PLLB_HOLDARM,
|
||||||
|
@ -80,7 +80,7 @@ Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* PLLC is the core PLL, used to drive the core VPU clock.
|
* PLLC is the core PLL, used to drive the core VPU clock.
|
||||||
@@ -1552,7 +1557,8 @@ static const struct bcm2835_clk_desc clk
|
@@ -1556,7 +1561,8 @@ static const struct bcm2835_clk_desc clk
|
||||||
.a2w_reg = A2W_PLLC_CORE0,
|
.a2w_reg = A2W_PLLC_CORE0,
|
||||||
.load_mask = CM_PLLC_LOADCORE0,
|
.load_mask = CM_PLLC_LOADCORE0,
|
||||||
.hold_mask = CM_PLLC_HOLDCORE0,
|
.hold_mask = CM_PLLC_HOLDCORE0,
|
||||||
|
@ -90,7 +90,7 @@ Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
|
||||||
[BCM2835_PLLC_CORE1] = REGISTER_PLL_DIV(
|
[BCM2835_PLLC_CORE1] = REGISTER_PLL_DIV(
|
||||||
.name = "pllc_core1",
|
.name = "pllc_core1",
|
||||||
.source_pll = "pllc",
|
.source_pll = "pllc",
|
||||||
@@ -1560,7 +1566,8 @@ static const struct bcm2835_clk_desc clk
|
@@ -1564,7 +1570,8 @@ static const struct bcm2835_clk_desc clk
|
||||||
.a2w_reg = A2W_PLLC_CORE1,
|
.a2w_reg = A2W_PLLC_CORE1,
|
||||||
.load_mask = CM_PLLC_LOADCORE1,
|
.load_mask = CM_PLLC_LOADCORE1,
|
||||||
.hold_mask = CM_PLLC_HOLDCORE1,
|
.hold_mask = CM_PLLC_HOLDCORE1,
|
||||||
|
@ -100,7 +100,7 @@ Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
|
||||||
[BCM2835_PLLC_CORE2] = REGISTER_PLL_DIV(
|
[BCM2835_PLLC_CORE2] = REGISTER_PLL_DIV(
|
||||||
.name = "pllc_core2",
|
.name = "pllc_core2",
|
||||||
.source_pll = "pllc",
|
.source_pll = "pllc",
|
||||||
@@ -1568,7 +1575,8 @@ static const struct bcm2835_clk_desc clk
|
@@ -1572,7 +1579,8 @@ static const struct bcm2835_clk_desc clk
|
||||||
.a2w_reg = A2W_PLLC_CORE2,
|
.a2w_reg = A2W_PLLC_CORE2,
|
||||||
.load_mask = CM_PLLC_LOADCORE2,
|
.load_mask = CM_PLLC_LOADCORE2,
|
||||||
.hold_mask = CM_PLLC_HOLDCORE2,
|
.hold_mask = CM_PLLC_HOLDCORE2,
|
||||||
|
@ -110,7 +110,7 @@ Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
|
||||||
[BCM2835_PLLC_PER] = REGISTER_PLL_DIV(
|
[BCM2835_PLLC_PER] = REGISTER_PLL_DIV(
|
||||||
.name = "pllc_per",
|
.name = "pllc_per",
|
||||||
.source_pll = "pllc",
|
.source_pll = "pllc",
|
||||||
@@ -1576,7 +1584,8 @@ static const struct bcm2835_clk_desc clk
|
@@ -1580,7 +1588,8 @@ static const struct bcm2835_clk_desc clk
|
||||||
.a2w_reg = A2W_PLLC_PER,
|
.a2w_reg = A2W_PLLC_PER,
|
||||||
.load_mask = CM_PLLC_LOADPER,
|
.load_mask = CM_PLLC_LOADPER,
|
||||||
.hold_mask = CM_PLLC_HOLDPER,
|
.hold_mask = CM_PLLC_HOLDPER,
|
||||||
|
@ -120,7 +120,7 @@ Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* PLLD is the display PLL, used to drive DSI display panels.
|
* PLLD is the display PLL, used to drive DSI display panels.
|
||||||
@@ -1605,7 +1614,8 @@ static const struct bcm2835_clk_desc clk
|
@@ -1609,7 +1618,8 @@ static const struct bcm2835_clk_desc clk
|
||||||
.a2w_reg = A2W_PLLD_CORE,
|
.a2w_reg = A2W_PLLD_CORE,
|
||||||
.load_mask = CM_PLLD_LOADCORE,
|
.load_mask = CM_PLLD_LOADCORE,
|
||||||
.hold_mask = CM_PLLD_HOLDCORE,
|
.hold_mask = CM_PLLD_HOLDCORE,
|
||||||
|
@ -130,7 +130,7 @@ Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
|
||||||
[BCM2835_PLLD_PER] = REGISTER_PLL_DIV(
|
[BCM2835_PLLD_PER] = REGISTER_PLL_DIV(
|
||||||
.name = "plld_per",
|
.name = "plld_per",
|
||||||
.source_pll = "plld",
|
.source_pll = "plld",
|
||||||
@@ -1613,7 +1623,8 @@ static const struct bcm2835_clk_desc clk
|
@@ -1617,7 +1627,8 @@ static const struct bcm2835_clk_desc clk
|
||||||
.a2w_reg = A2W_PLLD_PER,
|
.a2w_reg = A2W_PLLD_PER,
|
||||||
.load_mask = CM_PLLD_LOADPER,
|
.load_mask = CM_PLLD_LOADPER,
|
||||||
.hold_mask = CM_PLLD_HOLDPER,
|
.hold_mask = CM_PLLD_HOLDPER,
|
||||||
|
@ -140,7 +140,7 @@ Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
|
||||||
[BCM2835_PLLD_DSI0] = REGISTER_PLL_DIV(
|
[BCM2835_PLLD_DSI0] = REGISTER_PLL_DIV(
|
||||||
.name = "plld_dsi0",
|
.name = "plld_dsi0",
|
||||||
.source_pll = "plld",
|
.source_pll = "plld",
|
||||||
@@ -1658,7 +1669,8 @@ static const struct bcm2835_clk_desc clk
|
@@ -1662,7 +1673,8 @@ static const struct bcm2835_clk_desc clk
|
||||||
.a2w_reg = A2W_PLLH_RCAL,
|
.a2w_reg = A2W_PLLH_RCAL,
|
||||||
.load_mask = CM_PLLH_LOADRCAL,
|
.load_mask = CM_PLLH_LOADRCAL,
|
||||||
.hold_mask = 0,
|
.hold_mask = 0,
|
||||||
|
@ -150,7 +150,7 @@ Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
|
||||||
[BCM2835_PLLH_AUX] = REGISTER_PLL_DIV(
|
[BCM2835_PLLH_AUX] = REGISTER_PLL_DIV(
|
||||||
.name = "pllh_aux",
|
.name = "pllh_aux",
|
||||||
.source_pll = "pllh",
|
.source_pll = "pllh",
|
||||||
@@ -1666,7 +1678,8 @@ static const struct bcm2835_clk_desc clk
|
@@ -1670,7 +1682,8 @@ static const struct bcm2835_clk_desc clk
|
||||||
.a2w_reg = A2W_PLLH_AUX,
|
.a2w_reg = A2W_PLLH_AUX,
|
||||||
.load_mask = CM_PLLH_LOADAUX,
|
.load_mask = CM_PLLH_LOADAUX,
|
||||||
.hold_mask = 0,
|
.hold_mask = 0,
|
||||||
|
@ -160,7 +160,7 @@ Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
|
||||||
[BCM2835_PLLH_PIX] = REGISTER_PLL_DIV(
|
[BCM2835_PLLH_PIX] = REGISTER_PLL_DIV(
|
||||||
.name = "pllh_pix",
|
.name = "pllh_pix",
|
||||||
.source_pll = "pllh",
|
.source_pll = "pllh",
|
||||||
@@ -1674,7 +1687,8 @@ static const struct bcm2835_clk_desc clk
|
@@ -1678,7 +1691,8 @@ static const struct bcm2835_clk_desc clk
|
||||||
.a2w_reg = A2W_PLLH_PIX,
|
.a2w_reg = A2W_PLLH_PIX,
|
||||||
.load_mask = CM_PLLH_LOADPIX,
|
.load_mask = CM_PLLH_LOADPIX,
|
||||||
.hold_mask = 0,
|
.hold_mask = 0,
|
||||||
|
|
|
@ -76,7 +76,7 @@ Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
|
||||||
|
|
||||||
/* Must be last */
|
/* Must be last */
|
||||||
struct clk_hw_onecell_data onecell;
|
struct clk_hw_onecell_data onecell;
|
||||||
@@ -907,6 +928,9 @@ static long bcm2835_clock_rate_from_divi
|
@@ -911,6 +932,9 @@ static long bcm2835_clock_rate_from_divi
|
||||||
const struct bcm2835_clock_data *data = clock->data;
|
const struct bcm2835_clock_data *data = clock->data;
|
||||||
u64 temp;
|
u64 temp;
|
||||||
|
|
||||||
|
@ -86,7 +86,7 @@ Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
|
||||||
/*
|
/*
|
||||||
* The divisor is a 12.12 fixed point field, but only some of
|
* The divisor is a 12.12 fixed point field, but only some of
|
||||||
* the bits are populated in any given clock.
|
* the bits are populated in any given clock.
|
||||||
@@ -930,7 +954,12 @@ static unsigned long bcm2835_clock_get_r
|
@@ -934,7 +958,12 @@ static unsigned long bcm2835_clock_get_r
|
||||||
struct bcm2835_clock *clock = bcm2835_clock_from_hw(hw);
|
struct bcm2835_clock *clock = bcm2835_clock_from_hw(hw);
|
||||||
struct bcm2835_cprman *cprman = clock->cprman;
|
struct bcm2835_cprman *cprman = clock->cprman;
|
||||||
const struct bcm2835_clock_data *data = clock->data;
|
const struct bcm2835_clock_data *data = clock->data;
|
||||||
|
@ -100,7 +100,7 @@ Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
|
||||||
|
|
||||||
return bcm2835_clock_rate_from_divisor(clock, parent_rate, div);
|
return bcm2835_clock_rate_from_divisor(clock, parent_rate, div);
|
||||||
}
|
}
|
||||||
@@ -1209,7 +1238,7 @@ static struct clk_hw *bcm2835_register_p
|
@@ -1213,7 +1242,7 @@ static struct clk_hw *bcm2835_register_p
|
||||||
memset(&init, 0, sizeof(init));
|
memset(&init, 0, sizeof(init));
|
||||||
|
|
||||||
/* All of the PLLs derive from the external oscillator. */
|
/* All of the PLLs derive from the external oscillator. */
|
||||||
|
@ -109,7 +109,7 @@ Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
|
||||||
init.num_parents = 1;
|
init.num_parents = 1;
|
||||||
init.name = data->name;
|
init.name = data->name;
|
||||||
init.ops = &bcm2835_pll_clk_ops;
|
init.ops = &bcm2835_pll_clk_ops;
|
||||||
@@ -1295,18 +1324,22 @@ static struct clk_hw *bcm2835_register_c
|
@@ -1299,18 +1328,22 @@ static struct clk_hw *bcm2835_register_c
|
||||||
struct bcm2835_clock *clock;
|
struct bcm2835_clock *clock;
|
||||||
struct clk_init_data init;
|
struct clk_init_data init;
|
||||||
const char *parents[1 << CM_SRC_BITS];
|
const char *parents[1 << CM_SRC_BITS];
|
||||||
|
@ -139,7 +139,7 @@ Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
|
||||||
}
|
}
|
||||||
|
|
||||||
memset(&init, 0, sizeof(init));
|
memset(&init, 0, sizeof(init));
|
||||||
@@ -1442,6 +1475,47 @@ static const char *const bcm2835_clock_v
|
@@ -1446,6 +1479,47 @@ static const char *const bcm2835_clock_v
|
||||||
__VA_ARGS__)
|
__VA_ARGS__)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -187,7 +187,7 @@ Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
|
||||||
* the real definition of all the pll, pll_dividers and clocks
|
* the real definition of all the pll, pll_dividers and clocks
|
||||||
* these make use of the above REGISTER_* macros
|
* these make use of the above REGISTER_* macros
|
||||||
*/
|
*/
|
||||||
@@ -1904,6 +1978,18 @@ static const struct bcm2835_clk_desc clk
|
@@ -1908,6 +1982,18 @@ static const struct bcm2835_clk_desc clk
|
||||||
.div_reg = CM_DSI1EDIV,
|
.div_reg = CM_DSI1EDIV,
|
||||||
.int_bits = 4,
|
.int_bits = 4,
|
||||||
.frac_bits = 8),
|
.frac_bits = 8),
|
||||||
|
@ -206,7 +206,7 @@ Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
|
||||||
|
|
||||||
/* the gates */
|
/* the gates */
|
||||||
|
|
||||||
@@ -1962,8 +2048,19 @@ static int bcm2835_clk_probe(struct plat
|
@@ -1966,8 +2052,19 @@ static int bcm2835_clk_probe(struct plat
|
||||||
if (IS_ERR(cprman->regs))
|
if (IS_ERR(cprman->regs))
|
||||||
return PTR_ERR(cprman->regs);
|
return PTR_ERR(cprman->regs);
|
||||||
|
|
||||||
|
|
|
@ -107,7 +107,7 @@ Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
|
||||||
};
|
};
|
||||||
|
|
||||||
struct bcm2835_gate_data {
|
struct bcm2835_gate_data {
|
||||||
@@ -1008,6 +1067,17 @@ static int bcm2835_clock_on(struct clk_h
|
@@ -1012,6 +1071,17 @@ static int bcm2835_clock_on(struct clk_h
|
||||||
CM_GATE);
|
CM_GATE);
|
||||||
spin_unlock(&cprman->regs_lock);
|
spin_unlock(&cprman->regs_lock);
|
||||||
|
|
||||||
|
@ -125,7 +125,7 @@ Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1774,7 +1844,8 @@ static const struct bcm2835_clk_desc clk
|
@@ -1778,7 +1848,8 @@ static const struct bcm2835_clk_desc clk
|
||||||
.ctl_reg = CM_OTPCTL,
|
.ctl_reg = CM_OTPCTL,
|
||||||
.div_reg = CM_OTPDIV,
|
.div_reg = CM_OTPDIV,
|
||||||
.int_bits = 4,
|
.int_bits = 4,
|
||||||
|
@ -135,7 +135,7 @@ Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
|
||||||
/*
|
/*
|
||||||
* Used for a 1Mhz clock for the system clocksource, and also used
|
* Used for a 1Mhz clock for the system clocksource, and also used
|
||||||
* bythe watchdog timer and the camera pulse generator.
|
* bythe watchdog timer and the camera pulse generator.
|
||||||
@@ -1808,13 +1879,15 @@ static const struct bcm2835_clk_desc clk
|
@@ -1812,13 +1883,15 @@ static const struct bcm2835_clk_desc clk
|
||||||
.ctl_reg = CM_H264CTL,
|
.ctl_reg = CM_H264CTL,
|
||||||
.div_reg = CM_H264DIV,
|
.div_reg = CM_H264DIV,
|
||||||
.int_bits = 4,
|
.int_bits = 4,
|
||||||
|
@ -153,7 +153,7 @@ Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Secondary SDRAM clock. Used for low-voltage modes when the PLL
|
* Secondary SDRAM clock. Used for low-voltage modes when the PLL
|
||||||
@@ -1825,13 +1898,15 @@ static const struct bcm2835_clk_desc clk
|
@@ -1829,13 +1902,15 @@ static const struct bcm2835_clk_desc clk
|
||||||
.ctl_reg = CM_SDCCTL,
|
.ctl_reg = CM_SDCCTL,
|
||||||
.div_reg = CM_SDCDIV,
|
.div_reg = CM_SDCDIV,
|
||||||
.int_bits = 6,
|
.int_bits = 6,
|
||||||
|
@ -171,7 +171,7 @@ Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
|
||||||
/*
|
/*
|
||||||
* VPU clock. This doesn't have an enable bit, since it drives
|
* VPU clock. This doesn't have an enable bit, since it drives
|
||||||
* the bus for everything else, and is special so it doesn't need
|
* the bus for everything else, and is special so it doesn't need
|
||||||
@@ -1845,7 +1920,8 @@ static const struct bcm2835_clk_desc clk
|
@@ -1849,7 +1924,8 @@ static const struct bcm2835_clk_desc clk
|
||||||
.int_bits = 12,
|
.int_bits = 12,
|
||||||
.frac_bits = 8,
|
.frac_bits = 8,
|
||||||
.flags = CLK_IS_CRITICAL,
|
.flags = CLK_IS_CRITICAL,
|
||||||
|
@ -181,7 +181,7 @@ Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
|
||||||
|
|
||||||
/* clocks with per parent mux */
|
/* clocks with per parent mux */
|
||||||
[BCM2835_CLOCK_AVEO] = REGISTER_PER_CLK(
|
[BCM2835_CLOCK_AVEO] = REGISTER_PER_CLK(
|
||||||
@@ -1853,19 +1929,22 @@ static const struct bcm2835_clk_desc clk
|
@@ -1857,19 +1933,22 @@ static const struct bcm2835_clk_desc clk
|
||||||
.ctl_reg = CM_AVEOCTL,
|
.ctl_reg = CM_AVEOCTL,
|
||||||
.div_reg = CM_AVEODIV,
|
.div_reg = CM_AVEODIV,
|
||||||
.int_bits = 4,
|
.int_bits = 4,
|
||||||
|
@ -207,7 +207,7 @@ Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
|
||||||
[BCM2835_CLOCK_DFT] = REGISTER_PER_CLK(
|
[BCM2835_CLOCK_DFT] = REGISTER_PER_CLK(
|
||||||
.name = "dft",
|
.name = "dft",
|
||||||
.ctl_reg = CM_DFTCTL,
|
.ctl_reg = CM_DFTCTL,
|
||||||
@@ -1877,7 +1956,8 @@ static const struct bcm2835_clk_desc clk
|
@@ -1881,7 +1960,8 @@ static const struct bcm2835_clk_desc clk
|
||||||
.ctl_reg = CM_DPICTL,
|
.ctl_reg = CM_DPICTL,
|
||||||
.div_reg = CM_DPIDIV,
|
.div_reg = CM_DPIDIV,
|
||||||
.int_bits = 4,
|
.int_bits = 4,
|
||||||
|
@ -217,7 +217,7 @@ Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
|
||||||
|
|
||||||
/* Arasan EMMC clock */
|
/* Arasan EMMC clock */
|
||||||
[BCM2835_CLOCK_EMMC] = REGISTER_PER_CLK(
|
[BCM2835_CLOCK_EMMC] = REGISTER_PER_CLK(
|
||||||
@@ -1885,7 +1965,8 @@ static const struct bcm2835_clk_desc clk
|
@@ -1889,7 +1969,8 @@ static const struct bcm2835_clk_desc clk
|
||||||
.ctl_reg = CM_EMMCCTL,
|
.ctl_reg = CM_EMMCCTL,
|
||||||
.div_reg = CM_EMMCDIV,
|
.div_reg = CM_EMMCDIV,
|
||||||
.int_bits = 4,
|
.int_bits = 4,
|
||||||
|
@ -227,7 +227,7 @@ Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
|
||||||
|
|
||||||
/* General purpose (GPIO) clocks */
|
/* General purpose (GPIO) clocks */
|
||||||
[BCM2835_CLOCK_GP0] = REGISTER_PER_CLK(
|
[BCM2835_CLOCK_GP0] = REGISTER_PER_CLK(
|
||||||
@@ -1894,7 +1975,8 @@ static const struct bcm2835_clk_desc clk
|
@@ -1898,7 +1979,8 @@ static const struct bcm2835_clk_desc clk
|
||||||
.div_reg = CM_GP0DIV,
|
.div_reg = CM_GP0DIV,
|
||||||
.int_bits = 12,
|
.int_bits = 12,
|
||||||
.frac_bits = 12,
|
.frac_bits = 12,
|
||||||
|
@ -237,7 +237,7 @@ Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
|
||||||
[BCM2835_CLOCK_GP1] = REGISTER_PER_CLK(
|
[BCM2835_CLOCK_GP1] = REGISTER_PER_CLK(
|
||||||
.name = "gp1",
|
.name = "gp1",
|
||||||
.ctl_reg = CM_GP1CTL,
|
.ctl_reg = CM_GP1CTL,
|
||||||
@@ -1902,7 +1984,8 @@ static const struct bcm2835_clk_desc clk
|
@@ -1906,7 +1988,8 @@ static const struct bcm2835_clk_desc clk
|
||||||
.int_bits = 12,
|
.int_bits = 12,
|
||||||
.frac_bits = 12,
|
.frac_bits = 12,
|
||||||
.flags = CLK_IS_CRITICAL,
|
.flags = CLK_IS_CRITICAL,
|
||||||
|
@ -247,7 +247,7 @@ Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
|
||||||
[BCM2835_CLOCK_GP2] = REGISTER_PER_CLK(
|
[BCM2835_CLOCK_GP2] = REGISTER_PER_CLK(
|
||||||
.name = "gp2",
|
.name = "gp2",
|
||||||
.ctl_reg = CM_GP2CTL,
|
.ctl_reg = CM_GP2CTL,
|
||||||
@@ -1917,40 +2000,46 @@ static const struct bcm2835_clk_desc clk
|
@@ -1921,40 +2004,46 @@ static const struct bcm2835_clk_desc clk
|
||||||
.ctl_reg = CM_HSMCTL,
|
.ctl_reg = CM_HSMCTL,
|
||||||
.div_reg = CM_HSMDIV,
|
.div_reg = CM_HSMDIV,
|
||||||
.int_bits = 4,
|
.int_bits = 4,
|
||||||
|
@ -300,7 +300,7 @@ Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
|
||||||
|
|
||||||
/* TV encoder clock. Only operating frequency is 108Mhz. */
|
/* TV encoder clock. Only operating frequency is 108Mhz. */
|
||||||
[BCM2835_CLOCK_VEC] = REGISTER_PER_CLK(
|
[BCM2835_CLOCK_VEC] = REGISTER_PER_CLK(
|
||||||
@@ -1963,7 +2052,8 @@ static const struct bcm2835_clk_desc clk
|
@@ -1967,7 +2056,8 @@ static const struct bcm2835_clk_desc clk
|
||||||
* Allow rate change propagation only on PLLH_AUX which is
|
* Allow rate change propagation only on PLLH_AUX which is
|
||||||
* assigned index 7 in the parent array.
|
* assigned index 7 in the parent array.
|
||||||
*/
|
*/
|
||||||
|
@ -310,7 +310,7 @@ Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
|
||||||
|
|
||||||
/* dsi clocks */
|
/* dsi clocks */
|
||||||
[BCM2835_CLOCK_DSI0E] = REGISTER_PER_CLK(
|
[BCM2835_CLOCK_DSI0E] = REGISTER_PER_CLK(
|
||||||
@@ -1971,25 +2061,29 @@ static const struct bcm2835_clk_desc clk
|
@@ -1975,25 +2065,29 @@ static const struct bcm2835_clk_desc clk
|
||||||
.ctl_reg = CM_DSI0ECTL,
|
.ctl_reg = CM_DSI0ECTL,
|
||||||
.div_reg = CM_DSI0EDIV,
|
.div_reg = CM_DSI0EDIV,
|
||||||
.int_bits = 4,
|
.int_bits = 4,
|
||||||
|
|
|
@ -14,7 +14,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||||
|
|
||||||
--- a/drivers/clk/bcm/clk-bcm2835.c
|
--- a/drivers/clk/bcm/clk-bcm2835.c
|
||||||
+++ b/drivers/clk/bcm/clk-bcm2835.c
|
+++ b/drivers/clk/bcm/clk-bcm2835.c
|
||||||
@@ -1366,6 +1366,11 @@ bcm2835_register_pll_divider(struct bcm2
|
@@ -1370,6 +1370,11 @@ bcm2835_register_pll_divider(struct bcm2
|
||||||
divider->div.hw.init = &init;
|
divider->div.hw.init = &init;
|
||||||
divider->div.table = NULL;
|
divider->div.table = NULL;
|
||||||
|
|
||||||
|
|
|
@ -48,7 +48,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||||
cma-192 = <0>,"-0+1-2-3-4";
|
cma-192 = <0>,"-0+1-2-3-4";
|
||||||
--- a/drivers/clk/bcm/clk-bcm2835.c
|
--- a/drivers/clk/bcm/clk-bcm2835.c
|
||||||
+++ b/drivers/clk/bcm/clk-bcm2835.c
|
+++ b/drivers/clk/bcm/clk-bcm2835.c
|
||||||
@@ -1298,6 +1298,8 @@ static const struct clk_ops bcm2835_vpu_
|
@@ -1302,6 +1302,8 @@ static const struct clk_ops bcm2835_vpu_
|
||||||
.debug_init = bcm2835_clock_debug_init,
|
.debug_init = bcm2835_clock_debug_init,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -57,7 +57,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||||
static struct clk_hw *bcm2835_register_pll(struct bcm2835_cprman *cprman,
|
static struct clk_hw *bcm2835_register_pll(struct bcm2835_cprman *cprman,
|
||||||
const struct bcm2835_pll_data *data)
|
const struct bcm2835_pll_data *data)
|
||||||
{
|
{
|
||||||
@@ -1314,6 +1316,9 @@ static struct clk_hw *bcm2835_register_p
|
@@ -1318,6 +1320,9 @@ static struct clk_hw *bcm2835_register_p
|
||||||
init.ops = &bcm2835_pll_clk_ops;
|
init.ops = &bcm2835_pll_clk_ops;
|
||||||
init.flags = CLK_IGNORE_UNUSED;
|
init.flags = CLK_IGNORE_UNUSED;
|
||||||
|
|
||||||
|
@ -67,7 +67,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||||
pll = kzalloc(sizeof(*pll), GFP_KERNEL);
|
pll = kzalloc(sizeof(*pll), GFP_KERNEL);
|
||||||
if (!pll)
|
if (!pll)
|
||||||
return NULL;
|
return NULL;
|
||||||
@@ -1367,8 +1372,10 @@ bcm2835_register_pll_divider(struct bcm2
|
@@ -1371,8 +1376,10 @@ bcm2835_register_pll_divider(struct bcm2
|
||||||
divider->div.table = NULL;
|
divider->div.table = NULL;
|
||||||
|
|
||||||
if (!(cprman_read(cprman, data->cm_reg) & data->hold_mask)) {
|
if (!(cprman_read(cprman, data->cm_reg) & data->hold_mask)) {
|
||||||
|
@ -80,7 +80,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||||
}
|
}
|
||||||
|
|
||||||
divider->cprman = cprman;
|
divider->cprman = cprman;
|
||||||
@@ -2104,6 +2111,8 @@ static const struct bcm2835_clk_desc clk
|
@@ -2108,6 +2115,8 @@ static const struct bcm2835_clk_desc clk
|
||||||
.ctl_reg = CM_PERIICTL),
|
.ctl_reg = CM_PERIICTL),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -89,7 +89,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||||
/*
|
/*
|
||||||
* Permanently take a reference on the parent of the SDRAM clock.
|
* Permanently take a reference on the parent of the SDRAM clock.
|
||||||
*
|
*
|
||||||
@@ -2123,6 +2132,19 @@ static int bcm2835_mark_sdc_parent_criti
|
@@ -2127,6 +2136,19 @@ static int bcm2835_mark_sdc_parent_criti
|
||||||
return clk_prepare_enable(parent);
|
return clk_prepare_enable(parent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -109,7 +109,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||||
static int bcm2835_clk_probe(struct platform_device *pdev)
|
static int bcm2835_clk_probe(struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
struct device *dev = &pdev->dev;
|
struct device *dev = &pdev->dev;
|
||||||
@@ -2132,6 +2154,7 @@ static int bcm2835_clk_probe(struct plat
|
@@ -2136,6 +2158,7 @@ static int bcm2835_clk_probe(struct plat
|
||||||
const struct bcm2835_clk_desc *desc;
|
const struct bcm2835_clk_desc *desc;
|
||||||
const size_t asize = ARRAY_SIZE(clk_desc_array);
|
const size_t asize = ARRAY_SIZE(clk_desc_array);
|
||||||
size_t i;
|
size_t i;
|
||||||
|
@ -117,7 +117,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
cprman = devm_kzalloc(dev, sizeof(*cprman) +
|
cprman = devm_kzalloc(dev, sizeof(*cprman) +
|
||||||
@@ -2147,6 +2170,13 @@ static int bcm2835_clk_probe(struct plat
|
@@ -2151,6 +2174,13 @@ static int bcm2835_clk_probe(struct plat
|
||||||
if (IS_ERR(cprman->regs))
|
if (IS_ERR(cprman->regs))
|
||||||
return PTR_ERR(cprman->regs);
|
return PTR_ERR(cprman->regs);
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||||
|
|
||||||
--- a/drivers/tty/serial/amba-pl011.c
|
--- a/drivers/tty/serial/amba-pl011.c
|
||||||
+++ b/drivers/tty/serial/amba-pl011.c
|
+++ b/drivers/tty/serial/amba-pl011.c
|
||||||
@@ -1646,6 +1646,23 @@ static void pl011_put_poll_char(struct u
|
@@ -1651,6 +1651,23 @@ static void pl011_put_poll_char(struct u
|
||||||
|
|
||||||
#endif /* CONFIG_CONSOLE_POLL */
|
#endif /* CONFIG_CONSOLE_POLL */
|
||||||
|
|
||||||
|
@ -50,7 +50,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||||
static int pl011_hwinit(struct uart_port *port)
|
static int pl011_hwinit(struct uart_port *port)
|
||||||
{
|
{
|
||||||
struct uart_amba_port *uap =
|
struct uart_amba_port *uap =
|
||||||
@@ -1662,7 +1679,7 @@ static int pl011_hwinit(struct uart_port
|
@@ -1667,7 +1684,7 @@ static int pl011_hwinit(struct uart_port
|
||||||
if (retval)
|
if (retval)
|
||||||
return retval;
|
return retval;
|
||||||
|
|
||||||
|
@ -59,7 +59,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||||
|
|
||||||
/* Clear pending error and receive interrupts */
|
/* Clear pending error and receive interrupts */
|
||||||
pl011_write(UART011_OEIS | UART011_BEIS | UART011_PEIS |
|
pl011_write(UART011_OEIS | UART011_BEIS | UART011_PEIS |
|
||||||
@@ -2300,7 +2317,7 @@ static int __init pl011_console_setup(st
|
@@ -2305,7 +2322,7 @@ static int __init pl011_console_setup(st
|
||||||
plat->init();
|
plat->init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -68,7 +68,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||||
|
|
||||||
if (uap->vendor->fixed_options) {
|
if (uap->vendor->fixed_options) {
|
||||||
baud = uap->fixed_baud;
|
baud = uap->fixed_baud;
|
||||||
@@ -2372,6 +2389,7 @@ static struct uart_driver amba_reg = {
|
@@ -2377,6 +2394,7 @@ static struct uart_driver amba_reg = {
|
||||||
.cons = AMBA_CONSOLE,
|
.cons = AMBA_CONSOLE,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -76,7 +76,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||||
static int pl011_probe_dt_alias(int index, struct device *dev)
|
static int pl011_probe_dt_alias(int index, struct device *dev)
|
||||||
{
|
{
|
||||||
struct device_node *np;
|
struct device_node *np;
|
||||||
@@ -2403,6 +2421,7 @@ static int pl011_probe_dt_alias(int inde
|
@@ -2408,6 +2426,7 @@ static int pl011_probe_dt_alias(int inde
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
|
@ -52,9 +52,9 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||||
|
|
||||||
cur_offset = slave->offset + slave->mtd.size;
|
cur_offset = slave->offset + slave->mtd.size;
|
||||||
}
|
}
|
||||||
@@ -1164,7 +1163,9 @@ int parse_mtd_partitions(struct mtd_info
|
@@ -1136,7 +1135,9 @@ static int mtd_part_of_parse(struct mtd_
|
||||||
types = types_of;
|
const char *fixed = "fixed-partitions";
|
||||||
}
|
int ret, err = 0;
|
||||||
|
|
||||||
- np = of_get_child_by_name(mtd_get_of_node(master), "partitions");
|
- np = of_get_child_by_name(mtd_get_of_node(master), "partitions");
|
||||||
+ np = mtd_get_of_node(master);
|
+ np = mtd_get_of_node(master);
|
||||||
|
@ -63,9 +63,9 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||||
of_property_for_each_string(np, "compatible", prop, compat) {
|
of_property_for_each_string(np, "compatible", prop, compat) {
|
||||||
parser = mtd_part_get_compatible_parser(compat);
|
parser = mtd_part_get_compatible_parser(compat);
|
||||||
if (!parser)
|
if (!parser)
|
||||||
@@ -1180,8 +1181,12 @@ int parse_mtd_partitions(struct mtd_info
|
@@ -1208,8 +1209,12 @@ int parse_mtd_partitions(struct mtd_info
|
||||||
|
types = types_of;
|
||||||
}
|
}
|
||||||
of_node_put(np);
|
|
||||||
|
|
||||||
- if (!types)
|
- if (!types)
|
||||||
+ if (!types) {
|
+ if (!types) {
|
||||||
|
@ -76,4 +76,4 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||||
+ }
|
+ }
|
||||||
|
|
||||||
for ( ; *types; types++) {
|
for ( ; *types; types++) {
|
||||||
pr_debug("%s: parsing partitions %s\n", master->name, *types);
|
/*
|
||||||
|
|
|
@ -14,7 +14,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||||
|
|
||||||
--- a/drivers/usb/dwc2/hcd.c
|
--- a/drivers/usb/dwc2/hcd.c
|
||||||
+++ b/drivers/usb/dwc2/hcd.c
|
+++ b/drivers/usb/dwc2/hcd.c
|
||||||
@@ -5184,7 +5184,6 @@ error3:
|
@@ -5185,7 +5185,6 @@ error3:
|
||||||
error2:
|
error2:
|
||||||
usb_put_hcd(hcd);
|
usb_put_hcd(hcd);
|
||||||
error1:
|
error1:
|
||||||
|
|
|
@ -33,8 +33,8 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
|
|
||||||
--- a/drivers/net/ethernet/broadcom/bgmac-bcma.c
|
--- a/drivers/net/ethernet/broadcom/bgmac-bcma.c
|
||||||
+++ b/drivers/net/ethernet/broadcom/bgmac-bcma.c
|
+++ b/drivers/net/ethernet/broadcom/bgmac-bcma.c
|
||||||
@@ -99,12 +99,11 @@ static int bgmac_probe(struct bcma_devic
|
@@ -100,12 +100,11 @@ static int bgmac_probe(struct bcma_devic
|
||||||
u8 *mac;
|
const u8 *mac = NULL;
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
- bgmac = kzalloc(sizeof(*bgmac), GFP_KERNEL);
|
- bgmac = kzalloc(sizeof(*bgmac), GFP_KERNEL);
|
||||||
|
@ -47,7 +47,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
bgmac->dma_dev = core->dma_dev;
|
bgmac->dma_dev = core->dma_dev;
|
||||||
bgmac->irq = core->irq;
|
bgmac->irq = core->irq;
|
||||||
|
|
||||||
@@ -285,7 +284,6 @@ static int bgmac_probe(struct bcma_devic
|
@@ -292,7 +291,6 @@ static int bgmac_probe(struct bcma_devic
|
||||||
err1:
|
err1:
|
||||||
bcma_mdio_mii_unregister(bgmac->mii_bus);
|
bcma_mdio_mii_unregister(bgmac->mii_bus);
|
||||||
err:
|
err:
|
||||||
|
|
|
@ -19,7 +19,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
|
|
||||||
--- a/drivers/net/ethernet/broadcom/bgmac-bcma.c
|
--- a/drivers/net/ethernet/broadcom/bgmac-bcma.c
|
||||||
+++ b/drivers/net/ethernet/broadcom/bgmac-bcma.c
|
+++ b/drivers/net/ethernet/broadcom/bgmac-bcma.c
|
||||||
@@ -159,7 +159,7 @@ static int bgmac_probe(struct bcma_devic
|
@@ -166,7 +166,7 @@ static int bgmac_probe(struct bcma_devic
|
||||||
|
|
||||||
if (!bgmac_is_bcm4707_family(core) &&
|
if (!bgmac_is_bcm4707_family(core) &&
|
||||||
!(ci->id == BCMA_CHIP_ID_BCM53573 && core->core_unit == 1)) {
|
!(ci->id == BCMA_CHIP_ID_BCM53573 && core->core_unit == 1)) {
|
||||||
|
|
|
@ -27,7 +27,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
|
|
||||||
--- a/drivers/net/ethernet/broadcom/bgmac-bcma.c
|
--- a/drivers/net/ethernet/broadcom/bgmac-bcma.c
|
||||||
+++ b/drivers/net/ethernet/broadcom/bgmac-bcma.c
|
+++ b/drivers/net/ethernet/broadcom/bgmac-bcma.c
|
||||||
@@ -159,13 +159,19 @@ static int bgmac_probe(struct bcma_devic
|
@@ -166,13 +166,19 @@ static int bgmac_probe(struct bcma_devic
|
||||||
|
|
||||||
if (!bgmac_is_bcm4707_family(core) &&
|
if (!bgmac_is_bcm4707_family(core) &&
|
||||||
!(ci->id == BCMA_CHIP_ID_BCM53573 && core->core_unit == 1)) {
|
!(ci->id == BCMA_CHIP_ID_BCM53573 && core->core_unit == 1)) {
|
||||||
|
|
|
@ -159,7 +159,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
flexcan_write(priv->reg_ctrl_default, ®s->ctrl);
|
flexcan_write(priv->reg_ctrl_default, ®s->ctrl);
|
||||||
--- a/drivers/net/can/ifi_canfd/ifi_canfd.c
|
--- a/drivers/net/can/ifi_canfd/ifi_canfd.c
|
||||||
+++ b/drivers/net/can/ifi_canfd/ifi_canfd.c
|
+++ b/drivers/net/can/ifi_canfd/ifi_canfd.c
|
||||||
@@ -578,7 +578,7 @@ static int ifi_canfd_poll(struct napi_st
|
@@ -589,7 +589,7 @@ static int ifi_canfd_poll(struct napi_st
|
||||||
work_done += ifi_canfd_do_rx_poll(ndev, quota - work_done);
|
work_done += ifi_canfd_do_rx_poll(ndev, quota - work_done);
|
||||||
|
|
||||||
if (work_done < quota) {
|
if (work_done < quota) {
|
||||||
|
@ -269,7 +269,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
"NAPI Complete, did %d packets with budget %d\n",
|
"NAPI Complete, did %d packets with budget %d\n",
|
||||||
--- a/drivers/net/ethernet/apm/xgene/xgene_enet_main.c
|
--- a/drivers/net/ethernet/apm/xgene/xgene_enet_main.c
|
||||||
+++ b/drivers/net/ethernet/apm/xgene/xgene_enet_main.c
|
+++ b/drivers/net/ethernet/apm/xgene/xgene_enet_main.c
|
||||||
@@ -651,7 +651,7 @@ static int xgene_enet_napi(struct napi_s
|
@@ -658,7 +658,7 @@ static int xgene_enet_napi(struct napi_s
|
||||||
processed = xgene_enet_process_ring(ring, budget);
|
processed = xgene_enet_process_ring(ring, budget);
|
||||||
|
|
||||||
if (processed != budget) {
|
if (processed != budget) {
|
||||||
|
@ -388,7 +388,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
BNX2_PCICFG_INT_ACK_CMD_INDEX_VALID |
|
BNX2_PCICFG_INT_ACK_CMD_INDEX_VALID |
|
||||||
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
|
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
|
||||||
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
|
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
|
||||||
@@ -3229,7 +3229,7 @@ static int bnx2x_poll(struct napi_struct
|
@@ -3230,7 +3230,7 @@ static int bnx2x_poll(struct napi_struct
|
||||||
* has been updated when NAPI was scheduled.
|
* has been updated when NAPI was scheduled.
|
||||||
*/
|
*/
|
||||||
if (IS_FCOE_FP(fp)) {
|
if (IS_FCOE_FP(fp)) {
|
||||||
|
@ -399,7 +399,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
/* bnx2x_has_rx_work() reads the status block,
|
/* bnx2x_has_rx_work() reads the status block,
|
||||||
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
|
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
|
||||||
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
|
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
|
||||||
@@ -1774,7 +1774,7 @@ static int bnxt_poll_nitroa0(struct napi
|
@@ -1778,7 +1778,7 @@ static int bnxt_poll_nitroa0(struct napi
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!bnxt_has_work(bp, cpr) && rx_pkts < budget) {
|
if (!bnxt_has_work(bp, cpr) && rx_pkts < budget) {
|
||||||
|
@ -657,7 +657,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
gfar_write(®s->rstat, gfargrp->rstat);
|
gfar_write(®s->rstat, gfargrp->rstat);
|
||||||
--- a/drivers/net/ethernet/freescale/ucc_geth.c
|
--- a/drivers/net/ethernet/freescale/ucc_geth.c
|
||||||
+++ b/drivers/net/ethernet/freescale/ucc_geth.c
|
+++ b/drivers/net/ethernet/freescale/ucc_geth.c
|
||||||
@@ -3303,7 +3303,7 @@ static int ucc_geth_poll(struct napi_str
|
@@ -3301,7 +3301,7 @@ static int ucc_geth_poll(struct napi_str
|
||||||
howmany += ucc_geth_rx(ugeth, i, budget - howmany);
|
howmany += ucc_geth_rx(ugeth, i, budget - howmany);
|
||||||
|
|
||||||
if (howmany < budget) {
|
if (howmany < budget) {
|
||||||
|
@ -712,7 +712,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
* then check once more to make sure we are done.
|
* then check once more to make sure we are done.
|
||||||
--- a/drivers/net/ethernet/ibm/ibmvnic.c
|
--- a/drivers/net/ethernet/ibm/ibmvnic.c
|
||||||
+++ b/drivers/net/ethernet/ibm/ibmvnic.c
|
+++ b/drivers/net/ethernet/ibm/ibmvnic.c
|
||||||
@@ -1009,7 +1009,7 @@ restart_poll:
|
@@ -1027,7 +1027,7 @@ restart_poll:
|
||||||
|
|
||||||
if (frames_processed < budget) {
|
if (frames_processed < budget) {
|
||||||
enable_scrq_irq(adapter, adapter->rx_scrq[scrq_num]);
|
enable_scrq_irq(adapter, adapter->rx_scrq[scrq_num]);
|
||||||
|
|
|
@ -15,7 +15,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
|
|
||||||
--- a/Makefile
|
--- a/Makefile
|
||||||
+++ b/Makefile
|
+++ b/Makefile
|
||||||
@@ -1202,7 +1202,6 @@ all: modules
|
@@ -1211,7 +1211,6 @@ all: modules
|
||||||
|
|
||||||
PHONY += modules
|
PHONY += modules
|
||||||
modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux) modules.builtin
|
modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux) modules.builtin
|
||||||
|
@ -23,7 +23,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
@$(kecho) ' Building modules, stage 2.';
|
@$(kecho) ' Building modules, stage 2.';
|
||||||
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
|
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
|
||||||
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.fwinst obj=firmware __fw_modbuild
|
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.fwinst obj=firmware __fw_modbuild
|
||||||
@@ -1232,7 +1231,6 @@ _modinst_:
|
@@ -1241,7 +1240,6 @@ _modinst_:
|
||||||
rm -f $(MODLIB)/build ; \
|
rm -f $(MODLIB)/build ; \
|
||||||
ln -s $(CURDIR) $(MODLIB)/build ; \
|
ln -s $(CURDIR) $(MODLIB)/build ; \
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -14,7 +14,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||||
|
|
||||||
--- a/drivers/net/ethernet/broadcom/bgmac-bcma.c
|
--- a/drivers/net/ethernet/broadcom/bgmac-bcma.c
|
||||||
+++ b/drivers/net/ethernet/broadcom/bgmac-bcma.c
|
+++ b/drivers/net/ethernet/broadcom/bgmac-bcma.c
|
||||||
@@ -236,6 +236,7 @@ static int bgmac_probe(struct bcma_devic
|
@@ -243,6 +243,7 @@ static int bgmac_probe(struct bcma_devic
|
||||||
bgmac->feature_flags |= BGMAC_FEAT_CLKCTLST;
|
bgmac->feature_flags |= BGMAC_FEAT_CLKCTLST;
|
||||||
bgmac->feature_flags |= BGMAC_FEAT_NO_RESET;
|
bgmac->feature_flags |= BGMAC_FEAT_NO_RESET;
|
||||||
bgmac->feature_flags |= BGMAC_FEAT_FORCE_SPEED_2500;
|
bgmac->feature_flags |= BGMAC_FEAT_FORCE_SPEED_2500;
|
||||||
|
|
|
@ -221,7 +221,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
if (!root_irq_dir)
|
if (!root_irq_dir)
|
||||||
--- a/kernel/time/timer_list.c
|
--- a/kernel/time/timer_list.c
|
||||||
+++ b/kernel/time/timer_list.c
|
+++ b/kernel/time/timer_list.c
|
||||||
@@ -393,6 +393,8 @@ static int __init init_timer_list_procfs
|
@@ -399,6 +399,8 @@ static int __init init_timer_list_procfs
|
||||||
{
|
{
|
||||||
struct proc_dir_entry *pe;
|
struct proc_dir_entry *pe;
|
||||||
|
|
||||||
|
@ -243,7 +243,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
}
|
}
|
||||||
--- a/mm/vmstat.c
|
--- a/mm/vmstat.c
|
||||||
+++ b/mm/vmstat.c
|
+++ b/mm/vmstat.c
|
||||||
@@ -1792,10 +1792,12 @@ static int __init setup_vmstat(void)
|
@@ -1798,10 +1798,12 @@ static int __init setup_vmstat(void)
|
||||||
cpu_notifier_register_done();
|
cpu_notifier_register_done();
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_PROC_FS
|
#ifdef CONFIG_PROC_FS
|
||||||
|
|
|
@ -54,7 +54,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
+MODULE_LICENSE("GPL");
|
+MODULE_LICENSE("GPL");
|
||||||
--- a/kernel/sched/core.c
|
--- a/kernel/sched/core.c
|
||||||
+++ b/kernel/sched/core.c
|
+++ b/kernel/sched/core.c
|
||||||
@@ -2170,6 +2170,7 @@ int wake_up_state(struct task_struct *p,
|
@@ -2171,6 +2171,7 @@ int wake_up_state(struct task_struct *p,
|
||||||
{
|
{
|
||||||
return try_to_wake_up(p, state, 0);
|
return try_to_wake_up(p, state, 0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,7 +23,7 @@ Tested-by: Aaron Brown <aaron.f.brown@intel.com>
|
||||||
|
|
||||||
--- a/drivers/net/ethernet/intel/e1000e/netdev.c
|
--- a/drivers/net/ethernet/intel/e1000e/netdev.c
|
||||||
+++ b/drivers/net/ethernet/intel/e1000e/netdev.c
|
+++ b/drivers/net/ethernet/intel/e1000e/netdev.c
|
||||||
@@ -5066,7 +5066,7 @@ static bool e1000e_has_link(struct e1000
|
@@ -5072,7 +5072,7 @@ static bool e1000e_has_link(struct e1000
|
||||||
|
|
||||||
/* get_link_status is set on LSC (link status) interrupt or
|
/* get_link_status is set on LSC (link status) interrupt or
|
||||||
* Rx sequence error interrupt. get_link_status will stay
|
* Rx sequence error interrupt. get_link_status will stay
|
||||||
|
@ -32,7 +32,7 @@ Tested-by: Aaron Brown <aaron.f.brown@intel.com>
|
||||||
* for copper adapters ONLY
|
* for copper adapters ONLY
|
||||||
*/
|
*/
|
||||||
switch (hw->phy.media_type) {
|
switch (hw->phy.media_type) {
|
||||||
@@ -5084,7 +5084,7 @@ static bool e1000e_has_link(struct e1000
|
@@ -5090,7 +5090,7 @@ static bool e1000e_has_link(struct e1000
|
||||||
break;
|
break;
|
||||||
case e1000_media_type_internal_serdes:
|
case e1000_media_type_internal_serdes:
|
||||||
ret_val = hw->mac.ops.check_for_link(hw);
|
ret_val = hw->mac.ops.check_for_link(hw);
|
||||||
|
|
|
@ -1,26 +0,0 @@
|
||||||
From: Matthias Schiffer <mschiffer@universe-factory.net>
|
|
||||||
Date: Sat, 17 Mar 2018 16:53:21 +0100
|
|
||||||
Subject: [PATCH] Revert "led: core: Fix brightness setting when setting
|
|
||||||
delay_off=0"
|
|
||||||
|
|
||||||
This reverts commit 86b9fa2190907f4f550d9d6bf490c5f89ca33836.
|
|
||||||
---
|
|
||||||
drivers/leds/led-core.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/leds/led-core.c b/drivers/leds/led-core.c
|
|
||||||
index d70d4a5273b8..3bce44893021 100644
|
|
||||||
--- a/drivers/leds/led-core.c
|
|
||||||
+++ b/drivers/leds/led-core.c
|
|
||||||
@@ -186,7 +186,7 @@ void led_blink_set(struct led_classdev *led_cdev,
|
|
||||||
unsigned long *delay_on,
|
|
||||||
unsigned long *delay_off)
|
|
||||||
{
|
|
||||||
- led_stop_software_blink(led_cdev);
|
|
||||||
+ del_timer_sync(&led_cdev->blink_timer);
|
|
||||||
|
|
||||||
led_cdev->flags &= ~LED_BLINK_ONESHOT;
|
|
||||||
led_cdev->flags &= ~LED_BLINK_ONESHOT_STOP;
|
|
||||||
--
|
|
||||||
2.16.2
|
|
||||||
|
|
|
@ -59,16 +59,16 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
static bool
|
static bool
|
||||||
ip_checkentry(const struct ipt_ip *ip)
|
ip_checkentry(const struct ipt_ip *ip)
|
||||||
{
|
{
|
||||||
@@ -545,6 +571,8 @@ find_check_entry(struct ipt_entry *e, st
|
@@ -550,6 +576,8 @@ find_check_entry(struct ipt_entry *e, st
|
||||||
|
struct xt_mtchk_param mtpar;
|
||||||
struct xt_entry_match *ematch;
|
struct xt_entry_match *ematch;
|
||||||
unsigned long pcnt;
|
|
||||||
|
|
||||||
+ ip_checkdefault(&e->ip);
|
+ ip_checkdefault(&e->ip);
|
||||||
+
|
+
|
||||||
pcnt = xt_percpu_counter_alloc();
|
if (!xt_percpu_counter_alloc(alloc_state, &e->counters))
|
||||||
if (IS_ERR_VALUE(pcnt))
|
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
@@ -824,6 +852,7 @@ copy_entries_to_user(unsigned int total_
|
|
||||||
|
@@ -829,6 +857,7 @@ copy_entries_to_user(unsigned int total_
|
||||||
const struct xt_table_info *private = table->private;
|
const struct xt_table_info *private = table->private;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
const void *loc_cpu_entry;
|
const void *loc_cpu_entry;
|
||||||
|
@ -76,7 +76,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
|
|
||||||
counters = alloc_counters(table);
|
counters = alloc_counters(table);
|
||||||
if (IS_ERR(counters))
|
if (IS_ERR(counters))
|
||||||
@@ -851,6 +880,14 @@ copy_entries_to_user(unsigned int total_
|
@@ -856,6 +885,14 @@ copy_entries_to_user(unsigned int total_
|
||||||
goto free_counters;
|
goto free_counters;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
for (i = sizeof(struct ipt_entry);
|
for (i = sizeof(struct ipt_entry);
|
||||||
i < e->target_offset;
|
i < e->target_offset;
|
||||||
i += m->u.match_size) {
|
i += m->u.match_size) {
|
||||||
@@ -1240,12 +1277,15 @@ compat_copy_entry_to_user(struct ipt_ent
|
@@ -1245,12 +1282,15 @@ compat_copy_entry_to_user(struct ipt_ent
|
||||||
compat_uint_t origsize;
|
compat_uint_t origsize;
|
||||||
const struct xt_entry_match *ematch;
|
const struct xt_entry_match *ematch;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
|
@ -1,60 +0,0 @@
|
||||||
From patchwork Tue Jan 9 14:42:21 2018
|
|
||||||
Content-Type: text/plain; charset="utf-8"
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Transfer-Encoding: 7bit
|
|
||||||
Subject: PCI: dwc: fix enumeration end when reaching root subordinate
|
|
||||||
From: Koen Vandeputte <koen.vandeputte@ncentric.com>
|
|
||||||
X-Patchwork-Id: 10152443
|
|
||||||
Message-Id: <1515508941-20055-1-git-send-email-koen.vandeputte@ncentric.com>
|
|
||||||
To: linux-pci@vger.kernel.org
|
|
||||||
Cc: bhelgaas@google.com, lorenzo.pieralisi@arm.com,
|
|
||||||
Joao.Pinto@synopsys.com, jingoohan1@gmail.com, niklas.cassel@axis.com,
|
|
||||||
Koen Vandeputte <koen.vandeputte@ncentric.com>,
|
|
||||||
Mika Westerberg <mika.westerberg@linux.intel.com>
|
|
||||||
Date: Tue, 9 Jan 2018 15:42:21 +0100
|
|
||||||
|
|
||||||
The subordinate value indicates the highest bus number which can be
|
|
||||||
reached downstream though a certain device.
|
|
||||||
|
|
||||||
Commit a20c7f36bd3d ("PCI: Do not allocate more buses than available in
|
|
||||||
parent")
|
|
||||||
ensures that downstream devices cannot assign busnumbers higher than the
|
|
||||||
upstream device subordinate number, which was indeed illogical.
|
|
||||||
|
|
||||||
By default, dw_pcie_setup_rc() inits the Root Complex subordinate to a
|
|
||||||
value of 0x01.
|
|
||||||
|
|
||||||
Due to this combined with above commit, enumeration stops digging deeper
|
|
||||||
downstream as soon as bus num 0x01 has been assigned, which is always
|
|
||||||
the case for a bridge device.
|
|
||||||
|
|
||||||
This results in all devices behind a bridge bus to remain undetected, as
|
|
||||||
these would be connected to bus 0x02 or higher.
|
|
||||||
|
|
||||||
Fix this by initializing the RC to a subordinate value of 0xff, meaning
|
|
||||||
that all busses [0x00-0xff] are reachable through this RC.
|
|
||||||
|
|
||||||
Fixes: a20c7f36bd3d ("PCI: Do not allocate more buses than available in
|
|
||||||
parent")
|
|
||||||
Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
|
|
||||||
Tested-by: Niklas Cassel <niklas.cassel@axis.com>
|
|
||||||
Cc: Mika Westerberg <mika.westerberg@linux.intel.com>
|
|
||||||
---
|
|
||||||
|
|
||||||
Will send separate patches to stable as this file got moved/renamed
|
|
||||||
|
|
||||||
|
|
||||||
drivers/pci/host/pcie-designware.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
--- a/drivers/pci/host/pcie-designware.c
|
|
||||||
+++ b/drivers/pci/host/pcie-designware.c
|
|
||||||
@@ -861,7 +861,7 @@ void dw_pcie_setup_rc(struct pcie_port *
|
|
||||||
/* setup bus numbers */
|
|
||||||
val = dw_pcie_readl_rc(pp, PCI_PRIMARY_BUS);
|
|
||||||
val &= 0xff000000;
|
|
||||||
- val |= 0x00010100;
|
|
||||||
+ val |= 0x00ff0100;
|
|
||||||
dw_pcie_writel_rc(pp, PCI_PRIMARY_BUS, val);
|
|
||||||
|
|
||||||
/* setup command register */
|
|
|
@ -65,7 +65,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||||
/**
|
/**
|
||||||
* ata_build_rw_tf - Build ATA taskfile for given read/write request
|
* ata_build_rw_tf - Build ATA taskfile for given read/write request
|
||||||
* @tf: Target ATA taskfile
|
* @tf: Target ATA taskfile
|
||||||
@@ -4964,6 +4977,9 @@ struct ata_queued_cmd *ata_qc_new_init(s
|
@@ -4985,6 +4998,9 @@ struct ata_queued_cmd *ata_qc_new_init(s
|
||||||
if (tag < 0)
|
if (tag < 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -75,7 +75,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||||
|
|
||||||
qc = __ata_qc_from_tag(ap, tag);
|
qc = __ata_qc_from_tag(ap, tag);
|
||||||
qc->tag = tag;
|
qc->tag = tag;
|
||||||
@@ -5866,6 +5882,9 @@ struct ata_port *ata_port_alloc(struct a
|
@@ -5886,6 +5902,9 @@ struct ata_port *ata_port_alloc(struct a
|
||||||
ap->stats.unhandled_irq = 1;
|
ap->stats.unhandled_irq = 1;
|
||||||
ap->stats.idle_irq = 1;
|
ap->stats.idle_irq = 1;
|
||||||
#endif
|
#endif
|
||||||
|
@ -85,7 +85,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||||
ata_sff_port_init(ap);
|
ata_sff_port_init(ap);
|
||||||
|
|
||||||
return ap;
|
return ap;
|
||||||
@@ -5887,6 +5906,12 @@ static void ata_host_release(struct devi
|
@@ -5907,6 +5926,12 @@ static void ata_host_release(struct devi
|
||||||
|
|
||||||
kfree(ap->pmp_link);
|
kfree(ap->pmp_link);
|
||||||
kfree(ap->slave_link);
|
kfree(ap->slave_link);
|
||||||
|
@ -98,7 +98,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||||
kfree(ap);
|
kfree(ap);
|
||||||
host->ports[i] = NULL;
|
host->ports[i] = NULL;
|
||||||
}
|
}
|
||||||
@@ -6333,7 +6358,23 @@ int ata_host_register(struct ata_host *h
|
@@ -6353,7 +6378,23 @@ int ata_host_register(struct ata_host *h
|
||||||
host->ports[i]->print_id = atomic_inc_return(&ata_print_id);
|
host->ports[i]->print_id = atomic_inc_return(&ata_print_id);
|
||||||
host->ports[i]->local_port_no = i + 1;
|
host->ports[i]->local_port_no = i + 1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
uart->capabilities = up->capabilities;
|
uart->capabilities = up->capabilities;
|
||||||
--- a/drivers/tty/serial/serial_core.c
|
--- a/drivers/tty/serial/serial_core.c
|
||||||
+++ b/drivers/tty/serial/serial_core.c
|
+++ b/drivers/tty/serial/serial_core.c
|
||||||
@@ -2231,6 +2231,7 @@ uart_report_port(struct uart_driver *drv
|
@@ -2233,6 +2233,7 @@ uart_report_port(struct uart_driver *drv
|
||||||
snprintf(address, sizeof(address),
|
snprintf(address, sizeof(address),
|
||||||
"I/O 0x%lx offset 0x%x", port->iobase, port->hub6);
|
"I/O 0x%lx offset 0x%x", port->iobase, port->hub6);
|
||||||
break;
|
break;
|
||||||
|
@ -26,7 +26,7 @@
|
||||||
case UPIO_MEM:
|
case UPIO_MEM:
|
||||||
case UPIO_MEM16:
|
case UPIO_MEM16:
|
||||||
case UPIO_MEM32:
|
case UPIO_MEM32:
|
||||||
@@ -2895,6 +2896,7 @@ int uart_match_port(struct uart_port *po
|
@@ -2897,6 +2898,7 @@ int uart_match_port(struct uart_port *po
|
||||||
case UPIO_HUB6:
|
case UPIO_HUB6:
|
||||||
return (port1->iobase == port2->iobase) &&
|
return (port1->iobase == port2->iobase) &&
|
||||||
(port1->hub6 == port2->hub6);
|
(port1->hub6 == port2->hub6);
|
||||||
|
|
|
@ -358,7 +358,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||||
help
|
help
|
||||||
--- a/drivers/mtd/nand/fsl_ifc_nand.c
|
--- a/drivers/mtd/nand/fsl_ifc_nand.c
|
||||||
+++ b/drivers/mtd/nand/fsl_ifc_nand.c
|
+++ b/drivers/mtd/nand/fsl_ifc_nand.c
|
||||||
@@ -904,9 +904,12 @@ static int fsl_ifc_chip_init(struct fsl_
|
@@ -898,7 +898,7 @@ static int fsl_ifc_chip_init(struct fsl_
|
||||||
chip->ecc.algo = NAND_ECC_HAMMING;
|
chip->ecc.algo = NAND_ECC_HAMMING;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -366,12 +366,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||||
+ if (ctrl->version >= FSL_IFC_VERSION_1_1_0)
|
+ if (ctrl->version >= FSL_IFC_VERSION_1_1_0)
|
||||||
fsl_ifc_sram_init(priv);
|
fsl_ifc_sram_init(priv);
|
||||||
|
|
||||||
+ if (ctrl->version >= FSL_IFC_VERSION_2_0_0)
|
/*
|
||||||
+ priv->bufnum_mask = (priv->bufnum_mask * 2) + 1;
|
|
||||||
+
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
--- a/include/linux/fsl_ifc.h
|
--- a/include/linux/fsl_ifc.h
|
||||||
+++ b/include/linux/fsl_ifc.h
|
+++ b/include/linux/fsl_ifc.h
|
||||||
@@ -274,6 +274,8 @@
|
@@ -274,6 +274,8 @@
|
||||||
|
@ -383,7 +378,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||||
/* Addressing Mode-ROW0+n/COL0 */
|
/* Addressing Mode-ROW0+n/COL0 */
|
||||||
#define IFC_NAND_NCFGR_ADDR_MODE_RC0 0x00000000
|
#define IFC_NAND_NCFGR_ADDR_MODE_RC0 0x00000000
|
||||||
/* Addressing Mode-ROW0+n/COL0+n */
|
/* Addressing Mode-ROW0+n/COL0+n */
|
||||||
@@ -861,6 +863,11 @@ struct fsl_ifc_ctrl {
|
@@ -857,6 +859,11 @@ struct fsl_ifc_ctrl {
|
||||||
u32 nand_stat;
|
u32 nand_stat;
|
||||||
wait_queue_head_t nand_wait;
|
wait_queue_head_t nand_wait;
|
||||||
bool little_endian;
|
bool little_endian;
|
||||||
|
|
|
@ -2060,7 +2060,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||||
}
|
}
|
||||||
--- a/drivers/pci/quirks.c
|
--- a/drivers/pci/quirks.c
|
||||||
+++ b/drivers/pci/quirks.c
|
+++ b/drivers/pci/quirks.c
|
||||||
@@ -4649,3 +4649,11 @@ DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_IN
|
@@ -4654,3 +4654,11 @@ DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_IN
|
||||||
DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x2031, quirk_no_aersid);
|
DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x2031, quirk_no_aersid);
|
||||||
DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x2032, quirk_no_aersid);
|
DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x2032, quirk_no_aersid);
|
||||||
DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x2033, quirk_no_aersid);
|
DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x2033, quirk_no_aersid);
|
||||||
|
|
|
@ -25,7 +25,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||||
+obj-$(CONFIG_QUICC_ENGINE) += irq-qeic.o
|
+obj-$(CONFIG_QUICC_ENGINE) += irq-qeic.o
|
||||||
--- a/drivers/irqchip/irq-gic-v3-its.c
|
--- a/drivers/irqchip/irq-gic-v3-its.c
|
||||||
+++ b/drivers/irqchip/irq-gic-v3-its.c
|
+++ b/drivers/irqchip/irq-gic-v3-its.c
|
||||||
@@ -1659,6 +1659,7 @@ static int its_init_domain(struct fwnode
|
@@ -1658,6 +1658,7 @@ static int its_init_domain(struct fwnode
|
||||||
|
|
||||||
inner_domain->parent = its_parent;
|
inner_domain->parent = its_parent;
|
||||||
inner_domain->bus_token = DOMAIN_BUS_NEXUS;
|
inner_domain->bus_token = DOMAIN_BUS_NEXUS;
|
||||||
|
|
|
@ -217,7 +217,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||||
}
|
}
|
||||||
|
|
||||||
static void esdhc_of_set_clock(struct sdhci_host *host, unsigned int clock)
|
static void esdhc_of_set_clock(struct sdhci_host *host, unsigned int clock)
|
||||||
@@ -421,17 +466,34 @@ static void esdhc_of_set_clock(struct sd
|
@@ -421,12 +466,15 @@ static void esdhc_of_set_clock(struct sd
|
||||||
struct sdhci_esdhc *esdhc = sdhci_pltfm_priv(pltfm_host);
|
struct sdhci_esdhc *esdhc = sdhci_pltfm_priv(pltfm_host);
|
||||||
int pre_div = 1;
|
int pre_div = 1;
|
||||||
int div = 1;
|
int div = 1;
|
||||||
|
@ -234,26 +234,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||||
|
|
||||||
/* Workaround to start pre_div at 2 for VNN < VENDOR_V_23 */
|
/* Workaround to start pre_div at 2 for VNN < VENDOR_V_23 */
|
||||||
if (esdhc->vendor_ver < VENDOR_V_23)
|
if (esdhc->vendor_ver < VENDOR_V_23)
|
||||||
pre_div = 2;
|
@@ -454,9 +502,15 @@ static void esdhc_of_set_clock(struct sd
|
||||||
|
|
||||||
+ /*
|
|
||||||
+ * Limit SD clock to 167MHz for ls1046a according to its datasheet
|
|
||||||
+ */
|
|
||||||
+ if (clock > 167000000 &&
|
|
||||||
+ of_find_compatible_node(NULL, NULL, "fsl,ls1046a-esdhc"))
|
|
||||||
+ clock = 167000000;
|
|
||||||
+
|
|
||||||
+ /*
|
|
||||||
+ * Limit SD clock to 125MHz for ls1012a according to its datasheet
|
|
||||||
+ */
|
|
||||||
+ if (clock > 125000000 &&
|
|
||||||
+ of_find_compatible_node(NULL, NULL, "fsl,ls1012a-esdhc"))
|
|
||||||
+ clock = 125000000;
|
|
||||||
+
|
|
||||||
/* Workaround to reduce the clock frequency for p1010 esdhc */
|
|
||||||
if (of_find_compatible_node(NULL, NULL, "fsl,p1010-esdhc")) {
|
|
||||||
if (clock > 20000000)
|
|
||||||
@@ -440,9 +502,15 @@ static void esdhc_of_set_clock(struct sd
|
|
||||||
clock -= 5000000;
|
clock -= 5000000;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -271,7 +252,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||||
sdhci_writel(host, temp, ESDHC_SYSTEM_CONTROL);
|
sdhci_writel(host, temp, ESDHC_SYSTEM_CONTROL);
|
||||||
|
|
||||||
while (host->max_clk / pre_div / 16 > clock && pre_div < 256)
|
while (host->max_clk / pre_div / 16 > clock && pre_div < 256)
|
||||||
@@ -462,7 +530,20 @@ static void esdhc_of_set_clock(struct sd
|
@@ -476,7 +530,20 @@ static void esdhc_of_set_clock(struct sd
|
||||||
| (div << ESDHC_DIVIDER_SHIFT)
|
| (div << ESDHC_DIVIDER_SHIFT)
|
||||||
| (pre_div << ESDHC_PREDIV_SHIFT));
|
| (pre_div << ESDHC_PREDIV_SHIFT));
|
||||||
sdhci_writel(host, temp, ESDHC_SYSTEM_CONTROL);
|
sdhci_writel(host, temp, ESDHC_SYSTEM_CONTROL);
|
||||||
|
@ -293,7 +274,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||||
}
|
}
|
||||||
|
|
||||||
static void esdhc_pltfm_set_bus_width(struct sdhci_host *host, int width)
|
static void esdhc_pltfm_set_bus_width(struct sdhci_host *host, int width)
|
||||||
@@ -487,12 +568,136 @@ static void esdhc_pltfm_set_bus_width(st
|
@@ -501,12 +568,136 @@ static void esdhc_pltfm_set_bus_width(st
|
||||||
sdhci_writel(host, ctrl, ESDHC_PROCTL);
|
sdhci_writel(host, ctrl, ESDHC_PROCTL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -430,7 +411,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_PM_SLEEP
|
#ifdef CONFIG_PM_SLEEP
|
||||||
@@ -575,10 +780,19 @@ static const struct sdhci_pltfm_data sdh
|
@@ -589,10 +780,19 @@ static const struct sdhci_pltfm_data sdh
|
||||||
.ops = &sdhci_esdhc_le_ops,
|
.ops = &sdhci_esdhc_le_ops,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -450,7 +431,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||||
u16 host_ver;
|
u16 host_ver;
|
||||||
|
|
||||||
pltfm_host = sdhci_priv(host);
|
pltfm_host = sdhci_priv(host);
|
||||||
@@ -588,6 +802,36 @@ static void esdhc_init(struct platform_d
|
@@ -602,6 +802,36 @@ static void esdhc_init(struct platform_d
|
||||||
esdhc->vendor_ver = (host_ver & SDHCI_VENDOR_VER_MASK) >>
|
esdhc->vendor_ver = (host_ver & SDHCI_VENDOR_VER_MASK) >>
|
||||||
SDHCI_VENDOR_VER_SHIFT;
|
SDHCI_VENDOR_VER_SHIFT;
|
||||||
esdhc->spec_ver = host_ver & SDHCI_SPEC_VER_MASK;
|
esdhc->spec_ver = host_ver & SDHCI_SPEC_VER_MASK;
|
||||||
|
@ -487,7 +468,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||||
}
|
}
|
||||||
|
|
||||||
static int sdhci_esdhc_probe(struct platform_device *pdev)
|
static int sdhci_esdhc_probe(struct platform_device *pdev)
|
||||||
@@ -610,6 +854,11 @@ static int sdhci_esdhc_probe(struct plat
|
@@ -624,6 +854,11 @@ static int sdhci_esdhc_probe(struct plat
|
||||||
if (IS_ERR(host))
|
if (IS_ERR(host))
|
||||||
return PTR_ERR(host);
|
return PTR_ERR(host);
|
||||||
|
|
||||||
|
|
|
@ -1267,7 +1267,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(qe_issue_cmd);
|
EXPORT_SYMBOL(qe_issue_cmd);
|
||||||
|
|
||||||
@@ -166,8 +182,8 @@ static unsigned int brg_clk = 0;
|
@@ -169,8 +185,8 @@ static unsigned int brg_clk = 0;
|
||||||
unsigned int qe_get_brg_clk(void)
|
unsigned int qe_get_brg_clk(void)
|
||||||
{
|
{
|
||||||
struct device_node *qe;
|
struct device_node *qe;
|
||||||
|
@ -1275,10 +1275,10 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||||
- const u32 *prop;
|
- const u32 *prop;
|
||||||
+ u32 val;
|
+ u32 val;
|
||||||
+ int ret;
|
+ int ret;
|
||||||
|
unsigned int mod;
|
||||||
|
|
||||||
if (brg_clk)
|
if (brg_clk)
|
||||||
return brg_clk;
|
@@ -183,9 +199,9 @@ unsigned int qe_get_brg_clk(void)
|
||||||
@@ -179,9 +195,9 @@ unsigned int qe_get_brg_clk(void)
|
|
||||||
return brg_clk;
|
return brg_clk;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1291,7 +1291,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||||
|
|
||||||
of_node_put(qe);
|
of_node_put(qe);
|
||||||
|
|
||||||
@@ -221,7 +237,7 @@ int qe_setbrg(enum qe_clock brg, unsigne
|
@@ -234,7 +250,7 @@ int qe_setbrg(enum qe_clock brg, unsigne
|
||||||
tempval = ((divisor - 1) << QE_BRGC_DIVISOR_SHIFT) |
|
tempval = ((divisor - 1) << QE_BRGC_DIVISOR_SHIFT) |
|
||||||
QE_BRGC_ENABLE | div16;
|
QE_BRGC_ENABLE | div16;
|
||||||
|
|
||||||
|
@ -1300,7 +1300,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -355,9 +371,9 @@ static int qe_sdma_init(void)
|
@@ -368,9 +384,9 @@ static int qe_sdma_init(void)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1313,7 +1313,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -395,14 +411,14 @@ static void qe_upload_microcode(const vo
|
@@ -408,14 +424,14 @@ static void qe_upload_microcode(const vo
|
||||||
"uploading microcode '%s'\n", ucode->id);
|
"uploading microcode '%s'\n", ucode->id);
|
||||||
|
|
||||||
/* Use auto-increment */
|
/* Use auto-increment */
|
||||||
|
@ -1332,7 +1332,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -487,7 +503,7 @@ int qe_upload_firmware(const struct qe_f
|
@@ -500,7 +516,7 @@ int qe_upload_firmware(const struct qe_f
|
||||||
* If the microcode calls for it, split the I-RAM.
|
* If the microcode calls for it, split the I-RAM.
|
||||||
*/
|
*/
|
||||||
if (!firmware->split)
|
if (!firmware->split)
|
||||||
|
@ -1341,7 +1341,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||||
|
|
||||||
if (firmware->soc.model)
|
if (firmware->soc.model)
|
||||||
printk(KERN_INFO
|
printk(KERN_INFO
|
||||||
@@ -521,11 +537,11 @@ int qe_upload_firmware(const struct qe_f
|
@@ -534,11 +550,11 @@ int qe_upload_firmware(const struct qe_f
|
||||||
u32 trap = be32_to_cpu(ucode->traps[j]);
|
u32 trap = be32_to_cpu(ucode->traps[j]);
|
||||||
|
|
||||||
if (trap)
|
if (trap)
|
||||||
|
@ -1355,7 +1355,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||||
}
|
}
|
||||||
|
|
||||||
qe_firmware_uploaded = 1;
|
qe_firmware_uploaded = 1;
|
||||||
@@ -644,9 +660,9 @@ EXPORT_SYMBOL(qe_get_num_of_risc);
|
@@ -657,9 +673,9 @@ EXPORT_SYMBOL(qe_get_num_of_risc);
|
||||||
unsigned int qe_get_num_of_snums(void)
|
unsigned int qe_get_num_of_snums(void)
|
||||||
{
|
{
|
||||||
struct device_node *qe;
|
struct device_node *qe;
|
||||||
|
@ -1367,7 +1367,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||||
|
|
||||||
num_of_snums = 28; /* The default number of snum for threads is 28 */
|
num_of_snums = 28; /* The default number of snum for threads is 28 */
|
||||||
qe = of_find_compatible_node(NULL, NULL, "fsl,qe");
|
qe = of_find_compatible_node(NULL, NULL, "fsl,qe");
|
||||||
@@ -660,9 +676,9 @@ unsigned int qe_get_num_of_snums(void)
|
@@ -673,9 +689,9 @@ unsigned int qe_get_num_of_snums(void)
|
||||||
return num_of_snums;
|
return num_of_snums;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -218,7 +218,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||||
reg &= ~DWC3_GFLADJ_30MHZ_MASK;
|
reg &= ~DWC3_GFLADJ_30MHZ_MASK;
|
||||||
reg |= DWC3_GFLADJ_30MHZ_SDBND_SEL | dwc->fladj;
|
reg |= DWC3_GFLADJ_30MHZ_SDBND_SEL | dwc->fladj;
|
||||||
dwc3_writel(dwc->regs, DWC3_GFLADJ, reg);
|
dwc3_writel(dwc->regs, DWC3_GFLADJ, reg);
|
||||||
@@ -579,6 +599,99 @@ static int dwc3_phy_setup(struct dwc3 *d
|
@@ -585,6 +605,99 @@ static int dwc3_phy_setup(struct dwc3 *d
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -318,7 +318,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||||
static void dwc3_core_exit(struct dwc3 *dwc)
|
static void dwc3_core_exit(struct dwc3 *dwc)
|
||||||
{
|
{
|
||||||
dwc3_event_buffers_cleanup(dwc);
|
dwc3_event_buffers_cleanup(dwc);
|
||||||
@@ -721,6 +834,8 @@ static int dwc3_core_init(struct dwc3 *d
|
@@ -727,6 +840,8 @@ static int dwc3_core_init(struct dwc3 *d
|
||||||
if (ret)
|
if (ret)
|
||||||
goto err1;
|
goto err1;
|
||||||
|
|
||||||
|
@ -327,7 +327,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||||
/* Adjust Frame Length */
|
/* Adjust Frame Length */
|
||||||
dwc3_frame_length_adjustment(dwc);
|
dwc3_frame_length_adjustment(dwc);
|
||||||
|
|
||||||
@@ -919,11 +1034,117 @@ static void dwc3_core_exit_mode(struct d
|
@@ -925,11 +1040,117 @@ static void dwc3_core_exit_mode(struct d
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -445,7 +445,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||||
struct resource *res;
|
struct resource *res;
|
||||||
struct dwc3 *dwc;
|
struct dwc3 *dwc;
|
||||||
u8 lpm_nyet_threshold;
|
u8 lpm_nyet_threshold;
|
||||||
@@ -955,6 +1176,11 @@ static int dwc3_probe(struct platform_de
|
@@ -961,6 +1182,11 @@ static int dwc3_probe(struct platform_de
|
||||||
dwc->xhci_resources[0].flags = res->flags;
|
dwc->xhci_resources[0].flags = res->flags;
|
||||||
dwc->xhci_resources[0].name = res->name;
|
dwc->xhci_resources[0].name = res->name;
|
||||||
|
|
||||||
|
@ -457,7 +457,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||||
res->start += DWC3_GLOBALS_REGS_START;
|
res->start += DWC3_GLOBALS_REGS_START;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -997,6 +1223,12 @@ static int dwc3_probe(struct platform_de
|
@@ -1003,6 +1229,12 @@ static int dwc3_probe(struct platform_de
|
||||||
dwc->usb3_lpm_capable = device_property_read_bool(dev,
|
dwc->usb3_lpm_capable = device_property_read_bool(dev,
|
||||||
"snps,usb3_lpm_capable");
|
"snps,usb3_lpm_capable");
|
||||||
|
|
||||||
|
@ -470,7 +470,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||||
dwc->disable_scramble_quirk = device_property_read_bool(dev,
|
dwc->disable_scramble_quirk = device_property_read_bool(dev,
|
||||||
"snps,disable_scramble_quirk");
|
"snps,disable_scramble_quirk");
|
||||||
dwc->u2exit_lfps_quirk = device_property_read_bool(dev,
|
dwc->u2exit_lfps_quirk = device_property_read_bool(dev,
|
||||||
@@ -1041,6 +1273,8 @@ static int dwc3_probe(struct platform_de
|
@@ -1047,6 +1279,8 @@ static int dwc3_probe(struct platform_de
|
||||||
dwc->hird_threshold = hird_threshold
|
dwc->hird_threshold = hird_threshold
|
||||||
| (dwc->is_utmi_l1_suspend << 4);
|
| (dwc->is_utmi_l1_suspend << 4);
|
||||||
|
|
||||||
|
@ -479,7 +479,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||||
platform_set_drvdata(pdev, dwc);
|
platform_set_drvdata(pdev, dwc);
|
||||||
dwc3_cache_hwparams(dwc);
|
dwc3_cache_hwparams(dwc);
|
||||||
|
|
||||||
@@ -1064,6 +1298,11 @@ static int dwc3_probe(struct platform_de
|
@@ -1070,6 +1304,11 @@ static int dwc3_probe(struct platform_de
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
goto err1;
|
goto err1;
|
||||||
|
|
||||||
|
@ -534,7 +534,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||||
/* Global Debug Queue/FIFO Space Available Register */
|
/* Global Debug Queue/FIFO Space Available Register */
|
||||||
#define DWC3_GDBGFIFOSPACE_NUM(n) ((n) & 0x1f)
|
#define DWC3_GDBGFIFOSPACE_NUM(n) ((n) & 0x1f)
|
||||||
#define DWC3_GDBGFIFOSPACE_TYPE(n) (((n) << 5) & 0x1e0)
|
#define DWC3_GDBGFIFOSPACE_TYPE(n) (((n) << 5) & 0x1e0)
|
||||||
@@ -180,7 +207,6 @@
|
@@ -182,7 +209,6 @@
|
||||||
#define DWC3_GCTL_CLK_PIPE (1)
|
#define DWC3_GCTL_CLK_PIPE (1)
|
||||||
#define DWC3_GCTL_CLK_PIPEHALF (2)
|
#define DWC3_GCTL_CLK_PIPEHALF (2)
|
||||||
#define DWC3_GCTL_CLK_MASK (3)
|
#define DWC3_GCTL_CLK_MASK (3)
|
||||||
|
@ -542,7 +542,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||||
#define DWC3_GCTL_PRTCAP(n) (((n) & (3 << 12)) >> 12)
|
#define DWC3_GCTL_PRTCAP(n) (((n) & (3 << 12)) >> 12)
|
||||||
#define DWC3_GCTL_PRTCAPDIR(n) ((n) << 12)
|
#define DWC3_GCTL_PRTCAPDIR(n) ((n) << 12)
|
||||||
#define DWC3_GCTL_PRTCAP_HOST 1
|
#define DWC3_GCTL_PRTCAP_HOST 1
|
||||||
@@ -289,6 +315,10 @@
|
@@ -292,6 +318,10 @@
|
||||||
/* Global Frame Length Adjustment Register */
|
/* Global Frame Length Adjustment Register */
|
||||||
#define DWC3_GFLADJ_30MHZ_SDBND_SEL (1 << 7)
|
#define DWC3_GFLADJ_30MHZ_SDBND_SEL (1 << 7)
|
||||||
#define DWC3_GFLADJ_30MHZ_MASK 0x3f
|
#define DWC3_GFLADJ_30MHZ_MASK 0x3f
|
||||||
|
@ -553,7 +553,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||||
|
|
||||||
/* Global User Control Register 2 */
|
/* Global User Control Register 2 */
|
||||||
#define DWC3_GUCTL2_RST_ACTBITLATER (1 << 14)
|
#define DWC3_GUCTL2_RST_ACTBITLATER (1 << 14)
|
||||||
@@ -753,6 +783,7 @@ struct dwc3_scratchpad_array {
|
@@ -756,6 +786,7 @@ struct dwc3_scratchpad_array {
|
||||||
* @regs: base address for our registers
|
* @regs: base address for our registers
|
||||||
* @regs_size: address space size
|
* @regs_size: address space size
|
||||||
* @fladj: frame length adjustment
|
* @fladj: frame length adjustment
|
||||||
|
@ -561,7 +561,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||||
* @irq_gadget: peripheral controller's IRQ number
|
* @irq_gadget: peripheral controller's IRQ number
|
||||||
* @nr_scratch: number of scratch buffers
|
* @nr_scratch: number of scratch buffers
|
||||||
* @u1u2: only used on revisions <1.83a for workaround
|
* @u1u2: only used on revisions <1.83a for workaround
|
||||||
@@ -829,6 +860,7 @@ struct dwc3_scratchpad_array {
|
@@ -832,6 +863,7 @@ struct dwc3_scratchpad_array {
|
||||||
* 1 - -3.5dB de-emphasis
|
* 1 - -3.5dB de-emphasis
|
||||||
* 2 - No de-emphasis
|
* 2 - No de-emphasis
|
||||||
* 3 - Reserved
|
* 3 - Reserved
|
||||||
|
@ -569,7 +569,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||||
*/
|
*/
|
||||||
struct dwc3 {
|
struct dwc3 {
|
||||||
struct usb_ctrlrequest *ctrl_req;
|
struct usb_ctrlrequest *ctrl_req;
|
||||||
@@ -847,6 +879,7 @@ struct dwc3 {
|
@@ -850,6 +882,7 @@ struct dwc3 {
|
||||||
spinlock_t lock;
|
spinlock_t lock;
|
||||||
|
|
||||||
struct device *dev;
|
struct device *dev;
|
||||||
|
@ -577,7 +577,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||||
|
|
||||||
struct platform_device *xhci;
|
struct platform_device *xhci;
|
||||||
struct resource xhci_resources[DWC3_XHCI_RESOURCES_NUM];
|
struct resource xhci_resources[DWC3_XHCI_RESOURCES_NUM];
|
||||||
@@ -872,6 +905,12 @@ struct dwc3 {
|
@@ -875,6 +908,12 @@ struct dwc3 {
|
||||||
enum usb_phy_interface hsphy_mode;
|
enum usb_phy_interface hsphy_mode;
|
||||||
|
|
||||||
u32 fladj;
|
u32 fladj;
|
||||||
|
@ -590,7 +590,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||||
u32 irq_gadget;
|
u32 irq_gadget;
|
||||||
u32 nr_scratch;
|
u32 nr_scratch;
|
||||||
u32 u1u2;
|
u32 u1u2;
|
||||||
@@ -948,9 +987,12 @@ struct dwc3 {
|
@@ -951,9 +990,12 @@ struct dwc3 {
|
||||||
unsigned ep0_bounced:1;
|
unsigned ep0_bounced:1;
|
||||||
unsigned ep0_expect_in:1;
|
unsigned ep0_expect_in:1;
|
||||||
unsigned has_hibernation:1;
|
unsigned has_hibernation:1;
|
||||||
|
@ -603,7 +603,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||||
unsigned pending_events:1;
|
unsigned pending_events:1;
|
||||||
unsigned pullups_connected:1;
|
unsigned pullups_connected:1;
|
||||||
unsigned setup_packet_pending:1;
|
unsigned setup_packet_pending:1;
|
||||||
@@ -971,9 +1013,16 @@ struct dwc3 {
|
@@ -974,9 +1016,16 @@ struct dwc3 {
|
||||||
unsigned dis_rxdet_inp3_quirk:1;
|
unsigned dis_rxdet_inp3_quirk:1;
|
||||||
unsigned dis_u2_freeclk_exists_quirk:1;
|
unsigned dis_u2_freeclk_exists_quirk:1;
|
||||||
unsigned dis_del_phy_power_chg_quirk:1;
|
unsigned dis_del_phy_power_chg_quirk:1;
|
||||||
|
|
|
@ -18,7 +18,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||||
|
|
||||||
#include <linux/usb/hcd.h>
|
#include <linux/usb/hcd.h>
|
||||||
#include <linux/usb/ch11.h>
|
#include <linux/usb/ch11.h>
|
||||||
@@ -4982,6 +4983,8 @@ int dwc2_hcd_init(struct dwc2_hsotg *hso
|
@@ -4983,6 +4984,8 @@ int dwc2_hcd_init(struct dwc2_hsotg *hso
|
||||||
|
|
||||||
retval = -ENOMEM;
|
retval = -ENOMEM;
|
||||||
|
|
||||||
|
|
|
@ -4137,7 +4137,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||||
{
|
{
|
||||||
struct nand_chip *chip = mtd_to_nand(mtd);
|
struct nand_chip *chip = mtd_to_nand(mtd);
|
||||||
|
|
||||||
@@ -921,7 +921,7 @@ static void panic_nand_get_device(struct
|
@@ -926,7 +926,7 @@ static void panic_nand_get_device(struct
|
||||||
*
|
*
|
||||||
* Get the device and lock it for exclusive access
|
* Get the device and lock it for exclusive access
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
--- a/drivers/mtd/nand/nand_base.c
|
--- a/drivers/mtd/nand/nand_base.c
|
||||||
+++ b/drivers/mtd/nand/nand_base.c
|
+++ b/drivers/mtd/nand/nand_base.c
|
||||||
@@ -2022,6 +2022,9 @@ static int nand_do_read_ops(struct mtd_i
|
@@ -2027,6 +2027,9 @@ static int nand_do_read_ops(struct mtd_i
|
||||||
__func__, buf);
|
__func__, buf);
|
||||||
|
|
||||||
read_retry:
|
read_retry:
|
||||||
|
@ -10,7 +10,7 @@
|
||||||
chip->cmdfunc(mtd, NAND_CMD_READ0, 0x00, page);
|
chip->cmdfunc(mtd, NAND_CMD_READ0, 0x00, page);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -2040,6 +2043,7 @@ read_retry:
|
@@ -2045,6 +2048,7 @@ read_retry:
|
||||||
else
|
else
|
||||||
ret = chip->ecc.read_page(mtd, chip, bufpoi,
|
ret = chip->ecc.read_page(mtd, chip, bufpoi,
|
||||||
oob_required, page);
|
oob_required, page);
|
||||||
|
@ -18,7 +18,7 @@
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
if (use_bufpoi)
|
if (use_bufpoi)
|
||||||
/* Invalidate page cache */
|
/* Invalidate page cache */
|
||||||
@@ -3209,8 +3213,11 @@ int nand_erase_nand(struct mtd_info *mtd
|
@@ -3214,8 +3218,11 @@ int nand_erase_nand(struct mtd_info *mtd
|
||||||
(page + pages_per_block))
|
(page + pages_per_block))
|
||||||
chip->pagebuf = -1;
|
chip->pagebuf = -1;
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@
|
||||||
/*
|
/*
|
||||||
* See if operation failed and additional status checks are
|
* See if operation failed and additional status checks are
|
||||||
* available
|
* available
|
||||||
@@ -4404,6 +4411,7 @@ int nand_scan_ident(struct mtd_info *mtd
|
@@ -4409,6 +4416,7 @@ int nand_scan_ident(struct mtd_info *mtd
|
||||||
* cmdfunc() both expect cmd_ctrl() to be populated,
|
* cmdfunc() both expect cmd_ctrl() to be populated,
|
||||||
* so we need to check that that's the case
|
* so we need to check that that's the case
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -13,7 +13,7 @@ Signed-off-by: Nikolay Martynov <mar.kolya@gmail.com>
|
||||||
|
|
||||||
--- a/drivers/mtd/nand/nand_base.c
|
--- a/drivers/mtd/nand/nand_base.c
|
||||||
+++ b/drivers/mtd/nand/nand_base.c
|
+++ b/drivers/mtd/nand/nand_base.c
|
||||||
@@ -3856,6 +3856,7 @@ static void nand_decode_ext_id(struct mt
|
@@ -3861,6 +3861,7 @@ static void nand_decode_ext_id(struct mt
|
||||||
/*
|
/*
|
||||||
* Field definitions are in the following datasheets:
|
* Field definitions are in the following datasheets:
|
||||||
* Old style (4,5 byte ID): Samsung K9GAG08U0M (p.32)
|
* Old style (4,5 byte ID): Samsung K9GAG08U0M (p.32)
|
||||||
|
@ -21,7 +21,7 @@ Signed-off-by: Nikolay Martynov <mar.kolya@gmail.com>
|
||||||
* New Samsung (6 byte ID): Samsung K9GAG08U0F (p.44)
|
* New Samsung (6 byte ID): Samsung K9GAG08U0F (p.44)
|
||||||
* Hynix MLC (6 byte ID): Hynix H27UBG8T2B (p.22)
|
* Hynix MLC (6 byte ID): Hynix H27UBG8T2B (p.22)
|
||||||
*
|
*
|
||||||
@@ -3953,6 +3954,19 @@ static void nand_decode_ext_id(struct mt
|
@@ -3958,6 +3959,19 @@ static void nand_decode_ext_id(struct mt
|
||||||
*busw = (extid & 0x01) ? NAND_BUSWIDTH_16 : 0;
|
*busw = (extid & 0x01) ? NAND_BUSWIDTH_16 : 0;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in a new issue