kernel: bump 5.15 to 5.15.133
Changelog: https://cdn.kernel.org/pub/linux/kernel/v5.x/ChangeLog-5.15.133 Removed upstreamed: bcm47xx/patches-5.15/101-v5.18-mtd-rawnand-brcmnand-Allow-SoC-to-provide-I-O-operations.patch[1] Cherry picked build fix.[2] All other patches automatically rebased. 1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v5.15.133&id=56cf9f446b331414a15ef0e8dedf23583ec2c427 2. https://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git/tree/queue-5.15/fix-up-backport-of-136191703038-interconnect-teach-l.patch Build system: x86_64 Build-tested: ramips/tplink_archer-a6-v3 Run-tested: ramips/tplink_archer-a6-v3 Signed-off-by: John Audia <therealgraysky@proton.me>
This commit is contained in:
parent
8f033569b4
commit
89895937dd
@ -1,2 +1,2 @@
|
|||||||
LINUX_VERSION-5.15 = .132
|
LINUX_VERSION-5.15 = .133
|
||||||
LINUX_KERNEL_HASH-5.15.132 = 4177b5c4d6e749bb8339ac4aa68eb0932ead9490b956a80d9a597089959618ac
|
LINUX_KERNEL_HASH-5.15.133 = ef845e7934897b88e4448378ea9daacac19e07f156fe904844fab0a7d8ff5ddd
|
||||||
|
@ -14,15 +14,15 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
|
|||||||
|
|
||||||
--- a/drivers/mtd/nand/raw/brcmnand/brcmnand.c
|
--- a/drivers/mtd/nand/raw/brcmnand/brcmnand.c
|
||||||
+++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.c
|
+++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.c
|
||||||
@@ -3033,6 +3033,7 @@ int brcmnand_probe(struct platform_devic
|
@@ -3059,6 +3059,7 @@ int brcmnand_probe(struct platform_devic
|
||||||
|
|
||||||
dev_set_drvdata(dev, ctrl);
|
dev_set_drvdata(dev, ctrl);
|
||||||
ctrl->dev = dev;
|
ctrl->dev = dev;
|
||||||
+ ctrl->soc = soc;
|
+ ctrl->soc = soc;
|
||||||
|
|
||||||
init_completion(&ctrl->done);
|
/* Enable the static key if the soc provides I/O operations indicating
|
||||||
init_completion(&ctrl->dma_done);
|
* that a non-memory mapped IO access path must be used
|
||||||
@@ -3173,8 +3174,6 @@ int brcmnand_probe(struct platform_devic
|
@@ -3205,8 +3206,6 @@ int brcmnand_probe(struct platform_devic
|
||||||
* interesting ways
|
* interesting ways
|
||||||
*/
|
*/
|
||||||
if (soc) {
|
if (soc) {
|
||||||
|
@ -1,150 +0,0 @@
|
|||||||
From: Florian Fainelli <f.fainelli@gmail.com>
|
|
||||||
Subject: [PATCH v3 2/9] mtd: rawnand: brcmnand: Allow SoC to provide I/O operations
|
|
||||||
Date: Fri, 07 Jan 2022 10:46:07 -0800
|
|
||||||
Content-Type: text/plain; charset="utf-8"
|
|
||||||
|
|
||||||
Allow a brcmnand_soc instance to provide a custom set of I/O operations
|
|
||||||
which we will require when using this driver on a BCMA bus which is not
|
|
||||||
directly memory mapped I/O. Update the nand_{read,write}_reg accordingly
|
|
||||||
to use the SoC operations if provided.
|
|
||||||
|
|
||||||
To minimize the penalty on other SoCs which do support standard MMIO
|
|
||||||
accesses, we use a static key which is disabled by default and gets
|
|
||||||
enabled if a soc implementation does provide I/O operations.
|
|
||||||
|
|
||||||
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
|
|
||||||
---
|
|
||||||
drivers/mtd/nand/raw/brcmnand/brcmnand.c | 28 +++++++++++++++++++++--
|
|
||||||
drivers/mtd/nand/raw/brcmnand/brcmnand.h | 29 ++++++++++++++++++++++++
|
|
||||||
2 files changed, 55 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
--- a/drivers/mtd/nand/raw/brcmnand/brcmnand.c
|
|
||||||
+++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.c
|
|
||||||
@@ -25,6 +25,7 @@
|
|
||||||
#include <linux/of.h>
|
|
||||||
#include <linux/of_platform.h>
|
|
||||||
#include <linux/slab.h>
|
|
||||||
+#include <linux/static_key.h>
|
|
||||||
#include <linux/list.h>
|
|
||||||
#include <linux/log2.h>
|
|
||||||
|
|
||||||
@@ -207,6 +208,8 @@ enum {
|
|
||||||
|
|
||||||
struct brcmnand_host;
|
|
||||||
|
|
||||||
+static DEFINE_STATIC_KEY_FALSE(brcmnand_soc_has_ops_key);
|
|
||||||
+
|
|
||||||
struct brcmnand_controller {
|
|
||||||
struct device *dev;
|
|
||||||
struct nand_controller controller;
|
|
||||||
@@ -592,15 +595,25 @@ enum {
|
|
||||||
INTFC_CTLR_READY = BIT(31),
|
|
||||||
};
|
|
||||||
|
|
||||||
+static inline bool brcmnand_non_mmio_ops(struct brcmnand_controller *ctrl)
|
|
||||||
+{
|
|
||||||
+ return static_branch_unlikely(&brcmnand_soc_has_ops_key);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static inline u32 nand_readreg(struct brcmnand_controller *ctrl, u32 offs)
|
|
||||||
{
|
|
||||||
+ if (brcmnand_non_mmio_ops(ctrl))
|
|
||||||
+ return brcmnand_soc_read(ctrl->soc, offs);
|
|
||||||
return brcmnand_readl(ctrl->nand_base + offs);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void nand_writereg(struct brcmnand_controller *ctrl, u32 offs,
|
|
||||||
u32 val)
|
|
||||||
{
|
|
||||||
- brcmnand_writel(val, ctrl->nand_base + offs);
|
|
||||||
+ if (brcmnand_non_mmio_ops(ctrl))
|
|
||||||
+ brcmnand_soc_write(ctrl->soc, val, offs);
|
|
||||||
+ else
|
|
||||||
+ brcmnand_writel(val, ctrl->nand_base + offs);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int brcmnand_revision_init(struct brcmnand_controller *ctrl)
|
|
||||||
@@ -766,13 +779,18 @@ static inline void brcmnand_rmw_reg(stru
|
|
||||||
|
|
||||||
static inline u32 brcmnand_read_fc(struct brcmnand_controller *ctrl, int word)
|
|
||||||
{
|
|
||||||
+ if (brcmnand_non_mmio_ops(ctrl))
|
|
||||||
+ return brcmnand_soc_read(ctrl->soc, BRCMNAND_NON_MMIO_FC_ADDR);
|
|
||||||
return __raw_readl(ctrl->nand_fc + word * 4);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void brcmnand_write_fc(struct brcmnand_controller *ctrl,
|
|
||||||
int word, u32 val)
|
|
||||||
{
|
|
||||||
- __raw_writel(val, ctrl->nand_fc + word * 4);
|
|
||||||
+ if (brcmnand_non_mmio_ops(ctrl))
|
|
||||||
+ brcmnand_soc_write(ctrl->soc, val, BRCMNAND_NON_MMIO_FC_ADDR);
|
|
||||||
+ else
|
|
||||||
+ __raw_writel(val, ctrl->nand_fc + word * 4);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void edu_writel(struct brcmnand_controller *ctrl,
|
|
||||||
@@ -3035,6 +3053,12 @@ int brcmnand_probe(struct platform_devic
|
|
||||||
ctrl->dev = dev;
|
|
||||||
ctrl->soc = soc;
|
|
||||||
|
|
||||||
+ /* Enable the static key if the soc provides I/O operations indicating
|
|
||||||
+ * that a non-memory mapped IO access path must be used
|
|
||||||
+ */
|
|
||||||
+ if (brcmnand_soc_has_ops(ctrl->soc))
|
|
||||||
+ static_branch_enable(&brcmnand_soc_has_ops_key);
|
|
||||||
+
|
|
||||||
init_completion(&ctrl->done);
|
|
||||||
init_completion(&ctrl->dma_done);
|
|
||||||
init_completion(&ctrl->edu_done);
|
|
||||||
--- a/drivers/mtd/nand/raw/brcmnand/brcmnand.h
|
|
||||||
+++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.h
|
|
||||||
@@ -11,12 +11,25 @@
|
|
||||||
|
|
||||||
struct platform_device;
|
|
||||||
struct dev_pm_ops;
|
|
||||||
+struct brcmnand_io_ops;
|
|
||||||
+
|
|
||||||
+/* Special register offset constant to intercept a non-MMIO access
|
|
||||||
+ * to the flash cache register space. This is intentionally large
|
|
||||||
+ * not to overlap with an existing offset.
|
|
||||||
+ */
|
|
||||||
+#define BRCMNAND_NON_MMIO_FC_ADDR 0xffffffff
|
|
||||||
|
|
||||||
struct brcmnand_soc {
|
|
||||||
bool (*ctlrdy_ack)(struct brcmnand_soc *soc);
|
|
||||||
void (*ctlrdy_set_enabled)(struct brcmnand_soc *soc, bool en);
|
|
||||||
void (*prepare_data_bus)(struct brcmnand_soc *soc, bool prepare,
|
|
||||||
bool is_param);
|
|
||||||
+ const struct brcmnand_io_ops *ops;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+struct brcmnand_io_ops {
|
|
||||||
+ u32 (*read_reg)(struct brcmnand_soc *soc, u32 offset);
|
|
||||||
+ void (*write_reg)(struct brcmnand_soc *soc, u32 val, u32 offset);
|
|
||||||
};
|
|
||||||
|
|
||||||
static inline void brcmnand_soc_data_bus_prepare(struct brcmnand_soc *soc,
|
|
||||||
@@ -58,6 +71,22 @@ static inline void brcmnand_writel(u32 v
|
|
||||||
writel_relaxed(val, addr);
|
|
||||||
}
|
|
||||||
|
|
||||||
+static inline bool brcmnand_soc_has_ops(struct brcmnand_soc *soc)
|
|
||||||
+{
|
|
||||||
+ return soc && soc->ops && soc->ops->read_reg && soc->ops->write_reg;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static inline u32 brcmnand_soc_read(struct brcmnand_soc *soc, u32 offset)
|
|
||||||
+{
|
|
||||||
+ return soc->ops->read_reg(soc, offset);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static inline void brcmnand_soc_write(struct brcmnand_soc *soc, u32 val,
|
|
||||||
+ u32 offset)
|
|
||||||
+{
|
|
||||||
+ soc->ops->write_reg(soc, val, offset);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
int brcmnand_probe(struct platform_device *pdev, struct brcmnand_soc *soc);
|
|
||||||
int brcmnand_remove(struct platform_device *pdev);
|
|
||||||
|
|
@ -16,7 +16,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
|
|||||||
|
|
||||||
--- a/drivers/mtd/nand/raw/brcmnand/brcmnand.c
|
--- a/drivers/mtd/nand/raw/brcmnand/brcmnand.c
|
||||||
+++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.c
|
+++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.c
|
||||||
@@ -2806,7 +2806,7 @@ static const struct nand_controller_ops
|
@@ -2814,7 +2814,7 @@ static const struct nand_controller_ops
|
||||||
static int brcmnand_init_cs(struct brcmnand_host *host, struct device_node *dn)
|
static int brcmnand_init_cs(struct brcmnand_host *host, struct device_node *dn)
|
||||||
{
|
{
|
||||||
struct brcmnand_controller *ctrl = host->ctrl;
|
struct brcmnand_controller *ctrl = host->ctrl;
|
||||||
@ -25,7 +25,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
|
|||||||
struct mtd_info *mtd;
|
struct mtd_info *mtd;
|
||||||
struct nand_chip *chip;
|
struct nand_chip *chip;
|
||||||
int ret;
|
int ret;
|
||||||
@@ -2814,7 +2814,7 @@ static int brcmnand_init_cs(struct brcmn
|
@@ -2822,7 +2822,7 @@ static int brcmnand_init_cs(struct brcmn
|
||||||
|
|
||||||
ret = of_property_read_u32(dn, "reg", &host->cs);
|
ret = of_property_read_u32(dn, "reg", &host->cs);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
@ -34,7 +34,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
|
|||||||
return -ENXIO;
|
return -ENXIO;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2823,13 +2823,13 @@ static int brcmnand_init_cs(struct brcmn
|
@@ -2831,13 +2831,13 @@ static int brcmnand_init_cs(struct brcmn
|
||||||
|
|
||||||
nand_set_flash_node(chip, dn);
|
nand_set_flash_node(chip, dn);
|
||||||
nand_set_controller_data(chip, host);
|
nand_set_controller_data(chip, host);
|
||||||
|
@ -17,7 +17,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
|
|||||||
|
|
||||||
--- a/drivers/mtd/nand/raw/brcmnand/brcmnand.c
|
--- a/drivers/mtd/nand/raw/brcmnand/brcmnand.c
|
||||||
+++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.c
|
+++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.c
|
||||||
@@ -2803,7 +2803,7 @@ static const struct nand_controller_ops
|
@@ -2811,7 +2811,7 @@ static const struct nand_controller_ops
|
||||||
.attach_chip = brcmnand_attach_chip,
|
.attach_chip = brcmnand_attach_chip,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -26,7 +26,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
|
|||||||
{
|
{
|
||||||
struct brcmnand_controller *ctrl = host->ctrl;
|
struct brcmnand_controller *ctrl = host->ctrl;
|
||||||
struct device *dev = ctrl->dev;
|
struct device *dev = ctrl->dev;
|
||||||
@@ -2812,16 +2812,9 @@ static int brcmnand_init_cs(struct brcmn
|
@@ -2820,16 +2820,9 @@ static int brcmnand_init_cs(struct brcmn
|
||||||
int ret;
|
int ret;
|
||||||
u16 cfg_offs;
|
u16 cfg_offs;
|
||||||
|
|
||||||
@ -43,7 +43,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
|
|||||||
nand_set_controller_data(chip, host);
|
nand_set_controller_data(chip, host);
|
||||||
mtd->name = devm_kasprintf(dev, GFP_KERNEL, "brcmnand.%d",
|
mtd->name = devm_kasprintf(dev, GFP_KERNEL, "brcmnand.%d",
|
||||||
host->cs);
|
host->cs);
|
||||||
@@ -3228,7 +3221,16 @@ int brcmnand_probe(struct platform_devic
|
@@ -3236,7 +3229,16 @@ int brcmnand_probe(struct platform_devic
|
||||||
host->pdev = pdev;
|
host->pdev = pdev;
|
||||||
host->ctrl = ctrl;
|
host->ctrl = ctrl;
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
|
|||||||
unsigned int dma_irq;
|
unsigned int dma_irq;
|
||||||
int nand_version;
|
int nand_version;
|
||||||
|
|
||||||
@@ -1642,7 +1642,7 @@ static bool brcmstb_nand_wait_for_comple
|
@@ -1650,7 +1650,7 @@ static bool brcmstb_nand_wait_for_comple
|
||||||
bool err = false;
|
bool err = false;
|
||||||
int sts;
|
int sts;
|
||||||
|
|
||||||
@ -32,7 +32,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
|
|||||||
/* switch to interrupt polling and PIO mode */
|
/* switch to interrupt polling and PIO mode */
|
||||||
disable_ctrl_irqs(ctrl);
|
disable_ctrl_irqs(ctrl);
|
||||||
sts = bcmnand_ctrl_poll_status(ctrl, NAND_CTRL_RDY,
|
sts = bcmnand_ctrl_poll_status(ctrl, NAND_CTRL_RDY,
|
||||||
@@ -3179,33 +3179,29 @@ int brcmnand_probe(struct platform_devic
|
@@ -3187,33 +3187,29 @@ int brcmnand_probe(struct platform_devic
|
||||||
}
|
}
|
||||||
|
|
||||||
/* IRQ */
|
/* IRQ */
|
||||||
|
@ -23,7 +23,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
|
|||||||
#include <linux/err.h>
|
#include <linux/err.h>
|
||||||
#include <linux/completion.h>
|
#include <linux/completion.h>
|
||||||
#include <linux/interrupt.h>
|
#include <linux/interrupt.h>
|
||||||
@@ -2803,7 +2804,8 @@ static const struct nand_controller_ops
|
@@ -2811,7 +2812,8 @@ static const struct nand_controller_ops
|
||||||
.attach_chip = brcmnand_attach_chip,
|
.attach_chip = brcmnand_attach_chip,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -33,7 +33,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
|
|||||||
{
|
{
|
||||||
struct brcmnand_controller *ctrl = host->ctrl;
|
struct brcmnand_controller *ctrl = host->ctrl;
|
||||||
struct device *dev = ctrl->dev;
|
struct device *dev = ctrl->dev;
|
||||||
@@ -2856,7 +2858,7 @@ static int brcmnand_init_cs(struct brcmn
|
@@ -2864,7 +2866,7 @@ static int brcmnand_init_cs(struct brcmn
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
@ -42,7 +42,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
|
|||||||
if (ret)
|
if (ret)
|
||||||
nand_cleanup(chip);
|
nand_cleanup(chip);
|
||||||
|
|
||||||
@@ -3025,17 +3027,15 @@ static int brcmnand_edu_setup(struct pla
|
@@ -3033,17 +3035,15 @@ static int brcmnand_edu_setup(struct pla
|
||||||
|
|
||||||
int brcmnand_probe(struct platform_device *pdev, struct brcmnand_soc *soc)
|
int brcmnand_probe(struct platform_device *pdev, struct brcmnand_soc *soc)
|
||||||
{
|
{
|
||||||
@ -63,7 +63,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
|
|||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
|
||||||
ctrl = devm_kzalloc(dev, sizeof(*ctrl), GFP_KERNEL);
|
ctrl = devm_kzalloc(dev, sizeof(*ctrl), GFP_KERNEL);
|
||||||
@@ -3062,7 +3062,7 @@ int brcmnand_probe(struct platform_devic
|
@@ -3070,7 +3070,7 @@ int brcmnand_probe(struct platform_devic
|
||||||
/* NAND register range */
|
/* NAND register range */
|
||||||
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||||
ctrl->nand_base = devm_ioremap_resource(dev, res);
|
ctrl->nand_base = devm_ioremap_resource(dev, res);
|
||||||
@ -72,7 +72,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
|
|||||||
return PTR_ERR(ctrl->nand_base);
|
return PTR_ERR(ctrl->nand_base);
|
||||||
|
|
||||||
/* Enable clock before using NAND registers */
|
/* Enable clock before using NAND registers */
|
||||||
@@ -3206,7 +3206,6 @@ int brcmnand_probe(struct platform_devic
|
@@ -3214,7 +3214,6 @@ int brcmnand_probe(struct platform_devic
|
||||||
|
|
||||||
for_each_available_child_of_node(dn, child) {
|
for_each_available_child_of_node(dn, child) {
|
||||||
if (of_device_is_compatible(child, "brcm,nandcs")) {
|
if (of_device_is_compatible(child, "brcm,nandcs")) {
|
||||||
@ -80,7 +80,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
|
|||||||
|
|
||||||
host = devm_kzalloc(dev, sizeof(*host), GFP_KERNEL);
|
host = devm_kzalloc(dev, sizeof(*host), GFP_KERNEL);
|
||||||
if (!host) {
|
if (!host) {
|
||||||
@@ -3226,7 +3225,7 @@ int brcmnand_probe(struct platform_devic
|
@@ -3234,7 +3233,7 @@ int brcmnand_probe(struct platform_devic
|
||||||
|
|
||||||
nand_set_flash_node(&host->chip, child);
|
nand_set_flash_node(&host->chip, child);
|
||||||
|
|
||||||
@ -89,7 +89,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
|
|||||||
if (ret) {
|
if (ret) {
|
||||||
devm_kfree(dev, host);
|
devm_kfree(dev, host);
|
||||||
continue; /* Try all chip-selects */
|
continue; /* Try all chip-selects */
|
||||||
@@ -3236,6 +3235,32 @@ int brcmnand_probe(struct platform_devic
|
@@ -3244,6 +3243,32 @@ int brcmnand_probe(struct platform_devic
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
|
|||||||
|
|
||||||
--- a/drivers/mtd/nand/raw/brcmnand/brcmnand.c
|
--- a/drivers/mtd/nand/raw/brcmnand/brcmnand.c
|
||||||
+++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.c
|
+++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.c
|
||||||
@@ -916,6 +916,12 @@ static void brcmnand_wr_corr_thresh(stru
|
@@ -951,6 +951,12 @@ static void brcmnand_wr_corr_thresh(stru
|
||||||
|
|
||||||
static inline int brcmnand_cmd_shift(struct brcmnand_controller *ctrl)
|
static inline int brcmnand_cmd_shift(struct brcmnand_controller *ctrl)
|
||||||
{
|
{
|
||||||
|
@ -187,7 +187,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
|
|||||||
+MODULE_DESCRIPTION("NAND controller driver glue for BCMA chips");
|
+MODULE_DESCRIPTION("NAND controller driver glue for BCMA chips");
|
||||||
--- a/drivers/mtd/nand/raw/brcmnand/brcmnand.c
|
--- a/drivers/mtd/nand/raw/brcmnand/brcmnand.c
|
||||||
+++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.c
|
+++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.c
|
||||||
@@ -598,7 +598,11 @@ enum {
|
@@ -627,7 +627,11 @@ enum {
|
||||||
|
|
||||||
static inline bool brcmnand_non_mmio_ops(struct brcmnand_controller *ctrl)
|
static inline bool brcmnand_non_mmio_ops(struct brcmnand_controller *ctrl)
|
||||||
{
|
{
|
||||||
|
@ -20,7 +20,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
|||||||
|
|
||||||
--- a/drivers/mtd/nand/raw/brcmnand/brcmnand.c
|
--- a/drivers/mtd/nand/raw/brcmnand/brcmnand.c
|
||||||
+++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.c
|
+++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.c
|
||||||
@@ -37,7 +37,11 @@
|
@@ -38,7 +38,11 @@
|
||||||
* 1: NAND_WP is set by default, cleared for erase/write operations
|
* 1: NAND_WP is set by default, cleared for erase/write operations
|
||||||
* 2: NAND_WP is always cleared
|
* 2: NAND_WP is always cleared
|
||||||
*/
|
*/
|
||||||
|
@ -382,7 +382,7 @@ Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
|
|||||||
}
|
}
|
||||||
--- a/kernel/fork.c
|
--- a/kernel/fork.c
|
||||||
+++ b/kernel/fork.c
|
+++ b/kernel/fork.c
|
||||||
@@ -1083,6 +1083,7 @@ static struct mm_struct *mm_init(struct
|
@@ -1091,6 +1091,7 @@ static struct mm_struct *mm_init(struct
|
||||||
goto fail_nocontext;
|
goto fail_nocontext;
|
||||||
|
|
||||||
mm->user_ns = get_user_ns(user_ns);
|
mm->user_ns = get_user_ns(user_ns);
|
||||||
@ -390,7 +390,7 @@ Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
|
|||||||
return mm;
|
return mm;
|
||||||
|
|
||||||
fail_nocontext:
|
fail_nocontext:
|
||||||
@@ -1125,6 +1126,7 @@ static inline void __mmput(struct mm_str
|
@@ -1133,6 +1134,7 @@ static inline void __mmput(struct mm_str
|
||||||
}
|
}
|
||||||
if (mm->binfmt)
|
if (mm->binfmt)
|
||||||
module_put(mm->binfmt->module);
|
module_put(mm->binfmt->module);
|
||||||
@ -398,7 +398,7 @@ Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
|
|||||||
mmdrop(mm);
|
mmdrop(mm);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2617,6 +2619,13 @@ pid_t kernel_clone(struct kernel_clone_a
|
@@ -2625,6 +2627,13 @@ pid_t kernel_clone(struct kernel_clone_a
|
||||||
get_task_struct(p);
|
get_task_struct(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,31 @@
|
|||||||
|
From 16c572ef0646f8b0fa19fbf81b302de8a03127f2 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Sasha Levin <sashal@kernel.org>
|
||||||
|
Date: Sun, 24 Sep 2023 14:30:44 -0400
|
||||||
|
Subject: Fix up backport of 136191703038 ("interconnect: Teach lockdep about
|
||||||
|
icc_bw_lock order")
|
||||||
|
|
||||||
|
Add a missing include to fix the following build error:
|
||||||
|
|
||||||
|
drivers/interconnect/core.c: In function 'icc_init':
|
||||||
|
drivers/interconnect/core.c:1148:9: error: implicit declaration of function 'fs_reclaim_acquire' [-Werror=implicit-function-declaration]
|
||||||
|
1148 | fs_reclaim_acquire(GFP_KERNEL);
|
||||||
|
| ^~~~~~~~~~~~~~~~~~
|
||||||
|
drivers/interconnect/core.c:1150:9: error: implicit declaration of function 'fs_reclaim_release' [-Werror=implicit-function-declaration]
|
||||||
|
1150 | fs_reclaim_release(GFP_KERNEL);
|
||||||
|
| ^~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Signed-off-by: Sasha Levin <sashal@kernel.org>
|
||||||
|
---
|
||||||
|
drivers/interconnect/core.c | 1 +
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
--- a/drivers/interconnect/core.c
|
||||||
|
+++ b/drivers/interconnect/core.c
|
||||||
|
@@ -13,6 +13,7 @@
|
||||||
|
#include <linux/interconnect.h>
|
||||||
|
#include <linux/interconnect-provider.h>
|
||||||
|
#include <linux/list.h>
|
||||||
|
+#include <linux/sched/mm.h>
|
||||||
|
#include <linux/module.h>
|
||||||
|
#include <linux/mutex.h>
|
||||||
|
#include <linux/slab.h>
|
@ -134,7 +134,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Define if arch has non-standard setup. This is a _PCI_ standard
|
* Define if arch has non-standard setup. This is a _PCI_ standard
|
||||||
@@ -894,6 +897,12 @@ struct ata_port {
|
@@ -898,6 +901,12 @@ struct ata_port {
|
||||||
#ifdef CONFIG_ATA_ACPI
|
#ifdef CONFIG_ATA_ACPI
|
||||||
struct ata_acpi_gtm __acpi_init_gtm; /* use ata_acpi_init_gtm() */
|
struct ata_acpi_gtm __acpi_init_gtm; /* use ata_acpi_init_gtm() */
|
||||||
#endif
|
#endif
|
||||||
|
@ -72,7 +72,7 @@ Signed-off-by: Wolfram Sang <wsa@kernel.org>
|
|||||||
idev->adapter.dev.parent = &pdev->dev;
|
idev->adapter.dev.parent = &pdev->dev;
|
||||||
--- a/drivers/i2c/busses/i2c-aspeed.c
|
--- a/drivers/i2c/busses/i2c-aspeed.c
|
||||||
+++ b/drivers/i2c/busses/i2c-aspeed.c
|
+++ b/drivers/i2c/busses/i2c-aspeed.c
|
||||||
@@ -1024,7 +1024,7 @@ static int aspeed_i2c_probe_bus(struct p
|
@@ -1027,7 +1027,7 @@ static int aspeed_i2c_probe_bus(struct p
|
||||||
bus->adap.algo = &aspeed_i2c_algo;
|
bus->adap.algo = &aspeed_i2c_algo;
|
||||||
bus->adap.dev.parent = &pdev->dev;
|
bus->adap.dev.parent = &pdev->dev;
|
||||||
bus->adap.dev.of_node = pdev->dev.of_node;
|
bus->adap.dev.of_node = pdev->dev.of_node;
|
||||||
|
@ -36,7 +36,7 @@
|
|||||||
|
|
||||||
--- a/include/linux/libata.h
|
--- a/include/linux/libata.h
|
||||||
+++ b/include/linux/libata.h
|
+++ b/include/linux/libata.h
|
||||||
@@ -923,6 +923,8 @@ struct ata_port_operations {
|
@@ -927,6 +927,8 @@ struct ata_port_operations {
|
||||||
enum ata_completion_errors (*qc_prep)(struct ata_queued_cmd *qc);
|
enum ata_completion_errors (*qc_prep)(struct ata_queued_cmd *qc);
|
||||||
unsigned int (*qc_issue)(struct ata_queued_cmd *qc);
|
unsigned int (*qc_issue)(struct ata_queued_cmd *qc);
|
||||||
bool (*qc_fill_rtf)(struct ata_queued_cmd *qc);
|
bool (*qc_fill_rtf)(struct ata_queued_cmd *qc);
|
||||||
@ -45,7 +45,7 @@
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Configuration and exception handling
|
* Configuration and exception handling
|
||||||
@@ -1013,6 +1015,9 @@ struct ata_port_operations {
|
@@ -1017,6 +1019,9 @@ struct ata_port_operations {
|
||||||
void (*phy_reset)(struct ata_port *ap);
|
void (*phy_reset)(struct ata_port *ap);
|
||||||
void (*eng_timeout)(struct ata_port *ap);
|
void (*eng_timeout)(struct ata_port *ap);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user