Refresh patches on all 4.4 supported platforms.
Compile & run tested: lantiq/xrx200
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
LINUX_VERSION-3.18 = .43
LINUX_VERSION-4.1 = .34
-LINUX_VERSION-4.4 = .39
+LINUX_VERSION-4.4 = .40
LINUX_KERNEL_HASH-3.18.43 = 1236e8123a6ce537d5029232560966feed054ae31776fe8481dd7d18cdd5492c
LINUX_KERNEL_HASH-4.1.34 = 412316b32b5c7a513ba3ab8e68fc443db4d9423f07b577473089def0ee7406af
-LINUX_KERNEL_HASH-4.4.39 = 864bc186b02bf62974676efa282eda775fe12e5729a3416cfe4b17f0c59111a1
+LINUX_KERNEL_HASH-4.4.40 = c4bc5ed6e73ed7393cc1b3714b822664224ab866db114eed663de1315718a4e1
ifdef KERNEL_PATCHVER
LINUX_VERSION:=$(KERNEL_PATCHVER)$(strip $(LINUX_VERSION-$(KERNEL_PATCHVER)))
}
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
-@@ -4972,7 +4972,7 @@ static void port_event(struct usb_hub *h
+@@ -4943,7 +4943,7 @@ static void port_event(struct usb_hub *h
if (portchange & USB_PORT_STAT_C_OVERCURRENT) {
u16 status = 0, unused;
drivers/spi/spidev.c | 1 +
1 file changed, 1 insertion(+)
-Index: linux-4.4.39/drivers/spi/spidev.c
-===================================================================
---- linux-4.4.39.orig/drivers/spi/spidev.c 2016-12-20 13:45:27.000000000 +0100
-+++ linux-4.4.39/drivers/spi/spidev.c 2016-12-20 13:46:06.627326840 +0100
-@@ -696,6 +696,7 @@
+--- a/drivers/spi/spidev.c
++++ b/drivers/spi/spidev.c
+@@ -696,6 +696,7 @@ static const struct of_device_id spidev_
{ .compatible = "rohm,dh2228fv" },
{ .compatible = "lineartechnology,ltc2488" },
{ .compatible = "siliconlabs,si3210" },
drivers/mtd/spi-nor/spi-nor.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
-diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c
-index 72d87c2..d1edafc 100644
--- a/drivers/mtd/spi-nor/spi-nor.c
+++ b/drivers/mtd/spi-nor/spi-nor.c
@@ -68,6 +68,7 @@ struct flash_info {
Signed-off-by: Giuseppe Lippolis <giu.lippolis@gmail.com>
---
---- a/drivers/spi/spidev.c 2016-12-11 09:43:30.502270523 +0100
-+++ b/drivers/spi/spidev.c 2016-12-11 09:45:54.688430012 +0100
+--- a/drivers/spi/spidev.c
++++ b/drivers/spi/spidev.c
@@ -695,6 +695,7 @@ static struct class *spidev_class;
static const struct of_device_id spidev_dt_ids[] = {
{ .compatible = "rohm,dh2228fv" },
drivers/mtd/spi-nor/spi-nor.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c
-index da7cd69..f325925 100644
--- a/drivers/mtd/spi-nor/spi-nor.c
+++ b/drivers/mtd/spi-nor/spi-nor.c
@@ -689,7 +689,7 @@ static const struct flash_info spi_nor_i
partition@100000 {
- label = "zImage";
- reg = <0x100000 0x300000>;
-- };
--
-- partition@540000 {
-- label = "initrd";
-- reg = <0x540000 0x300000>;
+ label = "second stage u-boot";
+ reg = <0x100000 0x200000>;
};
+- partition@540000 {
+- label = "initrd";
+- reg = <0x540000 0x300000>;
+- };
+-
- partition@980000 {
- label = "boot";
- reg = <0x980000 0x1f400000>;
arch/arm64/configs/freescale.config | 1 -
1 file changed, 1 deletion(-)
-diff --git a/arch/arm64/configs/freescale.config b/arch/arm64/configs/freescale.config
-index a31951c..5447d7a 100644
--- a/arch/arm64/configs/freescale.config
+++ b/arch/arm64/configs/freescale.config
@@ -121,7 +121,6 @@ CONFIG_IMX2_WDT=y
# lpuart
CONFIG_SERIAL_FSL_LPUART=y
CONFIG_SERIAL_FSL_LPUART_CONSOLE=y
---
-1.7.9.5
-
drivers/mtd/maps/physmap_of.c | 46 ++++++++++++++++++++++++++++++++++++++++-
1 file changed, 45 insertions(+), 1 deletion(-)
-diff --git a/drivers/mtd/maps/physmap_of.c b/drivers/mtd/maps/physmap_of.c
-index fef1d1b..e46b4e9 100644
--- a/drivers/mtd/maps/physmap_of.c
+++ b/drivers/mtd/maps/physmap_of.c
-@@ -112,9 +112,47 @@ static struct mtd_info *obsolete_probe(struct platform_device *dev,
+@@ -112,9 +112,47 @@ static struct mtd_info *obsolete_probe(s
static const char * const part_probe_types_def[] = {
"cmdlinepart", "RedBoot", "ofpart", "ofoldpart", NULL };
const struct of_device_id *match;
struct device_node *dp = dev->dev.of_node;
struct resource res;
-@@ -273,8 +311,14 @@ static int of_flash_probe(struct platform_device *dev)
+@@ -273,8 +311,14 @@ static int of_flash_probe(struct platfor
goto err_out;
ppdata.of_node = dp;
kfree(mtd_list);
---
-1.7.9.5
-
create mode 100644 arch/arm64/boot/dts/freescale/fsl-ls2088a-rdb.dts
create mode 100644 arch/arm64/boot/dts/freescale/fsl-ls2088a.dtsi
-diff --git a/arch/arm64/boot/dts/freescale/Makefile b/arch/arm64/boot/dts/freescale/Makefile
-index b599645..e6c2a9f 100644
--- a/arch/arm64/boot/dts/freescale/Makefile
+++ b/arch/arm64/boot/dts/freescale/Makefile
-@@ -6,6 +6,8 @@ dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-ls1012a-rdb.dtb
+@@ -6,6 +6,8 @@ dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-ls1
dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-ls1012a-frdm.dtb
dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-ls1046a-rdb.dtb
dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-ls1088a-rdb.dtb
always := $(dtb-y)
subdir-y := $(dts-dirs)
-diff --git a/arch/arm64/boot/dts/freescale/fsl-ls2088a-qds.dts b/arch/arm64/boot/dts/freescale/fsl-ls2088a-qds.dts
-new file mode 100644
-index 0000000..04d3726
--- /dev/null
+++ b/arch/arm64/boot/dts/freescale/fsl-ls2088a-qds.dts
@@ -0,0 +1,241 @@
+&dpmac12 {
+ phy-handle = <&mdio0_phy15>;
+};
-diff --git a/arch/arm64/boot/dts/freescale/fsl-ls2088a-rdb.dts b/arch/arm64/boot/dts/freescale/fsl-ls2088a-rdb.dts
-new file mode 100644
-index 0000000..ce553fb
--- /dev/null
+++ b/arch/arm64/boot/dts/freescale/fsl-ls2088a-rdb.dts
@@ -0,0 +1,207 @@
+&dpmac8 {
+ phy-handle = <&mdio2_phy4>;
+};
-diff --git a/arch/arm64/boot/dts/freescale/fsl-ls2088a.dtsi b/arch/arm64/boot/dts/freescale/fsl-ls2088a.dtsi
-new file mode 100644
-index 0000000..bd69942
--- /dev/null
+++ b/arch/arm64/boot/dts/freescale/fsl-ls2088a.dtsi
@@ -0,0 +1,854 @@
+ /* DRAM space 1 - 2 GB DRAM */
+ };
+};
---
-1.7.9.5
-
create mode 100644 kernel2088a-qds.its
create mode 100644 kernel2088a-rdb.its
-diff --git a/kernel2088a-qds.its b/kernel2088a-qds.its
-new file mode 100644
-index 0000000..4732954
--- /dev/null
+++ b/kernel2088a-qds.its
@@ -0,0 +1,55 @@
+ };
+ };
+};
-diff --git a/kernel2088a-rdb.its b/kernel2088a-rdb.its
-new file mode 100644
-index 0000000..151241f
--- /dev/null
+++ b/kernel2088a-rdb.its
@@ -0,0 +1,55 @@
+ };
+ };
+};
---
-1.7.9.5
-
drivers/memory/fsl_ifc.c | 1 +
1 file changed, 1 insertion(+)
-diff --git a/drivers/memory/fsl_ifc.c b/drivers/memory/fsl_ifc.c
-index 03584dc..32c7752 100644
--- a/drivers/memory/fsl_ifc.c
+++ b/drivers/memory/fsl_ifc.c
@@ -35,6 +35,7 @@
struct fsl_ifc_ctrl *fsl_ifc_ctrl_dev;
EXPORT_SYMBOL(fsl_ifc_ctrl_dev);
---
-1.7.9.5
-
static bool ls_pcie_is_bridge(struct ls_pcie *pcie)
{
u32 header_type;
-@@ -276,10 +301,28 @@ static int __init ls_pcie_probe(struct p
+@@ -284,10 +309,28 @@ static int __init ls_pcie_probe(struct p
pcie->drvdata = match->data;
pcie->lut = pcie->dbi + pcie->drvdata->lut_offset;
drivers/clk/clk-qoriq.c | 11 +++++++++++
1 file changed, 11 insertions(+)
-diff --git a/drivers/clk/clk-qoriq.c b/drivers/clk/clk-qoriq.c
-index 164ac41..6185d6a 100644
--- a/drivers/clk/clk-qoriq.c
+++ b/drivers/clk/clk-qoriq.c
-@@ -559,6 +559,17 @@ static const struct clockgen_chipinfo chipinfo[] = {
+@@ -559,6 +559,17 @@ static const struct clockgen_chipinfo ch
.flags = CG_VER3 | CG_LITTLE_ENDIAN,
},
{
.compat = "fsl,p2041-clockgen",
.guts_compat = "fsl,qoriq-device-config-1.0",
.init_periph = p2041_init_periph,
---
-1.7.9.5
-
drivers/pci/host/pci-layerscape.c | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
-diff --git a/drivers/pci/host/pci-layerscape.c b/drivers/pci/host/pci-layerscape.c
-index 00feabf..f85ebcf 100644
--- a/drivers/pci/host/pci-layerscape.c
+++ b/drivers/pci/host/pci-layerscape.c
-@@ -158,11 +158,16 @@ static void ls1021_pcie_host_init(struct pcie_port *pp)
+@@ -158,11 +158,16 @@ static void ls1021_pcie_host_init(struct
static int ls_pcie_link_up(struct pcie_port *pp)
{
struct ls_pcie *pcie = to_ls_pcie(pp);
- u32 state;
+ u32 state, offset;
-+
-+ if (of_get_property(pp->dev->of_node, "fsl,lut_diff", NULL))
-+ offset = 0x407fc;
-+ else
-+ offset = PCIE_LUT_DBG;
- state = (ioread32(pcie->lut + pcie->drvdata->lut_dbg) >>
- pcie->drvdata->ltssm_shift) &
- LTSSM_STATE_MASK;
++ if (of_get_property(pp->dev->of_node, "fsl,lut_diff", NULL))
++ offset = 0x407fc;
++ else
++ offset = PCIE_LUT_DBG;
++
+ state = (ioread32(pcie->lut + offset) >>
+ pcie->drvdata->ltssm_shift) &
+ LTSSM_STATE_MASK;
if (state < LTSSM_PCIE_L0)
return 0;
---
-1.7.9.5
-
drivers/clk/clk-qoriq.c | 1 +
1 file changed, 1 insertion(+)
-diff --git a/drivers/clk/clk-qoriq.c b/drivers/clk/clk-qoriq.c
-index 6185d6a..efaa9c1 100644
--- a/drivers/clk/clk-qoriq.c
+++ b/drivers/clk/clk-qoriq.c
-@@ -1339,6 +1339,7 @@ CLK_OF_DECLARE(qoriq_clockgen_ls1043a, "fsl,ls1043a-clockgen", clockgen_init);
+@@ -1346,6 +1346,7 @@ CLK_OF_DECLARE(qoriq_clockgen_ls1043a, "
CLK_OF_DECLARE(qoriq_clockgen_ls1046a, "fsl,ls1046a-clockgen", clockgen_init);
CLK_OF_DECLARE(qoriq_clockgen_ls2080a, "fsl,ls2080a-clockgen", clockgen_init);
CLK_OF_DECLARE(qoriq_clockgen_ls1012a, "fsl,ls1012a-clockgen", clockgen_init);
/* Legacy nodes */
CLK_OF_DECLARE(qoriq_sysclk_1, "fsl,qoriq-sysclk-1.0", sysclk_init);
---
-1.7.9.5
-
drivers/i2c/muxes/i2c-mux-pca954x.c | 38 +++++++++++++++++++++++++++++++++++
1 file changed, 38 insertions(+)
-diff --git a/drivers/i2c/muxes/i2c-mux-pca954x.c b/drivers/i2c/muxes/i2c-mux-pca954x.c
-index acfcef3..386f86f 100644
--- a/drivers/i2c/muxes/i2c-mux-pca954x.c
+++ b/drivers/i2c/muxes/i2c-mux-pca954x.c
@@ -63,6 +63,7 @@ struct pca954x {
};
struct chip_desc {
-@@ -174,6 +175,13 @@ static int pca954x_deselect_mux(struct i2c_adapter *adap,
+@@ -174,6 +175,13 @@ static int pca954x_deselect_mux(struct i
{
struct pca954x *data = i2c_get_clientdata(client);
/* Deselect active channel */
data->last_chan = 0;
return pca954x_reg_write(adap, client, data->last_chan);
-@@ -201,6 +209,23 @@ static int pca954x_probe(struct i2c_client *client,
+@@ -201,6 +209,23 @@ static int pca954x_probe(struct i2c_clie
if (!data)
return -ENOMEM;
i2c_set_clientdata(client, data);
/* Get the mux out of reset if a reset GPIO is specified. */
-@@ -212,13 +237,19 @@ static int pca954x_probe(struct i2c_client *client,
+@@ -212,13 +237,19 @@ static int pca954x_probe(struct i2c_clie
* that the mux is in fact present. This also
* initializes the mux to disconnected state.
*/
idle_disconnect_dt = of_node &&
of_property_read_bool(of_node, "i2c-mux-idle-disconnect");
-@@ -289,6 +320,13 @@ static int pca954x_resume(struct device *dev)
+@@ -289,6 +320,13 @@ static int pca954x_resume(struct device
struct i2c_client *client = to_i2c_client(dev);
struct pca954x *data = i2c_get_clientdata(client);
data->last_chan = 0;
return i2c_smbus_write_byte(client, 0);
}
---
-1.7.9.5
-
drivers/pci/host/pci-layerscape.c | 13 ++++---------
1 file changed, 4 insertions(+), 9 deletions(-)
-diff --git a/drivers/pci/host/pci-layerscape.c b/drivers/pci/host/pci-layerscape.c
-index f85ebcf..00feabf 100644
--- a/drivers/pci/host/pci-layerscape.c
+++ b/drivers/pci/host/pci-layerscape.c
-@@ -158,16 +158,11 @@ static void ls1021_pcie_host_init(struct pcie_port *pp)
+@@ -158,16 +158,11 @@ static void ls1021_pcie_host_init(struct
static int ls_pcie_link_up(struct pcie_port *pp)
{
struct ls_pcie *pcie = to_ls_pcie(pp);
- u32 state, offset;
--
++ u32 state;
+
- if (of_get_property(pp->dev->of_node, "fsl,lut_diff", NULL))
- offset = 0x407fc;
- else
- offset = PCIE_LUT_DBG;
-+ u32 state;
-
+-
- state = (ioread32(pcie->lut + offset) >>
- pcie->drvdata->ltssm_shift) &
- LTSSM_STATE_MASK;
if (state < LTSSM_PCIE_L0)
return 0;
---
-1.7.9.5
-
include/linux/clk.h | 9 +++++++++
3 files changed, 29 insertions(+)
-diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
-index f13c3f4..0f6bcf5 100644
--- a/drivers/clk/clk.c
+++ b/drivers/clk/clk.c
-@@ -359,6 +359,19 @@ static struct clk_core *clk_core_get_parent_by_index(struct clk_core *core,
+@@ -359,6 +359,19 @@ static struct clk_core *clk_core_get_par
return core->parents[index];
}
struct clk_hw *
clk_hw_get_parent_by_index(const struct clk_hw *hw, unsigned int index)
{
-@@ -2033,6 +2046,12 @@ static const struct file_operations clk_summary_fops = {
+@@ -2033,6 +2046,12 @@ static const struct file_operations clk_
.release = single_release,
};
static void clk_dump_one(struct seq_file *s, struct clk_core *c, int level)
{
if (!c)
-diff --git a/include/linux/clk-provider.h b/include/linux/clk-provider.h
-index 7cd0171..77dfd61 100644
--- a/include/linux/clk-provider.h
+++ b/include/linux/clk-provider.h
-@@ -650,6 +650,7 @@ unsigned int clk_hw_get_num_parents(const struct clk_hw *hw);
+@@ -656,6 +656,7 @@ unsigned int clk_hw_get_num_parents(cons
struct clk_hw *clk_hw_get_parent(const struct clk_hw *hw);
struct clk_hw *clk_hw_get_parent_by_index(const struct clk_hw *hw,
unsigned int index);
unsigned int __clk_get_enable_count(struct clk *clk);
unsigned long clk_hw_get_rate(const struct clk_hw *hw);
unsigned long __clk_get_flags(struct clk *clk);
-diff --git a/include/linux/clk.h b/include/linux/clk.h
-index 0df4a51..1df90e3 100644
--- a/include/linux/clk.h
+++ b/include/linux/clk.h
-@@ -392,6 +392,15 @@ int clk_set_parent(struct clk *clk, struct clk *parent);
+@@ -392,6 +392,15 @@ int clk_set_parent(struct clk *clk, stru
struct clk *clk_get_parent(struct clk *clk);
/**
* clk_get_sys - get a clock based upon the device name
* @dev_id: device name
* @con_id: connection ID
---
-1.7.9.5
-
drivers/pci/host/pci-layerscape.c | 13 ++++++++-----
2 files changed, 12 insertions(+), 13 deletions(-)
-diff --git a/arch/arm64/boot/dts/freescale/fsl-ls2088a.dtsi b/arch/arm64/boot/dts/freescale/fsl-ls2088a.dtsi
-index bd69942..07c917b 100644
--- a/arch/arm64/boot/dts/freescale/fsl-ls2088a.dtsi
+++ b/arch/arm64/boot/dts/freescale/fsl-ls2088a.dtsi
@@ -513,8 +513,7 @@
reg = <0x00 0x03700000 0x0 0x00100000 /* controller registers */
0x38 0x00000000 0x0 0x00002000>; /* configuration space */
reg-names = "regs", "config";
-diff --git a/drivers/pci/host/pci-layerscape.c b/drivers/pci/host/pci-layerscape.c
-index 00feabf..3e2100d 100644
--- a/drivers/pci/host/pci-layerscape.c
+++ b/drivers/pci/host/pci-layerscape.c
-@@ -158,9 +158,14 @@ static void ls1021_pcie_host_init(struct pcie_port *pp)
+@@ -158,9 +158,14 @@ static void ls1021_pcie_host_init(struct
static int ls_pcie_link_up(struct pcie_port *pp)
{
struct ls_pcie *pcie = to_ls_pcie(pp);
- u32 state;
+ u32 state, offset;
-+
+
+- state = (ioread32(pcie->lut + pcie->drvdata->lut_dbg) >>
+ if (of_get_property(pp->dev->of_node, "fsl,lut_diff", NULL))
+ offset = 0x407fc;
+ else
+ offset = pcie->drvdata->lut_dbg;
-
-- state = (ioread32(pcie->lut + pcie->drvdata->lut_dbg) >>
++
+ state = (ioread32(pcie->lut + offset) >>
pcie->drvdata->ltssm_shift) &
LTSSM_STATE_MASK;
-@@ -261,7 +266,6 @@ static const struct of_device_id ls_pcie_of_match[] = {
+@@ -261,7 +266,6 @@ static const struct of_device_id ls_pcie
{ .compatible = "fsl,ls1046a-pcie", .data = &ls1046_drvdata },
{ .compatible = "fsl,ls1088a-pcie", .data = &ls1088_drvdata },
{ .compatible = "fsl,ls2080a-pcie", .data = &ls2080_drvdata },
{ },
};
MODULE_DEVICE_TABLE(of, ls_pcie_of_match);
-@@ -315,8 +319,7 @@ static int __init ls_pcie_probe(struct platform_device *pdev)
+@@ -315,8 +319,7 @@ static int __init ls_pcie_probe(struct p
if (!ls_pcie_is_bridge(pcie))
return -ENODEV;
of_device_is_compatible(pdev->dev.of_node, "fsl,ls1088a-pcie")) {
int len;
const u32 *prop;
---
-1.7.9.5
-
--- a/drivers/mtd/nand/Kconfig
+++ b/drivers/mtd/nand/Kconfig
-@@ -546,4 +546,11 @@ config MTD_NAND_HISI504
- help
- Enables support for NAND controller on Hisilicon SoC Hip04.
+@@ -563,4 +563,11 @@ config MTD_NAND_QCOM
+ Enables support for NAND flash chips on SoCs containing the EBI2 NAND
+ controller. This controller is found on IPQ806x SoC.
+config MTD_NAND_OXNAS
+ tristate "Support for NAND on Plxtech NAS782X SoC"
+++ /dev/null
-Adding registration for 3G modem DWM-158 in usb-serial-option
-
-Signed-off-by: Giuseppe Lippolis <giu.lippolis@gmail.com>
-
---- a/drivers/usb/serial/option.c
-+++ b/drivers/usb/serial/option.c
-@@ -1989,6 +1989,7 @@ static const struct usb_device_id option
- { USB_DEVICE_AND_INTERFACE_INFO(0x2001, 0x7d02, 0xff, 0x00, 0x00) },
- { USB_DEVICE_AND_INTERFACE_INFO(0x2001, 0x7d03, 0xff, 0x02, 0x01) },
- { USB_DEVICE_AND_INTERFACE_INFO(0x2001, 0x7d03, 0xff, 0x00, 0x00) },
-+ { USB_DEVICE_INTERFACE_CLASS(0x2001, 0x7d04, 0xff) }, /* D-Link DWM-158 */
- { USB_DEVICE_INTERFACE_CLASS(0x2001, 0x7e19, 0xff), /* D-Link DWM-221 B1 */
- .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
- { USB_DEVICE_AND_INTERFACE_INFO(0x07d1, 0x3e01, 0xff, 0xff, 0xff) }, /* D-Link DWM-152/C1 */
drivers/net/ethernet/korina.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
-diff --git a/drivers/net/ethernet/korina.c b/drivers/net/ethernet/korina.c
-index cbeea915f026..8037426ec50f 100644
--- a/drivers/net/ethernet/korina.c
+++ b/drivers/net/ethernet/korina.c
-@@ -900,10 +900,10 @@ static void korina_restart_task(struct work_struct *work)
+@@ -900,10 +900,10 @@ static void korina_restart_task(struct w
DMA_STAT_DONE | DMA_STAT_HALT | DMA_STAT_ERR,
&lp->rx_dma_regs->dmasm);
if (korina_init(dev) < 0) {
printk(KERN_ERR "%s: cannot restart device\n", dev->name);
return;
-@@ -1064,12 +1064,12 @@ static int korina_close(struct net_device *dev)
+@@ -1064,12 +1064,12 @@ static int korina_close(struct net_devic
tmp = tmp | DMA_STAT_DONE | DMA_STAT_HALT | DMA_STAT_ERR;
writel(tmp, &lp->rx_dma_regs->dmasm);
free_irq(lp->rx_irq, dev);
free_irq(lp->tx_irq, dev);
free_irq(lp->ovr_irq, dev);
---
-2.9.3
-