diff --git a/buildroot-external/board/hardkernel/patches/linux/0001-Revert-cdc-acm-introduce-a-cool-down.patch b/buildroot-external/board/hardkernel/patches/linux/0001-Revert-cdc-acm-introduce-a-cool-down.patch deleted file mode 100644 index 8f45af028..000000000 --- a/buildroot-external/board/hardkernel/patches/linux/0001-Revert-cdc-acm-introduce-a-cool-down.patch +++ /dev/null @@ -1,132 +0,0 @@ -From 5edf98e1fa176a480686ec77a5782b61eb009842 Mon Sep 17 00:00:00 2001 -From: Jerome Brunet -Date: Thu, 15 Oct 2020 13:58:14 +0200 -Subject: [PATCH] Revert "cdc-acm: introduce a cool down" - -This reverts commit a4e7279cd1d19f48f0af2a10ed020febaa9ac092. ---- - drivers/usb/class/cdc-acm.c | 30 ++---------------------------- - drivers/usb/class/cdc-acm.h | 5 +---- - 2 files changed, 3 insertions(+), 32 deletions(-) - -diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c -index f1a9043bdfe5..0f47d74c857d 100644 ---- a/drivers/usb/class/cdc-acm.c -+++ b/drivers/usb/class/cdc-acm.c -@@ -410,12 +410,9 @@ static void acm_ctrl_irq(struct urb *urb) - - exit: - retval = usb_submit_urb(urb, GFP_ATOMIC); -- if (retval && retval != -EPERM && retval != -ENODEV) -+ if (retval && retval != -EPERM) - dev_err(&acm->control->dev, - "%s - usb_submit_urb failed: %d\n", __func__, retval); -- else -- dev_vdbg(&acm->control->dev, -- "control resubmission terminated %d\n", retval); - } - - static int acm_submit_read_urb(struct acm *acm, int index, gfp_t mem_flags) -@@ -431,8 +428,6 @@ static int acm_submit_read_urb(struct acm *acm, int index, gfp_t mem_flags) - dev_err(&acm->data->dev, - "urb %d failed submission with %d\n", - index, res); -- } else { -- dev_vdbg(&acm->data->dev, "intended failure %d\n", res); - } - set_bit(index, &acm->read_urbs_free); - return res; -@@ -474,7 +469,6 @@ static void acm_read_bulk_callback(struct urb *urb) - int status = urb->status; - bool stopped = false; - bool stalled = false; -- bool cooldown = false; - - dev_vdbg(&acm->data->dev, "got urb %d, len %d, status %d\n", - rb->index, urb->actual_length, status); -@@ -501,14 +495,6 @@ static void acm_read_bulk_callback(struct urb *urb) - __func__, status); - stopped = true; - break; -- case -EOVERFLOW: -- case -EPROTO: -- dev_dbg(&acm->data->dev, -- "%s - cooling babbling device\n", __func__); -- usb_mark_last_busy(acm->dev); -- set_bit(rb->index, &acm->urbs_in_error_delay); -- cooldown = true; -- break; - default: - dev_dbg(&acm->data->dev, - "%s - nonzero urb status received: %d\n", -@@ -530,11 +516,9 @@ static void acm_read_bulk_callback(struct urb *urb) - */ - smp_mb__after_atomic(); - -- if (stopped || stalled || cooldown) { -+ if (stopped || stalled) { - if (stalled) - schedule_work(&acm->work); -- else if (cooldown) -- schedule_delayed_work(&acm->dwork, HZ / 2); - return; - } - -@@ -581,12 +565,6 @@ static void acm_softint(struct work_struct *work) - } - } - -- if (test_and_clear_bit(ACM_ERROR_DELAY, &acm->flags)) { -- for (i = 0; i < acm->rx_buflimit; i++) -- if (test_and_clear_bit(i, &acm->urbs_in_error_delay)) -- acm_submit_read_urb(acm, i, GFP_NOIO); -- } -- - if (test_and_clear_bit(EVENT_TTY_WAKEUP, &acm->flags)) - tty_port_tty_wakeup(&acm->port); - } -@@ -1353,7 +1331,6 @@ static int acm_probe(struct usb_interface *intf, - acm->readsize = readsize; - acm->rx_buflimit = num_rx_buf; - INIT_WORK(&acm->work, acm_softint); -- INIT_DELAYED_WORK(&acm->dwork, acm_softint); - init_waitqueue_head(&acm->wioctl); - spin_lock_init(&acm->write_lock); - spin_lock_init(&acm->read_lock); -@@ -1563,7 +1540,6 @@ static void acm_disconnect(struct usb_interface *intf) - - acm_kill_urbs(acm); - cancel_work_sync(&acm->work); -- cancel_delayed_work_sync(&acm->dwork); - - tty_unregister_device(acm_tty_driver, acm->minor); - -@@ -1606,8 +1582,6 @@ static int acm_suspend(struct usb_interface *intf, pm_message_t message) - - acm_kill_urbs(acm); - cancel_work_sync(&acm->work); -- cancel_delayed_work_sync(&acm->dwork); -- acm->urbs_in_error_delay = 0; - - return 0; - } -diff --git a/drivers/usb/class/cdc-acm.h b/drivers/usb/class/cdc-acm.h -index cd5e9d8ab237..ca1c026382c2 100644 ---- a/drivers/usb/class/cdc-acm.h -+++ b/drivers/usb/class/cdc-acm.h -@@ -109,11 +109,8 @@ struct acm { - # define EVENT_TTY_WAKEUP 0 - # define EVENT_RX_STALL 1 - # define ACM_THROTTLED 2 --# define ACM_ERROR_DELAY 3 -- unsigned long urbs_in_error_delay; /* these need to be restarted after a delay */ - struct usb_cdc_line_coding line; /* bits, stop, parity */ -- struct work_struct work; /* work queue entry for various purposes*/ -- struct delayed_work dwork; /* for cool downs needed in error recovery */ -+ struct work_struct work; /* work queue entry for line discipline waking up */ - unsigned int ctrlin; /* input control lines (DCD, DSR, RI, break, overruns) */ - unsigned int ctrlout; /* output control lines (DTR, RTS) */ - struct async_icount iocount; /* counters for control line changes */ --- -2.25.4 - diff --git a/buildroot-external/board/hardkernel/patches/linux/0001-arm64-defconfig-enable-meson-gx-audio-as-module.patch b/buildroot-external/board/hardkernel/patches/linux/0001-arm64-defconfig-enable-meson-gx-audio-as-module.patch index d323d6860..71da88362 100644 --- a/buildroot-external/board/hardkernel/patches/linux/0001-arm64-defconfig-enable-meson-gx-audio-as-module.patch +++ b/buildroot-external/board/hardkernel/patches/linux/0001-arm64-defconfig-enable-meson-gx-audio-as-module.patch @@ -1,7 +1,8 @@ -From e2b93751cfd0722801b65b4603b588ab9df4c12b Mon Sep 17 00:00:00 2001 +From 59bbf3567b02c36edfa4ee013d7e7e8c492756f2 Mon Sep 17 00:00:00 2001 +Message-Id: <59bbf3567b02c36edfa4ee013d7e7e8c492756f2.1603880585.git.stefan@agner.ch> From: Jerome Brunet Date: Tue, 21 Apr 2020 18:39:30 +0200 -Subject: [PATCH 2/8] arm64: defconfig: enable meson gx audio as module +Subject: [PATCH 01/14] arm64: defconfig: enable meson gx audio as module Enable the module config for the Amlogic GX audio card. This module will imply the internal components usually associated @@ -39,5 +40,5 @@ index 03d0189f7d68..ceb60ee9c340 100644 CONFIG_SND_SOC_WCD934X=m CONFIG_SND_SOC_WSA881X=m -- -2.17.1 +2.29.1 diff --git a/buildroot-external/board/hardkernel/patches/linux/0002-ASoC-meson-imply-acodec-glue-on-axg-sound-card.patch b/buildroot-external/board/hardkernel/patches/linux/0002-ASoC-meson-imply-acodec-glue-on-axg-sound-card.patch index b068aa1e4..33cecb76d 100644 --- a/buildroot-external/board/hardkernel/patches/linux/0002-ASoC-meson-imply-acodec-glue-on-axg-sound-card.patch +++ b/buildroot-external/board/hardkernel/patches/linux/0002-ASoC-meson-imply-acodec-glue-on-axg-sound-card.patch @@ -1,7 +1,10 @@ -From 821b8ac21b1675910423ee69d37cb1977b8f271e Mon Sep 17 00:00:00 2001 +From 4684d42cbbbb2d0331eb273229c9856a09b8d687 Mon Sep 17 00:00:00 2001 +Message-Id: <4684d42cbbbb2d0331eb273229c9856a09b8d687.1603880585.git.stefan@agner.ch> +In-Reply-To: <59bbf3567b02c36edfa4ee013d7e7e8c492756f2.1603880585.git.stefan@agner.ch> +References: <59bbf3567b02c36edfa4ee013d7e7e8c492756f2.1603880585.git.stefan@agner.ch> From: Jerome Brunet Date: Mon, 30 Mar 2020 17:39:04 +0200 -Subject: [PATCH 3/8] ASoC: meson: imply acodec glue on axg sound card +Subject: [PATCH 02/14] ASoC: meson: imply acodec glue on axg sound card When axg card driver support is enabled, lets enable the related internal DAC glue by default. @@ -24,5 +27,5 @@ index 8b6295283989..363dc3b1bbe4 100644 help Select Y or M to add support for the AXG SoC sound card -- -2.17.1 +2.29.1 diff --git a/buildroot-external/board/hardkernel/patches/linux/0003-ASoC-meson-gx-card-fix-sound-dai-dt-schema.patch b/buildroot-external/board/hardkernel/patches/linux/0003-ASoC-meson-gx-card-fix-sound-dai-dt-schema.patch index 2799dc30f..b8e10bf19 100644 --- a/buildroot-external/board/hardkernel/patches/linux/0003-ASoC-meson-gx-card-fix-sound-dai-dt-schema.patch +++ b/buildroot-external/board/hardkernel/patches/linux/0003-ASoC-meson-gx-card-fix-sound-dai-dt-schema.patch @@ -1,7 +1,10 @@ -From 60164df03c6314d8f5f3afef56b0bf97962ec9ee Mon Sep 17 00:00:00 2001 +From 07eb6dcfc912281b3c4ad598d8cfd3b7548fc965 Mon Sep 17 00:00:00 2001 +Message-Id: <07eb6dcfc912281b3c4ad598d8cfd3b7548fc965.1603880585.git.stefan@agner.ch> +In-Reply-To: <59bbf3567b02c36edfa4ee013d7e7e8c492756f2.1603880585.git.stefan@agner.ch> +References: <59bbf3567b02c36edfa4ee013d7e7e8c492756f2.1603880585.git.stefan@agner.ch> From: Jerome Brunet Date: Mon, 24 Feb 2020 14:35:17 +0100 -Subject: [PATCH 4/8] ASoC: meson: gx-card: fix sound-dai dt schema +Subject: [PATCH 03/14] ASoC: meson: gx-card: fix sound-dai dt schema There is a fair amount of warnings when running 'make dtbs_check' with amlogic,gx-sound-card.yaml. @@ -43,5 +46,5 @@ index fb374c659be1..a48222e8cd08 100644 required: -- -2.17.1 +2.29.1 diff --git a/buildroot-external/board/hardkernel/patches/linux/0004-arm64-dts-meson-g12-add-internal-DAC.patch b/buildroot-external/board/hardkernel/patches/linux/0004-arm64-dts-meson-g12-add-internal-DAC.patch index 4059bf8b0..afb440f8b 100644 --- a/buildroot-external/board/hardkernel/patches/linux/0004-arm64-dts-meson-g12-add-internal-DAC.patch +++ b/buildroot-external/board/hardkernel/patches/linux/0004-arm64-dts-meson-g12-add-internal-DAC.patch @@ -1,7 +1,10 @@ -From e128dd1ca079c5ee558ab100387d9f81bd4f3980 Mon Sep 17 00:00:00 2001 +From 5f7bab7b52bc68738dd23af62a085dcc45c22f79 Mon Sep 17 00:00:00 2001 +Message-Id: <5f7bab7b52bc68738dd23af62a085dcc45c22f79.1603880585.git.stefan@agner.ch> +In-Reply-To: <59bbf3567b02c36edfa4ee013d7e7e8c492756f2.1603880585.git.stefan@agner.ch> +References: <59bbf3567b02c36edfa4ee013d7e7e8c492756f2.1603880585.git.stefan@agner.ch> From: Jerome Brunet Date: Thu, 7 May 2020 00:16:55 +0200 -Subject: [PATCH 5/8] arm64: dts: meson: g12: add internal DAC +Subject: [PATCH 04/14] arm64: dts: meson: g12: add internal DAC add internal audio DAC support on the g12 and sm1 SoC family @@ -16,7 +19,7 @@ diff --git a/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi b/arch/arm64/boot index c0aef7d69117..593a006f4b7b 100644 --- a/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi +++ b/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi -@@ -250,6 +250,17 @@ +@@ -250,6 +250,17 @@ hwrng: rng@218 { }; }; @@ -35,5 +38,5 @@ index c0aef7d69117..593a006f4b7b 100644 compatible = "simple-bus"; reg = <0x0 0x34400 0x0 0x400>; -- -2.17.1 +2.29.1 diff --git a/buildroot-external/board/hardkernel/patches/linux/0005-arm64-dts-meson-g12-add-internal-DAC-glue.patch b/buildroot-external/board/hardkernel/patches/linux/0005-arm64-dts-meson-g12-add-internal-DAC-glue.patch index 515ba0574..e10a1277d 100644 --- a/buildroot-external/board/hardkernel/patches/linux/0005-arm64-dts-meson-g12-add-internal-DAC-glue.patch +++ b/buildroot-external/board/hardkernel/patches/linux/0005-arm64-dts-meson-g12-add-internal-DAC-glue.patch @@ -1,7 +1,10 @@ -From 5ea4085da165fd3f3aa211cb3664dd166d0d5fd7 Mon Sep 17 00:00:00 2001 +From e7d1f61513cfe9d2557fbd0ac981a3ecaab9bc70 Mon Sep 17 00:00:00 2001 +Message-Id: +In-Reply-To: <59bbf3567b02c36edfa4ee013d7e7e8c492756f2.1603880585.git.stefan@agner.ch> +References: <59bbf3567b02c36edfa4ee013d7e7e8c492756f2.1603880585.git.stefan@agner.ch> From: Jerome Brunet Date: Thu, 7 May 2020 00:16:56 +0200 -Subject: [PATCH 6/8] arm64: dts: meson: g12: add internal DAC glue +Subject: [PATCH 05/14] arm64: dts: meson: g12: add internal DAC glue add the internal DAC glue support on the g12 and sm1 family This glue connects the different TDM interfaces of the SoC to @@ -18,7 +21,7 @@ diff --git a/arch/arm64/boot/dts/amlogic/meson-g12.dtsi b/arch/arm64/boot/dts/am index 55d39020ec72..0d14409f509c 100644 --- a/arch/arm64/boot/dts/amlogic/meson-g12.dtsi +++ b/arch/arm64/boot/dts/amlogic/meson-g12.dtsi -@@ -343,6 +343,15 @@ +@@ -343,6 +343,15 @@ spdifout_b: audio-controller@680 { status = "disabled"; }; @@ -35,5 +38,5 @@ index 55d39020ec72..0d14409f509c 100644 compatible = "amlogic,g12a-tohdmitx"; reg = <0x0 0x744 0x0 0x4>; -- -2.17.1 +2.29.1 diff --git a/buildroot-external/board/hardkernel/patches/linux/0006-arm64-dts-meson-g12b-odroid-n2-enable-audio-loopback.patch b/buildroot-external/board/hardkernel/patches/linux/0006-arm64-dts-meson-g12b-odroid-n2-enable-audio-loopback.patch index 0a4741d94..899dc4a10 100644 --- a/buildroot-external/board/hardkernel/patches/linux/0006-arm64-dts-meson-g12b-odroid-n2-enable-audio-loopback.patch +++ b/buildroot-external/board/hardkernel/patches/linux/0006-arm64-dts-meson-g12b-odroid-n2-enable-audio-loopback.patch @@ -1,7 +1,11 @@ -From 15b3cef2ea75c4d81cb067264be1cf49c49f81b1 Mon Sep 17 00:00:00 2001 +From a778ae244b9e6035ef4c0e4fb36d81f140ed5019 Mon Sep 17 00:00:00 2001 +Message-Id: +In-Reply-To: <59bbf3567b02c36edfa4ee013d7e7e8c492756f2.1603880585.git.stefan@agner.ch> +References: <59bbf3567b02c36edfa4ee013d7e7e8c492756f2.1603880585.git.stefan@agner.ch> From: Jerome Brunet Date: Mon, 15 Jun 2020 15:38:44 +0200 -Subject: [PATCH 7/8] arm64: dts: meson-g12b: odroid-n2: enable audio loopback +Subject: [PATCH 06/14] arm64: dts: meson-g12b: odroid-n2: enable audio + loopback Add capture pcm interfaces and loopback routes to the odroid-n2 @@ -14,7 +18,7 @@ diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dts b/arch/arm64/b index 169ea283d4ee..d4421ad164bd 100644 --- a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dts +++ b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dts -@@ -209,11 +209,28 @@ +@@ -209,11 +209,28 @@ hdmi_connector_in: endpoint { sound { compatible = "amlogic,axg-sound-card"; model = "G12B-ODROID-N2"; @@ -45,7 +49,7 @@ index 169ea283d4ee..d4421ad164bd 100644 assigned-clocks = <&clkc CLKID_MPLL2>, <&clkc CLKID_MPLL0>, -@@ -236,8 +253,20 @@ +@@ -236,8 +253,20 @@ dai-link-2 { sound-dai = <&frddr_c>; }; @@ -67,7 +71,7 @@ index 169ea283d4ee..d4421ad164bd 100644 sound-dai = <&tdmif_b>; dai-format = "i2s"; dai-tdm-slot-tx-mask-0 = <1 1>; -@@ -252,7 +281,7 @@ +@@ -252,7 +281,7 @@ codec { }; /* hdmi glue */ @@ -76,7 +80,7 @@ index 169ea283d4ee..d4421ad164bd 100644 sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>; codec { -@@ -476,6 +505,22 @@ +@@ -476,6 +505,22 @@ &tdmif_b { status = "okay"; }; @@ -99,7 +103,7 @@ index 169ea283d4ee..d4421ad164bd 100644 &tdmout_b { status = "okay"; }; -@@ -484,6 +529,18 @@ +@@ -484,6 +529,18 @@ &tohdmitx { status = "okay"; }; @@ -119,5 +123,5 @@ index 169ea283d4ee..d4421ad164bd 100644 status = "okay"; pinctrl-0 = <&uart_ao_a_pins>; -- -2.17.1 +2.29.1 diff --git a/buildroot-external/board/hardkernel/patches/linux/0007-arm64-dts-meson-odroid-n2-add-jack-audio-output-supp.patch b/buildroot-external/board/hardkernel/patches/linux/0007-arm64-dts-meson-odroid-n2-add-jack-audio-output-supp.patch index b3f613ef1..532e0d431 100644 --- a/buildroot-external/board/hardkernel/patches/linux/0007-arm64-dts-meson-odroid-n2-add-jack-audio-output-supp.patch +++ b/buildroot-external/board/hardkernel/patches/linux/0007-arm64-dts-meson-odroid-n2-add-jack-audio-output-supp.patch @@ -1,7 +1,10 @@ -From 978cc250574b7f1ab45f494cc2a094e3c9fd1fa4 Mon Sep 17 00:00:00 2001 +From 26603168f26468ac1872fcbcd703d2cd5a626310 Mon Sep 17 00:00:00 2001 +Message-Id: <26603168f26468ac1872fcbcd703d2cd5a626310.1603880585.git.stefan@agner.ch> +In-Reply-To: <59bbf3567b02c36edfa4ee013d7e7e8c492756f2.1603880585.git.stefan@agner.ch> +References: <59bbf3567b02c36edfa4ee013d7e7e8c492756f2.1603880585.git.stefan@agner.ch> From: Jerome Brunet Date: Mon, 15 Jun 2020 16:34:37 +0200 -Subject: [PATCH 8/8] arm64: dts: meson: odroid-n2: add jack audio output +Subject: [PATCH 07/14] arm64: dts: meson: odroid-n2: add jack audio output support Signed-off-by: Jerome Brunet @@ -21,7 +24,7 @@ index d4421ad164bd..34fffa6d859d 100644 #include / { -@@ -20,6 +21,14 @@ +@@ -20,6 +21,14 @@ aliases { ethernet0 = ðmac; }; @@ -36,7 +39,7 @@ index d4421ad164bd..34fffa6d859d 100644 chosen { stdout-path = "serial0:115200n8"; }; -@@ -209,16 +218,26 @@ +@@ -209,16 +218,26 @@ hdmi_connector_in: endpoint { sound { compatible = "amlogic,axg-sound-card"; model = "G12B-ODROID-N2"; @@ -65,7 +68,7 @@ index d4421ad164bd..34fffa6d859d 100644 "TODDR_A IN 0", "TDMIN_A OUT", "TODDR_B IN 0", "TDMIN_A OUT", "TODDR_C IN 0", "TDMIN_A OUT", -@@ -230,7 +249,11 @@ +@@ -230,7 +249,11 @@ sound { "TODDR_C IN 2", "TDMIN_C OUT", "TODDR_A IN 6", "TDMIN_LB OUT", "TODDR_B IN 6", "TDMIN_LB OUT", @@ -78,7 +81,7 @@ index d4421ad164bd..34fffa6d859d 100644 assigned-clocks = <&clkc CLKID_MPLL2>, <&clkc CLKID_MPLL0>, -@@ -275,22 +298,56 @@ +@@ -275,22 +298,56 @@ dai-link-6 { dai-tdm-slot-tx-mask-3 = <1 1>; mclk-fs = <256>; @@ -137,7 +140,7 @@ index d4421ad164bd..34fffa6d859d 100644 &arb { status = "okay"; }; -@@ -505,6 +562,10 @@ +@@ -505,6 +562,10 @@ &tdmif_b { status = "okay"; }; @@ -148,7 +151,7 @@ index d4421ad164bd..34fffa6d859d 100644 &tdmin_a { status = "okay"; }; -@@ -525,6 +586,14 @@ +@@ -525,6 +586,14 @@ &tdmout_b { status = "okay"; }; @@ -164,5 +167,5 @@ index d4421ad164bd..34fffa6d859d 100644 status = "okay"; }; -- -2.17.1 +2.29.1 diff --git a/buildroot-external/board/hardkernel/patches/linux/0009-dt-bindings-arm-amlogic-add-support-for-the-ODROID-N.patch b/buildroot-external/board/hardkernel/patches/linux/0008-dt-bindings-arm-amlogic-add-support-for-the-ODROID-N.patch similarity index 57% rename from buildroot-external/board/hardkernel/patches/linux/0009-dt-bindings-arm-amlogic-add-support-for-the-ODROID-N.patch rename to buildroot-external/board/hardkernel/patches/linux/0008-dt-bindings-arm-amlogic-add-support-for-the-ODROID-N.patch index 23b58efb2..0b3f38d76 100644 --- a/buildroot-external/board/hardkernel/patches/linux/0009-dt-bindings-arm-amlogic-add-support-for-the-ODROID-N.patch +++ b/buildroot-external/board/hardkernel/patches/linux/0008-dt-bindings-arm-amlogic-add-support-for-the-ODROID-N.patch @@ -1,16 +1,21 @@ -From 54d8ae2ae7a10dab6998b2d4ac507aec96c6f1da Mon Sep 17 00:00:00 2001 -Message-Id: <54d8ae2ae7a10dab6998b2d4ac507aec96c6f1da.1595882680.git.stefan@agner.ch> -In-Reply-To: -References: +From 40c86a409f3fa18c3f30bad3abeccff04379eaa9 Mon Sep 17 00:00:00 2001 +Message-Id: <40c86a409f3fa18c3f30bad3abeccff04379eaa9.1603880585.git.stefan@agner.ch> +In-Reply-To: <59bbf3567b02c36edfa4ee013d7e7e8c492756f2.1603880585.git.stefan@agner.ch> +References: <59bbf3567b02c36edfa4ee013d7e7e8c492756f2.1603880585.git.stefan@agner.ch> From: Christian Hewitt -Date: Sun, 19 Jul 2020 14:10:33 +0000 -Subject: [PATCH 09/10] dt-bindings: arm: amlogic: add support for the +Date: Tue, 15 Sep 2020 17:24:31 +0200 +Subject: [PATCH 08/14] dt-bindings: arm: amlogic: add support for the ODROID-N2+ HardKernel ODROID-N2+ uses a revised Amlogic S922X v2 chip that supports higher cpu clock speeds than the original ODROID-N2. Signed-off-by: Christian Hewitt +Signed-off-by: Neil Armstrong +Signed-off-by: Kevin Hilman +Acked-by: Rob Herring +Acked-by: Martin Blumenstingl +Link: https://lore.kernel.org/r/20200915152432.30616-3-narmstrong@baylibre.com --- Documentation/devicetree/bindings/arm/amlogic.yaml | 1 + 1 file changed, 1 insertion(+) @@ -28,5 +33,5 @@ index f74aba48cec1..915ef4f355ad 100644 - ugoos,am6 - const: amlogic,s922x -- -2.27.0 +2.29.1 diff --git a/buildroot-external/board/hardkernel/patches/linux/0008-arm64-dts-meson-convert-ODROID-N2-to-dtsi.patch b/buildroot-external/board/hardkernel/patches/linux/0009-arm64-dts-meson-convert-ODROID-N2-to-dtsi.patch similarity index 96% rename from buildroot-external/board/hardkernel/patches/linux/0008-arm64-dts-meson-convert-ODROID-N2-to-dtsi.patch rename to buildroot-external/board/hardkernel/patches/linux/0009-arm64-dts-meson-convert-ODROID-N2-to-dtsi.patch index 335f704c6..8d45dfe0e 100644 --- a/buildroot-external/board/hardkernel/patches/linux/0008-arm64-dts-meson-convert-ODROID-N2-to-dtsi.patch +++ b/buildroot-external/board/hardkernel/patches/linux/0009-arm64-dts-meson-convert-ODROID-N2-to-dtsi.patch @@ -1,32 +1,34 @@ -From 9443f2cd21a8ebd08f0fb64f5b3a8ccb6cd77d8e Mon Sep 17 00:00:00 2001 -Message-Id: <9443f2cd21a8ebd08f0fb64f5b3a8ccb6cd77d8e.1596660075.git.stefan@agner.ch> -In-Reply-To: -References: +From 7b28edf8a4004c3636afab617191fbfb6cff9b58 Mon Sep 17 00:00:00 2001 +Message-Id: <7b28edf8a4004c3636afab617191fbfb6cff9b58.1603880585.git.stefan@agner.ch> +In-Reply-To: <59bbf3567b02c36edfa4ee013d7e7e8c492756f2.1603880585.git.stefan@agner.ch> +References: <59bbf3567b02c36edfa4ee013d7e7e8c492756f2.1603880585.git.stefan@agner.ch> From: Christian Hewitt -Date: Sun, 19 Jul 2020 14:10:32 +0000 -Subject: [PATCH 08/10] arm64: dts: meson: convert ODROID-N2 to dtsi +Date: Tue, 15 Sep 2020 17:24:30 +0200 +Subject: [PATCH 09/14] arm64: dts: meson: convert ODROID-N2 to dtsi Convert the current ODROID-N2 dts into a common dtsi in preparation for adding ODROID-N2+ support. Signed-off-by: Christian Hewitt -[rebased ontop of sound patches] -Signed-off-by: Stefan Agner +Signed-off-by: Neil Armstrong +Signed-off-by: Kevin Hilman +Acked-by: Neil Armstrong +Acked-by: Martin Blumenstingl +Link: https://lore.kernel.org/r/20200915152432.30616-2-narmstrong@baylibre.com --- - .../boot/dts/amlogic/meson-g12b-odroid-n2.dts | 619 +---------------- - .../dts/amlogic/meson-g12b-odroid-n2.dtsi | 626 ++++++++++++++++++ - 2 files changed, 627 insertions(+), 618 deletions(-) + .../boot/dts/amlogic/meson-g12b-odroid-n2.dts | 618 +---------------- + .../dts/amlogic/meson-g12b-odroid-n2.dtsi | 625 ++++++++++++++++++ + 2 files changed, 626 insertions(+), 617 deletions(-) create mode 100644 arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dts b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dts -index 34fffa6d859d..5fd51a87ae9b 100644 +index 34fffa6d859d..a198a91259ec 100644 --- a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dts +++ b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dts -@@ -6,626 +6,9 @@ - +@@ -7,625 +7,9 @@ /dts-v1/; --#include "meson-g12b-s922x.dtsi" + #include "meson-g12b-s922x.dtsi" -#include -#include -#include @@ -652,17 +654,16 @@ index 34fffa6d859d..5fd51a87ae9b 100644 }; diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi new file mode 100644 -index 000000000000..e5bc132ce7d5 +index 000000000000..6982632ae646 --- /dev/null +++ b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi -@@ -0,0 +1,626 @@ +@@ -0,0 +1,625 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Copyright (c) 2019 BayLibre, SAS + * Author: Neil Armstrong + */ + -+#include "meson-g12b-s922x.dtsi" +#include +#include +#include @@ -1067,7 +1068,7 @@ index 000000000000..e5bc132ce7d5 + +&ext_mdio { + external_phy: ethernet-phy@0 { -+ /* Realtek RTL8211F (0x001cc916) */ ++ /* Realtek RTL8211F (0x001cc916) */ + reg = <0>; + max-speed = <1000>; + @@ -1283,5 +1284,5 @@ index 000000000000..e5bc132ce7d5 + phy-supply = <&hub_5v>; +}; -- -2.27.0 +2.29.1 diff --git a/buildroot-external/board/hardkernel/patches/linux/0010-arm64-dts-meson-add-support-for-the-ODROID-N2.patch b/buildroot-external/board/hardkernel/patches/linux/0010-arm64-dts-meson-add-support-for-the-ODROID-N2.patch index 42ebf9903..49212577b 100644 --- a/buildroot-external/board/hardkernel/patches/linux/0010-arm64-dts-meson-add-support-for-the-ODROID-N2.patch +++ b/buildroot-external/board/hardkernel/patches/linux/0010-arm64-dts-meson-add-support-for-the-ODROID-N2.patch @@ -1,24 +1,27 @@ -From 188bc924b34b7d845324eb2e0e7493a9eaeb2cb5 Mon Sep 17 00:00:00 2001 -Message-Id: <188bc924b34b7d845324eb2e0e7493a9eaeb2cb5.1595882680.git.stefan@agner.ch> -In-Reply-To: -References: +From 45ac6c04283dce57e0e911d5dc794eeb9446394c Mon Sep 17 00:00:00 2001 +Message-Id: <45ac6c04283dce57e0e911d5dc794eeb9446394c.1603880585.git.stefan@agner.ch> +In-Reply-To: <59bbf3567b02c36edfa4ee013d7e7e8c492756f2.1603880585.git.stefan@agner.ch> +References: <59bbf3567b02c36edfa4ee013d7e7e8c492756f2.1603880585.git.stefan@agner.ch> From: Christian Hewitt -Date: Sun, 19 Jul 2020 14:10:34 +0000 -Subject: [PATCH 10/10] arm64: dts: meson: add support for the ODROID-N2+ +Date: Tue, 15 Sep 2020 17:24:32 +0200 +Subject: [PATCH 10/14] arm64: dts: meson: add support for the ODROID-N2+ HardKernel ODROID-N2+ uses an Amlogic S922X rev. C chip capable of higher -clock speeds than the original ODROID-N2. Hardkernel supports the big cpu -cluster at 2.4GHz and the little cpu cluster at 2.0GHz. Opp points and -regulator changess are from the HardKernel Linux kernel sources. +clock speeds than the original ODROID-N2. + +The rev. C support a slighly higher VDDCPU_A & VDDCPU_B voltages and supports +the same OPPs as the Amlogic A311D SoC from the same G12B family. Suggested-by: Dongjin Kim Signed-off-by: Christian Hewitt -[Integrated Neil Armstrong's feedback from mailing list] -Signed-off-by: Stefan Agner +Signed-off-by: Neil Armstrong +Signed-off-by: Kevin Hilman +Acked-by: Martin Blumenstingl +Link: https://lore.kernel.org/r/20200915152432.30616-4-narmstrong@baylibre.com --- arch/arm64/boot/dts/amlogic/Makefile | 1 + - .../dts/amlogic/meson-g12b-odroid-n2-plus.dts | 53 +++++++++++++++++++ - 2 files changed, 54 insertions(+) + .../dts/amlogic/meson-g12b-odroid-n2-plus.dts | 31 +++++++++++++++++++ + 2 files changed, 32 insertions(+) create mode 100644 arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-plus.dts diff --git a/arch/arm64/boot/dts/amlogic/Makefile b/arch/arm64/boot/dts/amlogic/Makefile @@ -35,10 +38,10 @@ index eef0045320f2..7524cf9680f5 100644 dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-nanopi-k2.dtb diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-plus.dts b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-plus.dts new file mode 100644 -index 000000000000..4ebb448d233f +index 000000000000..5de2815ba99d --- /dev/null +++ b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-plus.dts -@@ -0,0 +1,53 @@ +@@ -0,0 +1,31 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Copyright (c) 2019 BayLibre, SAS @@ -47,18 +50,20 @@ index 000000000000..4ebb448d233f + +/dts-v1/; + ++/* The Amlogic S922X Rev. C supports the same OPPs as the A311D variant */ ++#include "meson-g12b-a311d.dtsi" +#include "meson-g12b-odroid-n2.dtsi" + +/ { + compatible = "hardkernel,odroid-n2-plus", "amlogic,s922x", "amlogic,g12b"; -+ model = "Hardkernel ODROID-N2+"; ++ model = "Hardkernel ODROID-N2Plus"; +}; + +&vddcpu_a { + regulator-min-microvolt = <680000>; + regulator-max-microvolt = <1040000>; + -+ pwms = <&pwm_ab 0 1500 0>; ++ pwms = <&pwm_AO_cd 1 1500 0>; +}; + +&vddcpu_b { @@ -68,30 +73,6 @@ index 000000000000..4ebb448d233f + pwms = <&pwm_AO_cd 1 1500 0>; +}; + -+&cpu_opp_table_0 { -+ opp-1908000000 { -+ opp-hz = /bits/ 64 <1908000000>; -+ opp-microvolt = <1030000>; -+ }; -+ -+ opp-2016000000 { -+ opp-hz = /bits/ 64 <2016000000>; -+ opp-microvolt = <1040000>; -+ }; -+}; -+ -+&cpub_opp_table_1 { -+ opp-2304000000 { -+ opp-hz = /bits/ 64 <2304000000>; -+ opp-microvolt = <1030000>; -+ }; -+ -+ opp-2400000000 { -+ opp-hz = /bits/ 64 <2400000000>; -+ opp-microvolt = <1040000>; -+ }; -+}; -+ -- -2.27.0 +2.29.1 diff --git a/buildroot-external/board/hardkernel/patches/linux/0011-arm64-dts-meson-add-missing-g12-rng-clock.patch b/buildroot-external/board/hardkernel/patches/linux/0011-arm64-dts-meson-add-missing-g12-rng-clock.patch new file mode 100644 index 000000000..f5fcd34c8 --- /dev/null +++ b/buildroot-external/board/hardkernel/patches/linux/0011-arm64-dts-meson-add-missing-g12-rng-clock.patch @@ -0,0 +1,38 @@ +From ab2773aa8ea7ff7f30c104bd3a1f93b67c5eac32 Mon Sep 17 00:00:00 2001 +Message-Id: +In-Reply-To: <59bbf3567b02c36edfa4ee013d7e7e8c492756f2.1603880585.git.stefan@agner.ch> +References: <59bbf3567b02c36edfa4ee013d7e7e8c492756f2.1603880585.git.stefan@agner.ch> +From: Scott K Logan +Date: Fri, 25 Sep 2020 01:43:53 -0700 +Subject: [PATCH 11/14] arm64: dts: meson: add missing g12 rng clock + +This adds the missing perpheral clock for the RNG for Amlogic G12. As +stated in amlogic,meson-rng.yaml, this isn't always necessary for the +RNG to function, but is better to have in case the clock is disabled for +some reason prior to loading. + +Signed-off-by: Scott K Logan +Suggested-by: Neil Armstrong +Reviewed-by: Neil Armstrong +Signed-off-by: Kevin Hilman +Link: https://lore.kernel.org/r/520a1a8ec7a958b3d918d89563ec7e93a4100a45.camel@cottsay.net +--- + arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi +index 593a006f4b7b..6ec40af658ba 100644 +--- a/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi ++++ b/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi +@@ -247,6 +247,8 @@ apb_efuse: bus@30000 { + hwrng: rng@218 { + compatible = "amlogic,meson-rng"; + reg = <0x0 0x218 0x0 0x4>; ++ clocks = <&clkc CLKID_RNG0>; ++ clock-names = "core"; + }; + }; + +-- +2.29.1 + diff --git a/buildroot-external/board/hardkernel/patches/linux/0012-arm64-dts-meson-odroid-n2-plus-fix-vddcpu_a-pwm.patch b/buildroot-external/board/hardkernel/patches/linux/0012-arm64-dts-meson-odroid-n2-plus-fix-vddcpu_a-pwm.patch new file mode 100644 index 000000000..e23740a6f --- /dev/null +++ b/buildroot-external/board/hardkernel/patches/linux/0012-arm64-dts-meson-odroid-n2-plus-fix-vddcpu_a-pwm.patch @@ -0,0 +1,42 @@ +From 28967338d3222c1ef2e1ee7372ec857aab43589b Mon Sep 17 00:00:00 2001 +Message-Id: <28967338d3222c1ef2e1ee7372ec857aab43589b.1603880585.git.stefan@agner.ch> +In-Reply-To: <59bbf3567b02c36edfa4ee013d7e7e8c492756f2.1603880585.git.stefan@agner.ch> +References: <59bbf3567b02c36edfa4ee013d7e7e8c492756f2.1603880585.git.stefan@agner.ch> +From: Jerome Brunet +Date: Fri, 23 Oct 2020 11:41:39 +0200 +Subject: [PATCH 12/14] arm64: dts: meson: odroid-n2 plus: fix vddcpu_a pwm + +On the odroid N2 plus, cpufreq is not available due to an error on the cpu +regulators. vddcpu a and b get the same PWM. The one provided to vddcpu A +is incorrect. Because vddcpu B PWM is busy the regulator cannot register: + +> pwm-regulator regulator-vddcpu-b: Failed to get PWM: -16 + +Like on the odroid n2, use PWM A out of GPIOE_2 for vddcpu A to fix the +problem + +Fixes: 98d24896ee11 ("arm64: dts: meson: add support for the ODROID-N2+") +Signed-off-by: Jerome Brunet +Acked-by: Neil Armstrong +Signed-off-by: Kevin Hilman +Link: https://lore.kernel.org/r/20201023094139.809379-1-jbrunet@baylibre.com +--- + arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-plus.dts | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-plus.dts b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-plus.dts +index 5de2815ba99d..ce1198ad34e4 100644 +--- a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-plus.dts ++++ b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-plus.dts +@@ -19,7 +19,7 @@ &vddcpu_a { + regulator-min-microvolt = <680000>; + regulator-max-microvolt = <1040000>; + +- pwms = <&pwm_AO_cd 1 1500 0>; ++ pwms = <&pwm_ab 0 1500 0>; + }; + + &vddcpu_b { +-- +2.29.1 + diff --git a/buildroot-external/board/hardkernel/patches/linux/0011-clk-meson-g12a-mark-fclk_div2-as-critical.patch b/buildroot-external/board/hardkernel/patches/linux/0013-clk-meson-g12a-mark-fclk_div2-as-critical.patch similarity index 74% rename from buildroot-external/board/hardkernel/patches/linux/0011-clk-meson-g12a-mark-fclk_div2-as-critical.patch rename to buildroot-external/board/hardkernel/patches/linux/0013-clk-meson-g12a-mark-fclk_div2-as-critical.patch index 2095a67ba..8567347bd 100644 --- a/buildroot-external/board/hardkernel/patches/linux/0011-clk-meson-g12a-mark-fclk_div2-as-critical.patch +++ b/buildroot-external/board/hardkernel/patches/linux/0013-clk-meson-g12a-mark-fclk_div2-as-critical.patch @@ -1,10 +1,10 @@ -From c33df0ebe8be16b56741ce7f873221ab9087a0a6 Mon Sep 17 00:00:00 2001 -Message-Id: -In-Reply-To: -References: +From b65f3fd306972087aa43e91ab0951b19883a21f7 Mon Sep 17 00:00:00 2001 +Message-Id: +In-Reply-To: <59bbf3567b02c36edfa4ee013d7e7e8c492756f2.1603880585.git.stefan@agner.ch> +References: <59bbf3567b02c36edfa4ee013d7e7e8c492756f2.1603880585.git.stefan@agner.ch> From: Stefan Agner Date: Thu, 27 Aug 2020 23:29:57 +0200 -Subject: [PATCH 11/11] clk: meson: g12a: mark fclk_div2 as critical +Subject: [PATCH 13/14] clk: meson: g12a: mark fclk_div2 as critical On Amlogic Meson G12b platform, similar to fclk_div3, the fclk_div2 seems to be necessary for the system to operate correctly as well. @@ -34,5 +34,5 @@ index fad616cac01e..2214b974f748 100644 }; -- -2.28.0 +2.29.1 diff --git a/buildroot-external/board/hardkernel/patches/linux/0014-usb-cdc-acm-fix-cooldown-mechanism.patch b/buildroot-external/board/hardkernel/patches/linux/0014-usb-cdc-acm-fix-cooldown-mechanism.patch new file mode 100644 index 000000000..be6a9b314 --- /dev/null +++ b/buildroot-external/board/hardkernel/patches/linux/0014-usb-cdc-acm-fix-cooldown-mechanism.patch @@ -0,0 +1,126 @@ +From 83fb88f53712d309ee106cdbd1dfe228d1649918 Mon Sep 17 00:00:00 2001 +Message-Id: <83fb88f53712d309ee106cdbd1dfe228d1649918.1603880585.git.stefan@agner.ch> +In-Reply-To: <59bbf3567b02c36edfa4ee013d7e7e8c492756f2.1603880585.git.stefan@agner.ch> +References: <59bbf3567b02c36edfa4ee013d7e7e8c492756f2.1603880585.git.stefan@agner.ch> +From: Jerome Brunet +Date: Mon, 19 Oct 2020 19:07:02 +0200 +Subject: [PATCH 14/14] usb: cdc-acm: fix cooldown mechanism + +Commit a4e7279cd1d1 ("cdc-acm: introduce a cool down") is causing +regression if there is some USB error, such as -EPROTO. + +This has been reported on some samples of the Odroid-N2 using the Combee II +Zibgee USB dongle. + +> struct acm *acm = container_of(work, struct acm, work) + +is incorrect in case of a delayed work and causes warnings, usually from +the workqueue: + +> WARNING: CPU: 0 PID: 0 at kernel/workqueue.c:1474 __queue_work+0x480/0x528. + +When this happens, USB eventually stops working completely after a while. +Also the ACM_ERROR_DELAY bit is never set, so the cooldown mechanism +previously introduced cannot be triggered and acm_submit_read_urb() is +never called. + +This changes makes the cdc-acm driver use a single delayed work, fixing the +pointer arithmetic in acm_softint() and set the ACM_ERROR_DELAY when the +cooldown mechanism appear to be needed. + +Fixes: a4e7279cd1d1 ("cdc-acm: introduce a cool down") +Reported-by: Pascal Vizeli +Cc: Oliver Neukum +Signed-off-by: Jerome Brunet +--- + drivers/usb/class/cdc-acm.c | 12 +++++------- + drivers/usb/class/cdc-acm.h | 3 +-- + 2 files changed, 6 insertions(+), 9 deletions(-) + +diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c +index d5187b50fc82..76ae5a5d1ac2 100644 +--- a/drivers/usb/class/cdc-acm.c ++++ b/drivers/usb/class/cdc-acm.c +@@ -509,6 +509,7 @@ static void acm_read_bulk_callback(struct urb *urb) + "%s - cooling babbling device\n", __func__); + usb_mark_last_busy(acm->dev); + set_bit(rb->index, &acm->urbs_in_error_delay); ++ set_bit(ACM_ERROR_DELAY, &acm->flags); + cooldown = true; + break; + default: +@@ -534,7 +535,7 @@ static void acm_read_bulk_callback(struct urb *urb) + + if (stopped || stalled || cooldown) { + if (stalled) +- schedule_work(&acm->work); ++ schedule_delayed_work(&acm->dwork, 0); + else if (cooldown) + schedule_delayed_work(&acm->dwork, HZ / 2); + return; +@@ -564,13 +565,13 @@ static void acm_write_bulk(struct urb *urb) + acm_write_done(acm, wb); + spin_unlock_irqrestore(&acm->write_lock, flags); + set_bit(EVENT_TTY_WAKEUP, &acm->flags); +- schedule_work(&acm->work); ++ schedule_delayed_work(&acm->dwork, 0); + } + + static void acm_softint(struct work_struct *work) + { + int i; +- struct acm *acm = container_of(work, struct acm, work); ++ struct acm *acm = container_of(work, struct acm, dwork.work); + + if (test_bit(EVENT_RX_STALL, &acm->flags)) { + smp_mb(); /* against acm_suspend() */ +@@ -586,7 +587,7 @@ static void acm_softint(struct work_struct *work) + if (test_and_clear_bit(ACM_ERROR_DELAY, &acm->flags)) { + for (i = 0; i < acm->rx_buflimit; i++) + if (test_and_clear_bit(i, &acm->urbs_in_error_delay)) +- acm_submit_read_urb(acm, i, GFP_NOIO); ++ acm_submit_read_urb(acm, i, GFP_KERNEL); + } + + if (test_and_clear_bit(EVENT_TTY_WAKEUP, &acm->flags)) +@@ -1354,7 +1355,6 @@ static int acm_probe(struct usb_interface *intf, + acm->ctrlsize = ctrlsize; + acm->readsize = readsize; + acm->rx_buflimit = num_rx_buf; +- INIT_WORK(&acm->work, acm_softint); + INIT_DELAYED_WORK(&acm->dwork, acm_softint); + init_waitqueue_head(&acm->wioctl); + spin_lock_init(&acm->write_lock); +@@ -1564,7 +1564,6 @@ static void acm_disconnect(struct usb_interface *intf) + } + + acm_kill_urbs(acm); +- cancel_work_sync(&acm->work); + cancel_delayed_work_sync(&acm->dwork); + + tty_unregister_device(acm_tty_driver, acm->minor); +@@ -1607,7 +1606,6 @@ static int acm_suspend(struct usb_interface *intf, pm_message_t message) + return 0; + + acm_kill_urbs(acm); +- cancel_work_sync(&acm->work); + cancel_delayed_work_sync(&acm->dwork); + acm->urbs_in_error_delay = 0; + +diff --git a/drivers/usb/class/cdc-acm.h b/drivers/usb/class/cdc-acm.h +index cd5e9d8ab237..b95ff769072e 100644 +--- a/drivers/usb/class/cdc-acm.h ++++ b/drivers/usb/class/cdc-acm.h +@@ -112,8 +112,7 @@ struct acm { + # define ACM_ERROR_DELAY 3 + unsigned long urbs_in_error_delay; /* these need to be restarted after a delay */ + struct usb_cdc_line_coding line; /* bits, stop, parity */ +- struct work_struct work; /* work queue entry for various purposes*/ +- struct delayed_work dwork; /* for cool downs needed in error recovery */ ++ struct delayed_work dwork; /* work queue entry for various purposes */ + unsigned int ctrlin; /* input control lines (DCD, DSR, RI, break, overruns) */ + unsigned int ctrlout; /* output control lines (DTR, RTS) */ + struct async_icount iocount; /* counters for control line changes */ +-- +2.29.1 +