From 5027e320d178184336c8ec0794a59c4fbeb19ec2 Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Thu, 20 Feb 2025 09:00:35 +0000 Subject: [PATCH 1/6] onl: allow compilation with kernel 6.12 Update kernel API usage for kernel 6.12 for platform modules: * 6.8 dropped strlcpy, with the replacement being strscpy (mostly) * 6.10 dropped the fourth argument of i2c_mux_add_adapter() * 6.11 changed the return code of platform_driver::remove() from int to void. Signed-off-by: Jonas Gorski --- ...do-not-enable-v_out-i_out-p_out-caps.patch | 2 +- ...s4610_cpld-add-of-device-match-table.patch | 2 +- ...as4610_psu-add-of-device-match-table.patch | 2 +- ...s4630-54pe-Avoid-undefined-behaviour.patch | 2 +- ...30-54te-do-not-acccess-PSU-via-pmbus.patch | 2 +- ...t-psu_fan_dir-sysfs-for-YM-1401A-PSU.patch | 2 +- ...e-psu_serial_numer-psu_serial_number.patch | 2 +- .../0001-add-celestica-questone-2a.patch | 4 +- ...-fix-ignoring-unused-result-warnings.patch | 4 +- ...ne-2a-delete-unused-global-variables.patch | 4 +- ...fix-various-issues-in-questone-2a_sw.patch | 4 +- ...5-cel-questone-2a-do-not-build-optoe.patch | 4 +- ...update-i2c_drivers-with-6.1-compatib.patch | 4 +- ...update-i2c_drivers-with-6.3-compatib.patch | 4 +- ...2a-update-class_create-usage-for-6.4.patch | 4 +- ...adapt-i2c-adapter-class-usage-for-6..patch | 32 + ...update-platform_drivers-with-6.11-co.patch | 124 + ...id-multiple-definitions-of-mutex-mut.patch | 4 +- ...dules-to-compile-and-work-on-recent-.patch | 4 +- ...date-i2c_mux_add_adapter-usage-for-6.patch | 59 + ...-buffer-overflow-while-reading-therm.patch | 4 +- ...-t-create-random-rx_los-bitmap-value.patch | 4 +- .../0003-bump-kernel-to-4.9.patch | 4 +- ...648-i2c-mux-setting.ko-added-additio.patch | 4 +- ...05-kernel-update-i2c-settings-module.patch | 4 +- ...-off-by-1-to-select-the-correct-qsfp.patch | 4 +- ...ing-mod-add-match-for-newer-coreboot.patch | 4 +- ...etting-mod-fix-race-in-CPLD-device-r.patch | 4 +- ...ux-setting-mod-force-mux-bus-numbers.patch | 4 +- ...648-i2c-mux-setting-mod-update-to-ne.patch | 4 +- ...not-reset-QSFP-modules-when-IRQ-is-a.patch | 4 +- ...e-sure-i2c-i801-is-loaded-before-cre.patch | 4 +- ...-prevent-potential-deadlock-on-probe.patch | 4 +- ...ate-i2c_mux_add_adapter-usage-for-6..patch | 76 + ...ate-platform_drivers-with-6.11-compa.patch | 112 + ...ger-do-not-ignore-write-return-value.patch | 2 +- ...eck-unix-socket-path-is-short-enough.patch | 2 +- ...te-when-MFR_MODEL_OPTION-is-uninmple.patch | 2 +- .../0004-WIP-tools-convert-to-python3.patch | 2 +- ...ically-determine-location-of-python3.patch | 2 +- ...0006-onlpm-hardcode-supported-arches.patch | 2 +- ...ument-for-just-printing-the-builddir.patch | 2 +- ...riding-the-dist-codename-from-enviro.patch | 2 +- ...eplace-yaml.load-with-yaml.full_load.patch | 2 +- ...compilation-with-linux-5.5-and-newer.patch | 2 +- ...-t-treat-undefined-symbols-as-errors.patch | 2 +- ...0012-optoe-add-of-device-match-table.patch | 2 +- ...13-ym2561y-add-of-device-match-table.patch | 2 +- ...all-hwmon_device_register_with_info-.patch | 2 +- ...-modules-update-i2c_drivers-with-6.1.patch | 2 +- ...e-i2c_drivers-with-6.3-compatibility.patch | 2 +- ...es-update-class_create-usage-for-6.4.patch | 4 +- ...replace-strlcpy-with-strscpy-for-6.8.patch | 474 ++ ...e-i2c_mux_add_adapter-usage-for-6.10.patch | 436 ++ ...latform_drivers-with-6.11-compatibil.patch | 6147 +++++++++++++++++ recipes-extended/onl/onl_git.bb | 8 + .../modules/6.10-i2c_mux_add_adapter.cocci | 22 + .../modules/6.11-platform_remove_sig.cocci | 66 + .../modules/6.8-strlcpy-strscpy.cocci | 11 + 59 files changed, 7638 insertions(+), 71 deletions(-) create mode 100644 recipes-extended/onl/files/cel-questone-2a/0009-cel-questone-2a-adapt-i2c-adapter-class-usage-for-6..patch create mode 100644 recipes-extended/onl/files/cel-questone-2a/0010-cel-questone-2a-update-platform_drivers-with-6.11-co.patch create mode 100644 recipes-extended/onl/files/delta-ag5648/0003-delta-modules-update-i2c_mux_add_adapter-usage-for-6.patch create mode 100644 recipes-extended/onl/files/delta-ag7648/0014-delta-ag7648-update-i2c_mux_add_adapter-usage-for-6..patch create mode 100644 recipes-extended/onl/files/delta-ag7648/0015-delta-ag7648-update-platform_drivers-with-6.11-compa.patch create mode 100644 recipes-extended/onl/files/onl/0018-modules-replace-strlcpy-with-strscpy-for-6.8.patch create mode 100644 recipes-extended/onl/files/onl/0019-modules-update-i2c_mux_add_adapter-usage-for-6.10.patch create mode 100644 recipes-extended/onl/files/onl/0020-modules-update-platform_drivers-with-6.11-compatibil.patch create mode 100644 scripts/coccinelle/modules/6.10-i2c_mux_add_adapter.cocci create mode 100644 scripts/coccinelle/modules/6.11-platform_remove_sig.cocci create mode 100644 scripts/coccinelle/modules/6.8-strlcpy-strscpy.cocci diff --git a/recipes-extended/onl/files/accton-as4610/0001-accton-as4610-do-not-enable-v_out-i_out-p_out-caps.patch b/recipes-extended/onl/files/accton-as4610/0001-accton-as4610-do-not-enable-v_out-i_out-p_out-caps.patch index 156476d5..c208baed 100644 --- a/recipes-extended/onl/files/accton-as4610/0001-accton-as4610-do-not-enable-v_out-i_out-p_out-caps.patch +++ b/recipes-extended/onl/files/accton-as4610/0001-accton-as4610-do-not-enable-v_out-i_out-p_out-caps.patch @@ -1,4 +1,4 @@ -From 9ce8088b4f4ccc67f55b30f2d72756e68823905d Mon Sep 17 00:00:00 2001 +From 9e1d1b497baae26ca866fb0790a902df940cd8df Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Wed, 20 Nov 2024 09:09:20 +0100 Subject: [PATCH 1/3] accton-as4610: do not enable v_out/i_out/p_out caps diff --git a/recipes-extended/onl/files/accton-as4610/0002-accton_as4610_cpld-add-of-device-match-table.patch b/recipes-extended/onl/files/accton-as4610/0002-accton_as4610_cpld-add-of-device-match-table.patch index 96014f19..2d2a36e6 100644 --- a/recipes-extended/onl/files/accton-as4610/0002-accton_as4610_cpld-add-of-device-match-table.patch +++ b/recipes-extended/onl/files/accton-as4610/0002-accton_as4610_cpld-add-of-device-match-table.patch @@ -1,4 +1,4 @@ -From d0c89f506ed537414b7c3a22eda851e6d8f66481 Mon Sep 17 00:00:00 2001 +From a117063c0499de949abaed840e98996bdabcf2cf Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Fri, 26 Aug 2022 12:09:49 +0200 Subject: [PATCH 2/3] accton_as4610_cpld: add of device match table diff --git a/recipes-extended/onl/files/accton-as4610/0003-accton_as4610_psu-add-of-device-match-table.patch b/recipes-extended/onl/files/accton-as4610/0003-accton_as4610_psu-add-of-device-match-table.patch index c7db1a43..093aa6d8 100644 --- a/recipes-extended/onl/files/accton-as4610/0003-accton_as4610_psu-add-of-device-match-table.patch +++ b/recipes-extended/onl/files/accton-as4610/0003-accton_as4610_psu-add-of-device-match-table.patch @@ -1,4 +1,4 @@ -From c1690ec177c70cfb59771185643a2544358a957a Mon Sep 17 00:00:00 2001 +From 061cfafe8a05499e4e4c5d057052e83087975917 Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Fri, 26 Aug 2022 12:10:23 +0200 Subject: [PATCH 3/3] accton_as4610_psu: add of device match table diff --git a/recipes-extended/onl/files/accton-as4630-54pe/0001-accton-as4630-54pe-Avoid-undefined-behaviour.patch b/recipes-extended/onl/files/accton-as4630-54pe/0001-accton-as4630-54pe-Avoid-undefined-behaviour.patch index da786e18..01c79850 100644 --- a/recipes-extended/onl/files/accton-as4630-54pe/0001-accton-as4630-54pe-Avoid-undefined-behaviour.patch +++ b/recipes-extended/onl/files/accton-as4630-54pe/0001-accton-as4630-54pe-Avoid-undefined-behaviour.patch @@ -1,4 +1,4 @@ -From 86bb38929b68a06272ecd1dd8e45bad1032dbc5a Mon Sep 17 00:00:00 2001 +From ec5c295931c9b936d1ec930dca3106bd9d01fb8c Mon Sep 17 00:00:00 2001 From: Rubens Figueiredo Date: Thu, 25 Nov 2021 14:55:51 +0100 Subject: [PATCH] accton-as4630-54pe: Avoid undefined behaviour diff --git a/recipes-extended/onl/files/accton-as4630-54te/0001-accton-as4630-54te-do-not-acccess-PSU-via-pmbus.patch b/recipes-extended/onl/files/accton-as4630-54te/0001-accton-as4630-54te-do-not-acccess-PSU-via-pmbus.patch index 4f7f8443..b3ddde36 100644 --- a/recipes-extended/onl/files/accton-as4630-54te/0001-accton-as4630-54te-do-not-acccess-PSU-via-pmbus.patch +++ b/recipes-extended/onl/files/accton-as4630-54te/0001-accton-as4630-54te-do-not-acccess-PSU-via-pmbus.patch @@ -1,4 +1,4 @@ -From fa050aa6c54e4be3f97339ef370a99a02a97d888 Mon Sep 17 00:00:00 2001 +From 107e9a311f016346a72cb4ad54d449969ac3e996 Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Fri, 28 Oct 2022 15:21:49 +0200 Subject: [PATCH] accton-as4630-54te: do not acccess PSU via pmbus diff --git a/recipes-extended/onl/files/accton-as5835-54x/0001-Support-psu_fan_dir-sysfs-for-YM-1401A-PSU.patch b/recipes-extended/onl/files/accton-as5835-54x/0001-Support-psu_fan_dir-sysfs-for-YM-1401A-PSU.patch index 9fbb8fc6..4362af1a 100644 --- a/recipes-extended/onl/files/accton-as5835-54x/0001-Support-psu_fan_dir-sysfs-for-YM-1401A-PSU.patch +++ b/recipes-extended/onl/files/accton-as5835-54x/0001-Support-psu_fan_dir-sysfs-for-YM-1401A-PSU.patch @@ -1,4 +1,4 @@ -From 7c14362b337fbfabd0136e1332895ffd09134f73 Mon Sep 17 00:00:00 2001 +From 569454f499e0ec363a421c2cb069f7bf2b6e8332 Mon Sep 17 00:00:00 2001 From: Jostar Yang Date: Tue, 3 May 2022 11:37:44 +0800 Subject: [PATCH 1/2] Support psu_fan_dir sysfs for YM-1401A PSU diff --git a/recipes-extended/onl/files/accton-as5835-54x/0002-as5835-rename-psu_serial_numer-psu_serial_number.patch b/recipes-extended/onl/files/accton-as5835-54x/0002-as5835-rename-psu_serial_numer-psu_serial_number.patch index 62fd30af..0066398d 100644 --- a/recipes-extended/onl/files/accton-as5835-54x/0002-as5835-rename-psu_serial_numer-psu_serial_number.patch +++ b/recipes-extended/onl/files/accton-as5835-54x/0002-as5835-rename-psu_serial_numer-psu_serial_number.patch @@ -1,4 +1,4 @@ -From 15a80d8932bd9ada01bcc6518c96b1a4312d115c Mon Sep 17 00:00:00 2001 +From dc3aa616e856fb28f595310ccd85a59baf6eb5dc Mon Sep 17 00:00:00 2001 From: Roger Luethi Date: Sat, 19 Mar 2022 16:42:16 +0100 Subject: [PATCH 2/2] as5835: rename psu_serial_numer -> psu_serial_number diff --git a/recipes-extended/onl/files/cel-questone-2a/0001-add-celestica-questone-2a.patch b/recipes-extended/onl/files/cel-questone-2a/0001-add-celestica-questone-2a.patch index 999201de..a4a8bb2b 100644 --- a/recipes-extended/onl/files/cel-questone-2a/0001-add-celestica-questone-2a.patch +++ b/recipes-extended/onl/files/cel-questone-2a/0001-add-celestica-questone-2a.patch @@ -1,7 +1,7 @@ -From e1ce8cdf3c0dae0b0c0e8613d47c42171c2743b7 Mon Sep 17 00:00:00 2001 +From 640603261b84921fd7b2838bc25cc1b2c5d3030b Mon Sep 17 00:00:00 2001 From: Peerapong Jaipakdee Date: Mon, 14 Sep 2020 17:51:55 +0700 -Subject: [PATCH 1/8] add celestica questone 2a +Subject: [PATCH 01/10] add celestica questone 2a Add Celestica Questone-2a taken from [1], all commits squashed into one for easier addition. diff --git a/recipes-extended/onl/files/cel-questone-2a/0002-questone-2a-fix-ignoring-unused-result-warnings.patch b/recipes-extended/onl/files/cel-questone-2a/0002-questone-2a-fix-ignoring-unused-result-warnings.patch index 5b9f03dd..f60ff827 100644 --- a/recipes-extended/onl/files/cel-questone-2a/0002-questone-2a-fix-ignoring-unused-result-warnings.patch +++ b/recipes-extended/onl/files/cel-questone-2a/0002-questone-2a-fix-ignoring-unused-result-warnings.patch @@ -1,7 +1,7 @@ -From 146709556117e1aa83d109b047eec5839bcba6c9 Mon Sep 17 00:00:00 2001 +From 4feecd3dd0b460391b3ec3e5546984353ac2bb11 Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Tue, 23 Mar 2021 11:20:55 +0100 -Subject: [PATCH 2/8] questone-2a: fix ignoring unused result warnings +Subject: [PATCH 02/10] questone-2a: fix ignoring unused result warnings | Compiling[ release ]: x86_64_cel_questone_2a::platform.c | ../../../../../../../../../questone-2a/onlp/builds/x86_64_cel_questone_2a/module/src/platform.c: In function 'is_cache_exist': diff --git a/recipes-extended/onl/files/cel-questone-2a/0003-cel-questone-2a-delete-unused-global-variables.patch b/recipes-extended/onl/files/cel-questone-2a/0003-cel-questone-2a-delete-unused-global-variables.patch index 22ab0ab6..ca849d99 100644 --- a/recipes-extended/onl/files/cel-questone-2a/0003-cel-questone-2a-delete-unused-global-variables.patch +++ b/recipes-extended/onl/files/cel-questone-2a/0003-cel-questone-2a-delete-unused-global-variables.patch @@ -1,7 +1,7 @@ -From 5b07bd869ba1693b105e601f7138cc73321e5fcc Mon Sep 17 00:00:00 2001 +From 798defa47fb8019034320322cb4d1b6b1ec73b27 Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Fri, 1 Jul 2022 16:01:24 +0200 -Subject: [PATCH 3/8] cel-questone-2a: delete unused global variables +Subject: [PATCH 03/10] cel-questone-2a: delete unused global variables Delete unused global variables to avoid the following build error: diff --git a/recipes-extended/onl/files/cel-questone-2a/0004-cel-questone-2a-fix-various-issues-in-questone-2a_sw.patch b/recipes-extended/onl/files/cel-questone-2a/0004-cel-questone-2a-fix-various-issues-in-questone-2a_sw.patch index d9edfe64..de0dbd9a 100644 --- a/recipes-extended/onl/files/cel-questone-2a/0004-cel-questone-2a-fix-various-issues-in-questone-2a_sw.patch +++ b/recipes-extended/onl/files/cel-questone-2a/0004-cel-questone-2a-fix-various-issues-in-questone-2a_sw.patch @@ -1,7 +1,7 @@ -From 8144fe0041158c32d5911f81ca64ebe75875b715 Mon Sep 17 00:00:00 2001 +From 54da760efa50fb21ac1a9d7a485ed9506682b679 Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Fri, 5 Aug 2022 10:43:37 +0000 -Subject: [PATCH 4/8] cel-questone-2a: fix various issues in +Subject: [PATCH 04/10] cel-questone-2a: fix various issues in questone-2a_switchboard Update the code to compile against newer kernels and fix various issues: diff --git a/recipes-extended/onl/files/cel-questone-2a/0005-cel-questone-2a-do-not-build-optoe.patch b/recipes-extended/onl/files/cel-questone-2a/0005-cel-questone-2a-do-not-build-optoe.patch index 8cf9847f..65c40999 100644 --- a/recipes-extended/onl/files/cel-questone-2a/0005-cel-questone-2a-do-not-build-optoe.patch +++ b/recipes-extended/onl/files/cel-questone-2a/0005-cel-questone-2a-do-not-build-optoe.patch @@ -1,7 +1,7 @@ -From 065508bc17907bce88f090fcd1e6b1797ee64cd5 Mon Sep 17 00:00:00 2001 +From a416ce9c1fbf5252ac08e191aaf76bca0c2dd92b Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Fri, 5 Aug 2022 11:34:17 +0000 -Subject: [PATCH 5/8] cel-questone-2a: do not build optoe +Subject: [PATCH 05/10] cel-questone-2a: do not build optoe No reason to use the local copy, just use the onl one that is more recent. diff --git a/recipes-extended/onl/files/cel-questone-2a/0006-cel-questone-2a-update-i2c_drivers-with-6.1-compatib.patch b/recipes-extended/onl/files/cel-questone-2a/0006-cel-questone-2a-update-i2c_drivers-with-6.1-compatib.patch index 233537e6..7a46cfe1 100644 --- a/recipes-extended/onl/files/cel-questone-2a/0006-cel-questone-2a-update-i2c_drivers-with-6.1-compatib.patch +++ b/recipes-extended/onl/files/cel-questone-2a/0006-cel-questone-2a-update-i2c_drivers-with-6.1-compatib.patch @@ -1,7 +1,7 @@ -From b38375bc36bf4cbdb3379cf5ddd6651456f1c84a Mon Sep 17 00:00:00 2001 +From 26265d1070209adc946a991d46c5bb15979d9c57 Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Tue, 22 Nov 2022 13:07:46 +0100 -Subject: [PATCH 6/8] cel-questone-2a: update i2c_drivers with 6.1 +Subject: [PATCH 06/10] cel-questone-2a: update i2c_drivers with 6.1 compatibility i2c_remove changes its return type from int to void, so we need to diff --git a/recipes-extended/onl/files/cel-questone-2a/0007-cel-questone-2a-update-i2c_drivers-with-6.3-compatib.patch b/recipes-extended/onl/files/cel-questone-2a/0007-cel-questone-2a-update-i2c_drivers-with-6.3-compatib.patch index c534ba98..dedec36a 100644 --- a/recipes-extended/onl/files/cel-questone-2a/0007-cel-questone-2a-update-i2c_drivers-with-6.3-compatib.patch +++ b/recipes-extended/onl/files/cel-questone-2a/0007-cel-questone-2a-update-i2c_drivers-with-6.3-compatib.patch @@ -1,7 +1,7 @@ -From ac87d173a4d05741490792c4c5423c622c16558b Mon Sep 17 00:00:00 2001 +From f7259bbc66f9bf1e010fe963e825f6dadc3a3691 Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Tue, 21 Nov 2023 14:40:09 +0100 -Subject: [PATCH 7/8] cel-questone-2a: update i2c_drivers with 6.3 +Subject: [PATCH 07/10] cel-questone-2a: update i2c_drivers with 6.3 compatibility i2c_probe() dropped its i2c_device_id* argument, so we need to provide diff --git a/recipes-extended/onl/files/cel-questone-2a/0008-cel-questone-2a-update-class_create-usage-for-6.4.patch b/recipes-extended/onl/files/cel-questone-2a/0008-cel-questone-2a-update-class_create-usage-for-6.4.patch index 3faed9ea..37cbf53c 100644 --- a/recipes-extended/onl/files/cel-questone-2a/0008-cel-questone-2a-update-class_create-usage-for-6.4.patch +++ b/recipes-extended/onl/files/cel-questone-2a/0008-cel-questone-2a-update-class_create-usage-for-6.4.patch @@ -1,7 +1,7 @@ -From b9f185542476cddf294b16cd0fc11dc7440814eb Mon Sep 17 00:00:00 2001 +From a07a31aed5413bfcd9b907a1322727719d8a3256 Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Wed, 7 Feb 2024 17:25:24 +0100 -Subject: [PATCH 8/8] cel-questone-2a: update class_create() usage for 6.4 +Subject: [PATCH 08/10] cel-questone-2a: update class_create() usage for 6.4 Update class_create() usage for 6.4 which lost its first parameter. diff --git a/recipes-extended/onl/files/cel-questone-2a/0009-cel-questone-2a-adapt-i2c-adapter-class-usage-for-6..patch b/recipes-extended/onl/files/cel-questone-2a/0009-cel-questone-2a-adapt-i2c-adapter-class-usage-for-6..patch new file mode 100644 index 00000000..69edcc45 --- /dev/null +++ b/recipes-extended/onl/files/cel-questone-2a/0009-cel-questone-2a-adapt-i2c-adapter-class-usage-for-6..patch @@ -0,0 +1,32 @@ +From 1d3a4160bc9f424984cbb21f29d4513b3577ea09 Mon Sep 17 00:00:00 2001 +From: Jonas Gorski +Date: Wed, 19 Feb 2025 09:47:16 +0100 +Subject: [PATCH 09/10] cel-questone-2a: adapt i2c adapter class usage for 6.10 + +I2C_CLASS_SPD was dropped in 6.10 + +Upstream-Status: Inappropriate [Questone 2a support not upstream] +Signed-off-by: Jonas Gorski +--- + .../questone-2a/modules/builds/src/questone2a_switchboard.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/packages/platforms/celestica/x86-64/questone-2a/modules/builds/src/questone2a_switchboard.c b/packages/platforms/celestica/x86-64/questone-2a/modules/builds/src/questone2a_switchboard.c +index e867c980aa18..ac604adbd9be 100644 +--- a/packages/platforms/celestica/x86-64/questone-2a/modules/builds/src/questone2a_switchboard.c ++++ b/packages/platforms/celestica/x86-64/questone-2a/modules/builds/src/questone2a_switchboard.c +@@ -1537,7 +1537,11 @@ static struct i2c_adapter * seastone2_i2c_init(struct platform_device *pdev, int + } + + new_adapter->owner = THIS_MODULE; ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,10,0) ++ new_adapter->class = I2C_CLASS_HWMON; ++#else + new_adapter->class = I2C_CLASS_HWMON | I2C_CLASS_SPD; ++#endif + new_adapter->algo = &seastone2_i2c_algorithm; + /* If the bus offset is -1, use dynamic bus number */ + if (bus_number_offset == -1){ +-- +2.51.0 + diff --git a/recipes-extended/onl/files/cel-questone-2a/0010-cel-questone-2a-update-platform_drivers-with-6.11-co.patch b/recipes-extended/onl/files/cel-questone-2a/0010-cel-questone-2a-update-platform_drivers-with-6.11-co.patch new file mode 100644 index 00000000..68363732 --- /dev/null +++ b/recipes-extended/onl/files/cel-questone-2a/0010-cel-questone-2a-update-platform_drivers-with-6.11-co.patch @@ -0,0 +1,124 @@ +From 5d83324deaf5d8b8cad969c3b6edca49da1ccb57 Mon Sep 17 00:00:00 2001 +From: Jonas Gorski +Date: Tue, 18 Feb 2025 22:14:58 +0100 +Subject: [PATCH 10/10] cel-questone-2a: update platform_drivers with 6.11 + compatibility + +platform_driver::remove() changed its return type to void, so we need to +provide different versions based on the kernel version. + +Add variants using the following semantic patch: + + +@r@ +identifier DRIVER; +identifier remove_fn; +fresh identifier remove_fn_wrap = remove_fn ## "_6_11"; +position p; +@@ +struct platform_driver DRIVER@p = { ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = remove_fn_wrap, ++#else + .remove = remove_fn, ++#endif +}; + +@i depends on r@ +@@ + #include +@depends on r && !i@ +@@ + #include <...> ++#include +@depends on r@ +identifier r.remove_fn; +identifier r.remove_fn_wrap; +@@ +int remove_fn(...) {...} ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void remove_fn_wrap(struct platform_device *pdev) ++{ ++ remove_fn(pdev); ++} ++#endif +// + +applied with + + spatch --sp-file 6.11-platform_remove_sig.cocci --in-place --dir packages/platforms/celestica/x86-64/questone-2a/ + +Result taken as is, without any code style fixes. + +Upstream-Status: Inappropriate [Questone 2a support not upstream] +Signed-off-by: Jonas Gorski +--- + .../modules/builds/src/questone2a_baseboard_cpld.c | 11 +++++++++++ + .../modules/builds/src/questone2a_switchboard.c | 10 ++++++++++ + 2 files changed, 21 insertions(+) + +diff --git a/packages/platforms/celestica/x86-64/questone-2a/modules/builds/src/questone2a_baseboard_cpld.c b/packages/platforms/celestica/x86-64/questone-2a/modules/builds/src/questone2a_baseboard_cpld.c +index 1a5527f0d691..ae691b8367a0 100644 +--- a/packages/platforms/celestica/x86-64/questone-2a/modules/builds/src/questone2a_baseboard_cpld.c ++++ b/packages/platforms/celestica/x86-64/questone-2a/modules/builds/src/questone2a_baseboard_cpld.c +@@ -28,6 +28,7 @@ + #include + #include + #include ++#include + + #define DRIVER_NAME "sys_cpld" + /** +@@ -377,10 +378,20 @@ static int baseboard_cpld_drv_remove(struct platform_device *pdev) + sysfs_remove_group(&pdev->dev.kobj, &baseboard_cpld_attrs_grp); + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void baseboard_cpld_drv_remove_6_11(struct platform_device *pdev) { ++ baseboard_cpld_drv_remove(pdev); ++} ++#endif + + static struct platform_driver baseboard_cpld_drv = { + .probe = baseboard_cpld_drv_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = __exit_p(baseboard_cpld_drv_remove_6_11), ++#else ++ + .remove = __exit_p(baseboard_cpld_drv_remove), ++#endif + .driver = { + .name = DRIVER_NAME, + }, +diff --git a/packages/platforms/celestica/x86-64/questone-2a/modules/builds/src/questone2a_switchboard.c b/packages/platforms/celestica/x86-64/questone-2a/modules/builds/src/questone2a_switchboard.c +index ac604adbd9be..765299723c6b 100644 +--- a/packages/platforms/celestica/x86-64/questone-2a/modules/builds/src/questone2a_switchboard.c ++++ b/packages/platforms/celestica/x86-64/questone-2a/modules/builds/src/questone2a_switchboard.c +@@ -1847,6 +1847,11 @@ static int seastone2_drv_remove(struct platform_device *pdev) + devm_kfree(&pdev->dev, fpga_data); + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void seastone2_drv_remove_6_11(struct platform_device *pdev) { ++ seastone2_drv_remove(pdev); ++} ++#endif + + #ifdef TEST_MODE + #define FPGA_PCI_BAR_NUM 2 +@@ -1932,7 +1937,12 @@ static struct pci_driver pci_dev_ops = { + + static struct platform_driver seastone2_drv = { + .probe = seastone2_drv_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = __exit_p(seastone2_drv_remove_6_11), ++#else ++ + .remove = __exit_p(seastone2_drv_remove), ++#endif + .driver = { + .name = DRIVER_NAME, + }, +-- +2.51.0 + diff --git a/recipes-extended/onl/files/delta-ag5648/0001-delta-ag5648-avoid-multiple-definitions-of-mutex-mut.patch b/recipes-extended/onl/files/delta-ag5648/0001-delta-ag5648-avoid-multiple-definitions-of-mutex-mut.patch index ea1a896b..229150ee 100644 --- a/recipes-extended/onl/files/delta-ag5648/0001-delta-ag5648-avoid-multiple-definitions-of-mutex-mut.patch +++ b/recipes-extended/onl/files/delta-ag5648/0001-delta-ag5648-avoid-multiple-definitions-of-mutex-mut.patch @@ -1,7 +1,7 @@ -From e79d6e2c7807fe5caa1360aef22292bf277b21e2 Mon Sep 17 00:00:00 2001 +From 11ca49ab238b9114e8e7c5085c8ca86f692b8545 Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Fri, 1 Jul 2022 16:12:29 +0200 -Subject: [PATCH 1/2] delta-ag5648: avoid multiple definitions of +Subject: [PATCH 1/3] delta-ag5648: avoid multiple definitions of mutex/mutex1 Avoid multiple global definitions of mutex and mutex1 through inclusion diff --git a/recipes-extended/onl/files/delta-ag5648/0002-ag5648-update-modules-to-compile-and-work-on-recent-.patch b/recipes-extended/onl/files/delta-ag5648/0002-ag5648-update-modules-to-compile-and-work-on-recent-.patch index bac1b071..4e8bdb56 100644 --- a/recipes-extended/onl/files/delta-ag5648/0002-ag5648-update-modules-to-compile-and-work-on-recent-.patch +++ b/recipes-extended/onl/files/delta-ag5648/0002-ag5648-update-modules-to-compile-and-work-on-recent-.patch @@ -1,7 +1,7 @@ -From e7406abc0eb5ca42688edb5a0ee923c69586b206 Mon Sep 17 00:00:00 2001 +From 0848f34ead6e92cdd482f64c91958a0b804711d7 Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Fri, 17 Jan 2020 14:29:42 +0000 -Subject: [PATCH 2/2] ag5648: update modules to compile and work on recent +Subject: [PATCH 2/3] ag5648: update modules to compile and work on recent kernels Still require a lot of love to get them in a nice state. diff --git a/recipes-extended/onl/files/delta-ag5648/0003-delta-modules-update-i2c_mux_add_adapter-usage-for-6.patch b/recipes-extended/onl/files/delta-ag5648/0003-delta-modules-update-i2c_mux_add_adapter-usage-for-6.patch new file mode 100644 index 00000000..58a8475a --- /dev/null +++ b/recipes-extended/onl/files/delta-ag5648/0003-delta-modules-update-i2c_mux_add_adapter-usage-for-6.patch @@ -0,0 +1,59 @@ +From 98060b2df88c3fa91afcb82b41a49be7e0e927ae Mon Sep 17 00:00:00 2001 +From: Jonas Gorski +Date: Tue, 18 Feb 2025 21:32:39 +0100 +Subject: [PATCH 3/3] delta: modules: update i2c_mux_add_adapter() usage for + 6.10 + +Update i2c_mux_add_adapter() usage for 6.10 which lost its last +paramter. + +// +@r@ +expression R,E1,E2,E3,E4; +position p; +@@ ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,10,0) ++R = i2c_mux_add_adapter(E1, E2, E3); ++#else + R = i2c_mux_add_adapter(E1, E2, E3, E4); ++#endif +@i depends on r@ +@@ + #include +@depends on r && !i@ +@@ + #include <...> ++#include +// + +applied with + + spatch --sp-file 6.10-i2c_mux_add_adapter.cocci --in-place --dir packages/platforms/delta/x86-64/modules/ + +Result taken as is, without any code style fixes. + +Upstream-Status: Inactive-Upstream [lastcommit: 2024-09-21] +Signed-off-by: Jonas Gorski +--- + packages/platforms/delta/x86-64/modules/builds/i2c_cpld.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/packages/platforms/delta/x86-64/modules/builds/i2c_cpld.c b/packages/platforms/delta/x86-64/modules/builds/i2c_cpld.c +index a5ab28db699e..dc9339c24e84 100755 +--- a/packages/platforms/delta/x86-64/modules/builds/i2c_cpld.c ++++ b/packages/platforms/delta/x86-64/modules/builds/i2c_cpld.c +@@ -368,7 +368,11 @@ static int i2c_cpld_mux_probe(struct i2c_client *client, + /* Now create an adapter for each channel */ + for (chan = 0; chan < chips[data->type].nchans; chan++) + { ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,10,0) ++ ret = i2c_mux_add_adapter(muxc, false, chan); ++#else + ret = i2c_mux_add_adapter(muxc, false, chan, 0); ++#endif + if (ret) + { + dev_err(&client->dev, "failed to register multiplexed adapter %d\n", chan); +-- +2.51.0 + diff --git a/recipes-extended/onl/files/delta-ag7648/0001-agema-ag7648-fix-buffer-overflow-while-reading-therm.patch b/recipes-extended/onl/files/delta-ag7648/0001-agema-ag7648-fix-buffer-overflow-while-reading-therm.patch index a48f5d7a..39004b4b 100644 --- a/recipes-extended/onl/files/delta-ag7648/0001-agema-ag7648-fix-buffer-overflow-while-reading-therm.patch +++ b/recipes-extended/onl/files/delta-ag7648/0001-agema-ag7648-fix-buffer-overflow-while-reading-therm.patch @@ -1,7 +1,7 @@ -From e894d4464221e4a23fcabc7562bfa5233af2c9d2 Mon Sep 17 00:00:00 2001 +From f81fca93359914448c3aec563e501417a4bc55f2 Mon Sep 17 00:00:00 2001 From: Tobias Jungel Date: Fri, 19 Mar 2021 10:30:32 +0100 -Subject: [PATCH 01/13] agema-ag7648: fix buffer overflow while reading thermal +Subject: [PATCH 01/15] agema-ag7648: fix buffer overflow while reading thermal state Appending "2-004d/hwmon/hwmon1/temp1_input" to "/sys/bus/i2c/devices/" diff --git a/recipes-extended/onl/files/delta-ag7648/0002-agema-ag7648-don-t-create-random-rx_los-bitmap-value.patch b/recipes-extended/onl/files/delta-ag7648/0002-agema-ag7648-don-t-create-random-rx_los-bitmap-value.patch index 7135d4db..d904f5ec 100644 --- a/recipes-extended/onl/files/delta-ag7648/0002-agema-ag7648-don-t-create-random-rx_los-bitmap-value.patch +++ b/recipes-extended/onl/files/delta-ag7648/0002-agema-ag7648-don-t-create-random-rx_los-bitmap-value.patch @@ -1,7 +1,7 @@ -From 67a1abc362d950857de979d4f34c1d8141a65145 Mon Sep 17 00:00:00 2001 +From 9e47f7d14b5c825378dad6659d056cc3aeb867f9 Mon Sep 17 00:00:00 2001 From: Tobias Jungel Date: Fri, 19 Mar 2021 12:12:18 +0100 -Subject: [PATCH 02/13] agema-ag7648: don't create random rx_los bitmap values +Subject: [PATCH 02/15] agema-ag7648: don't create random rx_los bitmap values rx_los_all is never initialized, so it will always contain random stack values. Fix this by initializiing it to 0. diff --git a/recipes-extended/onl/files/delta-ag7648/0003-bump-kernel-to-4.9.patch b/recipes-extended/onl/files/delta-ag7648/0003-bump-kernel-to-4.9.patch index ca080051..409bc521 100644 --- a/recipes-extended/onl/files/delta-ag7648/0003-bump-kernel-to-4.9.patch +++ b/recipes-extended/onl/files/delta-ag7648/0003-bump-kernel-to-4.9.patch @@ -1,7 +1,7 @@ -From abe6c8271b29a9739106c2cf02a79a92594e8833 Mon Sep 17 00:00:00 2001 +From 63601fda89729255e34107b15629a2f71e25cfa3 Mon Sep 17 00:00:00 2001 From: Tobias Jungel Date: Tue, 18 Sep 2018 13:57:36 +0200 -Subject: [PATCH 03/13] bump kernel to 4.9 +Subject: [PATCH 03/15] bump kernel to 4.9 * add x86-64-delta-ag7648-i2c-mux-setting module to initiate all i2c bus devices diff --git a/recipes-extended/onl/files/delta-ag7648/0004-x86-64-delta-ag7648-i2c-mux-setting.ko-added-additio.patch b/recipes-extended/onl/files/delta-ag7648/0004-x86-64-delta-ag7648-i2c-mux-setting.ko-added-additio.patch index 5dab3dad..e36aff65 100644 --- a/recipes-extended/onl/files/delta-ag7648/0004-x86-64-delta-ag7648-i2c-mux-setting.ko-added-additio.patch +++ b/recipes-extended/onl/files/delta-ag7648/0004-x86-64-delta-ag7648-i2c-mux-setting.ko-added-additio.patch @@ -1,7 +1,7 @@ -From c10bc2c36eb442c7887bc226971cd732e3266100 Mon Sep 17 00:00:00 2001 +From 92ddd77118a89ef56226beb37c911e6c4d61ea6f Mon Sep 17 00:00:00 2001 From: Tobias Jungel Date: Wed, 10 Oct 2018 13:37:07 +0200 -Subject: [PATCH 04/13] x86-64-delta-ag7648-i2c-mux-setting.ko: added +Subject: [PATCH 04/15] x86-64-delta-ag7648-i2c-mux-setting.ko: added additional vendor Delta seems to have different settings for this. Added OEM vendor diff --git a/recipes-extended/onl/files/delta-ag7648/0005-kernel-update-i2c-settings-module.patch b/recipes-extended/onl/files/delta-ag7648/0005-kernel-update-i2c-settings-module.patch index b12e9a40..f6b2f3d7 100644 --- a/recipes-extended/onl/files/delta-ag7648/0005-kernel-update-i2c-settings-module.patch +++ b/recipes-extended/onl/files/delta-ag7648/0005-kernel-update-i2c-settings-module.patch @@ -1,7 +1,7 @@ -From 6f9b28547225aa059806ed6d4fcdfd851dde144c Mon Sep 17 00:00:00 2001 +From 6bec6e17345d0bc1c5aaff1d82cdeb9df8000e1e Mon Sep 17 00:00:00 2001 From: Tobias Jungel Date: Thu, 22 Nov 2018 15:12:11 +0100 -Subject: [PATCH 05/13] kernel: update i2c settings module +Subject: [PATCH 05/15] kernel: update i2c settings module This patch ensures a more reliable i2c adapter/device initialization. We experienced some reordering of the cpld devices which is fixed due to a diff --git a/recipes-extended/onl/files/delta-ag7648/0006-cpld-mux-2-was-off-by-1-to-select-the-correct-qsfp.patch b/recipes-extended/onl/files/delta-ag7648/0006-cpld-mux-2-was-off-by-1-to-select-the-correct-qsfp.patch index 2f1e8a14..b59ae3e9 100644 --- a/recipes-extended/onl/files/delta-ag7648/0006-cpld-mux-2-was-off-by-1-to-select-the-correct-qsfp.patch +++ b/recipes-extended/onl/files/delta-ag7648/0006-cpld-mux-2-was-off-by-1-to-select-the-correct-qsfp.patch @@ -1,7 +1,7 @@ -From e92c196f8daf108c660a34c50fa4326b9dd5d260 Mon Sep 17 00:00:00 2001 +From 1a70bfbc1bde17849c33d6c2958656660b3dfcd3 Mon Sep 17 00:00:00 2001 From: Tobias Jungel Date: Wed, 19 Dec 2018 22:43:23 +0100 -Subject: [PATCH 06/13] cpld mux 2 was off by 1 to select the correct qsfp +Subject: [PATCH 06/15] cpld mux 2 was off by 1 to select the correct qsfp Upstream-Status: Inactive-Upstream [lastcommit: 2024-09-21] --- diff --git a/recipes-extended/onl/files/delta-ag7648/0007-i2c-mux-setting-mod-add-match-for-newer-coreboot.patch b/recipes-extended/onl/files/delta-ag7648/0007-i2c-mux-setting-mod-add-match-for-newer-coreboot.patch index 79f277cb..ca39b209 100644 --- a/recipes-extended/onl/files/delta-ag7648/0007-i2c-mux-setting-mod-add-match-for-newer-coreboot.patch +++ b/recipes-extended/onl/files/delta-ag7648/0007-i2c-mux-setting-mod-add-match-for-newer-coreboot.patch @@ -1,7 +1,7 @@ -From 3975cd9c422e4c8eab2167eaaeb4b0d41abf86a9 Mon Sep 17 00:00:00 2001 +From cc32e74e46ee3111b6d80a99bbfe009595d1be73 Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Thu, 7 Nov 2019 16:19:13 +0100 -Subject: [PATCH 07/13] i2c-mux-setting-mod: add match for newer coreboot +Subject: [PATCH 07/15] i2c-mux-setting-mod: add match for newer coreboot Newer(?) coreboot identifies itself as DNI/AG7648, which isn't matched by the current code, causing no i2c devices being created. diff --git a/recipes-extended/onl/files/delta-ag7648/0008-ag7648-i2c-mux-setting-mod-fix-race-in-CPLD-device-r.patch b/recipes-extended/onl/files/delta-ag7648/0008-ag7648-i2c-mux-setting-mod-fix-race-in-CPLD-device-r.patch index 88d2ec6a..5918a41e 100644 --- a/recipes-extended/onl/files/delta-ag7648/0008-ag7648-i2c-mux-setting-mod-fix-race-in-CPLD-device-r.patch +++ b/recipes-extended/onl/files/delta-ag7648/0008-ag7648-i2c-mux-setting-mod-fix-race-in-CPLD-device-r.patch @@ -1,7 +1,7 @@ -From f3b3fa3da8bf57a50818f038b13f5eb856b66b2e Mon Sep 17 00:00:00 2001 +From 64395d3c0fe86e8685d44807176c6ba08a2e08eb Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Thu, 23 Jan 2020 16:21:05 +0000 -Subject: [PATCH 08/13] ag7648-i2c-mux-setting-mod: fix race in CPLD device +Subject: [PATCH 08/15] ag7648-i2c-mux-setting-mod: fix race in CPLD device registration Registering the device and attaching platform data in two steps is racy diff --git a/recipes-extended/onl/files/delta-ag7648/0009-ag7648-i2c-mux-setting-mod-force-mux-bus-numbers.patch b/recipes-extended/onl/files/delta-ag7648/0009-ag7648-i2c-mux-setting-mod-force-mux-bus-numbers.patch index 4d349d28..57df9096 100644 --- a/recipes-extended/onl/files/delta-ag7648/0009-ag7648-i2c-mux-setting-mod-force-mux-bus-numbers.patch +++ b/recipes-extended/onl/files/delta-ag7648/0009-ag7648-i2c-mux-setting-mod-force-mux-bus-numbers.patch @@ -1,7 +1,7 @@ -From 619c98c912ccc94aca938860da092ce1c625d76b Mon Sep 17 00:00:00 2001 +From e85db0a33ade1d448b9e29e43c864d11b265fd8f Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Fri, 24 Jan 2020 10:18:11 +0100 -Subject: [PATCH 09/13] ag7648-i2c-mux-setting-mod: force mux bus numbers +Subject: [PATCH 09/15] ag7648-i2c-mux-setting-mod: force mux bus numbers Newer kernels allow parallel probing of the CPLDs, so mux bus number assignment will become interleaved. Fix this by forcing the mux bus diff --git a/recipes-extended/onl/files/delta-ag7648/0010-x86-64-delta-ag7648-i2c-mux-setting-mod-update-to-ne.patch b/recipes-extended/onl/files/delta-ag7648/0010-x86-64-delta-ag7648-i2c-mux-setting-mod-update-to-ne.patch index c98fe8ae..4cfec06c 100644 --- a/recipes-extended/onl/files/delta-ag7648/0010-x86-64-delta-ag7648-i2c-mux-setting-mod-update-to-ne.patch +++ b/recipes-extended/onl/files/delta-ag7648/0010-x86-64-delta-ag7648-i2c-mux-setting-mod-update-to-ne.patch @@ -1,7 +1,7 @@ -From 919ed00cabc6c8f07b21f89f3dcfbdb8e856c0c0 Mon Sep 17 00:00:00 2001 +From ace0b9f9102c4f11c0ad531f22153000f07db67a Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Mon, 14 Dec 2020 16:34:18 +0100 -Subject: [PATCH 10/13] x86-64-delta-ag7648-i2c-mux-setting-mod: update to +Subject: [PATCH 10/15] x86-64-delta-ag7648-i2c-mux-setting-mod: update to newer I2C API * i2c_new_client_device was added in 5.4, i2c_new_device dropped in 5.8 diff --git a/recipes-extended/onl/files/delta-ag7648/0011-delta-ag7648-do-not-reset-QSFP-modules-when-IRQ-is-a.patch b/recipes-extended/onl/files/delta-ag7648/0011-delta-ag7648-do-not-reset-QSFP-modules-when-IRQ-is-a.patch index 560cf950..355f8c14 100644 --- a/recipes-extended/onl/files/delta-ag7648/0011-delta-ag7648-do-not-reset-QSFP-modules-when-IRQ-is-a.patch +++ b/recipes-extended/onl/files/delta-ag7648/0011-delta-ag7648-do-not-reset-QSFP-modules-when-IRQ-is-a.patch @@ -1,7 +1,7 @@ -From 97b00d680df239024eecc6adfe25259902ffd2c1 Mon Sep 17 00:00:00 2001 +From 85a08d9666417485d4e2264588f2cb38401ff711 Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Tue, 11 Oct 2022 16:42:23 +0200 -Subject: [PATCH 11/13] delta-ag7648: do not reset QSFP modules when IRQ is +Subject: [PATCH 11/15] delta-ag7648: do not reset QSFP modules when IRQ is asserted The IntL signal may also be asserted when the module finished initializing: diff --git a/recipes-extended/onl/files/delta-ag7648/0012-delta-ag7648-make-sure-i2c-i801-is-loaded-before-cre.patch b/recipes-extended/onl/files/delta-ag7648/0012-delta-ag7648-make-sure-i2c-i801-is-loaded-before-cre.patch index 1d3368c4..0cf265b1 100644 --- a/recipes-extended/onl/files/delta-ag7648/0012-delta-ag7648-make-sure-i2c-i801-is-loaded-before-cre.patch +++ b/recipes-extended/onl/files/delta-ag7648/0012-delta-ag7648-make-sure-i2c-i801-is-loaded-before-cre.patch @@ -1,7 +1,7 @@ -From 6ca3f0cc4211f5b068113db335aca5ae66dce1ae Mon Sep 17 00:00:00 2001 +From 117ad5235b904f18c058b89c723a8b3f0ec00d3d Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Wed, 30 Nov 2022 10:21:21 +0100 -Subject: [PATCH 12/13] delta-ag7648: make sure i2c-i801 is loaded before +Subject: [PATCH 12/15] delta-ag7648: make sure i2c-i801 is loaded before creating devices Make sure i2c-i801 is loaded before we create devices so that the diff --git a/recipes-extended/onl/files/delta-ag7648/0013-delta-ag7648-prevent-potential-deadlock-on-probe.patch b/recipes-extended/onl/files/delta-ag7648/0013-delta-ag7648-prevent-potential-deadlock-on-probe.patch index 880f2da6..88462bdf 100644 --- a/recipes-extended/onl/files/delta-ag7648/0013-delta-ag7648-prevent-potential-deadlock-on-probe.patch +++ b/recipes-extended/onl/files/delta-ag7648/0013-delta-ag7648-prevent-potential-deadlock-on-probe.patch @@ -1,7 +1,7 @@ -From 5ce187c86e6b033fd989c72a2fd0d5723d1b2a40 Mon Sep 17 00:00:00 2001 +From 2abeda2257aa08e56b1490537b7d88f569323831 Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Fri, 2 Dec 2022 11:26:07 +0100 -Subject: [PATCH 13/13] delta-ag7648: prevent potential deadlock on probe +Subject: [PATCH 13/15] delta-ag7648: prevent potential deadlock on probe When the i2c-ismt and pca954x modules are already loaded, there will be a deadlock due to recursive locking: diff --git a/recipes-extended/onl/files/delta-ag7648/0014-delta-ag7648-update-i2c_mux_add_adapter-usage-for-6..patch b/recipes-extended/onl/files/delta-ag7648/0014-delta-ag7648-update-i2c_mux_add_adapter-usage-for-6..patch new file mode 100644 index 00000000..17cf5f5d --- /dev/null +++ b/recipes-extended/onl/files/delta-ag7648/0014-delta-ag7648-update-i2c_mux_add_adapter-usage-for-6..patch @@ -0,0 +1,76 @@ +From 72c29e484835c55a74abb9d409243f4430dcc4f1 Mon Sep 17 00:00:00 2001 +From: Jonas Gorski +Date: Tue, 18 Feb 2025 21:31:23 +0100 +Subject: [PATCH 14/15] delta-ag7648: update i2c_mux_add_adapter() usage for + 6.10 + +Update i2c_mux_add_adapter() usage for 6.10 which lost its last +paramter. + +// +@r@ +expression R,E1,E2,E3,E4; +position p; +@@ ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,10,0) ++R = i2c_mux_add_adapter(E1, E2, E3); ++#else + R = i2c_mux_add_adapter(E1, E2, E3, E4); ++#endif +@i depends on r@ +@@ + #include +@depends on r && !i@ +@@ + #include <...> ++#include +// + +applied with + + spatch --sp-file 6.10-i2c_mux_add_adapter.cocci --in-place --dir packages/platforms/delta/x86-64/ag7648/ + +Result taken as is, without any code style fixes. + +Upstream-Status: Inactive-Upstream [lastcommit: 2024-09-21] +Signed-off-by: Jonas Gorski +--- + .../ag7648/modules/builds/x86-64-delta-ag7648-cpld-mux-1.c | 4 ++++ + .../ag7648/modules/builds/x86-64-delta-ag7648-cpld-mux-2.c | 4 ++++ + 2 files changed, 8 insertions(+) + +diff --git a/packages/platforms/delta/x86-64/ag7648/modules/builds/x86-64-delta-ag7648-cpld-mux-1.c b/packages/platforms/delta/x86-64/ag7648/modules/builds/x86-64-delta-ag7648-cpld-mux-1.c +index 2b4911ad9b0d..4025c1221857 100755 +--- a/packages/platforms/delta/x86-64/ag7648/modules/builds/x86-64-delta-ag7648-cpld-mux-1.c ++++ b/packages/platforms/delta/x86-64/ag7648/modules/builds/x86-64-delta-ag7648-cpld-mux-1.c +@@ -153,7 +153,11 @@ static int i2c_mux_cpld_probe(struct platform_device *pdev) + for (i = 0; i < mux->data.n_values; i++) { + nr = mux->data.base_nr ? (mux->data.base_nr + i) : 0; + ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,10,0) ++ ret = i2c_mux_add_adapter(muxc, nr, mux->data.values[i]); ++#else + ret = i2c_mux_add_adapter(muxc, nr, mux->data.values[i], 0); ++#endif + if (ret) { + dev_err(&pdev->dev, "Failed to add adapter %d\n", i); + goto add_adapter_failed; +diff --git a/packages/platforms/delta/x86-64/ag7648/modules/builds/x86-64-delta-ag7648-cpld-mux-2.c b/packages/platforms/delta/x86-64/ag7648/modules/builds/x86-64-delta-ag7648-cpld-mux-2.c +index 339c0071fb5d..486d566e01bf 100755 +--- a/packages/platforms/delta/x86-64/ag7648/modules/builds/x86-64-delta-ag7648-cpld-mux-2.c ++++ b/packages/platforms/delta/x86-64/ag7648/modules/builds/x86-64-delta-ag7648-cpld-mux-2.c +@@ -180,7 +180,11 @@ static int i2c_mux_cpld_probe(struct platform_device *pdev) + for (i = 0; i < mux->data.n_values; i++) { + nr = mux->data.base_nr ? (mux->data.base_nr + i) : 0; + ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,10,0) ++ ret = i2c_mux_add_adapter(muxc, nr, mux->data.values[i]); ++#else + ret = i2c_mux_add_adapter(muxc, nr, mux->data.values[i], 0); ++#endif + if (ret) { + dev_err(&pdev->dev, "Failed to add adapter %d\n", i); + goto add_adapter_failed; +-- +2.51.0 + diff --git a/recipes-extended/onl/files/delta-ag7648/0015-delta-ag7648-update-platform_drivers-with-6.11-compa.patch b/recipes-extended/onl/files/delta-ag7648/0015-delta-ag7648-update-platform_drivers-with-6.11-compa.patch new file mode 100644 index 00000000..222b017b --- /dev/null +++ b/recipes-extended/onl/files/delta-ag7648/0015-delta-ag7648-update-platform_drivers-with-6.11-compa.patch @@ -0,0 +1,112 @@ +From fe17e04c874ad04ea83f682aeb49c853059110c9 Mon Sep 17 00:00:00 2001 +From: Jonas Gorski +Date: Sun, 9 Feb 2025 10:41:18 +0100 +Subject: [PATCH 15/15] delta-ag7648: update platform_drivers with 6.11 + compatibility + +platform_driver::remove() changed its return type to void, so we need to +provide different versions based on the kernel version. + +Add variants using the following semantic patch: + + +@r@ +identifier DRIVER; +identifier remove_fn; +fresh identifier remove_fn_wrap = remove_fn ## "_6_11"; +position p; +@@ +struct platform_driver DRIVER@p = { ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = remove_fn_wrap, ++#else + .remove = remove_fn, ++#endif +}; + +@i depends on r@ +@@ + #include +@depends on r && !i@ +@@ + #include <...> ++#include +@depends on r@ +identifier r.remove_fn; +identifier r.remove_fn_wrap; +@@ +int remove_fn(...) {...} ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void remove_fn_wrap(struct platform_device *pdev) ++{ ++ remove_fn(pdev); ++} ++#endif +// + +applied with + + spatch --sp-file 6.11-platform_remove_sig.cocci --in-place --dir packages/platforms/delta/x86-64/ag7648/ + +Result taken as is, without any code style fixes. + +Upstream-Status: Unsubmitted +Signed-off-by: Jonas Gorski +--- + .../modules/builds/x86-64-delta-ag7648-cpld-mux-1.c | 10 ++++++++++ + .../modules/builds/x86-64-delta-ag7648-cpld-mux-2.c | 10 ++++++++++ + 2 files changed, 20 insertions(+) + +diff --git a/packages/platforms/delta/x86-64/ag7648/modules/builds/x86-64-delta-ag7648-cpld-mux-1.c b/packages/platforms/delta/x86-64/ag7648/modules/builds/x86-64-delta-ag7648-cpld-mux-1.c +index 4025c1221857..690a59034cd2 100755 +--- a/packages/platforms/delta/x86-64/ag7648/modules/builds/x86-64-delta-ag7648-cpld-mux-1.c ++++ b/packages/platforms/delta/x86-64/ag7648/modules/builds/x86-64-delta-ag7648-cpld-mux-1.c +@@ -189,10 +189,20 @@ static int i2c_mux_cpld_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void i2c_mux_cpld_remove_6_11(struct platform_device *pdev) { ++ i2c_mux_cpld_remove(pdev); ++} ++#endif + + static struct platform_driver i2c_mux_cpld_driver = { + .probe = i2c_mux_cpld_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = i2c_mux_cpld_remove_6_11, ++#else ++ + .remove = i2c_mux_cpld_remove, ++#endif + .driver = + { + .name = "i2c-mux-cpld", +diff --git a/packages/platforms/delta/x86-64/ag7648/modules/builds/x86-64-delta-ag7648-cpld-mux-2.c b/packages/platforms/delta/x86-64/ag7648/modules/builds/x86-64-delta-ag7648-cpld-mux-2.c +index 486d566e01bf..996f6e315fbd 100755 +--- a/packages/platforms/delta/x86-64/ag7648/modules/builds/x86-64-delta-ag7648-cpld-mux-2.c ++++ b/packages/platforms/delta/x86-64/ag7648/modules/builds/x86-64-delta-ag7648-cpld-mux-2.c +@@ -216,10 +216,20 @@ static int i2c_mux_cpld_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void i2c_mux_cpld_remove_6_11(struct platform_device *pdev) { ++ i2c_mux_cpld_remove(pdev); ++} ++#endif + + static struct platform_driver i2c_mux_cpld_driver = { + .probe = i2c_mux_cpld_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = i2c_mux_cpld_remove_6_11, ++#else ++ + .remove = i2c_mux_cpld_remove, ++#endif + .driver = + { + .name = "i2c-mux-cpld-2", +-- +2.51.0 + diff --git a/recipes-extended/onl/files/onl/0001-platform_manager-do-not-ignore-write-return-value.patch b/recipes-extended/onl/files/onl/0001-platform_manager-do-not-ignore-write-return-value.patch index 382803c6..5177217c 100644 --- a/recipes-extended/onl/files/onl/0001-platform_manager-do-not-ignore-write-return-value.patch +++ b/recipes-extended/onl/files/onl/0001-platform_manager-do-not-ignore-write-return-value.patch @@ -1,7 +1,7 @@ From bf7a88d1fcbec66945dd974d80d57b5cbc6ddf87 Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Fri, 19 Mar 2021 12:07:35 +0100 -Subject: [PATCH 01/47] platform_manager: do not ignore write return value +Subject: [PATCH 01/20] platform_manager: do not ignore write return value If the write fails, the other thread will not be notified, so we should not try to wait for it. diff --git a/recipes-extended/onl/files/onl/0002-file-check-unix-socket-path-is-short-enough.patch b/recipes-extended/onl/files/onl/0002-file-check-unix-socket-path-is-short-enough.patch index a44d267f..4196f2e0 100644 --- a/recipes-extended/onl/files/onl/0002-file-check-unix-socket-path-is-short-enough.patch +++ b/recipes-extended/onl/files/onl/0002-file-check-unix-socket-path-is-short-enough.patch @@ -1,7 +1,7 @@ From 5dfa9275a194968b9c723a19a3509b1d3fb25aeb Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Mon, 19 Apr 2021 16:23:26 +0200 -Subject: [PATCH 02/47] file: check unix socket path is short enough +Subject: [PATCH 02/20] file: check unix socket path is short enough Add a length check for path before attempting to copy it. And because gcc is not smart enough, move strncpy to the check, else it will fail to diff --git a/recipes-extended/onl/files/onl/0003-ym2651y-fix-update-when-MFR_MODEL_OPTION-is-uninmple.patch b/recipes-extended/onl/files/onl/0003-ym2651y-fix-update-when-MFR_MODEL_OPTION-is-uninmple.patch index e24defe8..61fb021d 100644 --- a/recipes-extended/onl/files/onl/0003-ym2651y-fix-update-when-MFR_MODEL_OPTION-is-uninmple.patch +++ b/recipes-extended/onl/files/onl/0003-ym2651y-fix-update-when-MFR_MODEL_OPTION-is-uninmple.patch @@ -1,7 +1,7 @@ From 9342e6f4c61dccb52a6e54f76da63d56fc684982 Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Fri, 13 May 2022 12:24:11 +0200 -Subject: [PATCH 03/47] ym2651y: fix update when MFR_MODEL_OPTION is +Subject: [PATCH 03/20] ym2651y: fix update when MFR_MODEL_OPTION is uninmplemented Not every PSU implements the MFR_MODEL_OPTION register. If it does not diff --git a/recipes-extended/onl/files/onl/0004-WIP-tools-convert-to-python3.patch b/recipes-extended/onl/files/onl/0004-WIP-tools-convert-to-python3.patch index 953d3ac3..02fdd87c 100644 --- a/recipes-extended/onl/files/onl/0004-WIP-tools-convert-to-python3.patch +++ b/recipes-extended/onl/files/onl/0004-WIP-tools-convert-to-python3.patch @@ -1,7 +1,7 @@ From 213de8afc21d113f20babeda5e2caa5da0188e7e Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Thu, 16 Jun 2022 10:30:25 +0200 -Subject: [PATCH 04/47] WIP: tools: convert to python3 +Subject: [PATCH 04/20] WIP: tools: convert to python3 Convert the build code from python2 to python3: diff --git a/recipes-extended/onl/files/onl/0005-dynamically-determine-location-of-python3.patch b/recipes-extended/onl/files/onl/0005-dynamically-determine-location-of-python3.patch index 5a93a2fd..7a648c1c 100644 --- a/recipes-extended/onl/files/onl/0005-dynamically-determine-location-of-python3.patch +++ b/recipes-extended/onl/files/onl/0005-dynamically-determine-location-of-python3.patch @@ -1,7 +1,7 @@ From 1a737910e1deae58c75e1a13837e95cd2ff01deb Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Thu, 16 Jun 2022 10:32:16 +0200 -Subject: [PATCH 05/47] dynamically determine location of python3 +Subject: [PATCH 05/20] dynamically determine location of python3 To allow running the scripts within a distro context with custom python search paths, replace the hardcoded location of the python3 binary with diff --git a/recipes-extended/onl/files/onl/0006-onlpm-hardcode-supported-arches.patch b/recipes-extended/onl/files/onl/0006-onlpm-hardcode-supported-arches.patch index 77278d2f..8fd2de9c 100644 --- a/recipes-extended/onl/files/onl/0006-onlpm-hardcode-supported-arches.patch +++ b/recipes-extended/onl/files/onl/0006-onlpm-hardcode-supported-arches.patch @@ -1,7 +1,7 @@ From 5416358c4fe7d63479ee01cd088334fd2ac4a6ad Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Wed, 18 May 2022 16:21:02 +0200 -Subject: [PATCH 06/47] onlpm: hardcode supported arches +Subject: [PATCH 06/20] onlpm: hardcode supported arches For yocto we don't provide a dpkg, so we need to hardcode the supported arches. diff --git a/recipes-extended/onl/files/onl/0007-onlpm-add-an-argument-for-just-printing-the-builddir.patch b/recipes-extended/onl/files/onl/0007-onlpm-add-an-argument-for-just-printing-the-builddir.patch index e0938f59..adbf921f 100644 --- a/recipes-extended/onl/files/onl/0007-onlpm-add-an-argument-for-just-printing-the-builddir.patch +++ b/recipes-extended/onl/files/onl/0007-onlpm-add-an-argument-for-just-printing-the-builddir.patch @@ -1,7 +1,7 @@ From c3e8164ef18a4cceafeb97a85f6924172187e44d Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Wed, 18 May 2022 15:49:13 +0200 -Subject: [PATCH 07/47] onlpm: add an argument for just printing the builddirs +Subject: [PATCH 07/20] onlpm: add an argument for just printing the builddirs To allow building without packaging, we need to know the appropriate build dir for passing to make. diff --git a/recipes-extended/onl/files/onl/0008-onlpm-allow-overriding-the-dist-codename-from-enviro.patch b/recipes-extended/onl/files/onl/0008-onlpm-allow-overriding-the-dist-codename-from-enviro.patch index eb252802..d21954e7 100644 --- a/recipes-extended/onl/files/onl/0008-onlpm-allow-overriding-the-dist-codename-from-enviro.patch +++ b/recipes-extended/onl/files/onl/0008-onlpm-allow-overriding-the-dist-codename-from-enviro.patch @@ -1,7 +1,7 @@ From 1f90b70026d34961af9c5446dee99af2ec791d21 Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Thu, 23 Jun 2022 11:13:22 +0200 -Subject: [PATCH 08/47] onlpm: allow overriding the dist codename from +Subject: [PATCH 08/20] onlpm: allow overriding the dist codename from environment Yocto does not provide a lsb_release module, so add support for diff --git a/recipes-extended/onl/files/onl/0009-tools-replace-yaml.load-with-yaml.full_load.patch b/recipes-extended/onl/files/onl/0009-tools-replace-yaml.load-with-yaml.full_load.patch index 5d06455c..2c1801b6 100644 --- a/recipes-extended/onl/files/onl/0009-tools-replace-yaml.load-with-yaml.full_load.patch +++ b/recipes-extended/onl/files/onl/0009-tools-replace-yaml.load-with-yaml.full_load.patch @@ -1,7 +1,7 @@ From 9a0ba116adcc6b171e648ba96047d45569d0e095 Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Tue, 28 Jun 2022 11:00:16 +0200 -Subject: [PATCH 09/47] tools: replace yaml.load with yaml.full_load +Subject: [PATCH 09/20] tools: replace yaml.load with yaml.full_load yaml.load without loader is deprecated and unsafe [1], and was removed with PyYAML 6.0. diff --git a/recipes-extended/onl/files/onl/0010-optoe-allow-compilation-with-linux-5.5-and-newer.patch b/recipes-extended/onl/files/onl/0010-optoe-allow-compilation-with-linux-5.5-and-newer.patch index 94837259..de233b91 100644 --- a/recipes-extended/onl/files/onl/0010-optoe-allow-compilation-with-linux-5.5-and-newer.patch +++ b/recipes-extended/onl/files/onl/0010-optoe-allow-compilation-with-linux-5.5-and-newer.patch @@ -1,7 +1,7 @@ From 8b8783226235a6f28938da19682ec6a651df4d18 Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Fri, 20 May 2022 10:44:58 +0200 -Subject: [PATCH 10/47] optoe: allow compilation with linux 5.5 and newer +Subject: [PATCH 10/20] optoe: allow compilation with linux 5.5 and newer i2c_new_dummy was dropped in linux in favour of i2c_new_dummy_device, which was introduced in 5.3. diff --git a/recipes-extended/onl/files/onl/0011-kmodbuild.sh-don-t-treat-undefined-symbols-as-errors.patch b/recipes-extended/onl/files/onl/0011-kmodbuild.sh-don-t-treat-undefined-symbols-as-errors.patch index bd0816b9..c9aaffea 100644 --- a/recipes-extended/onl/files/onl/0011-kmodbuild.sh-don-t-treat-undefined-symbols-as-errors.patch +++ b/recipes-extended/onl/files/onl/0011-kmodbuild.sh-don-t-treat-undefined-symbols-as-errors.patch @@ -1,7 +1,7 @@ From 68bbbfbc7beb69252ab8a389530a2dfb48fa9baa Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Thu, 19 May 2022 10:09:04 +0200 -Subject: [PATCH 11/47] kmodbuild.sh: don't treat undefined symbols as errors +Subject: [PATCH 11/20] kmodbuild.sh: don't treat undefined symbols as errors Modern kernels treat undefined symbols as errors, but when building modules individually, inter-module dependencies cannot be properly diff --git a/recipes-extended/onl/files/onl/0012-optoe-add-of-device-match-table.patch b/recipes-extended/onl/files/onl/0012-optoe-add-of-device-match-table.patch index e8ce0f38..28a3ca1e 100644 --- a/recipes-extended/onl/files/onl/0012-optoe-add-of-device-match-table.patch +++ b/recipes-extended/onl/files/onl/0012-optoe-add-of-device-match-table.patch @@ -1,7 +1,7 @@ From 134b6baced07c943ecd86b4518c6c6b67b7040af Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Fri, 26 Aug 2022 11:43:30 +0200 -Subject: [PATCH 12/47] optoe: add of device match table +Subject: [PATCH 12/20] optoe: add of device match table For on-demand loading to work the kernel needs to know which compatibles are handled by the driver, so add an appropriate table. diff --git a/recipes-extended/onl/files/onl/0013-ym2561y-add-of-device-match-table.patch b/recipes-extended/onl/files/onl/0013-ym2561y-add-of-device-match-table.patch index 59d4909a..2ddeb7cd 100644 --- a/recipes-extended/onl/files/onl/0013-ym2561y-add-of-device-match-table.patch +++ b/recipes-extended/onl/files/onl/0013-ym2561y-add-of-device-match-table.patch @@ -1,7 +1,7 @@ From ff9ae434aa3feb51512bd460c2394cc120c0059d Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Fri, 26 Aug 2022 11:49:20 +0200 -Subject: [PATCH 13/47] ym2561y: add of device match table +Subject: [PATCH 13/20] ym2561y: add of device match table For on-demand loading to work the kernel needs to know which compatibles are handled by the driver, so add an appropriate table. diff --git a/recipes-extended/onl/files/onl/0014-modules-do-not-call-hwmon_device_register_with_info-.patch b/recipes-extended/onl/files/onl/0014-modules-do-not-call-hwmon_device_register_with_info-.patch index 123880c2..52e03bdc 100644 --- a/recipes-extended/onl/files/onl/0014-modules-do-not-call-hwmon_device_register_with_info-.patch +++ b/recipes-extended/onl/files/onl/0014-modules-do-not-call-hwmon_device_register_with_info-.patch @@ -1,7 +1,7 @@ From 82117cf2e6ac1468e22dd013d1332f4cb2ec38ed Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Tue, 31 Oct 2023 14:35:01 +0100 -Subject: [PATCH 14/47] modules: do not call hwmon_device_register_with_info() +Subject: [PATCH 14/20] modules: do not call hwmon_device_register_with_info() with NULL chip hwmon_device_register_with_info() is supposed to require hwmon_chip_info diff --git a/recipes-extended/onl/files/onl/0015-modules-update-i2c_drivers-with-6.1.patch b/recipes-extended/onl/files/onl/0015-modules-update-i2c_drivers-with-6.1.patch index 7549b33a..92f94e50 100644 --- a/recipes-extended/onl/files/onl/0015-modules-update-i2c_drivers-with-6.1.patch +++ b/recipes-extended/onl/files/onl/0015-modules-update-i2c_drivers-with-6.1.patch @@ -1,7 +1,7 @@ From 995a996aa04987bd8c4712da2a3b2a8a5ba09f95 Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Tue, 31 Oct 2023 14:31:26 +0100 -Subject: [PATCH 15/47] modules: update i2c_drivers with 6.1 +Subject: [PATCH 15/20] modules: update i2c_drivers with 6.1 i2c_remove changes its return type from int to void, so we need to provide different versions based on kernel version. diff --git a/recipes-extended/onl/files/onl/0016-modules-update-i2c_drivers-with-6.3-compatibility.patch b/recipes-extended/onl/files/onl/0016-modules-update-i2c_drivers-with-6.3-compatibility.patch index b8fb745f..73b700e1 100644 --- a/recipes-extended/onl/files/onl/0016-modules-update-i2c_drivers-with-6.3-compatibility.patch +++ b/recipes-extended/onl/files/onl/0016-modules-update-i2c_drivers-with-6.3-compatibility.patch @@ -1,7 +1,7 @@ From d8523ec0415d3bc23e9fb88e27cf1ba51cd6c9f0 Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Tue, 21 Nov 2023 14:41:16 +0100 -Subject: [PATCH 16/47] modules: update i2c_drivers with 6.3 compatibility +Subject: [PATCH 16/20] modules: update i2c_drivers with 6.3 compatibility i2c_probe() dropped its i2c_device_id* argument, so we need to provide different versions based on kernel version. diff --git a/recipes-extended/onl/files/onl/0017-modules-update-class_create-usage-for-6.4.patch b/recipes-extended/onl/files/onl/0017-modules-update-class_create-usage-for-6.4.patch index 3b622c8c..cb432022 100644 --- a/recipes-extended/onl/files/onl/0017-modules-update-class_create-usage-for-6.4.patch +++ b/recipes-extended/onl/files/onl/0017-modules-update-class_create-usage-for-6.4.patch @@ -1,7 +1,7 @@ -From f39facf64c51e926c7a67fa7a976b97f0ee0e787 Mon Sep 17 00:00:00 2001 +From 1a068cec035aa864f317c7340a9357100f3628e8 Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Wed, 7 Feb 2024 17:27:23 +0100 -Subject: [PATCH 17/47] modules: update class_create() usage for 6.4 +Subject: [PATCH 17/20] modules: update class_create() usage for 6.4 Update class_create() usage for 6.4 which lost its first parameter. diff --git a/recipes-extended/onl/files/onl/0018-modules-replace-strlcpy-with-strscpy-for-6.8.patch b/recipes-extended/onl/files/onl/0018-modules-replace-strlcpy-with-strscpy-for-6.8.patch new file mode 100644 index 00000000..041e43a0 --- /dev/null +++ b/recipes-extended/onl/files/onl/0018-modules-replace-strlcpy-with-strscpy-for-6.8.patch @@ -0,0 +1,474 @@ +From 1b682a5b0f408650a682578676e74d30810ce4dd Mon Sep 17 00:00:00 2001 +From: Jonas Gorski +Date: Sun, 9 Feb 2025 16:35:13 +0100 +Subject: [PATCH 18/20] modules: replace strlcpy() with strscpy() for 6.8 + +Replace all occurencies of strlcpy() with strscpy() since strlcpy() was +removed in Linux 6.8 via the following semantic patch: + + +@@ +expression E1,E2,E3; +@@ +-strlcpy(E1, E2, E3); ++strscpy(E1, E2, E3); + + +For some reason coccinelle insists on adding braces. + +Hand edited the one instance where the return value was used. + +Upstream-Status: Inactive-Upstream [lastcommit: 2024-09-21] +Signed-off-by: Jonas Gorski +--- + .../silverstone-v2/modules/builds/src/max31730.c | 2 +- + .../x86-64/ag5648/modules/builds/dni_emc2305.c | 2 +- + .../x86-64/ag9032v1/modules/builds/dni_emc2305.c | 2 +- + .../ag9032v2a/modules/builds/dni_emc2305.c | 2 +- + .../agc7646slv1b/modules/builds/dni_emc2305.c | 2 +- + .../agc7646v1/modules/builds/dni_emc2305.c | 2 +- + .../agc7648a/modules/builds/agc7648a_emc2305.c | 2 +- + .../x86-64/ak7448/modules/builds/dni_emc2305.c | 2 +- + .../ingrasys/x86-64/modules/builds/eeprom_mb.c | 2 +- + .../x86-64/d10056/modules/builds/src/i2c-gpio.c | 5 +++-- + .../x86-64/d3352/modules/builds/src/i2c-gpio.c | 5 +++-- + .../x86-64/d5052/modules/builds/src/i2c-gpio.c | 5 +++-- + .../x86-64/d5254/modules/builds/src/i2c-gpio.c | 5 +++-- + .../x86-64/d6332/modules/builds/src/i2c-gpio.c | 5 +++-- + .../x86-64/d6356/modules/builds/src/i2c-gpio.c | 5 +++-- + .../x86-64/d6556/modules/builds/src/i2c-gpio.c | 5 +++-- + .../x86-64/d7332/modules/builds/src/i2c-gpio.c | 5 +++-- + .../x86-64/modules/builds/src/inv_eeprom.c | 2 +- + .../aurora-610/modules/builds/src/i2c-gpio.c | 4 +++- + .../aurora-820/modules/builds/src/i2c-gpio.c | 5 +++-- + .../netberg/x86-64/modules/builds/eeprom_mb.c | 2 +- + .../x86-64/modules/builds/hardware_monitor.c | 2 +- + .../modules/builds/src/i40e/i40e_ethtool.c | 8 ++++---- + .../x86-64/modules/builds/src/i40e/i40e_main.c | 16 ++++++++-------- + .../x86-64/modules/builds/src/i40e/i40e_ptp.c | 2 +- + .../modules/builds/src/i40e/i40e_virtchnl_pf.c | 2 +- + .../builds/src/x86-64-ufispace-eeprom-mb.c | 2 +- + 27 files changed, 57 insertions(+), 46 deletions(-) + +diff --git a/packages/platforms/celestica/x86-64/silverstone-v2/modules/builds/src/max31730.c b/packages/platforms/celestica/x86-64/silverstone-v2/modules/builds/src/max31730.c +index 586e4555e4a2..957790bfe794 100644 +--- a/packages/platforms/celestica/x86-64/silverstone-v2/modules/builds/src/max31730.c ++++ b/packages/platforms/celestica/x86-64/silverstone-v2/modules/builds/src/max31730.c +@@ -404,7 +404,7 @@ static int max31730_detect(struct i2c_client *client, + return -ENODEV; + } + +- strlcpy(info->type, "max31730", I2C_NAME_SIZE); ++ strscpy(info->type, "max31730", I2C_NAME_SIZE); + + return 0; + } +diff --git a/packages/platforms/delta/x86-64/ag5648/modules/builds/dni_emc2305.c b/packages/platforms/delta/x86-64/ag5648/modules/builds/dni_emc2305.c +index 7dbb73d2d62c..e7565ec96c5c 100755 +--- a/packages/platforms/delta/x86-64/ag5648/modules/builds/dni_emc2305.c ++++ b/packages/platforms/delta/x86-64/ag5648/modules/builds/dni_emc2305.c +@@ -331,7 +331,7 @@ static int emc2305_detect(struct i2c_client *client, + return -ENODEV; + } + +- strlcpy(info->type, "emc2305", I2C_NAME_SIZE); ++ strscpy(info->type, "emc2305", I2C_NAME_SIZE); + + return 0; + } +diff --git a/packages/platforms/delta/x86-64/ag9032v1/modules/builds/dni_emc2305.c b/packages/platforms/delta/x86-64/ag9032v1/modules/builds/dni_emc2305.c +index 544d67306e26..513ad3b34e19 100755 +--- a/packages/platforms/delta/x86-64/ag9032v1/modules/builds/dni_emc2305.c ++++ b/packages/platforms/delta/x86-64/ag9032v1/modules/builds/dni_emc2305.c +@@ -336,7 +336,7 @@ static int emc2305_detect(struct i2c_client *client, + return -ENODEV; + } + +- strlcpy(info->type, "emc2305", I2C_NAME_SIZE); ++ strscpy(info->type, "emc2305", I2C_NAME_SIZE); + + return 0; + } +diff --git a/packages/platforms/delta/x86-64/ag9032v2a/modules/builds/dni_emc2305.c b/packages/platforms/delta/x86-64/ag9032v2a/modules/builds/dni_emc2305.c +index 35a2ebb49642..53b73065ae13 100644 +--- a/packages/platforms/delta/x86-64/ag9032v2a/modules/builds/dni_emc2305.c ++++ b/packages/platforms/delta/x86-64/ag9032v2a/modules/builds/dni_emc2305.c +@@ -322,7 +322,7 @@ static int emc2305_detect(struct i2c_client *client, + return -ENODEV; + } + +- strlcpy(info->type, "emc2305", I2C_NAME_SIZE); ++ strscpy(info->type, "emc2305", I2C_NAME_SIZE); + + return 0; + } +diff --git a/packages/platforms/delta/x86-64/agc7646slv1b/modules/builds/dni_emc2305.c b/packages/platforms/delta/x86-64/agc7646slv1b/modules/builds/dni_emc2305.c +index 35a2ebb49642..53b73065ae13 100644 +--- a/packages/platforms/delta/x86-64/agc7646slv1b/modules/builds/dni_emc2305.c ++++ b/packages/platforms/delta/x86-64/agc7646slv1b/modules/builds/dni_emc2305.c +@@ -322,7 +322,7 @@ static int emc2305_detect(struct i2c_client *client, + return -ENODEV; + } + +- strlcpy(info->type, "emc2305", I2C_NAME_SIZE); ++ strscpy(info->type, "emc2305", I2C_NAME_SIZE); + + return 0; + } +diff --git a/packages/platforms/delta/x86-64/agc7646v1/modules/builds/dni_emc2305.c b/packages/platforms/delta/x86-64/agc7646v1/modules/builds/dni_emc2305.c +index 35a2ebb49642..53b73065ae13 100644 +--- a/packages/platforms/delta/x86-64/agc7646v1/modules/builds/dni_emc2305.c ++++ b/packages/platforms/delta/x86-64/agc7646v1/modules/builds/dni_emc2305.c +@@ -322,7 +322,7 @@ static int emc2305_detect(struct i2c_client *client, + return -ENODEV; + } + +- strlcpy(info->type, "emc2305", I2C_NAME_SIZE); ++ strscpy(info->type, "emc2305", I2C_NAME_SIZE); + + return 0; + } +diff --git a/packages/platforms/delta/x86-64/agc7648a/modules/builds/agc7648a_emc2305.c b/packages/platforms/delta/x86-64/agc7648a/modules/builds/agc7648a_emc2305.c +index 631a9a8c4a3e..9738333387f6 100755 +--- a/packages/platforms/delta/x86-64/agc7648a/modules/builds/agc7648a_emc2305.c ++++ b/packages/platforms/delta/x86-64/agc7648a/modules/builds/agc7648a_emc2305.c +@@ -266,7 +266,7 @@ static int emc2305_detect(struct i2c_client *client, + return -ENODEV; + } + +- strlcpy(info->type, "emc2305", I2C_NAME_SIZE); ++ strscpy(info->type, "emc2305", I2C_NAME_SIZE); + + return 0; + } +diff --git a/packages/platforms/delta/x86-64/ak7448/modules/builds/dni_emc2305.c b/packages/platforms/delta/x86-64/ak7448/modules/builds/dni_emc2305.c +index 24fa3b5df095..944ee4ce97bb 100755 +--- a/packages/platforms/delta/x86-64/ak7448/modules/builds/dni_emc2305.c ++++ b/packages/platforms/delta/x86-64/ak7448/modules/builds/dni_emc2305.c +@@ -313,7 +313,7 @@ static int emc2305_detect(struct i2c_client *client, + return -ENODEV; + } + +- strlcpy(info->type, "emc2305", I2C_NAME_SIZE); ++ strscpy(info->type, "emc2305", I2C_NAME_SIZE); + + return 0; + } +diff --git a/packages/platforms/ingrasys/x86-64/modules/builds/eeprom_mb.c b/packages/platforms/ingrasys/x86-64/modules/builds/eeprom_mb.c +index ca7fed5e04db..ad1096066a74 100755 +--- a/packages/platforms/ingrasys/x86-64/modules/builds/eeprom_mb.c ++++ b/packages/platforms/ingrasys/x86-64/modules/builds/eeprom_mb.c +@@ -201,7 +201,7 @@ static int mb_eeprom_detect(struct i2c_client *client, struct i2c_board_info *in + return -ENODEV; + } + +- strlcpy(info->type, "eeprom", I2C_NAME_SIZE); ++ strscpy(info->type, "eeprom", I2C_NAME_SIZE); + + return 0; + } +diff --git a/packages/platforms/inventec/x86-64/d10056/modules/builds/src/i2c-gpio.c b/packages/platforms/inventec/x86-64/d10056/modules/builds/src/i2c-gpio.c +index 34cfc0ebdcb9..be3848bb156c 100644 +--- a/packages/platforms/inventec/x86-64/d10056/modules/builds/src/i2c-gpio.c ++++ b/packages/platforms/inventec/x86-64/d10056/modules/builds/src/i2c-gpio.c +@@ -210,8 +210,9 @@ static int i2c_gpio_probe(struct platform_device *pdev) + bit_data->data = pdata; + + adap->owner = THIS_MODULE; +- if (pdev->dev.of_node) +- strlcpy(adap->name, dev_name(&pdev->dev), sizeof(adap->name)); ++ if (pdev->dev.of_node) { ++ strscpy(adap->name, dev_name(&pdev->dev), sizeof(adap->name)); ++ } + else + snprintf(adap->name, sizeof(adap->name), "i2c-gpio%d", pdev->id); + +diff --git a/packages/platforms/inventec/x86-64/d3352/modules/builds/src/i2c-gpio.c b/packages/platforms/inventec/x86-64/d3352/modules/builds/src/i2c-gpio.c +index 71a45b210a24..4a2ee87fd9fa 100644 +--- a/packages/platforms/inventec/x86-64/d3352/modules/builds/src/i2c-gpio.c ++++ b/packages/platforms/inventec/x86-64/d3352/modules/builds/src/i2c-gpio.c +@@ -210,8 +210,9 @@ static int i2c_gpio_probe(struct platform_device *pdev) + bit_data->data = pdata; + + adap->owner = THIS_MODULE; +- if (pdev->dev.of_node) +- strlcpy(adap->name, dev_name(&pdev->dev), sizeof(adap->name)); ++ if (pdev->dev.of_node) { ++ strscpy(adap->name, dev_name(&pdev->dev), sizeof(adap->name)); ++ } + else + snprintf(adap->name, sizeof(adap->name), "i2c-gpio%d", pdev->id); + +diff --git a/packages/platforms/inventec/x86-64/d5052/modules/builds/src/i2c-gpio.c b/packages/platforms/inventec/x86-64/d5052/modules/builds/src/i2c-gpio.c +index 71a45b210a24..4a2ee87fd9fa 100644 +--- a/packages/platforms/inventec/x86-64/d5052/modules/builds/src/i2c-gpio.c ++++ b/packages/platforms/inventec/x86-64/d5052/modules/builds/src/i2c-gpio.c +@@ -210,8 +210,9 @@ static int i2c_gpio_probe(struct platform_device *pdev) + bit_data->data = pdata; + + adap->owner = THIS_MODULE; +- if (pdev->dev.of_node) +- strlcpy(adap->name, dev_name(&pdev->dev), sizeof(adap->name)); ++ if (pdev->dev.of_node) { ++ strscpy(adap->name, dev_name(&pdev->dev), sizeof(adap->name)); ++ } + else + snprintf(adap->name, sizeof(adap->name), "i2c-gpio%d", pdev->id); + +diff --git a/packages/platforms/inventec/x86-64/d5254/modules/builds/src/i2c-gpio.c b/packages/platforms/inventec/x86-64/d5254/modules/builds/src/i2c-gpio.c +index 34cfc0ebdcb9..be3848bb156c 100644 +--- a/packages/platforms/inventec/x86-64/d5254/modules/builds/src/i2c-gpio.c ++++ b/packages/platforms/inventec/x86-64/d5254/modules/builds/src/i2c-gpio.c +@@ -210,8 +210,9 @@ static int i2c_gpio_probe(struct platform_device *pdev) + bit_data->data = pdata; + + adap->owner = THIS_MODULE; +- if (pdev->dev.of_node) +- strlcpy(adap->name, dev_name(&pdev->dev), sizeof(adap->name)); ++ if (pdev->dev.of_node) { ++ strscpy(adap->name, dev_name(&pdev->dev), sizeof(adap->name)); ++ } + else + snprintf(adap->name, sizeof(adap->name), "i2c-gpio%d", pdev->id); + +diff --git a/packages/platforms/inventec/x86-64/d6332/modules/builds/src/i2c-gpio.c b/packages/platforms/inventec/x86-64/d6332/modules/builds/src/i2c-gpio.c +index 34cfc0ebdcb9..be3848bb156c 100644 +--- a/packages/platforms/inventec/x86-64/d6332/modules/builds/src/i2c-gpio.c ++++ b/packages/platforms/inventec/x86-64/d6332/modules/builds/src/i2c-gpio.c +@@ -210,8 +210,9 @@ static int i2c_gpio_probe(struct platform_device *pdev) + bit_data->data = pdata; + + adap->owner = THIS_MODULE; +- if (pdev->dev.of_node) +- strlcpy(adap->name, dev_name(&pdev->dev), sizeof(adap->name)); ++ if (pdev->dev.of_node) { ++ strscpy(adap->name, dev_name(&pdev->dev), sizeof(adap->name)); ++ } + else + snprintf(adap->name, sizeof(adap->name), "i2c-gpio%d", pdev->id); + +diff --git a/packages/platforms/inventec/x86-64/d6356/modules/builds/src/i2c-gpio.c b/packages/platforms/inventec/x86-64/d6356/modules/builds/src/i2c-gpio.c +index 71a45b210a24..4a2ee87fd9fa 100644 +--- a/packages/platforms/inventec/x86-64/d6356/modules/builds/src/i2c-gpio.c ++++ b/packages/platforms/inventec/x86-64/d6356/modules/builds/src/i2c-gpio.c +@@ -210,8 +210,9 @@ static int i2c_gpio_probe(struct platform_device *pdev) + bit_data->data = pdata; + + adap->owner = THIS_MODULE; +- if (pdev->dev.of_node) +- strlcpy(adap->name, dev_name(&pdev->dev), sizeof(adap->name)); ++ if (pdev->dev.of_node) { ++ strscpy(adap->name, dev_name(&pdev->dev), sizeof(adap->name)); ++ } + else + snprintf(adap->name, sizeof(adap->name), "i2c-gpio%d", pdev->id); + +diff --git a/packages/platforms/inventec/x86-64/d6556/modules/builds/src/i2c-gpio.c b/packages/platforms/inventec/x86-64/d6556/modules/builds/src/i2c-gpio.c +index 71a45b210a24..4a2ee87fd9fa 100644 +--- a/packages/platforms/inventec/x86-64/d6556/modules/builds/src/i2c-gpio.c ++++ b/packages/platforms/inventec/x86-64/d6556/modules/builds/src/i2c-gpio.c +@@ -210,8 +210,9 @@ static int i2c_gpio_probe(struct platform_device *pdev) + bit_data->data = pdata; + + adap->owner = THIS_MODULE; +- if (pdev->dev.of_node) +- strlcpy(adap->name, dev_name(&pdev->dev), sizeof(adap->name)); ++ if (pdev->dev.of_node) { ++ strscpy(adap->name, dev_name(&pdev->dev), sizeof(adap->name)); ++ } + else + snprintf(adap->name, sizeof(adap->name), "i2c-gpio%d", pdev->id); + +diff --git a/packages/platforms/inventec/x86-64/d7332/modules/builds/src/i2c-gpio.c b/packages/platforms/inventec/x86-64/d7332/modules/builds/src/i2c-gpio.c +index 34cfc0ebdcb9..be3848bb156c 100644 +--- a/packages/platforms/inventec/x86-64/d7332/modules/builds/src/i2c-gpio.c ++++ b/packages/platforms/inventec/x86-64/d7332/modules/builds/src/i2c-gpio.c +@@ -210,8 +210,9 @@ static int i2c_gpio_probe(struct platform_device *pdev) + bit_data->data = pdata; + + adap->owner = THIS_MODULE; +- if (pdev->dev.of_node) +- strlcpy(adap->name, dev_name(&pdev->dev), sizeof(adap->name)); ++ if (pdev->dev.of_node) { ++ strscpy(adap->name, dev_name(&pdev->dev), sizeof(adap->name)); ++ } + else + snprintf(adap->name, sizeof(adap->name), "i2c-gpio%d", pdev->id); + +diff --git a/packages/platforms/inventec/x86-64/modules/builds/src/inv_eeprom.c b/packages/platforms/inventec/x86-64/modules/builds/src/inv_eeprom.c +index f44792a9ae72..639074402444 100644 +--- a/packages/platforms/inventec/x86-64/modules/builds/src/inv_eeprom.c ++++ b/packages/platforms/inventec/x86-64/modules/builds/src/inv_eeprom.c +@@ -126,7 +126,7 @@ static int inv_eeprom_detect(struct i2c_client *client, struct i2c_board_info *i + return -ENODEV; + } + +- strlcpy(info->type, "eeprom", I2C_NAME_SIZE); ++ strscpy(info->type, "eeprom", I2C_NAME_SIZE); + + return 0; + } +diff --git a/packages/platforms/netberg/x86-64/aurora-610/modules/builds/src/i2c-gpio.c b/packages/platforms/netberg/x86-64/aurora-610/modules/builds/src/i2c-gpio.c +index 203b632269a6..b33b8911089e 100644 +--- a/packages/platforms/netberg/x86-64/aurora-610/modules/builds/src/i2c-gpio.c ++++ b/packages/platforms/netberg/x86-64/aurora-610/modules/builds/src/i2c-gpio.c +@@ -211,7 +211,9 @@ static int i2c_gpio_probe(struct platform_device *pdev) + + adap->owner = THIS_MODULE; + if (pdev->dev.of_node) +- strlcpy(adap->name, dev_name(&pdev->dev), sizeof(adap->name)); ++ { ++ strscpy(adap->name, dev_name(&pdev->dev), sizeof(adap->name)); ++ } + else + snprintf(adap->name, sizeof(adap->name), "i2c-gpio%d", pdev->id); + +diff --git a/packages/platforms/netberg/x86-64/aurora-820/modules/builds/src/i2c-gpio.c b/packages/platforms/netberg/x86-64/aurora-820/modules/builds/src/i2c-gpio.c +index 34cfc0ebdcb9..be3848bb156c 100644 +--- a/packages/platforms/netberg/x86-64/aurora-820/modules/builds/src/i2c-gpio.c ++++ b/packages/platforms/netberg/x86-64/aurora-820/modules/builds/src/i2c-gpio.c +@@ -210,8 +210,9 @@ static int i2c_gpio_probe(struct platform_device *pdev) + bit_data->data = pdata; + + adap->owner = THIS_MODULE; +- if (pdev->dev.of_node) +- strlcpy(adap->name, dev_name(&pdev->dev), sizeof(adap->name)); ++ if (pdev->dev.of_node) { ++ strscpy(adap->name, dev_name(&pdev->dev), sizeof(adap->name)); ++ } + else + snprintf(adap->name, sizeof(adap->name), "i2c-gpio%d", pdev->id); + +diff --git a/packages/platforms/netberg/x86-64/modules/builds/eeprom_mb.c b/packages/platforms/netberg/x86-64/modules/builds/eeprom_mb.c +index 66000a964bb2..1415231f10bb 100755 +--- a/packages/platforms/netberg/x86-64/modules/builds/eeprom_mb.c ++++ b/packages/platforms/netberg/x86-64/modules/builds/eeprom_mb.c +@@ -201,7 +201,7 @@ static int mb_eeprom_detect(struct i2c_client *client, struct i2c_board_info *in + return -ENODEV; + } + +- strlcpy(info->type, "eeprom", I2C_NAME_SIZE); ++ strscpy(info->type, "eeprom", I2C_NAME_SIZE); + + return 0; + } +diff --git a/packages/platforms/netberg/x86-64/modules/builds/hardware_monitor.c b/packages/platforms/netberg/x86-64/modules/builds/hardware_monitor.c +index 0f18f1ef54f6..6adcdf5e2187 100755 +--- a/packages/platforms/netberg/x86-64/modules/builds/hardware_monitor.c ++++ b/packages/platforms/netberg/x86-64/modules/builds/hardware_monitor.c +@@ -8448,7 +8448,7 @@ static int w83795adg_hardware_monitor_detect(struct i2c_client *client, + } + } + +- strlcpy(info->type, "HURACAN", I2C_NAME_SIZE); ++ strscpy(info->type, "HURACAN", I2C_NAME_SIZE); + return 0; + } + +diff --git a/packages/platforms/ufispace/x86-64/modules/builds/src/i40e/i40e_ethtool.c b/packages/platforms/ufispace/x86-64/modules/builds/src/i40e/i40e_ethtool.c +index 605f3227c144..83778308457c 100644 +--- a/packages/platforms/ufispace/x86-64/modules/builds/src/i40e/i40e_ethtool.c ++++ b/packages/platforms/ufispace/x86-64/modules/builds/src/i40e/i40e_ethtool.c +@@ -2204,12 +2204,12 @@ static void i40e_get_drvinfo(struct net_device *netdev, + struct i40e_vsi *vsi = np->vsi; + struct i40e_pf *pf = vsi->back; + +- strlcpy(drvinfo->driver, i40e_driver_name, sizeof(drvinfo->driver)); +- strlcpy(drvinfo->version, i40e_driver_version_str, ++ strscpy(drvinfo->driver, i40e_driver_name, sizeof(drvinfo->driver)); ++ strscpy(drvinfo->version, i40e_driver_version_str, + sizeof(drvinfo->version)); +- strlcpy(drvinfo->fw_version, i40e_nvm_version_str(&pf->hw), ++ strscpy(drvinfo->fw_version, i40e_nvm_version_str(&pf->hw), + sizeof(drvinfo->fw_version)); +- strlcpy(drvinfo->bus_info, pci_name(pf->pdev), ++ strscpy(drvinfo->bus_info, pci_name(pf->pdev), + sizeof(drvinfo->bus_info)); + #ifdef HAVE_ETHTOOL_GET_SSET_COUNT + drvinfo->n_priv_flags = I40E_PRIV_FLAGS_STR_LEN; +diff --git a/packages/platforms/ufispace/x86-64/modules/builds/src/i40e/i40e_main.c b/packages/platforms/ufispace/x86-64/modules/builds/src/i40e/i40e_main.c +index 62aeafe1cda0..ceaf87c0d7e1 100644 +--- a/packages/platforms/ufispace/x86-64/modules/builds/src/i40e/i40e_main.c ++++ b/packages/platforms/ufispace/x86-64/modules/builds/src/i40e/i40e_main.c +@@ -10565,7 +10565,7 @@ static void i40e_send_version(struct i40e_pf *pf) + dv.minor_version = DRV_VERSION_MINOR; + dv.build_version = DRV_VERSION_BUILD; + dv.subbuild_version = DRV_VERSION_SUBBUILD; +- strlcpy(dv.driver_string, DRV_VERSION, sizeof(dv.driver_string)); ++ strscpy(dv.driver_string, DRV_VERSION, sizeof(dv.driver_string)); + i40e_aq_send_driver_version(&pf->hw, &dv, NULL); + } + +@@ -16645,23 +16645,23 @@ static int i40e_probe(struct pci_dev *pdev, const struct pci_device_id *ent) + + switch (hw->bus.speed) { + case i40e_bus_speed_8000: +- strlcpy(speed, "8.0", PCI_SPEED_SIZE); break; ++ strscpy(speed, "8.0", PCI_SPEED_SIZE); break; + case i40e_bus_speed_5000: +- strlcpy(speed, "5.0", PCI_SPEED_SIZE); break; ++ strscpy(speed, "5.0", PCI_SPEED_SIZE); break; + case i40e_bus_speed_2500: +- strlcpy(speed, "2.5", PCI_SPEED_SIZE); break; ++ strscpy(speed, "2.5", PCI_SPEED_SIZE); break; + default: + break; + } + switch (hw->bus.width) { + case i40e_bus_width_pcie_x8: +- strlcpy(width, "8", PCI_WIDTH_SIZE); break; ++ strscpy(width, "8", PCI_WIDTH_SIZE); break; + case i40e_bus_width_pcie_x4: +- strlcpy(width, "4", PCI_WIDTH_SIZE); break; ++ strscpy(width, "4", PCI_WIDTH_SIZE); break; + case i40e_bus_width_pcie_x2: +- strlcpy(width, "2", PCI_WIDTH_SIZE); break; ++ strscpy(width, "2", PCI_WIDTH_SIZE); break; + case i40e_bus_width_pcie_x1: +- strlcpy(width, "1", PCI_WIDTH_SIZE); break; ++ strscpy(width, "1", PCI_WIDTH_SIZE); break; + default: + break; + } +diff --git a/packages/platforms/ufispace/x86-64/modules/builds/src/i40e/i40e_ptp.c b/packages/platforms/ufispace/x86-64/modules/builds/src/i40e/i40e_ptp.c +index 0e3ed747085a..5fad566ed971 100644 +--- a/packages/platforms/ufispace/x86-64/modules/builds/src/i40e/i40e_ptp.c ++++ b/packages/platforms/ufispace/x86-64/modules/builds/src/i40e/i40e_ptp.c +@@ -1452,7 +1452,7 @@ static long i40e_ptp_create_clock(struct i40e_pf *pf) + if (!IS_ERR_OR_NULL(pf->ptp_clock)) + return 0; + +- strlcpy(pf->ptp_caps.name, i40e_driver_name, ++ strscpy(pf->ptp_caps.name, i40e_driver_name, + sizeof(pf->ptp_caps.name) - 1); + pf->ptp_caps.owner = THIS_MODULE; + pf->ptp_caps.max_adj = 999999999; +diff --git a/packages/platforms/ufispace/x86-64/modules/builds/src/i40e/i40e_virtchnl_pf.c b/packages/platforms/ufispace/x86-64/modules/builds/src/i40e/i40e_virtchnl_pf.c +index b07c9a06199b..f80bbd61193e 100644 +--- a/packages/platforms/ufispace/x86-64/modules/builds/src/i40e/i40e_virtchnl_pf.c ++++ b/packages/platforms/ufispace/x86-64/modules/builds/src/i40e/i40e_virtchnl_pf.c +@@ -4553,7 +4553,7 @@ static int i40e_vc_add_cloud_filter(struct i40e_vf *vf, u8 *msg) + if (pf->fdir_pf_active_filters || + (!hlist_empty(&pf->fdir_filter_list))) { + aq_ret = I40E_ERR_PARAM; +- err_msglen = strlcpy(err_msg_buf, ++ err_msglen = strscpy(err_msg_buf, + "Flow Director Sideband filters exists, turn ntuple off to configure cloud filters", + sizeof(err_msg_buf)); + err_msg = err_msg_buf; +diff --git a/packages/platforms/ufispace/x86-64/modules/builds/src/x86-64-ufispace-eeprom-mb.c b/packages/platforms/ufispace/x86-64/modules/builds/src/x86-64-ufispace-eeprom-mb.c +index b343f91bc746..2c0e54948bde 100755 +--- a/packages/platforms/ufispace/x86-64/modules/builds/src/x86-64-ufispace-eeprom-mb.c ++++ b/packages/platforms/ufispace/x86-64/modules/builds/src/x86-64-ufispace-eeprom-mb.c +@@ -201,7 +201,7 @@ static int mb_eeprom_detect(struct i2c_client *client, struct i2c_board_info *in + return -ENODEV; + } + +- strlcpy(info->type, "eeprom", I2C_NAME_SIZE); ++ strscpy(info->type, "eeprom", I2C_NAME_SIZE); + + return 0; + } +-- +2.51.0 + diff --git a/recipes-extended/onl/files/onl/0019-modules-update-i2c_mux_add_adapter-usage-for-6.10.patch b/recipes-extended/onl/files/onl/0019-modules-update-i2c_mux_add_adapter-usage-for-6.10.patch new file mode 100644 index 00000000..58e07a8c --- /dev/null +++ b/recipes-extended/onl/files/onl/0019-modules-update-i2c_mux_add_adapter-usage-for-6.10.patch @@ -0,0 +1,436 @@ +From 851111373c635111686703a5355760287425ca8e Mon Sep 17 00:00:00 2001 +From: Jonas Gorski +Date: Tue, 18 Feb 2025 21:32:39 +0100 +Subject: [PATCH 19/20] modules: update i2c_mux_add_adapter() usage for 6.10 + +Update i2c_mux_add_adapter() usage for 6.10 which lost its last +paramter. + +// +@r@ +expression R,E1,E2,E3,E4; +position p; +@@ ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,10,0) ++R = i2c_mux_add_adapter(E1, E2, E3); ++#else + R = i2c_mux_add_adapter(E1, E2, E3, E4); ++#endif +@i depends on r@ +@@ + #include +@depends on r && !i@ +@@ + #include <...> ++#include +// + +applied with + + spatch --sp-file 6.10-i2c_mux_add_adapter.cocci --in-place --dir packages/ + +Result taken as is, without any code style fixes. + +Upstream-Status: Inactive-Upstream [lastcommit: 2024-09-21] +Signed-off-by: Jonas Gorski +--- + .../modules/builds/x86-64-accton-as5712-54x-cpld.c | 4 ++++ + .../modules/builds/x86-64-accton-as5812-54x-cpld.c | 4 ++++ + .../modules/builds/x86-64-accton-as5915-18x-fpga.c | 4 ++++ + .../modules/builds/x86-64-accton-as6712-32x-cpld.c | 4 ++++ + .../modules/builds/x86-64-accton-as6812-32x-cpld.c | 4 ++++ + .../modules/builds/x86-64-accton-as7315-27xb-cpld.c | 4 ++++ + .../modules/builds/x86-64-accton-as7315-30x-fpga.c | 4 ++++ + .../src/modules/x86-64-accton-as9817-64-mux.c | 4 ++++ + .../src/modules/x86-64-accton-as9817-64-mux.c | 4 ++++ + .../modules/builds/snj60d0-320f_i2c_mux_cpld.c | 4 ++++ + .../builds/x86-64-delta-ag8032-i2c-mux-cpld.c | 4 ++++ + .../modules/builds/delta_ag9032v2a_platform.c | 8 ++++++++ + .../modules/builds/src/delta_ag9064_platform.c | 4 ++++ + .../modules/builds/delta_agc7646slv1b_platform.c | 12 ++++++++++++ + .../modules/builds/delta_agc7646v1_platform.c | 12 ++++++++++++ + .../modules/builds/delta_agc7648sv1_platform.c | 8 ++++++++ + .../d6356/modules/builds/src/inv-i2c-mux-pca9641.c | 4 ++++ + .../d7332/modules/builds/src/inv-i2c-mux-pca9641.c | 4 ++++ + .../modules/builds/src/net-i2c-mux-pca9641.c | 4 ++++ + 19 files changed, 100 insertions(+) + +diff --git a/packages/platforms/accton/x86-64/as5712-54x/modules/builds/x86-64-accton-as5712-54x-cpld.c b/packages/platforms/accton/x86-64/as5712-54x/modules/builds/x86-64-accton-as5712-54x-cpld.c +index 2346a0b3457f..1909ca2459e6 100644 +--- a/packages/platforms/accton/x86-64/as5712-54x/modules/builds/x86-64-accton-as5712-54x-cpld.c ++++ b/packages/platforms/accton/x86-64/as5712-54x/modules/builds/x86-64-accton-as5712-54x-cpld.c +@@ -1072,7 +1072,11 @@ static int as5712_54x_cpld_mux_probe(struct i2c_client *client, + force = 0; /* dynamic adap number */ + class = 0; /* no class by default */ + ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,10,0) ++ ret = i2c_mux_add_adapter(muxc, force, num); ++#else + ret = i2c_mux_add_adapter(muxc, force, num, class); ++#endif + + if (ret) { + dev_err(&client->dev, +diff --git a/packages/platforms/accton/x86-64/as5812-54x/modules/builds/x86-64-accton-as5812-54x-cpld.c b/packages/platforms/accton/x86-64/as5812-54x/modules/builds/x86-64-accton-as5812-54x-cpld.c +index bbe02a6be72e..ef2309d23f23 100644 +--- a/packages/platforms/accton/x86-64/as5812-54x/modules/builds/x86-64-accton-as5812-54x-cpld.c ++++ b/packages/platforms/accton/x86-64/as5812-54x/modules/builds/x86-64-accton-as5812-54x-cpld.c +@@ -1073,7 +1073,11 @@ static int as5812_54x_cpld_mux_probe(struct i2c_client *client, + force = 0; /* dynamic adap number */ + class = 0; /* no class by default */ + ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,10,0) ++ ret = i2c_mux_add_adapter(muxc, force, num); ++#else + ret = i2c_mux_add_adapter(muxc, force, num, class); ++#endif + + if (ret) { + dev_err(&client->dev, +diff --git a/packages/platforms/accton/x86-64/as5915-18x/modules/builds/x86-64-accton-as5915-18x-fpga.c b/packages/platforms/accton/x86-64/as5915-18x/modules/builds/x86-64-accton-as5915-18x-fpga.c +index 3a1bcc499822..642a694526a9 100644 +--- a/packages/platforms/accton/x86-64/as5915-18x/modules/builds/x86-64-accton-as5915-18x-fpga.c ++++ b/packages/platforms/accton/x86-64/as5915-18x/modules/builds/x86-64-accton-as5915-18x-fpga.c +@@ -300,7 +300,11 @@ static int as5915_18x_fpga_mux_probe(struct i2c_client *client, + force = 0; /* dynamic adap number */ + class = 0; /* no class by default */ + ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,10,0) ++ ret = i2c_mux_add_adapter(muxc, force, num); ++#else + ret = i2c_mux_add_adapter(muxc, force, num, class); ++#endif + + if (ret) { + dev_err(&client->dev, +diff --git a/packages/platforms/accton/x86-64/as6712-32x/modules/builds/x86-64-accton-as6712-32x-cpld.c b/packages/platforms/accton/x86-64/as6712-32x/modules/builds/x86-64-accton-as6712-32x-cpld.c +index cfabe9668ad0..fe22ed3c39b4 100644 +--- a/packages/platforms/accton/x86-64/as6712-32x/modules/builds/x86-64-accton-as6712-32x-cpld.c ++++ b/packages/platforms/accton/x86-64/as6712-32x/modules/builds/x86-64-accton-as6712-32x-cpld.c +@@ -523,7 +523,11 @@ static int as6712_32x_cpld_mux_probe(struct i2c_client *client, + force = 0; /* dynamic adap number */ + class = 0; /* no class by default */ + ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,10,0) ++ ret = i2c_mux_add_adapter(muxc, force, num); ++#else + ret = i2c_mux_add_adapter(muxc, force, num, class); ++#endif + + if (ret) { + dev_err(&client->dev, +diff --git a/packages/platforms/accton/x86-64/as6812-32x/modules/builds/x86-64-accton-as6812-32x-cpld.c b/packages/platforms/accton/x86-64/as6812-32x/modules/builds/x86-64-accton-as6812-32x-cpld.c +index 8a228f8a88cd..b8dd210881a1 100644 +--- a/packages/platforms/accton/x86-64/as6812-32x/modules/builds/x86-64-accton-as6812-32x-cpld.c ++++ b/packages/platforms/accton/x86-64/as6812-32x/modules/builds/x86-64-accton-as6812-32x-cpld.c +@@ -524,7 +524,11 @@ static int as6812_32x_cpld_mux_probe(struct i2c_client *client, + force = 0; /* dynamic adap number */ + class = 0; /* no class by default */ + ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,10,0) ++ ret = i2c_mux_add_adapter(muxc, force, num); ++#else + ret = i2c_mux_add_adapter(muxc, force, num, class); ++#endif + + if (ret) { + dev_err(&client->dev, +diff --git a/packages/platforms/accton/x86-64/as7315-27xb/modules/builds/x86-64-accton-as7315-27xb-cpld.c b/packages/platforms/accton/x86-64/as7315-27xb/modules/builds/x86-64-accton-as7315-27xb-cpld.c +index 66178761752b..9d909a49b5fa 100755 +--- a/packages/platforms/accton/x86-64/as7315-27xb/modules/builds/x86-64-accton-as7315-27xb-cpld.c ++++ b/packages/platforms/accton/x86-64/as7315-27xb/modules/builds/x86-64-accton-as7315-27xb-cpld.c +@@ -875,7 +875,11 @@ static int _add_mux_channels(struct i2c_client *client, + for (num = 0; num < chips[model].nchans; num++) { + force = 0; /* dynamic adap number */ + class = 0; /* no class by default */ ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,10,0) ++ status = i2c_mux_add_adapter(muxc, force, num); ++#else + status = i2c_mux_add_adapter(muxc, force, num, class); ++#endif + if (status) + return status ; + } +diff --git a/packages/platforms/accton/x86-64/as7315-30x/modules/builds/x86-64-accton-as7315-30x-fpga.c b/packages/platforms/accton/x86-64/as7315-30x/modules/builds/x86-64-accton-as7315-30x-fpga.c +index 36ccc25fa173..906cabcc5657 100644 +--- a/packages/platforms/accton/x86-64/as7315-30x/modules/builds/x86-64-accton-as7315-30x-fpga.c ++++ b/packages/platforms/accton/x86-64/as7315-30x/modules/builds/x86-64-accton-as7315-30x-fpga.c +@@ -483,7 +483,11 @@ static int as7315_30x_fpga_mux_probe(struct i2c_client *client, + force = 0; /* dynamic adap number */ + class = 0; /* no class by default */ + ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,10,0) ++ ret = i2c_mux_add_adapter(muxc, force, num); ++#else + ret = i2c_mux_add_adapter(muxc, force, num, class); ++#endif + + if (ret) { + dev_err(&client->dev, +diff --git a/packages/platforms/accton/x86-64/as9817-64-nb/src/modules/x86-64-accton-as9817-64-mux.c b/packages/platforms/accton/x86-64/as9817-64-nb/src/modules/x86-64-accton-as9817-64-mux.c +index abcebc344620..1ad81f36c62a 100644 +--- a/packages/platforms/accton/x86-64/as9817-64-nb/src/modules/x86-64-accton-as9817-64-mux.c ++++ b/packages/platforms/accton/x86-64/as9817-64-nb/src/modules/x86-64-accton-as9817-64-mux.c +@@ -166,7 +166,11 @@ static int as9817_64_mux_probe(struct i2c_client *client, + + /* Now create an adapter for each channel */ + for (i = 0; i < chips[data->type].nchans; i++) { ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,10,0) ++ ret = i2c_mux_add_adapter(muxc, 0, i); ++#else + ret = i2c_mux_add_adapter(muxc, 0, i, 0); ++#endif + if (ret) + goto exit_mux; + } +diff --git a/packages/platforms/accton/x86-64/as9817-64/src/modules/x86-64-accton-as9817-64-mux.c b/packages/platforms/accton/x86-64/as9817-64/src/modules/x86-64-accton-as9817-64-mux.c +index 674ae9df44b9..20ef76d511d6 100644 +--- a/packages/platforms/accton/x86-64/as9817-64/src/modules/x86-64-accton-as9817-64-mux.c ++++ b/packages/platforms/accton/x86-64/as9817-64/src/modules/x86-64-accton-as9817-64-mux.c +@@ -160,7 +160,11 @@ static int as9817_64_mux_probe(struct i2c_client *client, + + /* Now create an adapter for each channel */ + for (i = 0; i < chips[data->type].nchans; i++) { ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,10,0) ++ ret = i2c_mux_add_adapter(muxc, 0, i); ++#else + ret = i2c_mux_add_adapter(muxc, 0, i, 0); ++#endif + if (ret) + goto exit_mux; + } +diff --git a/packages/platforms/alphanetworks/x86-64/snj60d0-320f/modules/builds/snj60d0-320f_i2c_mux_cpld.c b/packages/platforms/alphanetworks/x86-64/snj60d0-320f/modules/builds/snj60d0-320f_i2c_mux_cpld.c +index 9a3840cb6853..e312dff0eb9d 100644 +--- a/packages/platforms/alphanetworks/x86-64/snj60d0-320f/modules/builds/snj60d0-320f_i2c_mux_cpld.c ++++ b/packages/platforms/alphanetworks/x86-64/snj60d0-320f/modules/builds/snj60d0-320f_i2c_mux_cpld.c +@@ -1094,7 +1094,11 @@ static int snj60d0_320f_cpld_mux_probe(struct i2c_client *client, + force = 0; /* dynamic adap number */ + class = 0; /* no class by default */ + ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,10,0) ++ ret = i2c_mux_add_adapter(muxc, force, num); ++#else + ret = i2c_mux_add_adapter(muxc, force, num, class); ++#endif + + if (ret) { + dev_err(&client->dev, +diff --git a/packages/platforms/delta/x86-64/ag8032/modules/builds/x86-64-delta-ag8032-i2c-mux-cpld.c b/packages/platforms/delta/x86-64/ag8032/modules/builds/x86-64-delta-ag8032-i2c-mux-cpld.c +index a0ad8bd4851f..d553217750f3 100644 +--- a/packages/platforms/delta/x86-64/ag8032/modules/builds/x86-64-delta-ag8032-i2c-mux-cpld.c ++++ b/packages/platforms/delta/x86-64/ag8032/modules/builds/x86-64-delta-ag8032-i2c-mux-cpld.c +@@ -157,7 +157,11 @@ static int i2c_mux_cpld_probe(struct platform_device *pdev) + for (i = 0; i < mux->data.n_values; i++) { + nr = mux->data.base_nr ? (mux->data.base_nr + i) : 0; + ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,10,0) ++ ret = i2c_mux_add_adapter(muxc, nr, mux->data.values[i]); ++#else + ret = i2c_mux_add_adapter (muxc, nr, mux->data.values[i], 0); ++#endif + if (ret) { + dev_err(&pdev->dev, "Failed to add adapter %d\n", i); + goto add_adapter_failed; +diff --git a/packages/platforms/delta/x86-64/ag9032v2a/modules/builds/delta_ag9032v2a_platform.c b/packages/platforms/delta/x86-64/ag9032v2a/modules/builds/delta_ag9032v2a_platform.c +index 0deb0a9f7579..cddd70850edc 100644 +--- a/packages/platforms/delta/x86-64/ag9032v2a/modules/builds/delta_ag9032v2a_platform.c ++++ b/packages/platforms/delta/x86-64/ag9032v2a/modules/builds/delta_ag9032v2a_platform.c +@@ -2018,7 +2018,11 @@ static int __init cpld_mux_probe(struct platform_device *pdev) + { + int nr = pdata->base_nr + i; + unsigned int class = 0; ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,10,0) ++ ret = i2c_mux_add_adapter(muxc, nr, i); ++#else + ret = i2c_mux_add_adapter(muxc, nr, i, class); ++#endif + if (ret) { + dev_err(&pdev->dev, "Failed to add adapter %d\n", i); + goto add_adapter_failed; +@@ -2084,7 +2088,11 @@ static int __init swpld_mux_probe(struct platform_device *pdev) + { + int nr = pdata->base_nr + i; + unsigned int class = 0; ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,10,0) ++ ret = i2c_mux_add_adapter(muxc, nr, i); ++#else + ret = i2c_mux_add_adapter(muxc, nr, i, class); ++#endif + if (ret) { + dev_err(&pdev->dev, "Failed to add adapter %d\n", i); + goto add_adapter_failed; +diff --git a/packages/platforms/delta/x86-64/ag9064/modules/builds/src/delta_ag9064_platform.c b/packages/platforms/delta/x86-64/ag9064/modules/builds/src/delta_ag9064_platform.c +index 5f633cd50c48..42ecc1787bf4 100755 +--- a/packages/platforms/delta/x86-64/ag9064/modules/builds/src/delta_ag9064_platform.c ++++ b/packages/platforms/delta/x86-64/ag9064/modules/builds/src/delta_ag9064_platform.c +@@ -806,7 +806,11 @@ static int __init swpld_mux_probe(struct platform_device *pdev) + { + int nr = pdata->base_nr + i; + unsigned int class = 0; ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,10,0) ++ ret = i2c_mux_add_adapter(muxc, nr, i); ++#else + ret = i2c_mux_add_adapter(muxc, nr, i, class); ++#endif + if (ret) { + dev_err(&pdev->dev, "Failed to add adapter %d\n", i); + goto add_adapter_failed; +diff --git a/packages/platforms/delta/x86-64/agc7646slv1b/modules/builds/delta_agc7646slv1b_platform.c b/packages/platforms/delta/x86-64/agc7646slv1b/modules/builds/delta_agc7646slv1b_platform.c +index 69a8b16271aa..9c95ad9cbaf7 100755 +--- a/packages/platforms/delta/x86-64/agc7646slv1b/modules/builds/delta_agc7646slv1b_platform.c ++++ b/packages/platforms/delta/x86-64/agc7646slv1b/modules/builds/delta_agc7646slv1b_platform.c +@@ -2960,7 +2960,11 @@ static int __init cpld_mux_probe(struct platform_device *pdev) + { + int nr = pdata->base_nr + i; + unsigned int class = 0; ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,10,0) ++ ret = i2c_mux_add_adapter(muxc, nr, i); ++#else + ret = i2c_mux_add_adapter(muxc, nr, i, class); ++#endif + if (ret) { + dev_err(&pdev->dev, "Failed to add adapter %d\n", i); + goto add_adapter_failed; +@@ -3026,7 +3030,11 @@ static int __init swpld1_mux_probe(struct platform_device *pdev) + { + int nr = pdata->base_nr + i; + unsigned int class = 0; ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,10,0) ++ ret = i2c_mux_add_adapter(muxc, nr, i); ++#else + ret = i2c_mux_add_adapter(muxc, nr, i, class); ++#endif + if (ret) { + dev_err(&pdev->dev, "Failed to add adapter %d\n", i); + goto add_adapter_failed; +@@ -3093,7 +3101,11 @@ static int __init swpld3_mux_probe(struct platform_device *pdev) + { + int nr = pdata->base_nr + i; + unsigned int class = 0; ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,10,0) ++ ret = i2c_mux_add_adapter(muxc, nr, i); ++#else + ret = i2c_mux_add_adapter(muxc, nr, i, class); ++#endif + if (ret) { + dev_err(&pdev->dev, "Failed to add adapter %d\n", i); + goto add_adapter_failed; +diff --git a/packages/platforms/delta/x86-64/agc7646v1/modules/builds/delta_agc7646v1_platform.c b/packages/platforms/delta/x86-64/agc7646v1/modules/builds/delta_agc7646v1_platform.c +index ee99dce3509a..8b5688e0af66 100755 +--- a/packages/platforms/delta/x86-64/agc7646v1/modules/builds/delta_agc7646v1_platform.c ++++ b/packages/platforms/delta/x86-64/agc7646v1/modules/builds/delta_agc7646v1_platform.c +@@ -2960,7 +2960,11 @@ static int __init cpld_mux_probe(struct platform_device *pdev) + { + int nr = pdata->base_nr + i; + unsigned int class = 0; ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,10,0) ++ ret = i2c_mux_add_adapter(muxc, nr, i); ++#else + ret = i2c_mux_add_adapter(muxc, nr, i, class); ++#endif + if (ret) { + dev_err(&pdev->dev, "Failed to add adapter %d\n", i); + goto add_adapter_failed; +@@ -3026,7 +3030,11 @@ static int __init swpld1_mux_probe(struct platform_device *pdev) + { + int nr = pdata->base_nr + i; + unsigned int class = 0; ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,10,0) ++ ret = i2c_mux_add_adapter(muxc, nr, i); ++#else + ret = i2c_mux_add_adapter(muxc, nr, i, class); ++#endif + if (ret) { + dev_err(&pdev->dev, "Failed to add adapter %d\n", i); + goto add_adapter_failed; +@@ -3093,7 +3101,11 @@ static int __init swpld3_mux_probe(struct platform_device *pdev) + { + int nr = pdata->base_nr + i; + unsigned int class = 0; ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,10,0) ++ ret = i2c_mux_add_adapter(muxc, nr, i); ++#else + ret = i2c_mux_add_adapter(muxc, nr, i, class); ++#endif + if (ret) { + dev_err(&pdev->dev, "Failed to add adapter %d\n", i); + goto add_adapter_failed; +diff --git a/packages/platforms/delta/x86-64/agc7648sv1/modules/builds/delta_agc7648sv1_platform.c b/packages/platforms/delta/x86-64/agc7648sv1/modules/builds/delta_agc7648sv1_platform.c +index c3d0c5423ed3..3b3dd00484e4 100755 +--- a/packages/platforms/delta/x86-64/agc7648sv1/modules/builds/delta_agc7648sv1_platform.c ++++ b/packages/platforms/delta/x86-64/agc7648sv1/modules/builds/delta_agc7648sv1_platform.c +@@ -1472,7 +1472,11 @@ static int __init cpld_mux_probe(struct platform_device *pdev) + { + int nr = pdata->base_nr + i; + unsigned int class = 0; ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,10,0) ++ ret = i2c_mux_add_adapter(muxc, nr, i); ++#else + ret = i2c_mux_add_adapter(muxc, nr, i, class); ++#endif + if (ret) { + dev_err(&pdev->dev, "Failed to add adapter %d\n", i); + goto add_adapter_failed; +@@ -1538,7 +1542,11 @@ static int __init swpld3_mux_probe(struct platform_device *pdev) + { + int nr = pdata->base_nr + i; + unsigned int class = 0; ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,10,0) ++ ret = i2c_mux_add_adapter(muxc, nr, i); ++#else + ret = i2c_mux_add_adapter(muxc, nr, i, class); ++#endif + if (ret) { + dev_err(&pdev->dev, "Failed to add adapter %d\n", i); + goto add_adapter_failed; +diff --git a/packages/platforms/inventec/x86-64/d6356/modules/builds/src/inv-i2c-mux-pca9641.c b/packages/platforms/inventec/x86-64/d6356/modules/builds/src/inv-i2c-mux-pca9641.c +index 0a86a5d05002..4db7c84fc10e 100644 +--- a/packages/platforms/inventec/x86-64/d6356/modules/builds/src/inv-i2c-mux-pca9641.c ++++ b/packages/platforms/inventec/x86-64/d6356/modules/builds/src/inv-i2c-mux-pca9641.c +@@ -537,7 +537,11 @@ static int pca9641_probe(struct i2c_client *client, + + i2c_set_clientdata(client, muxc); + ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,10,0) ++ ret = i2c_mux_add_adapter(muxc, force, 0); ++#else + ret = i2c_mux_add_adapter(muxc, force, 0, 0); ++#endif + if (ret) { + dev_err(&client->dev, "failed to register master selector\n"); + return ret; +diff --git a/packages/platforms/inventec/x86-64/d7332/modules/builds/src/inv-i2c-mux-pca9641.c b/packages/platforms/inventec/x86-64/d7332/modules/builds/src/inv-i2c-mux-pca9641.c +index 0a86a5d05002..4db7c84fc10e 100644 +--- a/packages/platforms/inventec/x86-64/d7332/modules/builds/src/inv-i2c-mux-pca9641.c ++++ b/packages/platforms/inventec/x86-64/d7332/modules/builds/src/inv-i2c-mux-pca9641.c +@@ -537,7 +537,11 @@ static int pca9641_probe(struct i2c_client *client, + + i2c_set_clientdata(client, muxc); + ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,10,0) ++ ret = i2c_mux_add_adapter(muxc, force, 0); ++#else + ret = i2c_mux_add_adapter(muxc, force, 0, 0); ++#endif + if (ret) { + dev_err(&client->dev, "failed to register master selector\n"); + return ret; +diff --git a/packages/platforms/netberg/x86-64/aurora-820/modules/builds/src/net-i2c-mux-pca9641.c b/packages/platforms/netberg/x86-64/aurora-820/modules/builds/src/net-i2c-mux-pca9641.c +index 0a86a5d05002..4db7c84fc10e 100644 +--- a/packages/platforms/netberg/x86-64/aurora-820/modules/builds/src/net-i2c-mux-pca9641.c ++++ b/packages/platforms/netberg/x86-64/aurora-820/modules/builds/src/net-i2c-mux-pca9641.c +@@ -537,7 +537,11 @@ static int pca9641_probe(struct i2c_client *client, + + i2c_set_clientdata(client, muxc); + ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,10,0) ++ ret = i2c_mux_add_adapter(muxc, force, 0); ++#else + ret = i2c_mux_add_adapter(muxc, force, 0, 0); ++#endif + if (ret) { + dev_err(&client->dev, "failed to register master selector\n"); + return ret; +-- +2.51.0 + diff --git a/recipes-extended/onl/files/onl/0020-modules-update-platform_drivers-with-6.11-compatibil.patch b/recipes-extended/onl/files/onl/0020-modules-update-platform_drivers-with-6.11-compatibil.patch new file mode 100644 index 00000000..d76114a5 --- /dev/null +++ b/recipes-extended/onl/files/onl/0020-modules-update-platform_drivers-with-6.11-compatibil.patch @@ -0,0 +1,6147 @@ +From a9ebe252e754392a44949263b8f9327fe2d24c83 Mon Sep 17 00:00:00 2001 +From: Jonas Gorski +Date: Sun, 9 Feb 2025 10:26:59 +0100 +Subject: [PATCH 20/20] modules: update platform_drivers with 6.11 + compatibility + +platform_driver::remove() changed its return type to void, so we need to +provide different versions based on the kernel version. + +Add variants using the following semantic patch: + + +@r@ +identifier DRIVER; +identifier remove_fn; +fresh identifier remove_fn_wrap = remove_fn ## "_6_11"; +position p; +@@ +struct platform_driver DRIVER@p = { ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = remove_fn_wrap, ++#else + .remove = remove_fn, ++#endif +}; + +@i depends on r@ +@@ + #include +@depends on r && !i@ +@@ + #include <...> ++#include +@depends on r@ +identifier r.remove_fn; +identifier r.remove_fn_wrap; +@@ +int remove_fn(...) {...} ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void remove_fn_wrap(struct platform_device *pdev) ++{ ++ remove_fn(pdev); ++} ++#endif +// + +applied with + + spatch --sp-file 6.11-platform_remove_sig.cocci --in-place --dir packages/ + +Result taken as is, without any code style fixes. + +Upstream-Status: Inactive-Upstream [lastcommit: 2024-09-21] +Signed-off-by: Jonas Gorski +--- + .../modules/accton_as4610_fan.c | 11 +++ + .../modules/accton_as4610_leds.c | 11 +++ + .../builds/x86-64-accton-as4222-28pe-leds.c | 11 +++ + .../builds/x86-64-accton-as4630-54pe-leds.c | 11 +++ + .../builds/x86-64-accton-as4630-54te-leds.c | 11 +++ + .../builds/x86-64-accton-as5512-54x-fan.c | 11 +++ + .../builds/x86-64-accton-as5512-54x-leds.c | 11 +++ + .../builds/x86-64-accton-as5712-54x-fan.c | 11 +++ + .../builds/x86-64-accton-as5712-54x-leds.c | 11 +++ + .../builds/x86-64-accton-as5812-54t-fan.c | 11 +++ + .../builds/x86-64-accton-as5812-54t-leds.c | 11 +++ + .../builds/x86-64-accton-as5812-54x-fan.c | 11 +++ + .../builds/x86-64-accton-as5812-54x-leds.c | 11 +++ + .../builds/x86-64-accton-as5822-54x-fan.c | 11 +++ + .../builds/x86-64-accton-as5822-54x-leds.c | 11 +++ + .../builds/x86-64-accton-as5835-54t-leds.c | 11 +++ + .../builds/x86-64-accton-as5835-54x-leds.c | 11 +++ + .../builds/x86-64-accton-as5912-54x-leds.c | 11 +++ + .../builds/x86-64-accton-as5912-54xk-leds.c | 11 +++ + .../builds/x86-64-accton-as5915-18x-leds.c | 11 +++ + .../builds/x86-64-accton-as5916-26xb-fan.c | 10 +++ + .../builds/x86-64-accton-as5916-26xb-led.c | 10 +++ + .../builds/x86-64-accton-as5916-26xb-psu.c | 10 +++ + .../builds/x86-64-accton-as5916-26xb-sfp.c | 10 +++ + .../builds/x86-64-accton-as5916-26xb-sys.c | 10 +++ + .../x86-64-accton-as5916-26xb-thermal.c | 10 +++ + .../builds/x86-64-accton-as5916-54x-leds.c | 11 +++ + .../builds/x86-64-accton-as5916-54xk-leds.c | 11 +++ + .../builds/x86-64-accton-as5916-54xks-fan.c | 10 +++ + .../builds/x86-64-accton-as5916-54xks-leds.c | 10 +++ + .../builds/x86-64-accton-as5916-54xks-psu.c | 10 +++ + .../builds/x86-64-accton-as5916-54xks-sfp.c | 10 +++ + .../builds/x86-64-accton-as5916-54xks-sys.c | 10 +++ + .../x86-64-accton-as5916-54xks-thermal.c | 10 +++ + .../builds/x86-64-accton-as5916-54xl-fan.c | 15 +++- + .../builds/x86-64-accton-as5916-54xl-leds.c | 15 +++- + .../builds/x86-64-accton-as5916-54xl-psu.c | 15 +++- + .../builds/x86-64-accton-as5916-54xl-sfp.c | 15 +++- + .../builds/x86-64-accton-as5916-54xl-sys.c | 15 +++- + .../x86-64-accton-as5916-54xl-thermal.c | 15 +++- + .../builds/x86-64-accton-as5916-54xm-leds.c | 11 +++ + .../builds/x86-64-accton-as6712-32x-fan.c | 11 +++ + .../builds/x86-64-accton-as6712-32x-leds.c | 11 +++ + .../builds/x86-64-accton-as6812-32x-fan.c | 11 +++ + .../builds/x86-64-accton-as6812-32x-leds.c | 11 +++ + .../builds/x86-64-accton-as7112-54x-led.c | 11 +++ + .../builds/x86-64-accton-as7312-54x-leds.c | 11 +++ + .../builds/x86-64-accton-as7312-54xs-leds.c | 11 +++ + .../builds/x86-64-accton-as7315-27xb-led.c | 11 +++ + .../builds/x86-64-accton-as7315-30x-leds.c | 11 +++ + .../builds/x86-64-accton-as7316-26xb-fan.c | 10 +++ + .../builds/x86-64-accton-as7316-26xb-led.c | 10 +++ + .../builds/x86-64-accton-as7316-26xb-psu.c | 10 +++ + .../builds/x86-64-accton-as7316-26xb-sfp.c | 10 +++ + .../builds/x86-64-accton-as7316-26xb-sys.c | 10 +++ + .../x86-64-accton-as7316-26xb-thermal.c | 10 +++ + .../builds/x86-64-accton-as7326-56x-leds.c | 11 +++ + .../builds/x86-64-accton-as7512-32x-leds.c | 11 +++ + .../builds/x86-64-accton-as7535-28xb-fan.c | 10 +++ + .../builds/x86-64-accton-as7535-28xb-leds.c | 10 +++ + .../builds/x86-64-accton-as7535-28xb-psu.c | 10 +++ + .../builds/x86-64-accton-as7535-28xb-sys.c | 10 +++ + .../x86-64-accton-as7535-28xb-thermal.c | 10 +++ + .../builds/x86-64-accton-as7712-32x-leds.c | 11 +++ + .../builds/x86-64-accton-as7716-24sc-leds.c | 18 +++- + .../builds/x86-64-accton-as7716-24xc-leds.c | 18 +++- + .../builds/x86-64-accton-as7716-32x-leds.c | 11 +++ + .../builds/x86-64-accton-as7726-32x-leds.c | 11 +++ + .../builds/x86-64-accton-as7816-64x-leds.c | 11 +++ + .../builds/x86-64-accton-as7926-40xfb-fan.c | 10 +++ + .../builds/x86-64-accton-as7926-40xfb-leds.c | 10 +++ + .../builds/x86-64-accton-as7926-40xfb-psu.c | 10 +++ + .../builds/x86-64-accton-as7926-40xfb-sys.c | 10 +++ + .../x86-64-accton-as7926-40xfb-thermal.c | 10 +++ + .../builds/x86-64-accton-as7926-40xke-leds.c | 11 +++ + .../builds/x86-64-accton-as7926-80xk-leds.c | 11 +++ + .../builds/x86-64-accton-as7936-22xke-leds.c | 11 +++ + .../builds/x86-64-accton-as7946-30xb-fan.c | 10 +++ + .../builds/x86-64-accton-as7946-30xb-leds.c | 10 +++ + .../builds/x86-64-accton-as7946-30xb-psu.c | 10 +++ + .../builds/x86-64-accton-as7946-30xb-sys.c | 10 +++ + .../x86-64-accton-as7946-30xb-thermal.c | 10 +++ + .../builds/x86-64-accton-as7946-74xkb-fan.c | 10 +++ + .../builds/x86-64-accton-as7946-74xkb-leds.c | 10 +++ + .../builds/x86-64-accton-as7946-74xkb-psu.c | 10 +++ + .../builds/x86-64-accton-as7946-74xkb-sys.c | 10 +++ + .../x86-64-accton-as7946-74xkb-thermal.c | 10 +++ + .../builds/x86-64-accton-as9716-32d-leds.c | 11 +++ + .../modules/x86-64-accton-as9817-64-fpga.c | 10 +++ + .../x86-64-accton-as9817-64-i2c-ocores.c | 11 +++ + .../modules/x86-64-accton-as9817-64-leds.c | 11 +++ + .../src/modules/x86-64-accton-as9817-64-fan.c | 10 +++ + .../modules/x86-64-accton-as9817-64-fpga.c | 10 +++ + .../x86-64-accton-as9817-64-i2c-ocores.c | 11 +++ + .../modules/x86-64-accton-as9817-64-leds.c | 10 +++ + .../src/modules/x86-64-accton-as9817-64-psu.c | 10 +++ + .../src/modules/x86-64-accton-as9817-64-sys.c | 10 +++ + .../modules/x86-64-accton-as9817-64-thermal.c | 10 +++ + .../builds/x86-64-accton-as9926-24d-fpga.c | 11 +++ + .../builds/x86-64-accton-as9926-24d-leds.c | 11 +++ + .../builds/x86-64-accton-as9926-24db-fan.c | 15 +++- + .../builds/x86-64-accton-as9926-24db-leds.c | 15 +++- + .../builds/x86-64-accton-as9926-24db-psu.c | 10 +++ + .../builds/x86-64-accton-as9926-24db-sfp.c | 15 +++- + .../builds/x86-64-accton-as9926-24db-sys.c | 15 +++- + .../x86-64-accton-as9926-24db-thermal.c | 15 +++- + .../builds/x86-64-accton-asgvolt64-fan.c | 10 +++ + .../builds/x86-64-accton-asgvolt64-fpga.c | 11 +++ + .../builds/x86-64-accton-asgvolt64-leds.c | 10 +++ + .../builds/x86-64-accton-asgvolt64-psu.c | 10 +++ + .../builds/x86-64-accton-asgvolt64-sys.c | 10 +++ + .../builds/x86-64-accton-asgvolt64-thermal.c | 10 +++ + .../builds/x86-64-accton-asxvolt16-leds.c | 18 +++- + .../builds/x86-64-accton-csp9250-leds.c | 11 +++ + .../builds/x86-64-accton-es7632bt3-leds.c | 11 +++ + .../modules/builds/minipack_psensor.c | 10 +++ + .../modules/builds/scg60d0-484t_fan.c | 15 +++- + .../modules/builds/scg60d0-484t_led.c | 15 +++- + .../modules/builds/scg60d0-484t_pwr_cpld.c | 15 +++- + .../modules/builds/scg60d0-484t_thermal.c | 15 +++- + .../modules/builds/src/platform_cpld.c | 11 +++ + .../modules/builds/src/fpga_i2c_ocores.c | 11 +++ + .../modules/builds/src/fpga_system.c | 11 +++ + .../modules/builds/src/fpga_xcvr.c | 11 +++ + .../modules/builds/src/lpc_basecpld.c | 11 +++ + .../modules/builds/src/watch_dog.c | 18 +++- + .../silverstone/modules/builds/src/cpld_b.c | 11 +++ + .../silverstone/modules/builds/src/i2c-cls.c | 11 +++ + .../modules/builds/src/i2c-ocores.c | 11 +++ + .../modules/builds/src/switchboard-diag.c | 11 +++ + .../silverstone/modules/builds/src/xcvr-cls.c | 11 +++ + .../builds/x86-64-delta-ag8032-i2c-mux-cpld.c | 10 +++ + .../modules/builds/delta_ag9032v2a_platform.c | 77 +++++++++++++++- + .../modules/builds/src/delta_ag9064_cpld.c | 10 +++ + .../builds/src/delta_ag9064_platform.c | 23 ++++- + .../modules/builds/src/delta_ag9064_swpld.c | 40 +++++++++ + .../modules/builds/src/delta_agc7008s_cpld.c | 10 +++ + .../builds/src/delta_agc7008s_platform.c | 10 +++ + .../modules/builds/src/delta_agc7008s_swpld.c | 20 +++++ + .../builds/delta_agc7646slv1b_platform.c | 90 ++++++++++++++++++- + .../modules/builds/delta_agc7646v1_platform.c | 90 ++++++++++++++++++- + .../builds/delta_agc7648sv1_platform.c | 47 +++++++++- + .../modules/builds/delta_ak7448_platform.c | 45 ++++++++-- + .../d10056/modules/builds/src/gpio-ich.c | 11 +++ + .../d10056/modules/builds/src/i2c-gpio.c | 11 +++ + .../d3352/modules/builds/src/i2c-gpio.c | 11 +++ + .../d5052/modules/builds/src/i2c-gpio.c | 11 +++ + .../d5254/modules/builds/src/i2c-gpio.c | 11 +++ + .../d6254qs/modules/builds/src/gpio-ich.c | 11 +++ + .../d6332/modules/builds/src/i2c-gpio.c | 11 +++ + .../d6356/modules/builds/src/gpio-ich.c | 11 +++ + .../d6356/modules/builds/src/i2c-gpio.c | 11 +++ + .../d6556/modules/builds/src/i2c-gpio.c | 11 +++ + .../d7032q28b/modules/builds/src/gpio-ich.c | 11 +++ + .../d7264q28b/modules/builds/src/gpio-ich.c | 11 +++ + .../d7332/modules/builds/src/i2c-gpio.c | 11 +++ + .../aurora-610/modules/builds/src/gpio-ich.c | 11 +++ + .../aurora-610/modules/builds/src/i2c-gpio.c | 18 +++- + .../aurora-820/modules/builds/src/i2c-gpio.c | 11 +++ + .../src/x86-64-ufispace-s9700-23d-lpc.c | 11 +++ + .../src/x86-64-ufispace-s9700-53dx-lpc.c | 11 +++ + .../src/x86-64-ufispace-s9705-48d-lpc.c | 11 +++ + 162 files changed, 2103 insertions(+), 62 deletions(-) + +diff --git a/packages/platforms/accton/armxx/arm-accton-as4610/modules/accton_as4610_fan.c b/packages/platforms/accton/armxx/arm-accton-as4610/modules/accton_as4610_fan.c +index 501de3432a03..00261b4a5474 100644 +--- a/packages/platforms/accton/armxx/arm-accton-as4610/modules/accton_as4610_fan.c ++++ b/packages/platforms/accton/armxx/arm-accton-as4610/modules/accton_as4610_fan.c +@@ -29,6 +29,7 @@ + #include + #include + #include ++#include + + #define DRVNAME "as4610_fan" + +@@ -297,6 +298,11 @@ static int as4610_fan_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as4610_fan_remove_6_11(struct platform_device *pdev) { ++ as4610_fan_remove(pdev); ++} ++#endif + + static const struct platform_device_id as4610_fan_id[] = { + { "as4610_fan", 0 }, +@@ -306,7 +312,12 @@ MODULE_DEVICE_TABLE(platform, as4610_fan_id); + + static struct platform_driver as4610_fan_driver = { + .probe = as4610_fan_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as4610_fan_remove_6_11, ++#else ++ + .remove = as4610_fan_remove, ++#endif + .id_table = as4610_fan_id, + .driver = { + .name = DRVNAME, +diff --git a/packages/platforms/accton/armxx/arm-accton-as4610/modules/accton_as4610_leds.c b/packages/platforms/accton/armxx/arm-accton-as4610/modules/accton_as4610_leds.c +index cb3859c1fabc..4d1b37ca2a64 100644 +--- a/packages/platforms/accton/armxx/arm-accton-as4610/modules/accton_as4610_leds.c ++++ b/packages/platforms/accton/armxx/arm-accton-as4610/modules/accton_as4610_leds.c +@@ -30,6 +30,7 @@ + #include + #include + #include ++#include + + extern int as4610_54_cpld_read (unsigned short cpld_addr, u8 reg); + extern int as4610_54_cpld_write(unsigned short cpld_addr, u8 reg, u8 value); +@@ -631,6 +632,11 @@ static int as4610_led_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as4610_led_remove_6_11(struct platform_device *pdev) { ++ as4610_led_remove(pdev); ++} ++#endif + + static const struct platform_device_id as4610_led_id[] = { + { "as4610_led", 0 }, +@@ -640,7 +646,12 @@ MODULE_DEVICE_TABLE(platform, as4610_led_id); + + static struct platform_driver as4610_led_driver = { + .probe = as4610_led_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as4610_led_remove_6_11, ++#else ++ + .remove = as4610_led_remove, ++#endif + .id_table = as4610_led_id, + .driver = { + .name = DRVNAME, +diff --git a/packages/platforms/accton/x86-64/as4222-28pe/modules/builds/x86-64-accton-as4222-28pe-leds.c b/packages/platforms/accton/x86-64/as4222-28pe/modules/builds/x86-64-accton-as4222-28pe-leds.c +index 734e170f5413..15e553c3e150 100755 +--- a/packages/platforms/accton/x86-64/as4222-28pe/modules/builds/x86-64-accton-as4222-28pe-leds.c ++++ b/packages/platforms/accton/x86-64/as4222-28pe/modules/builds/x86-64-accton-as4222-28pe-leds.c +@@ -29,6 +29,7 @@ + #include + #include + #include ++#include + + extern int as4222_28pe_cpld_read (unsigned short cpld_addr, u8 reg); + extern int as4222_28pe_cpld_write(unsigned short cpld_addr, u8 reg, u8 value); +@@ -386,10 +387,20 @@ static int accton_as4222_28pe_led_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void accton_as4222_28pe_led_remove_6_11(struct platform_device *pdev) { ++ accton_as4222_28pe_led_remove(pdev); ++} ++#endif + + static struct platform_driver accton_as4222_28pe_led_driver = { + .probe = accton_as4222_28pe_led_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = accton_as4222_28pe_led_remove_6_11, ++#else ++ + .remove = accton_as4222_28pe_led_remove, ++#endif + .suspend = accton_as4222_28pe_led_suspend, + .resume = accton_as4222_28pe_led_resume, + .driver = { +diff --git a/packages/platforms/accton/x86-64/as4630-54pe/modules/builds/x86-64-accton-as4630-54pe-leds.c b/packages/platforms/accton/x86-64/as4630-54pe/modules/builds/x86-64-accton-as4630-54pe-leds.c +index ddfdb056689c..99947c133ef8 100755 +--- a/packages/platforms/accton/x86-64/as4630-54pe/modules/builds/x86-64-accton-as4630-54pe-leds.c ++++ b/packages/platforms/accton/x86-64/as4630-54pe/modules/builds/x86-64-accton-as4630-54pe-leds.c +@@ -29,6 +29,7 @@ + #include + #include + #include ++#include + + extern int as4630_54pe_cpld_read (unsigned short cpld_addr, u8 reg); + extern int as4630_54pe_cpld_write(unsigned short cpld_addr, u8 reg, u8 value); +@@ -496,10 +497,20 @@ static int accton_as4630_54pe_led_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void accton_as4630_54pe_led_remove_6_11(struct platform_device *pdev) { ++ accton_as4630_54pe_led_remove(pdev); ++} ++#endif + + static struct platform_driver accton_as4630_54pe_led_driver = { + .probe = accton_as4630_54pe_led_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = accton_as4630_54pe_led_remove_6_11, ++#else ++ + .remove = accton_as4630_54pe_led_remove, ++#endif + .suspend = accton_as4630_54pe_led_suspend, + .resume = accton_as4630_54pe_led_resume, + .driver = { +diff --git a/packages/platforms/accton/x86-64/as4630-54te/modules/builds/x86-64-accton-as4630-54te-leds.c b/packages/platforms/accton/x86-64/as4630-54te/modules/builds/x86-64-accton-as4630-54te-leds.c +index fe4dbc4ba984..0342aa3ae904 100644 +--- a/packages/platforms/accton/x86-64/as4630-54te/modules/builds/x86-64-accton-as4630-54te-leds.c ++++ b/packages/platforms/accton/x86-64/as4630-54te/modules/builds/x86-64-accton-as4630-54te-leds.c +@@ -27,6 +27,7 @@ + #include + #include + #include ++#include + + extern int as4630_54te_cpld_read(unsigned short cpld_addr, u8 reg); + extern int as4630_54te_cpld_write(unsigned short cpld_addr, u8 reg, u8 value); +@@ -479,10 +480,20 @@ static int as4630_54te_led_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as4630_54te_led_remove_6_11(struct platform_device *pdev) { ++ as4630_54te_led_remove(pdev); ++} ++#endif + + static struct platform_driver as4630_54te_led_driver = { + .probe = as4630_54te_led_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as4630_54te_led_remove_6_11, ++#else ++ + .remove = as4630_54te_led_remove, ++#endif + .suspend = as4630_54te_led_suspend, + .resume = as4630_54te_led_resume, + .driver = { +diff --git a/packages/platforms/accton/x86-64/as5512-54x/modules/builds/x86-64-accton-as5512-54x-fan.c b/packages/platforms/accton/x86-64/as5512-54x/modules/builds/x86-64-accton-as5512-54x-fan.c +index 9718973934af..9f171f0742c8 100644 +--- a/packages/platforms/accton/x86-64/as5512-54x/modules/builds/x86-64-accton-as5512-54x-fan.c ++++ b/packages/platforms/accton/x86-64/as5512-54x/modules/builds/x86-64-accton-as5512-54x-fan.c +@@ -32,6 +32,7 @@ + #include + #include + #include ++#include + + #define FAN_MAX_NUMBER 5 + #define FAN_SPEED_CPLD_TO_RPM_STEP 150 +@@ -389,12 +390,22 @@ static int accton_as5512_54x_fan_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void accton_as5512_54x_fan_remove_6_11(struct platform_device *pdev) { ++ accton_as5512_54x_fan_remove(pdev); ++} ++#endif + + #define DRVNAME "as5512_54x_fan" + + static struct platform_driver accton_as5512_54x_fan_driver = { + .probe = accton_as5512_54x_fan_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = accton_as5512_54x_fan_remove_6_11, ++#else ++ + .remove = accton_as5512_54x_fan_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +diff --git a/packages/platforms/accton/x86-64/as5512-54x/modules/builds/x86-64-accton-as5512-54x-leds.c b/packages/platforms/accton/x86-64/as5512-54x/modules/builds/x86-64-accton-as5512-54x-leds.c +index 02eb3d7e36df..5b27be49955d 100644 +--- a/packages/platforms/accton/x86-64/as5512-54x/modules/builds/x86-64-accton-as5512-54x-leds.c ++++ b/packages/platforms/accton/x86-64/as5512-54x/modules/builds/x86-64-accton-as5512-54x-leds.c +@@ -28,6 +28,7 @@ + #include + #include + #include ++#include + + extern int as5512_54x_cpld_read(unsigned short cpld_addr, u8 reg); + extern int as5512_54x_cpld_write(unsigned short cpld_addr, u8 reg, u8 value); +@@ -395,10 +396,20 @@ static int accton_as5512_54x_led_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void accton_as5512_54x_led_remove_6_11(struct platform_device *pdev) { ++ accton_as5512_54x_led_remove(pdev); ++} ++#endif + + static struct platform_driver accton_as5512_54x_led_driver = { + .probe = accton_as5512_54x_led_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = accton_as5512_54x_led_remove_6_11, ++#else ++ + .remove = accton_as5512_54x_led_remove, ++#endif + .suspend = accton_as5512_54x_led_suspend, + .resume = accton_as5512_54x_led_resume, + .driver = { +diff --git a/packages/platforms/accton/x86-64/as5712-54x/modules/builds/x86-64-accton-as5712-54x-fan.c b/packages/platforms/accton/x86-64/as5712-54x/modules/builds/x86-64-accton-as5712-54x-fan.c +index 73e8bf6fdac5..caa6d4e814eb 100644 +--- a/packages/platforms/accton/x86-64/as5712-54x/modules/builds/x86-64-accton-as5712-54x-fan.c ++++ b/packages/platforms/accton/x86-64/as5712-54x/modules/builds/x86-64-accton-as5712-54x-fan.c +@@ -32,6 +32,7 @@ + #include + #include + #include ++#include + + #define FAN_MAX_NUMBER 5 + #define FAN_SPEED_CPLD_TO_RPM_STEP 150 +@@ -377,12 +378,22 @@ static int accton_as5712_54x_fan_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void accton_as5712_54x_fan_remove_6_11(struct platform_device *pdev) { ++ accton_as5712_54x_fan_remove(pdev); ++} ++#endif + + #define DRVNAME "as5712_54x_fan" + + static struct platform_driver accton_as5712_54x_fan_driver = { + .probe = accton_as5712_54x_fan_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = accton_as5712_54x_fan_remove_6_11, ++#else ++ + .remove = accton_as5712_54x_fan_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +diff --git a/packages/platforms/accton/x86-64/as5712-54x/modules/builds/x86-64-accton-as5712-54x-leds.c b/packages/platforms/accton/x86-64/as5712-54x/modules/builds/x86-64-accton-as5712-54x-leds.c +index 68d0c686da5d..487bce9b2772 100644 +--- a/packages/platforms/accton/x86-64/as5712-54x/modules/builds/x86-64-accton-as5712-54x-leds.c ++++ b/packages/platforms/accton/x86-64/as5712-54x/modules/builds/x86-64-accton-as5712-54x-leds.c +@@ -28,6 +28,7 @@ + #include + #include + #include ++#include + + extern int as5712_54x_cpld_read (unsigned short cpld_addr, u8 reg); + extern int as5712_54x_cpld_write(unsigned short cpld_addr, u8 reg, u8 value); +@@ -531,10 +532,20 @@ static int accton_as5712_54x_led_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void accton_as5712_54x_led_remove_6_11(struct platform_device *pdev) { ++ accton_as5712_54x_led_remove(pdev); ++} ++#endif + + static struct platform_driver accton_as5712_54x_led_driver = { + .probe = accton_as5712_54x_led_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = accton_as5712_54x_led_remove_6_11, ++#else ++ + .remove = accton_as5712_54x_led_remove, ++#endif + .suspend = accton_as5712_54x_led_suspend, + .resume = accton_as5712_54x_led_resume, + .driver = { +diff --git a/packages/platforms/accton/x86-64/as5812-54t/modules/builds/x86-64-accton-as5812-54t-fan.c b/packages/platforms/accton/x86-64/as5812-54t/modules/builds/x86-64-accton-as5812-54t-fan.c +index 85dfd3c4d858..30d679631143 100644 +--- a/packages/platforms/accton/x86-64/as5812-54t/modules/builds/x86-64-accton-as5812-54t-fan.c ++++ b/packages/platforms/accton/x86-64/as5812-54t/modules/builds/x86-64-accton-as5812-54t-fan.c +@@ -32,6 +32,7 @@ + #include + #include + #include ++#include + + #define FAN_MAX_NUMBER 5 + #define FAN_SPEED_CPLD_TO_RPM_STEP 150 +@@ -378,12 +379,22 @@ static int accton_as5812_54t_fan_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void accton_as5812_54t_fan_remove_6_11(struct platform_device *pdev) { ++ accton_as5812_54t_fan_remove(pdev); ++} ++#endif + + #define DRVNAME "as5812_54t_fan" + + static struct platform_driver accton_as5812_54t_fan_driver = { + .probe = accton_as5812_54t_fan_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = accton_as5812_54t_fan_remove_6_11, ++#else ++ + .remove = accton_as5812_54t_fan_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +diff --git a/packages/platforms/accton/x86-64/as5812-54t/modules/builds/x86-64-accton-as5812-54t-leds.c b/packages/platforms/accton/x86-64/as5812-54t/modules/builds/x86-64-accton-as5812-54t-leds.c +index cf00e2e39d10..35e89440d955 100644 +--- a/packages/platforms/accton/x86-64/as5812-54t/modules/builds/x86-64-accton-as5812-54t-leds.c ++++ b/packages/platforms/accton/x86-64/as5812-54t/modules/builds/x86-64-accton-as5812-54t-leds.c +@@ -28,6 +28,7 @@ + #include + #include + #include ++#include + + extern int as5812_54t_cpld_read(unsigned short cpld_addr, u8 reg); + extern int as5812_54t_cpld_write(unsigned short cpld_addr, u8 reg, u8 value); +@@ -534,10 +535,20 @@ static int accton_as5812_54t_led_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void accton_as5812_54t_led_remove_6_11(struct platform_device *pdev) { ++ accton_as5812_54t_led_remove(pdev); ++} ++#endif + + static struct platform_driver accton_as5812_54t_led_driver = { + .probe = accton_as5812_54t_led_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = accton_as5812_54t_led_remove_6_11, ++#else ++ + .remove = accton_as5812_54t_led_remove, ++#endif + .suspend = accton_as5812_54t_led_suspend, + .resume = accton_as5812_54t_led_resume, + .driver = { +diff --git a/packages/platforms/accton/x86-64/as5812-54x/modules/builds/x86-64-accton-as5812-54x-fan.c b/packages/platforms/accton/x86-64/as5812-54x/modules/builds/x86-64-accton-as5812-54x-fan.c +index 79b1ae489b4a..47b960b9ba01 100755 +--- a/packages/platforms/accton/x86-64/as5812-54x/modules/builds/x86-64-accton-as5812-54x-fan.c ++++ b/packages/platforms/accton/x86-64/as5812-54x/modules/builds/x86-64-accton-as5812-54x-fan.c +@@ -32,6 +32,7 @@ + #include + #include + #include ++#include + + #define FAN_MAX_NUMBER 5 + #define FAN_SPEED_CPLD_TO_RPM_STEP 150 +@@ -377,12 +378,22 @@ static int accton_as5812_54x_fan_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void accton_as5812_54x_fan_remove_6_11(struct platform_device *pdev) { ++ accton_as5812_54x_fan_remove(pdev); ++} ++#endif + + #define DRVNAME "as5812_54x_fan" + + static struct platform_driver accton_as5812_54x_fan_driver = { + .probe = accton_as5812_54x_fan_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = accton_as5812_54x_fan_remove_6_11, ++#else ++ + .remove = accton_as5812_54x_fan_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +diff --git a/packages/platforms/accton/x86-64/as5812-54x/modules/builds/x86-64-accton-as5812-54x-leds.c b/packages/platforms/accton/x86-64/as5812-54x/modules/builds/x86-64-accton-as5812-54x-leds.c +index 16c5f5d64d5b..4b57dfc070af 100755 +--- a/packages/platforms/accton/x86-64/as5812-54x/modules/builds/x86-64-accton-as5812-54x-leds.c ++++ b/packages/platforms/accton/x86-64/as5812-54x/modules/builds/x86-64-accton-as5812-54x-leds.c +@@ -28,6 +28,7 @@ + #include + #include + #include ++#include + + extern int as5812_54x_cpld_read (unsigned short cpld_addr, u8 reg); + extern int as5812_54x_cpld_write(unsigned short cpld_addr, u8 reg, u8 value); +@@ -531,10 +532,20 @@ static int accton_as5812_54x_led_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void accton_as5812_54x_led_remove_6_11(struct platform_device *pdev) { ++ accton_as5812_54x_led_remove(pdev); ++} ++#endif + + static struct platform_driver accton_as5812_54x_led_driver = { + .probe = accton_as5812_54x_led_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = accton_as5812_54x_led_remove_6_11, ++#else ++ + .remove = accton_as5812_54x_led_remove, ++#endif + .suspend = accton_as5812_54x_led_suspend, + .resume = accton_as5812_54x_led_resume, + .driver = { +diff --git a/packages/platforms/accton/x86-64/as5822-54x/modules/builds/x86-64-accton-as5822-54x-fan.c b/packages/platforms/accton/x86-64/as5822-54x/modules/builds/x86-64-accton-as5822-54x-fan.c +index f9814b4f43a8..af6dfdd1015a 100644 +--- a/packages/platforms/accton/x86-64/as5822-54x/modules/builds/x86-64-accton-as5822-54x-fan.c ++++ b/packages/platforms/accton/x86-64/as5822-54x/modules/builds/x86-64-accton-as5822-54x-fan.c +@@ -30,6 +30,7 @@ + #include + #include + #include ++#include + + #define DRVNAME "as5822_54x_fan" + #define FAN_STATUS_I2C_ADDR 0x60 +@@ -427,10 +428,20 @@ static int as5822_54x_fan_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as5822_54x_fan_remove_6_11(struct platform_device *pdev) { ++ as5822_54x_fan_remove(pdev); ++} ++#endif + + static struct platform_driver as5822_54x_fan_driver = { + .probe = as5822_54x_fan_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as5822_54x_fan_remove_6_11, ++#else ++ + .remove = as5822_54x_fan_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +diff --git a/packages/platforms/accton/x86-64/as5822-54x/modules/builds/x86-64-accton-as5822-54x-leds.c b/packages/platforms/accton/x86-64/as5822-54x/modules/builds/x86-64-accton-as5822-54x-leds.c +index 52d70db479ac..1f00dfe62636 100644 +--- a/packages/platforms/accton/x86-64/as5822-54x/modules/builds/x86-64-accton-as5822-54x-leds.c ++++ b/packages/platforms/accton/x86-64/as5822-54x/modules/builds/x86-64-accton-as5822-54x-leds.c +@@ -26,6 +26,7 @@ + #include + #include + #include ++#include + + #define DRVNAME "accton_as5822_54x_led" + +@@ -316,10 +317,20 @@ static int accton_as5822_54x_led_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void accton_as5822_54x_led_remove_6_11(struct platform_device *pdev) { ++ accton_as5822_54x_led_remove(pdev); ++} ++#endif + + static struct platform_driver accton_as5822_54x_led_driver = { + .probe = accton_as5822_54x_led_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = accton_as5822_54x_led_remove_6_11, ++#else ++ + .remove = accton_as5822_54x_led_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +diff --git a/packages/platforms/accton/x86-64/as5835-54t/modules/builds/x86-64-accton-as5835-54t-leds.c b/packages/platforms/accton/x86-64/as5835-54t/modules/builds/x86-64-accton-as5835-54t-leds.c +index d204963955a7..29de9a91e1c1 100644 +--- a/packages/platforms/accton/x86-64/as5835-54t/modules/builds/x86-64-accton-as5835-54t-leds.c ++++ b/packages/platforms/accton/x86-64/as5835-54t/modules/builds/x86-64-accton-as5835-54t-leds.c +@@ -26,6 +26,7 @@ + #include + #include + #include ++#include + + #define DRVNAME "as5835_54t_led" + +@@ -320,10 +321,20 @@ static int accton_as5835_54t_led_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void accton_as5835_54t_led_remove_6_11(struct platform_device *pdev) { ++ accton_as5835_54t_led_remove(pdev); ++} ++#endif + + static struct platform_driver accton_as5835_54t_led_driver = { + .probe = accton_as5835_54t_led_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = accton_as5835_54t_led_remove_6_11, ++#else ++ + .remove = accton_as5835_54t_led_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +diff --git a/packages/platforms/accton/x86-64/as5835-54x/modules/builds/x86-64-accton-as5835-54x-leds.c b/packages/platforms/accton/x86-64/as5835-54x/modules/builds/x86-64-accton-as5835-54x-leds.c +index cc66511078a0..64e9d35cd547 100644 +--- a/packages/platforms/accton/x86-64/as5835-54x/modules/builds/x86-64-accton-as5835-54x-leds.c ++++ b/packages/platforms/accton/x86-64/as5835-54x/modules/builds/x86-64-accton-as5835-54x-leds.c +@@ -26,6 +26,7 @@ + #include + #include + #include ++#include + + #define DRVNAME "as5835_54x_led" + +@@ -320,10 +321,20 @@ static int accton_as5835_54x_led_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void accton_as5835_54x_led_remove_6_11(struct platform_device *pdev) { ++ accton_as5835_54x_led_remove(pdev); ++} ++#endif + + static struct platform_driver accton_as5835_54x_led_driver = { + .probe = accton_as5835_54x_led_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = accton_as5835_54x_led_remove_6_11, ++#else ++ + .remove = accton_as5835_54x_led_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +diff --git a/packages/platforms/accton/x86-64/as5912-54x/modules/builds/x86-64-accton-as5912-54x-leds.c b/packages/platforms/accton/x86-64/as5912-54x/modules/builds/x86-64-accton-as5912-54x-leds.c +index 8dbe1e64906a..991f4c91353f 100644 +--- a/packages/platforms/accton/x86-64/as5912-54x/modules/builds/x86-64-accton-as5912-54x-leds.c ++++ b/packages/platforms/accton/x86-64/as5912-54x/modules/builds/x86-64-accton-as5912-54x-leds.c +@@ -26,6 +26,7 @@ + #include + #include + #include ++#include + + #define DRVNAME "accton_as5912_54x_led" + +@@ -317,10 +318,20 @@ static int accton_as5912_54x_led_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void accton_as5912_54x_led_remove_6_11(struct platform_device *pdev) { ++ accton_as5912_54x_led_remove(pdev); ++} ++#endif + + static struct platform_driver accton_as5912_54x_led_driver = { + .probe = accton_as5912_54x_led_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = accton_as5912_54x_led_remove_6_11, ++#else ++ + .remove = accton_as5912_54x_led_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +diff --git a/packages/platforms/accton/x86-64/as5912-54xk/modules/builds/x86-64-accton-as5912-54xk-leds.c b/packages/platforms/accton/x86-64/as5912-54xk/modules/builds/x86-64-accton-as5912-54xk-leds.c +index f7b3ca436c11..64197fde37a6 100644 +--- a/packages/platforms/accton/x86-64/as5912-54xk/modules/builds/x86-64-accton-as5912-54xk-leds.c ++++ b/packages/platforms/accton/x86-64/as5912-54xk/modules/builds/x86-64-accton-as5912-54xk-leds.c +@@ -26,6 +26,7 @@ + #include + #include + #include ++#include + + #define DRVNAME "accton_as5912_54xk_led" + +@@ -326,10 +327,20 @@ static int accton_as5912_54xk_led_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void accton_as5912_54xk_led_remove_6_11(struct platform_device *pdev) { ++ accton_as5912_54xk_led_remove(pdev); ++} ++#endif + + static struct platform_driver accton_as5912_54xk_led_driver = { + .probe = accton_as5912_54xk_led_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = accton_as5912_54xk_led_remove_6_11, ++#else ++ + .remove = accton_as5912_54xk_led_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +diff --git a/packages/platforms/accton/x86-64/as5915-18x/modules/builds/x86-64-accton-as5915-18x-leds.c b/packages/platforms/accton/x86-64/as5915-18x/modules/builds/x86-64-accton-as5915-18x-leds.c +index 454910c02394..1ce90aab4929 100644 +--- a/packages/platforms/accton/x86-64/as5915-18x/modules/builds/x86-64-accton-as5915-18x-leds.c ++++ b/packages/platforms/accton/x86-64/as5915-18x/modules/builds/x86-64-accton-as5915-18x-leds.c +@@ -26,6 +26,7 @@ + #include + #include + #include ++#include + + #define DRVNAME "as5915_18x_led" + +@@ -414,10 +415,20 @@ static int as5915_18x_led_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as5915_18x_led_remove_6_11(struct platform_device *pdev) { ++ as5915_18x_led_remove(pdev); ++} ++#endif + + static struct platform_driver as5915_18x_led_driver = { + .probe = as5915_18x_led_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as5915_18x_led_remove_6_11, ++#else ++ + .remove = as5915_18x_led_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +diff --git a/packages/platforms/accton/x86-64/as5916-26xb/modules/builds/x86-64-accton-as5916-26xb-fan.c b/packages/platforms/accton/x86-64/as5916-26xb/modules/builds/x86-64-accton-as5916-26xb-fan.c +index c17f5ed404b4..15d516c1fdf3 100644 +--- a/packages/platforms/accton/x86-64/as5916-26xb/modules/builds/x86-64-accton-as5916-26xb-fan.c ++++ b/packages/platforms/accton/x86-64/as5916-26xb/modules/builds/x86-64-accton-as5916-26xb-fan.c +@@ -97,7 +97,12 @@ struct as5916_26xb_fan_data *data = NULL; + + static struct platform_driver as5916_26xb_fan_driver = { + .probe = as5916_26xb_fan_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as5916_26xb_fan_remove_6_11, ++#else ++ + .remove = as5916_26xb_fan_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -410,6 +415,11 @@ static int as5916_26xb_fan_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as5916_26xb_fan_remove_6_11(struct platform_device *pdev) { ++ as5916_26xb_fan_remove(pdev); ++} ++#endif + + static int __init as5916_26xb_fan_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as5916-26xb/modules/builds/x86-64-accton-as5916-26xb-led.c b/packages/platforms/accton/x86-64/as5916-26xb/modules/builds/x86-64-accton-as5916-26xb-led.c +index f072610cafb8..84c717befabc 100644 +--- a/packages/platforms/accton/x86-64/as5916-26xb/modules/builds/x86-64-accton-as5916-26xb-led.c ++++ b/packages/platforms/accton/x86-64/as5916-26xb/modules/builds/x86-64-accton-as5916-26xb-led.c +@@ -85,7 +85,12 @@ struct as5916_26xb_led_data *data = NULL; + + static struct platform_driver as5916_26xb_led_driver = { + .probe = as5916_26xb_led_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as5916_26xb_led_remove_6_11, ++#else ++ + .remove = as5916_26xb_led_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -421,6 +426,11 @@ static int as5916_26xb_led_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as5916_26xb_led_remove_6_11(struct platform_device *pdev) { ++ as5916_26xb_led_remove(pdev); ++} ++#endif + + static int __init as5916_26xb_led_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as5916-26xb/modules/builds/x86-64-accton-as5916-26xb-psu.c b/packages/platforms/accton/x86-64/as5916-26xb/modules/builds/x86-64-accton-as5916-26xb-psu.c +index 298b6dddc8be..7dbd129c5533 100755 +--- a/packages/platforms/accton/x86-64/as5916-26xb/modules/builds/x86-64-accton-as5916-26xb-psu.c ++++ b/packages/platforms/accton/x86-64/as5916-26xb/modules/builds/x86-64-accton-as5916-26xb-psu.c +@@ -117,7 +117,12 @@ struct as5916_26xb_psu_data *data = NULL; + + static struct platform_driver as5916_26xb_psu_driver = { + .probe = as5916_26xb_psu_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as5916_26xb_psu_remove_6_11, ++#else ++ + .remove = as5916_26xb_psu_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -505,6 +510,11 @@ static int as5916_26xb_psu_remove(struct platform_device *pdev) + sysfs_remove_group(&pdev->dev.kobj, &as5916_26xb_psu_group); + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as5916_26xb_psu_remove_6_11(struct platform_device *pdev) { ++ as5916_26xb_psu_remove(pdev); ++} ++#endif + + static int __init as5916_26xb_psu_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as5916-26xb/modules/builds/x86-64-accton-as5916-26xb-sfp.c b/packages/platforms/accton/x86-64/as5916-26xb/modules/builds/x86-64-accton-as5916-26xb-sfp.c +index 57a1127a765a..05427db7660f 100644 +--- a/packages/platforms/accton/x86-64/as5916-26xb/modules/builds/x86-64-accton-as5916-26xb-sfp.c ++++ b/packages/platforms/accton/x86-64/as5916-26xb/modules/builds/x86-64-accton-as5916-26xb-sfp.c +@@ -131,7 +131,12 @@ struct as5916_26xb_sfp_data *data = NULL; + + static struct platform_driver as5916_26xb_sfp_driver = { + .probe = as5916_26xb_sfp_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as5916_26xb_sfp_remove_6_11, ++#else ++ + .remove = as5916_26xb_sfp_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -1147,6 +1152,11 @@ static int as5916_26xb_sfp_remove(struct platform_device *pdev) + sysfs_remove_group(&pdev->dev.kobj, &as5916_26xb_sfp_group); + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as5916_26xb_sfp_remove_6_11(struct platform_device *pdev) { ++ as5916_26xb_sfp_remove(pdev); ++} ++#endif + + static int __init as5916_26xb_sfp_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as5916-26xb/modules/builds/x86-64-accton-as5916-26xb-sys.c b/packages/platforms/accton/x86-64/as5916-26xb/modules/builds/x86-64-accton-as5916-26xb-sys.c +index e89c962f83a6..ae507b053ee9 100644 +--- a/packages/platforms/accton/x86-64/as5916-26xb/modules/builds/x86-64-accton-as5916-26xb-sys.c ++++ b/packages/platforms/accton/x86-64/as5916-26xb/modules/builds/x86-64-accton-as5916-26xb-sys.c +@@ -81,7 +81,12 @@ struct as5916_26xb_sys_data *data = NULL; + + static struct platform_driver as5916_26xb_sys_driver = { + .probe = as5916_26xb_sys_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as5916_26xb_sys_remove_6_11, ++#else ++ + .remove = as5916_26xb_sys_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -309,6 +314,11 @@ static int as5916_26xb_sys_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as5916_26xb_sys_remove_6_11(struct platform_device *pdev) { ++ as5916_26xb_sys_remove(pdev); ++} ++#endif + + static int __init as5916_26xb_sys_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as5916-26xb/modules/builds/x86-64-accton-as5916-26xb-thermal.c b/packages/platforms/accton/x86-64/as5916-26xb/modules/builds/x86-64-accton-as5916-26xb-thermal.c +index a58ae5cecb1d..b14a6e7ec889 100644 +--- a/packages/platforms/accton/x86-64/as5916-26xb/modules/builds/x86-64-accton-as5916-26xb-thermal.c ++++ b/packages/platforms/accton/x86-64/as5916-26xb/modules/builds/x86-64-accton-as5916-26xb-thermal.c +@@ -83,7 +83,12 @@ struct as5916_26xb_thermal_data *data = NULL; + + static struct platform_driver as5916_26xb_thermal_driver = { + .probe = as5916_26xb_thermal_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as5916_26xb_thermal_remove_6_11, ++#else ++ + .remove = as5916_26xb_thermal_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -298,6 +303,11 @@ static int as5916_26xb_thermal_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as5916_26xb_thermal_remove_6_11(struct platform_device *pdev) { ++ as5916_26xb_thermal_remove(pdev); ++} ++#endif + + static int __init as5916_26xb_thermal_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as5916-54x/modules/builds/x86-64-accton-as5916-54x-leds.c b/packages/platforms/accton/x86-64/as5916-54x/modules/builds/x86-64-accton-as5916-54x-leds.c +index 9f6be629be96..5af894c46d7c 100644 +--- a/packages/platforms/accton/x86-64/as5916-54x/modules/builds/x86-64-accton-as5916-54x-leds.c ++++ b/packages/platforms/accton/x86-64/as5916-54x/modules/builds/x86-64-accton-as5916-54x-leds.c +@@ -26,6 +26,7 @@ + #include + #include + #include ++#include + + #define DRVNAME "accton_as5916_54x_led" + +@@ -326,10 +327,20 @@ static int accton_as5916_54x_led_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void accton_as5916_54x_led_remove_6_11(struct platform_device *pdev) { ++ accton_as5916_54x_led_remove(pdev); ++} ++#endif + + static struct platform_driver accton_as5916_54x_led_driver = { + .probe = accton_as5916_54x_led_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = accton_as5916_54x_led_remove_6_11, ++#else ++ + .remove = accton_as5916_54x_led_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +diff --git a/packages/platforms/accton/x86-64/as5916-54xk/modules/builds/x86-64-accton-as5916-54xk-leds.c b/packages/platforms/accton/x86-64/as5916-54xk/modules/builds/x86-64-accton-as5916-54xk-leds.c +index 078e005a1754..50412e0860c8 100644 +--- a/packages/platforms/accton/x86-64/as5916-54xk/modules/builds/x86-64-accton-as5916-54xk-leds.c ++++ b/packages/platforms/accton/x86-64/as5916-54xk/modules/builds/x86-64-accton-as5916-54xk-leds.c +@@ -26,6 +26,7 @@ + #include + #include + #include ++#include + + #define DRVNAME "accton_as5916_54xk_led" + +@@ -326,10 +327,20 @@ static int accton_as5916_54xk_led_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void accton_as5916_54xk_led_remove_6_11(struct platform_device *pdev) { ++ accton_as5916_54xk_led_remove(pdev); ++} ++#endif + + static struct platform_driver accton_as5916_54xk_led_driver = { + .probe = accton_as5916_54xk_led_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = accton_as5916_54xk_led_remove_6_11, ++#else ++ + .remove = accton_as5916_54xk_led_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +diff --git a/packages/platforms/accton/x86-64/as5916-54xks/modules/builds/x86-64-accton-as5916-54xks-fan.c b/packages/platforms/accton/x86-64/as5916-54xks/modules/builds/x86-64-accton-as5916-54xks-fan.c +index 8f79aededede..bc592bcc9b7d 100755 +--- a/packages/platforms/accton/x86-64/as5916-54xks/modules/builds/x86-64-accton-as5916-54xks-fan.c ++++ b/packages/platforms/accton/x86-64/as5916-54xks/modules/builds/x86-64-accton-as5916-54xks-fan.c +@@ -95,7 +95,12 @@ struct as5916_54xks_fan_data *data = NULL; + + static struct platform_driver as5916_54xks_fan_driver = { + .probe = as5916_54xks_fan_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as5916_54xks_fan_remove_6_11, ++#else ++ + .remove = as5916_54xks_fan_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -439,6 +444,11 @@ static int as5916_54xks_fan_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as5916_54xks_fan_remove_6_11(struct platform_device *pdev) { ++ as5916_54xks_fan_remove(pdev); ++} ++#endif + + static int __init as5916_54xks_fan_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as5916-54xks/modules/builds/x86-64-accton-as5916-54xks-leds.c b/packages/platforms/accton/x86-64/as5916-54xks/modules/builds/x86-64-accton-as5916-54xks-leds.c +index 5a9a9df58927..566c90787616 100755 +--- a/packages/platforms/accton/x86-64/as5916-54xks/modules/builds/x86-64-accton-as5916-54xks-leds.c ++++ b/packages/platforms/accton/x86-64/as5916-54xks/modules/builds/x86-64-accton-as5916-54xks-leds.c +@@ -81,7 +81,12 @@ struct as5916_54xks_led_data *data = NULL; + + static struct platform_driver as5916_54xks_led_driver = { + .probe = as5916_54xks_led_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as5916_54xks_led_remove_6_11, ++#else ++ + .remove = as5916_54xks_led_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -436,6 +441,11 @@ static int as5916_54xks_led_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as5916_54xks_led_remove_6_11(struct platform_device *pdev) { ++ as5916_54xks_led_remove(pdev); ++} ++#endif + + static int __init as5916_54xks_led_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as5916-54xks/modules/builds/x86-64-accton-as5916-54xks-psu.c b/packages/platforms/accton/x86-64/as5916-54xks/modules/builds/x86-64-accton-as5916-54xks-psu.c +index 0bd011401d41..7613a3f51d80 100755 +--- a/packages/platforms/accton/x86-64/as5916-54xks/modules/builds/x86-64-accton-as5916-54xks-psu.c ++++ b/packages/platforms/accton/x86-64/as5916-54xks/modules/builds/x86-64-accton-as5916-54xks-psu.c +@@ -116,7 +116,12 @@ struct as5916_54xks_psu_data *data = NULL; + + static struct platform_driver as5916_54xks_psu_driver = { + .probe = as5916_54xks_psu_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as5916_54xks_psu_remove_6_11, ++#else ++ + .remove = as5916_54xks_psu_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -608,6 +613,11 @@ static int as5916_54xks_psu_remove(struct platform_device *pdev) + sysfs_remove_group(&pdev->dev.kobj, &as5916_54xks_psu_group); + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as5916_54xks_psu_remove_6_11(struct platform_device *pdev) { ++ as5916_54xks_psu_remove(pdev); ++} ++#endif + + static int __init as5916_54xks_psu_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as5916-54xks/modules/builds/x86-64-accton-as5916-54xks-sfp.c b/packages/platforms/accton/x86-64/as5916-54xks/modules/builds/x86-64-accton-as5916-54xks-sfp.c +index 6e8f4f281ccd..020cc78aa179 100644 +--- a/packages/platforms/accton/x86-64/as5916-54xks/modules/builds/x86-64-accton-as5916-54xks-sfp.c ++++ b/packages/platforms/accton/x86-64/as5916-54xks/modules/builds/x86-64-accton-as5916-54xks-sfp.c +@@ -160,7 +160,12 @@ struct as5916_54xks_sfp_data *data = NULL; + + static struct platform_driver as5916_54xks_sfp_driver = { + .probe = as5916_54xks_sfp_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as5916_54xks_sfp_remove_6_11, ++#else ++ + .remove = as5916_54xks_sfp_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -2227,6 +2232,11 @@ static int as5916_54xks_sfp_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as5916_54xks_sfp_remove_6_11(struct platform_device *pdev) { ++ as5916_54xks_sfp_remove(pdev); ++} ++#endif + + static int __init as5916_54xks_sfp_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as5916-54xks/modules/builds/x86-64-accton-as5916-54xks-sys.c b/packages/platforms/accton/x86-64/as5916-54xks/modules/builds/x86-64-accton-as5916-54xks-sys.c +index c711a0f4a51f..bc1d865519d5 100644 +--- a/packages/platforms/accton/x86-64/as5916-54xks/modules/builds/x86-64-accton-as5916-54xks-sys.c ++++ b/packages/platforms/accton/x86-64/as5916-54xks/modules/builds/x86-64-accton-as5916-54xks-sys.c +@@ -126,7 +126,12 @@ struct as5916_54xks_sys_data *data = NULL; + + static struct platform_driver as5916_54xks_sys_driver = { + .probe = as5916_54xks_sys_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as5916_54xks_sys_remove_6_11, ++#else ++ + .remove = as5916_54xks_sys_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -980,6 +985,11 @@ static int as5916_54xks_sys_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as5916_54xks_sys_remove_6_11(struct platform_device *pdev) { ++ as5916_54xks_sys_remove(pdev); ++} ++#endif + + static int __init as5916_54xks_sys_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as5916-54xks/modules/builds/x86-64-accton-as5916-54xks-thermal.c b/packages/platforms/accton/x86-64/as5916-54xks/modules/builds/x86-64-accton-as5916-54xks-thermal.c +index 22725c70fa6e..a627777b2f92 100644 +--- a/packages/platforms/accton/x86-64/as5916-54xks/modules/builds/x86-64-accton-as5916-54xks-thermal.c ++++ b/packages/platforms/accton/x86-64/as5916-54xks/modules/builds/x86-64-accton-as5916-54xks-thermal.c +@@ -79,7 +79,12 @@ struct as5916_54xks_thermal_data *data = NULL; + + static struct platform_driver as5916_54xks_thermal_driver = { + .probe = as5916_54xks_thermal_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as5916_54xks_thermal_remove_6_11, ++#else ++ + .remove = as5916_54xks_thermal_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -313,6 +318,11 @@ static int as5916_54xks_thermal_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as5916_54xks_thermal_remove_6_11(struct platform_device *pdev) { ++ as5916_54xks_thermal_remove(pdev); ++} ++#endif + + static int __init as5916_54xks_thermal_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as5916-54xl/modules/builds/x86-64-accton-as5916-54xl-fan.c b/packages/platforms/accton/x86-64/as5916-54xl/modules/builds/x86-64-accton-as5916-54xl-fan.c +index 47f709022b8b..3e8a794a9540 100755 +--- a/packages/platforms/accton/x86-64/as5916-54xl/modules/builds/x86-64-accton-as5916-54xl-fan.c ++++ b/packages/platforms/accton/x86-64/as5916-54xl/modules/builds/x86-64-accton-as5916-54xl-fan.c +@@ -101,7 +101,13 @@ struct as5916_54xl_fan_data *data = NULL; + + static struct platform_driver as5916_54xl_fan_driver = { + .probe = as5916_54xl_fan_probe, +- .remove = as5916_54xl_fan_remove, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as5916_54xl_fan_remove_6_11, ++#else ++ ++ .remove = as5916_54xl_fan_remove, ++#endif ++ + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -457,7 +463,12 @@ static int as5916_54xl_fan_remove(struct platform_device *pdev) + sysfs_remove_group(&pdev->dev.kobj, &as5916_54xl_fan_group); + + return 0; +-} ++} ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as5916_54xl_fan_remove_6_11(struct platform_device *pdev) { ++ as5916_54xl_fan_remove(pdev); ++} ++#endif + + static int __init as5916_54xl_fan_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as5916-54xl/modules/builds/x86-64-accton-as5916-54xl-leds.c b/packages/platforms/accton/x86-64/as5916-54xl/modules/builds/x86-64-accton-as5916-54xl-leds.c +index 09d0cd01f4e9..89775d3e3b81 100755 +--- a/packages/platforms/accton/x86-64/as5916-54xl/modules/builds/x86-64-accton-as5916-54xl-leds.c ++++ b/packages/platforms/accton/x86-64/as5916-54xl/modules/builds/x86-64-accton-as5916-54xl-leds.c +@@ -80,7 +80,13 @@ struct as5916_54xl_led_data *data = NULL; + + static struct platform_driver as5916_54xl_led_driver = { + .probe = as5916_54xl_led_probe, +- .remove = as5916_54xl_led_remove, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as5916_54xl_led_remove_6_11, ++#else ++ ++ .remove = as5916_54xl_led_remove, ++#endif ++ + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -409,7 +415,12 @@ static int as5916_54xl_led_remove(struct platform_device *pdev) + sysfs_remove_group(&pdev->dev.kobj, &as5916_54xl_led_group); + + return 0; +-} ++} ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as5916_54xl_led_remove_6_11(struct platform_device *pdev) { ++ as5916_54xl_led_remove(pdev); ++} ++#endif + + static int __init as5916_54xl_led_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as5916-54xl/modules/builds/x86-64-accton-as5916-54xl-psu.c b/packages/platforms/accton/x86-64/as5916-54xl/modules/builds/x86-64-accton-as5916-54xl-psu.c +index c1f467c33028..0c8440537195 100755 +--- a/packages/platforms/accton/x86-64/as5916-54xl/modules/builds/x86-64-accton-as5916-54xl-psu.c ++++ b/packages/platforms/accton/x86-64/as5916-54xl/modules/builds/x86-64-accton-as5916-54xl-psu.c +@@ -115,7 +115,13 @@ struct as5916_54xl_psu_data *data = NULL; + + static struct platform_driver as5916_54xl_psu_driver = { + .probe = as5916_54xl_psu_probe, +- .remove = as5916_54xl_psu_remove, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as5916_54xl_psu_remove_6_11, ++#else ++ ++ .remove = as5916_54xl_psu_remove, ++#endif ++ + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -581,7 +587,12 @@ static int as5916_54xl_psu_remove(struct platform_device *pdev) + { + sysfs_remove_group(&pdev->dev.kobj, &as5916_54xl_psu_group); + return 0; +-} ++} ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as5916_54xl_psu_remove_6_11(struct platform_device *pdev) { ++ as5916_54xl_psu_remove(pdev); ++} ++#endif + + static int __init as5916_54xl_psu_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as5916-54xl/modules/builds/x86-64-accton-as5916-54xl-sfp.c b/packages/platforms/accton/x86-64/as5916-54xl/modules/builds/x86-64-accton-as5916-54xl-sfp.c +index a6f8410866d0..594670a85eb1 100644 +--- a/packages/platforms/accton/x86-64/as5916-54xl/modules/builds/x86-64-accton-as5916-54xl-sfp.c ++++ b/packages/platforms/accton/x86-64/as5916-54xl/modules/builds/x86-64-accton-as5916-54xl-sfp.c +@@ -158,7 +158,13 @@ struct as5916_54xl_sfp_data *data = NULL; + + static struct platform_driver as5916_54xl_sfp_driver = { + .probe = as5916_54xl_sfp_probe, +- .remove = as5916_54xl_sfp_remove, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as5916_54xl_sfp_remove_6_11, ++#else ++ ++ .remove = as5916_54xl_sfp_remove, ++#endif ++ + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -1980,7 +1986,12 @@ static int as5916_54xl_sfp_remove(struct platform_device *pdev) + + sysfs_remove_group(&pdev->dev.kobj, &as5916_54xl_sfp_group); + return 0; +-} ++} ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as5916_54xl_sfp_remove_6_11(struct platform_device *pdev) { ++ as5916_54xl_sfp_remove(pdev); ++} ++#endif + + static int __init as5916_54xl_sfp_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as5916-54xl/modules/builds/x86-64-accton-as5916-54xl-sys.c b/packages/platforms/accton/x86-64/as5916-54xl/modules/builds/x86-64-accton-as5916-54xl-sys.c +index 9759b99206f4..a6caed4860bc 100644 +--- a/packages/platforms/accton/x86-64/as5916-54xl/modules/builds/x86-64-accton-as5916-54xl-sys.c ++++ b/packages/platforms/accton/x86-64/as5916-54xl/modules/builds/x86-64-accton-as5916-54xl-sys.c +@@ -121,7 +121,13 @@ struct as5916_54xl_sys_data *data = NULL; + + static struct platform_driver as5916_54xl_sys_driver = { + .probe = as5916_54xl_sys_probe, +- .remove = as5916_54xl_sys_remove, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as5916_54xl_sys_remove_6_11, ++#else ++ ++ .remove = as5916_54xl_sys_remove, ++#endif ++ + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -790,7 +796,12 @@ static int as5916_54xl_sys_remove(struct platform_device *pdev) + sysfs_remove_group(&pdev->dev.kobj, &as5916_54xl_sys_group); + + return 0; +-} ++} ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as5916_54xl_sys_remove_6_11(struct platform_device *pdev) { ++ as5916_54xl_sys_remove(pdev); ++} ++#endif + + static int __init as5916_54xl_sys_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as5916-54xl/modules/builds/x86-64-accton-as5916-54xl-thermal.c b/packages/platforms/accton/x86-64/as5916-54xl/modules/builds/x86-64-accton-as5916-54xl-thermal.c +index 5c797d73e48b..7388d24727b0 100755 +--- a/packages/platforms/accton/x86-64/as5916-54xl/modules/builds/x86-64-accton-as5916-54xl-thermal.c ++++ b/packages/platforms/accton/x86-64/as5916-54xl/modules/builds/x86-64-accton-as5916-54xl-thermal.c +@@ -78,7 +78,13 @@ struct as5916_54xl_thermal_data *data = NULL; + + static struct platform_driver as5916_54xl_thermal_driver = { + .probe = as5916_54xl_thermal_probe, +- .remove = as5916_54xl_thermal_remove, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as5916_54xl_thermal_remove_6_11, ++#else ++ ++ .remove = as5916_54xl_thermal_remove, ++#endif ++ + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -286,7 +292,12 @@ static int as5916_54xl_thermal_remove(struct platform_device *pdev) + sysfs_remove_group(&pdev->dev.kobj, &as5916_54xl_thermal_group); + + return 0; +-} ++} ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as5916_54xl_thermal_remove_6_11(struct platform_device *pdev) { ++ as5916_54xl_thermal_remove(pdev); ++} ++#endif + + static int __init as5916_54xl_thermal_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as5916-54xm/modules/builds/x86-64-accton-as5916-54xm-leds.c b/packages/platforms/accton/x86-64/as5916-54xm/modules/builds/x86-64-accton-as5916-54xm-leds.c +index 04f392609e62..176665811f8c 100644 +--- a/packages/platforms/accton/x86-64/as5916-54xm/modules/builds/x86-64-accton-as5916-54xm-leds.c ++++ b/packages/platforms/accton/x86-64/as5916-54xm/modules/builds/x86-64-accton-as5916-54xm-leds.c +@@ -26,6 +26,7 @@ + #include + #include + #include ++#include + + #define DRVNAME "accton_as5916_54xm_led" + +@@ -318,10 +319,20 @@ static int accton_as5916_54xm_led_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void accton_as5916_54xm_led_remove_6_11(struct platform_device *pdev) { ++ accton_as5916_54xm_led_remove(pdev); ++} ++#endif + + static struct platform_driver accton_as5916_54xm_led_driver = { + .probe = accton_as5916_54xm_led_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = accton_as5916_54xm_led_remove_6_11, ++#else ++ + .remove = accton_as5916_54xm_led_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +diff --git a/packages/platforms/accton/x86-64/as6712-32x/modules/builds/x86-64-accton-as6712-32x-fan.c b/packages/platforms/accton/x86-64/as6712-32x/modules/builds/x86-64-accton-as6712-32x-fan.c +index 3b95f5bd8258..331b02c77499 100644 +--- a/packages/platforms/accton/x86-64/as6712-32x/modules/builds/x86-64-accton-as6712-32x-fan.c ++++ b/packages/platforms/accton/x86-64/as6712-32x/modules/builds/x86-64-accton-as6712-32x-fan.c +@@ -33,6 +33,7 @@ + #include + #include + #include ++#include + + #define FAN_MAX_NUMBER 5 + #define FAN_SPEED_CPLD_TO_RPM_STEP 150 +@@ -382,12 +383,22 @@ static int accton_as6712_32x_fan_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void accton_as6712_32x_fan_remove_6_11(struct platform_device *pdev) { ++ accton_as6712_32x_fan_remove(pdev); ++} ++#endif + + #define DRVNAME "as6712_32x_fan" + + static struct platform_driver accton_as6712_32x_fan_driver = { + .probe = accton_as6712_32x_fan_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = accton_as6712_32x_fan_remove_6_11, ++#else ++ + .remove = accton_as6712_32x_fan_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +diff --git a/packages/platforms/accton/x86-64/as6712-32x/modules/builds/x86-64-accton-as6712-32x-leds.c b/packages/platforms/accton/x86-64/as6712-32x/modules/builds/x86-64-accton-as6712-32x-leds.c +index 2d76b3662475..22866f2efd92 100644 +--- a/packages/platforms/accton/x86-64/as6712-32x/modules/builds/x86-64-accton-as6712-32x-leds.c ++++ b/packages/platforms/accton/x86-64/as6712-32x/modules/builds/x86-64-accton-as6712-32x-leds.c +@@ -28,6 +28,7 @@ + #include + #include + #include ++#include + + extern int as6712_32x_cpld_read (unsigned short cpld_addr, u8 reg); + extern int as6712_32x_cpld_write(unsigned short cpld_addr, u8 reg, u8 value); +@@ -550,10 +551,20 @@ static int accton_as6712_32x_led_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void accton_as6712_32x_led_remove_6_11(struct platform_device *pdev) { ++ accton_as6712_32x_led_remove(pdev); ++} ++#endif + + static struct platform_driver accton_as6712_32x_led_driver = { + .probe = accton_as6712_32x_led_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = accton_as6712_32x_led_remove_6_11, ++#else ++ + .remove = accton_as6712_32x_led_remove, ++#endif + .suspend = accton_as6712_32x_led_suspend, + .resume = accton_as6712_32x_led_resume, + .driver = { +diff --git a/packages/platforms/accton/x86-64/as6812-32x/modules/builds/x86-64-accton-as6812-32x-fan.c b/packages/platforms/accton/x86-64/as6812-32x/modules/builds/x86-64-accton-as6812-32x-fan.c +index 9a31c4bc822d..3db7427e4391 100644 +--- a/packages/platforms/accton/x86-64/as6812-32x/modules/builds/x86-64-accton-as6812-32x-fan.c ++++ b/packages/platforms/accton/x86-64/as6812-32x/modules/builds/x86-64-accton-as6812-32x-fan.c +@@ -33,6 +33,7 @@ + #include + #include + #include ++#include + + #define FAN_MAX_NUMBER 5 + #define FAN_SPEED_CPLD_TO_RPM_STEP 150 +@@ -381,12 +382,22 @@ static int accton_as6812_32x_fan_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void accton_as6812_32x_fan_remove_6_11(struct platform_device *pdev) { ++ accton_as6812_32x_fan_remove(pdev); ++} ++#endif + + #define DRVNAME "as6812_32x_fan" + + static struct platform_driver accton_as6812_32x_fan_driver = { + .probe = accton_as6812_32x_fan_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = accton_as6812_32x_fan_remove_6_11, ++#else ++ + .remove = accton_as6812_32x_fan_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +diff --git a/packages/platforms/accton/x86-64/as6812-32x/modules/builds/x86-64-accton-as6812-32x-leds.c b/packages/platforms/accton/x86-64/as6812-32x/modules/builds/x86-64-accton-as6812-32x-leds.c +index 0d90208c7d80..49409838742c 100644 +--- a/packages/platforms/accton/x86-64/as6812-32x/modules/builds/x86-64-accton-as6812-32x-leds.c ++++ b/packages/platforms/accton/x86-64/as6812-32x/modules/builds/x86-64-accton-as6812-32x-leds.c +@@ -28,6 +28,7 @@ + #include + #include + #include ++#include + + extern int as6812_32x_cpld_read (unsigned short cpld_addr, u8 reg); + extern int as6812_32x_cpld_write(unsigned short cpld_addr, u8 reg, u8 value); +@@ -550,10 +551,20 @@ static int accton_as6812_32x_led_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void accton_as6812_32x_led_remove_6_11(struct platform_device *pdev) { ++ accton_as6812_32x_led_remove(pdev); ++} ++#endif + + static struct platform_driver accton_as6812_32x_led_driver = { + .probe = accton_as6812_32x_led_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = accton_as6812_32x_led_remove_6_11, ++#else ++ + .remove = accton_as6812_32x_led_remove, ++#endif + .suspend = accton_as6812_32x_led_suspend, + .resume = accton_as6812_32x_led_resume, + .driver = { +diff --git a/packages/platforms/accton/x86-64/as7112-54x/modules/builds/x86-64-accton-as7112-54x-led.c b/packages/platforms/accton/x86-64/as7112-54x/modules/builds/x86-64-accton-as7112-54x-led.c +index cac138c20083..ffb38d46c336 100755 +--- a/packages/platforms/accton/x86-64/as7112-54x/modules/builds/x86-64-accton-as7112-54x-led.c ++++ b/packages/platforms/accton/x86-64/as7112-54x/modules/builds/x86-64-accton-as7112-54x-led.c +@@ -26,6 +26,7 @@ + #include + #include + #include ++#include + + #define DRVNAME "as7112_54x_led" + +@@ -350,9 +351,19 @@ static int as7112_54x_led_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as7112_54x_led_remove_6_11(struct platform_device *pdev) { ++ as7112_54x_led_remove(pdev); ++} ++#endif + static struct platform_driver as7112_54x_led_driver = { + .probe = as7112_54x_led_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as7112_54x_led_remove_6_11, ++#else ++ + .remove = as7112_54x_led_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +diff --git a/packages/platforms/accton/x86-64/as7312-54x/modules/builds/x86-64-accton-as7312-54x-leds.c b/packages/platforms/accton/x86-64/as7312-54x/modules/builds/x86-64-accton-as7312-54x-leds.c +index f10a55674df9..70ca9179fdd2 100644 +--- a/packages/platforms/accton/x86-64/as7312-54x/modules/builds/x86-64-accton-as7312-54x-leds.c ++++ b/packages/platforms/accton/x86-64/as7312-54x/modules/builds/x86-64-accton-as7312-54x-leds.c +@@ -29,6 +29,7 @@ + #include + #include + #include ++#include + + extern int as7312_54x_cpld_read (unsigned short cpld_addr, u8 reg); + extern int as7312_54x_cpld_write(unsigned short cpld_addr, u8 reg, u8 value); +@@ -376,10 +377,20 @@ static int accton_as7312_54x_led_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void accton_as7312_54x_led_remove_6_11(struct platform_device *pdev) { ++ accton_as7312_54x_led_remove(pdev); ++} ++#endif + + static struct platform_driver accton_as7312_54x_led_driver = { + .probe = accton_as7312_54x_led_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = accton_as7312_54x_led_remove_6_11, ++#else ++ + .remove = accton_as7312_54x_led_remove, ++#endif + .suspend = accton_as7312_54x_led_suspend, + .resume = accton_as7312_54x_led_resume, + .driver = { +diff --git a/packages/platforms/accton/x86-64/as7312-54xs/modules/builds/x86-64-accton-as7312-54xs-leds.c b/packages/platforms/accton/x86-64/as7312-54xs/modules/builds/x86-64-accton-as7312-54xs-leds.c +index 7c4321e6b5df..c4f07287cb40 100644 +--- a/packages/platforms/accton/x86-64/as7312-54xs/modules/builds/x86-64-accton-as7312-54xs-leds.c ++++ b/packages/platforms/accton/x86-64/as7312-54xs/modules/builds/x86-64-accton-as7312-54xs-leds.c +@@ -29,6 +29,7 @@ + #include + #include + #include ++#include + + extern int as7312_54xs_cpld_read (unsigned short cpld_addr, u8 reg); + extern int as7312_54xs_cpld_write(unsigned short cpld_addr, u8 reg, u8 value); +@@ -376,10 +377,20 @@ static int accton_as7312_54xs_led_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void accton_as7312_54xs_led_remove_6_11(struct platform_device *pdev) { ++ accton_as7312_54xs_led_remove(pdev); ++} ++#endif + + static struct platform_driver accton_as7312_54xs_led_driver = { + .probe = accton_as7312_54xs_led_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = accton_as7312_54xs_led_remove_6_11, ++#else ++ + .remove = accton_as7312_54xs_led_remove, ++#endif + .suspend = accton_as7312_54xs_led_suspend, + .resume = accton_as7312_54xs_led_resume, + .driver = { +diff --git a/packages/platforms/accton/x86-64/as7315-27xb/modules/builds/x86-64-accton-as7315-27xb-led.c b/packages/platforms/accton/x86-64/as7315-27xb/modules/builds/x86-64-accton-as7315-27xb-led.c +index dea9ca891a7c..f949d42b398a 100755 +--- a/packages/platforms/accton/x86-64/as7315-27xb/modules/builds/x86-64-accton-as7315-27xb-led.c ++++ b/packages/platforms/accton/x86-64/as7315-27xb/modules/builds/x86-64-accton-as7315-27xb-led.c +@@ -28,6 +28,7 @@ + #include + #include + #include ++#include + + #define DRVNAME "as7315_27xb_led" + #define CPLD_I2C_ADDR 0x64 +@@ -367,10 +368,20 @@ static int accton_as7315_27xb_led_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void accton_as7315_27xb_led_remove_6_11(struct platform_device *pdev) { ++ accton_as7315_27xb_led_remove(pdev); ++} ++#endif + + static struct platform_driver accton_as7315_27xb_led_driver = { + .probe = accton_as7315_27xb_led_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = accton_as7315_27xb_led_remove_6_11, ++#else ++ + .remove = accton_as7315_27xb_led_remove, ++#endif + .suspend = accton_as7315_27xb_led_suspend, + .resume = accton_as7315_27xb_led_resume, + .driver = { +diff --git a/packages/platforms/accton/x86-64/as7315-30x/modules/builds/x86-64-accton-as7315-30x-leds.c b/packages/platforms/accton/x86-64/as7315-30x/modules/builds/x86-64-accton-as7315-30x-leds.c +index eaacb1032160..37c8df5faf5b 100644 +--- a/packages/platforms/accton/x86-64/as7315-30x/modules/builds/x86-64-accton-as7315-30x-leds.c ++++ b/packages/platforms/accton/x86-64/as7315-30x/modules/builds/x86-64-accton-as7315-30x-leds.c +@@ -26,6 +26,7 @@ + #include + #include + #include ++#include + + #define DRVNAME "as7315_30x_led" + +@@ -368,10 +369,20 @@ static int as7315_30x_led_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as7315_30x_led_remove_6_11(struct platform_device *pdev) { ++ as7315_30x_led_remove(pdev); ++} ++#endif + + static struct platform_driver as7315_30x_led_driver = { + .probe = as7315_30x_led_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as7315_30x_led_remove_6_11, ++#else ++ + .remove = as7315_30x_led_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +diff --git a/packages/platforms/accton/x86-64/as7316-26xb/modules/builds/x86-64-accton-as7316-26xb-fan.c b/packages/platforms/accton/x86-64/as7316-26xb/modules/builds/x86-64-accton-as7316-26xb-fan.c +index a4710bcec3b4..c6fcee1ab898 100644 +--- a/packages/platforms/accton/x86-64/as7316-26xb/modules/builds/x86-64-accton-as7316-26xb-fan.c ++++ b/packages/platforms/accton/x86-64/as7316-26xb/modules/builds/x86-64-accton-as7316-26xb-fan.c +@@ -97,7 +97,12 @@ struct as7316_26xb_fan_data *data = NULL; + + static struct platform_driver as7316_26xb_fan_driver = { + .probe = as7316_26xb_fan_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as7316_26xb_fan_remove_6_11, ++#else ++ + .remove = as7316_26xb_fan_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -410,6 +415,11 @@ static int as7316_26xb_fan_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as7316_26xb_fan_remove_6_11(struct platform_device *pdev) { ++ as7316_26xb_fan_remove(pdev); ++} ++#endif + + static int __init as7316_26xb_fan_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as7316-26xb/modules/builds/x86-64-accton-as7316-26xb-led.c b/packages/platforms/accton/x86-64/as7316-26xb/modules/builds/x86-64-accton-as7316-26xb-led.c +index b3a20c2188d3..fe9fc406ec0c 100644 +--- a/packages/platforms/accton/x86-64/as7316-26xb/modules/builds/x86-64-accton-as7316-26xb-led.c ++++ b/packages/platforms/accton/x86-64/as7316-26xb/modules/builds/x86-64-accton-as7316-26xb-led.c +@@ -85,7 +85,12 @@ struct as7316_26xb_led_data *data = NULL; + + static struct platform_driver as7316_26xb_led_driver = { + .probe = as7316_26xb_led_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as7316_26xb_led_remove_6_11, ++#else ++ + .remove = as7316_26xb_led_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -421,6 +426,11 @@ static int as7316_26xb_led_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as7316_26xb_led_remove_6_11(struct platform_device *pdev) { ++ as7316_26xb_led_remove(pdev); ++} ++#endif + + static int __init as7316_26xb_led_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as7316-26xb/modules/builds/x86-64-accton-as7316-26xb-psu.c b/packages/platforms/accton/x86-64/as7316-26xb/modules/builds/x86-64-accton-as7316-26xb-psu.c +index 6fe5e3a966ac..972219cf055d 100644 +--- a/packages/platforms/accton/x86-64/as7316-26xb/modules/builds/x86-64-accton-as7316-26xb-psu.c ++++ b/packages/platforms/accton/x86-64/as7316-26xb/modules/builds/x86-64-accton-as7316-26xb-psu.c +@@ -121,7 +121,12 @@ struct as7316_26xb_psu_data *data = NULL; + + static struct platform_driver as7316_26xb_psu_driver = { + .probe = as7316_26xb_psu_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as7316_26xb_psu_remove_6_11, ++#else ++ + .remove = as7316_26xb_psu_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -613,6 +618,11 @@ static int as7316_26xb_psu_remove(struct platform_device *pdev) + sysfs_remove_group(&pdev->dev.kobj, &as7316_26xb_psu_group); + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as7316_26xb_psu_remove_6_11(struct platform_device *pdev) { ++ as7316_26xb_psu_remove(pdev); ++} ++#endif + + static int __init as7316_26xb_psu_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as7316-26xb/modules/builds/x86-64-accton-as7316-26xb-sfp.c b/packages/platforms/accton/x86-64/as7316-26xb/modules/builds/x86-64-accton-as7316-26xb-sfp.c +index 9432af541288..59874b6c5a6a 100644 +--- a/packages/platforms/accton/x86-64/as7316-26xb/modules/builds/x86-64-accton-as7316-26xb-sfp.c ++++ b/packages/platforms/accton/x86-64/as7316-26xb/modules/builds/x86-64-accton-as7316-26xb-sfp.c +@@ -138,7 +138,12 @@ struct as7316_26xb_sfp_data *data = NULL; + + static struct platform_driver as7316_26xb_sfp_driver = { + .probe = as7316_26xb_sfp_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as7316_26xb_sfp_remove_6_11, ++#else ++ + .remove = as7316_26xb_sfp_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -1509,6 +1514,11 @@ static int as7316_26xb_sfp_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as7316_26xb_sfp_remove_6_11(struct platform_device *pdev) { ++ as7316_26xb_sfp_remove(pdev); ++} ++#endif + + static int __init as7316_26xb_sfp_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as7316-26xb/modules/builds/x86-64-accton-as7316-26xb-sys.c b/packages/platforms/accton/x86-64/as7316-26xb/modules/builds/x86-64-accton-as7316-26xb-sys.c +index 32bda64b209b..d2d262c9ebd5 100644 +--- a/packages/platforms/accton/x86-64/as7316-26xb/modules/builds/x86-64-accton-as7316-26xb-sys.c ++++ b/packages/platforms/accton/x86-64/as7316-26xb/modules/builds/x86-64-accton-as7316-26xb-sys.c +@@ -91,7 +91,12 @@ struct as7316_26xb_sys_data *data = NULL; + + static struct platform_driver as7316_26xb_sys_driver = { + .probe = as7316_26xb_sys_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as7316_26xb_sys_remove_6_11, ++#else ++ + .remove = as7316_26xb_sys_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -432,6 +437,11 @@ static int as7316_26xb_sys_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as7316_26xb_sys_remove_6_11(struct platform_device *pdev) { ++ as7316_26xb_sys_remove(pdev); ++} ++#endif + + static int __init as7316_26xb_sys_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as7316-26xb/modules/builds/x86-64-accton-as7316-26xb-thermal.c b/packages/platforms/accton/x86-64/as7316-26xb/modules/builds/x86-64-accton-as7316-26xb-thermal.c +index fe8ee18cf7e1..7c90d42793b1 100644 +--- a/packages/platforms/accton/x86-64/as7316-26xb/modules/builds/x86-64-accton-as7316-26xb-thermal.c ++++ b/packages/platforms/accton/x86-64/as7316-26xb/modules/builds/x86-64-accton-as7316-26xb-thermal.c +@@ -83,7 +83,12 @@ struct as7316_26xb_thermal_data *data = NULL; + + static struct platform_driver as7316_26xb_thermal_driver = { + .probe = as7316_26xb_thermal_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as7316_26xb_thermal_remove_6_11, ++#else ++ + .remove = as7316_26xb_thermal_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -298,6 +303,11 @@ static int as7316_26xb_thermal_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as7316_26xb_thermal_remove_6_11(struct platform_device *pdev) { ++ as7316_26xb_thermal_remove(pdev); ++} ++#endif + + static int __init as7316_26xb_thermal_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as7326-56x/modules/builds/x86-64-accton-as7326-56x-leds.c b/packages/platforms/accton/x86-64/as7326-56x/modules/builds/x86-64-accton-as7326-56x-leds.c +index 8484531bc63b..dca84b545a69 100644 +--- a/packages/platforms/accton/x86-64/as7326-56x/modules/builds/x86-64-accton-as7326-56x-leds.c ++++ b/packages/platforms/accton/x86-64/as7326-56x/modules/builds/x86-64-accton-as7326-56x-leds.c +@@ -29,6 +29,7 @@ + #include + #include + #include ++#include + + extern int as7326_56x_cpld_read (unsigned short cpld_addr, u8 reg); + extern int as7326_56x_cpld_write(unsigned short cpld_addr, u8 reg, u8 value); +@@ -398,10 +399,20 @@ static int accton_as7326_56x_led_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void accton_as7326_56x_led_remove_6_11(struct platform_device *pdev) { ++ accton_as7326_56x_led_remove(pdev); ++} ++#endif + + static struct platform_driver accton_as7326_56x_led_driver = { + .probe = accton_as7326_56x_led_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = accton_as7326_56x_led_remove_6_11, ++#else ++ + .remove = accton_as7326_56x_led_remove, ++#endif + .suspend = accton_as7326_56x_led_suspend, + .resume = accton_as7326_56x_led_resume, + .driver = { +diff --git a/packages/platforms/accton/x86-64/as7512-32x/modules/builds/x86-64-accton-as7512-32x-leds.c b/packages/platforms/accton/x86-64/as7512-32x/modules/builds/x86-64-accton-as7512-32x-leds.c +index ee7717016688..984d02624ad0 100644 +--- a/packages/platforms/accton/x86-64/as7512-32x/modules/builds/x86-64-accton-as7512-32x-leds.c ++++ b/packages/platforms/accton/x86-64/as7512-32x/modules/builds/x86-64-accton-as7512-32x-leds.c +@@ -29,6 +29,7 @@ + #include + #include + #include ++#include + + extern int as7512_32x_cpld_read(unsigned short cpld_addr, u8 reg); + extern int as7512_32x_cpld_write(unsigned short cpld_addr, u8 reg, u8 value); +@@ -441,10 +442,20 @@ static int accton_as7512_32x_led_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void accton_as7512_32x_led_remove_6_11(struct platform_device *pdev) { ++ accton_as7512_32x_led_remove(pdev); ++} ++#endif + + static struct platform_driver accton_as7512_32x_led_driver = { + .probe = accton_as7512_32x_led_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = accton_as7512_32x_led_remove_6_11, ++#else ++ + .remove = accton_as7512_32x_led_remove, ++#endif + .suspend = accton_as7512_32x_led_suspend, + .resume = accton_as7512_32x_led_resume, + .driver = { +diff --git a/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/x86-64-accton-as7535-28xb-fan.c b/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/x86-64-accton-as7535-28xb-fan.c +index 5877ea4e917e..6cc44e0ce6ba 100644 +--- a/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/x86-64-accton-as7535-28xb-fan.c ++++ b/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/x86-64-accton-as7535-28xb-fan.c +@@ -116,7 +116,12 @@ struct as7535_28xb_fan_data *data = NULL; + + static struct platform_driver as7535_28xb_fan_driver = { + .probe = as7535_28xb_fan_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as7535_28xb_fan_remove_6_11, ++#else ++ + .remove = as7535_28xb_fan_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -653,6 +658,11 @@ static int as7535_28xb_fan_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as7535_28xb_fan_remove_6_11(struct platform_device *pdev) { ++ as7535_28xb_fan_remove(pdev); ++} ++#endif + + static int __init as7535_28xb_fan_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/x86-64-accton-as7535-28xb-leds.c b/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/x86-64-accton-as7535-28xb-leds.c +index a3e2b145c95e..5a0e34f1a63e 100644 +--- a/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/x86-64-accton-as7535-28xb-leds.c ++++ b/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/x86-64-accton-as7535-28xb-leds.c +@@ -76,7 +76,12 @@ struct as7535_28xb_led_data *data = NULL; + + static struct platform_driver as7535_28xb_led_driver = { + .probe = as7535_28xb_led_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as7535_28xb_led_remove_6_11, ++#else ++ + .remove = as7535_28xb_led_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -483,6 +488,11 @@ static int as7535_28xb_led_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as7535_28xb_led_remove_6_11(struct platform_device *pdev) { ++ as7535_28xb_led_remove(pdev); ++} ++#endif + + static int __init as7535_28xb_led_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/x86-64-accton-as7535-28xb-psu.c b/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/x86-64-accton-as7535-28xb-psu.c +index dd8c9e33e66b..d85ed014f841 100644 +--- a/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/x86-64-accton-as7535-28xb-psu.c ++++ b/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/x86-64-accton-as7535-28xb-psu.c +@@ -185,7 +185,12 @@ struct as7535_28xb_psu_data *data = NULL; + + static struct platform_driver as7535_28xb_psu_driver = { + .probe = as7535_28xb_psu_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as7535_28xb_psu_remove_6_11, ++#else ++ + .remove = as7535_28xb_psu_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -944,6 +949,11 @@ static int as7535_28xb_psu_remove(struct platform_device *pdev) + sysfs_remove_group(&pdev->dev.kobj, &as7535_28xb_psu_group); + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as7535_28xb_psu_remove_6_11(struct platform_device *pdev) { ++ as7535_28xb_psu_remove(pdev); ++} ++#endif + + static int __init as7535_28xb_psu_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/x86-64-accton-as7535-28xb-sys.c b/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/x86-64-accton-as7535-28xb-sys.c +index fb9fb659238d..7fc8068996ce 100644 +--- a/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/x86-64-accton-as7535-28xb-sys.c ++++ b/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/x86-64-accton-as7535-28xb-sys.c +@@ -83,7 +83,12 @@ struct as7535_28xb_sys_data *data = NULL; + + static struct platform_driver as7535_28xb_sys_driver = { + .probe = as7535_28xb_sys_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as7535_28xb_sys_remove_6_11, ++#else ++ + .remove = as7535_28xb_sys_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -406,6 +411,11 @@ static int as7535_28xb_sys_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as7535_28xb_sys_remove_6_11(struct platform_device *pdev) { ++ as7535_28xb_sys_remove(pdev); ++} ++#endif + + static int __init as7535_28xb_sys_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/x86-64-accton-as7535-28xb-thermal.c b/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/x86-64-accton-as7535-28xb-thermal.c +index 715197af9f99..e7d883be5498 100644 +--- a/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/x86-64-accton-as7535-28xb-thermal.c ++++ b/packages/platforms/accton/x86-64/as7535-28xb/modules/builds/x86-64-accton-as7535-28xb-thermal.c +@@ -90,7 +90,12 @@ struct as7535_28xb_thermal_data *data = NULL; + + static struct platform_driver as7535_28xb_thermal_driver = { + .probe = as7535_28xb_thermal_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as7535_28xb_thermal_remove_6_11, ++#else ++ + .remove = as7535_28xb_thermal_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -413,6 +418,11 @@ static int as7535_28xb_thermal_remove(struct platform_device *pdev) + sysfs_remove_group(&pdev->dev.kobj, &as7535_28xb_thermal_group); + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as7535_28xb_thermal_remove_6_11(struct platform_device *pdev) { ++ as7535_28xb_thermal_remove(pdev); ++} ++#endif + + static int __init as7535_28xb_thermal_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as7712-32x/modules/builds/x86-64-accton-as7712-32x-leds.c b/packages/platforms/accton/x86-64/as7712-32x/modules/builds/x86-64-accton-as7712-32x-leds.c +index d7b293540c5e..f3c84f5b2a5f 100644 +--- a/packages/platforms/accton/x86-64/as7712-32x/modules/builds/x86-64-accton-as7712-32x-leds.c ++++ b/packages/platforms/accton/x86-64/as7712-32x/modules/builds/x86-64-accton-as7712-32x-leds.c +@@ -29,6 +29,7 @@ + #include + #include + #include ++#include + + extern int as7712_32x_cpld_read (unsigned short cpld_addr, u8 reg); + extern int as7712_32x_cpld_write(unsigned short cpld_addr, u8 reg, u8 value); +@@ -376,10 +377,20 @@ static int accton_as7712_32x_led_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void accton_as7712_32x_led_remove_6_11(struct platform_device *pdev) { ++ accton_as7712_32x_led_remove(pdev); ++} ++#endif + + static struct platform_driver accton_as7712_32x_led_driver = { + .probe = accton_as7712_32x_led_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = accton_as7712_32x_led_remove_6_11, ++#else ++ + .remove = accton_as7712_32x_led_remove, ++#endif + .suspend = accton_as7712_32x_led_suspend, + .resume = accton_as7712_32x_led_resume, + .driver = { +diff --git a/packages/platforms/accton/x86-64/as7716-24sc/modules/builds/x86-64-accton-as7716-24sc-leds.c b/packages/platforms/accton/x86-64/as7716-24sc/modules/builds/x86-64-accton-as7716-24sc-leds.c +index 4a98c3abb675..e6c8732efb44 100644 +--- a/packages/platforms/accton/x86-64/as7716-24sc/modules/builds/x86-64-accton-as7716-24sc-leds.c ++++ b/packages/platforms/accton/x86-64/as7716-24sc/modules/builds/x86-64-accton-as7716-24sc-leds.c +@@ -28,7 +28,8 @@ + #include + #include + #include +-#include ++#include ++#include + + extern int accton_i2c_cpld_read (unsigned short cpld_addr, u8 reg); + extern int accton_i2c_cpld_write(unsigned short cpld_addr, u8 reg, u8 value); +@@ -373,11 +374,22 @@ static int as7716_24sc_led_remove(struct platform_device *pdev) + } + + return 0; +-} ++} ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as7716_24sc_led_remove_6_11(struct platform_device *pdev) { ++ as7716_24sc_led_remove(pdev); ++} ++#endif + + static struct platform_driver as7716_24sc_led_driver = { + .probe = as7716_24sc_led_probe, +- .remove = as7716_24sc_led_remove, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as7716_24sc_led_remove_6_11, ++#else ++ ++ .remove = as7716_24sc_led_remove, ++#endif ++ + .suspend = as7716_24sc_led_suspend, + .resume = as7716_24sc_led_resume, + .driver = { +diff --git a/packages/platforms/accton/x86-64/as7716-24xc/modules/builds/x86-64-accton-as7716-24xc-leds.c b/packages/platforms/accton/x86-64/as7716-24xc/modules/builds/x86-64-accton-as7716-24xc-leds.c +index 3b5d97412dba..779cfaa3d30d 100644 +--- a/packages/platforms/accton/x86-64/as7716-24xc/modules/builds/x86-64-accton-as7716-24xc-leds.c ++++ b/packages/platforms/accton/x86-64/as7716-24xc/modules/builds/x86-64-accton-as7716-24xc-leds.c +@@ -28,7 +28,8 @@ + #include + #include + #include +-#include ++#include ++#include + + extern int accton_i2c_cpld_read (unsigned short cpld_addr, u8 reg); + extern int accton_i2c_cpld_write(unsigned short cpld_addr, u8 reg, u8 value); +@@ -373,11 +374,22 @@ static int as7716_24xc_led_remove(struct platform_device *pdev) + } + + return 0; +-} ++} ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as7716_24xc_led_remove_6_11(struct platform_device *pdev) { ++ as7716_24xc_led_remove(pdev); ++} ++#endif + + static struct platform_driver as7716_24xc_led_driver = { + .probe = as7716_24xc_led_probe, +- .remove = as7716_24xc_led_remove, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as7716_24xc_led_remove_6_11, ++#else ++ ++ .remove = as7716_24xc_led_remove, ++#endif ++ + .suspend = as7716_24xc_led_suspend, + .resume = as7716_24xc_led_resume, + .driver = { +diff --git a/packages/platforms/accton/x86-64/as7716-32x/modules/builds/x86-64-accton-as7716-32x-leds.c b/packages/platforms/accton/x86-64/as7716-32x/modules/builds/x86-64-accton-as7716-32x-leds.c +index 4b2527682129..340e064da807 100644 +--- a/packages/platforms/accton/x86-64/as7716-32x/modules/builds/x86-64-accton-as7716-32x-leds.c ++++ b/packages/platforms/accton/x86-64/as7716-32x/modules/builds/x86-64-accton-as7716-32x-leds.c +@@ -29,6 +29,7 @@ + #include + #include + #include ++#include + + extern int as7716_32x_cpld_read (unsigned short cpld_addr, u8 reg); + extern int as7716_32x_cpld_write(unsigned short cpld_addr, u8 reg, u8 value); +@@ -376,10 +377,20 @@ static int accton_as7716_32x_led_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void accton_as7716_32x_led_remove_6_11(struct platform_device *pdev) { ++ accton_as7716_32x_led_remove(pdev); ++} ++#endif + + static struct platform_driver accton_as7716_32x_led_driver = { + .probe = accton_as7716_32x_led_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = accton_as7716_32x_led_remove_6_11, ++#else ++ + .remove = accton_as7716_32x_led_remove, ++#endif + .suspend = accton_as7716_32x_led_suspend, + .resume = accton_as7716_32x_led_resume, + .driver = { +diff --git a/packages/platforms/accton/x86-64/as7726-32x/modules/builds/x86-64-accton-as7726-32x-leds.c b/packages/platforms/accton/x86-64/as7726-32x/modules/builds/x86-64-accton-as7726-32x-leds.c +index b6e34ac4f740..fd0aa2822c81 100755 +--- a/packages/platforms/accton/x86-64/as7726-32x/modules/builds/x86-64-accton-as7726-32x-leds.c ++++ b/packages/platforms/accton/x86-64/as7726-32x/modules/builds/x86-64-accton-as7726-32x-leds.c +@@ -29,6 +29,7 @@ + #include + #include + #include ++#include + + extern int as7726_32x_cpld_read (unsigned short cpld_addr, u8 reg); + extern int as7726_32x_cpld_write(unsigned short cpld_addr, u8 reg, u8 value); +@@ -375,10 +376,20 @@ static int accton_as7726_32x_led_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void accton_as7726_32x_led_remove_6_11(struct platform_device *pdev) { ++ accton_as7726_32x_led_remove(pdev); ++} ++#endif + + static struct platform_driver accton_as7726_32x_led_driver = { + .probe = accton_as7726_32x_led_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = accton_as7726_32x_led_remove_6_11, ++#else ++ + .remove = accton_as7726_32x_led_remove, ++#endif + .suspend = accton_as7726_32x_led_suspend, + .resume = accton_as7726_32x_led_resume, + .driver = { +diff --git a/packages/platforms/accton/x86-64/as7816-64x/modules/builds/x86-64-accton-as7816-64x-leds.c b/packages/platforms/accton/x86-64/as7816-64x/modules/builds/x86-64-accton-as7816-64x-leds.c +index 4ff17221c467..863a105cd6b7 100644 +--- a/packages/platforms/accton/x86-64/as7816-64x/modules/builds/x86-64-accton-as7816-64x-leds.c ++++ b/packages/platforms/accton/x86-64/as7816-64x/modules/builds/x86-64-accton-as7816-64x-leds.c +@@ -29,6 +29,7 @@ + #include + #include + #include ++#include + + extern int as7816_64x_cpld_read (unsigned short cpld_addr, u8 reg); + extern int as7816_64x_cpld_write(unsigned short cpld_addr, u8 reg, u8 value); +@@ -397,10 +398,20 @@ static int as7816_64x_led_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as7816_64x_led_remove_6_11(struct platform_device *pdev) { ++ as7816_64x_led_remove(pdev); ++} ++#endif + + static struct platform_driver as7816_64x_led_driver = { + .probe = as7816_64x_led_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as7816_64x_led_remove_6_11, ++#else ++ + .remove = as7816_64x_led_remove, ++#endif + .suspend = as7816_64x_led_suspend, + .resume = as7816_64x_led_resume, + .driver = { +diff --git a/packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/x86-64-accton-as7926-40xfb-fan.c b/packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/x86-64-accton-as7926-40xfb-fan.c +index ad9c963fa637..8061097a25db 100644 +--- a/packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/x86-64-accton-as7926-40xfb-fan.c ++++ b/packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/x86-64-accton-as7926-40xfb-fan.c +@@ -121,7 +121,12 @@ struct as7926_40xfb_fan_data *data = NULL; + + static struct platform_driver as7926_40xfb_fan_driver = { + .probe = as7926_40xfb_fan_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as7926_40xfb_fan_remove_6_11, ++#else ++ + .remove = as7926_40xfb_fan_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -682,6 +687,11 @@ static int as7926_40xfb_fan_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as7926_40xfb_fan_remove_6_11(struct platform_device *pdev) { ++ as7926_40xfb_fan_remove(pdev); ++} ++#endif + + static int __init as7926_40xfb_fan_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/x86-64-accton-as7926-40xfb-leds.c b/packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/x86-64-accton-as7926-40xfb-leds.c +index 5df944bd2780..c0e87578a3ef 100644 +--- a/packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/x86-64-accton-as7926-40xfb-leds.c ++++ b/packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/x86-64-accton-as7926-40xfb-leds.c +@@ -80,7 +80,12 @@ struct as7926_40xfb_led_data *data = NULL; + + static struct platform_driver as7926_40xfb_led_driver = { + .probe = as7926_40xfb_led_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as7926_40xfb_led_remove_6_11, ++#else ++ + .remove = as7926_40xfb_led_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -453,6 +458,11 @@ static int as7926_40xfb_led_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as7926_40xfb_led_remove_6_11(struct platform_device *pdev) { ++ as7926_40xfb_led_remove(pdev); ++} ++#endif + + static int __init as7926_40xfb_led_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/x86-64-accton-as7926-40xfb-psu.c b/packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/x86-64-accton-as7926-40xfb-psu.c +index b9bcdf183054..b1ea03379688 100644 +--- a/packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/x86-64-accton-as7926-40xfb-psu.c ++++ b/packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/x86-64-accton-as7926-40xfb-psu.c +@@ -176,7 +176,12 @@ struct as7926_40xfb_psu_data *data = NULL; + + static struct platform_driver as7926_40xfb_psu_driver = { + .probe = as7926_40xfb_psu_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as7926_40xfb_psu_remove_6_11, ++#else ++ + .remove = as7926_40xfb_psu_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -866,6 +871,11 @@ static int as7926_40xfb_psu_remove(struct platform_device *pdev) + sysfs_remove_group(&pdev->dev.kobj, &as7926_40xfb_psu_group); + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as7926_40xfb_psu_remove_6_11(struct platform_device *pdev) { ++ as7926_40xfb_psu_remove(pdev); ++} ++#endif + + static int __init as7926_40xfb_psu_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/x86-64-accton-as7926-40xfb-sys.c b/packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/x86-64-accton-as7926-40xfb-sys.c +index fe909e7d75a2..deed5c2639e7 100644 +--- a/packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/x86-64-accton-as7926-40xfb-sys.c ++++ b/packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/x86-64-accton-as7926-40xfb-sys.c +@@ -82,7 +82,12 @@ struct as7926_40xfb_sys_data *data = NULL; + + static struct platform_driver as7926_40xfb_sys_driver = { + .probe = as7926_40xfb_sys_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as7926_40xfb_sys_remove_6_11, ++#else ++ + .remove = as7926_40xfb_sys_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -339,6 +344,11 @@ static int as7926_40xfb_sys_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as7926_40xfb_sys_remove_6_11(struct platform_device *pdev) { ++ as7926_40xfb_sys_remove(pdev); ++} ++#endif + + static int __init as7926_40xfb_sys_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/x86-64-accton-as7926-40xfb-thermal.c b/packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/x86-64-accton-as7926-40xfb-thermal.c +index abec98eb4d3e..66089585f8a1 100644 +--- a/packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/x86-64-accton-as7926-40xfb-thermal.c ++++ b/packages/platforms/accton/x86-64/as7926-40xfb/modules/builds/x86-64-accton-as7926-40xfb-thermal.c +@@ -91,7 +91,12 @@ struct as7926_40xfb_thermal_data *data = NULL; + + static struct platform_driver as7926_40xfb_thermal_driver = { + .probe = as7926_40xfb_thermal_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as7926_40xfb_thermal_remove_6_11, ++#else ++ + .remove = as7926_40xfb_thermal_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -393,6 +398,11 @@ static int as7926_40xfb_thermal_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as7926_40xfb_thermal_remove_6_11(struct platform_device *pdev) { ++ as7926_40xfb_thermal_remove(pdev); ++} ++#endif + + static int __init as7926_40xfb_thermal_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as7926-40xke/modules/builds/x86-64-accton-as7926-40xke-leds.c b/packages/platforms/accton/x86-64/as7926-40xke/modules/builds/x86-64-accton-as7926-40xke-leds.c +index e622da8e5fe9..b817fc237dc6 100755 +--- a/packages/platforms/accton/x86-64/as7926-40xke/modules/builds/x86-64-accton-as7926-40xke-leds.c ++++ b/packages/platforms/accton/x86-64/as7926-40xke/modules/builds/x86-64-accton-as7926-40xke-leds.c +@@ -29,6 +29,7 @@ + #include + #include + #include ++#include + + extern int as7926_40xke_cpld_read(int bus_num, unsigned short cpld_addr, u8 reg); + extern int as7926_40xke_cpld_write(int bus_num, unsigned short cpld_addr, u8 reg, u8 value); +@@ -425,10 +426,20 @@ static int as7926_40xke_led_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as7926_40xke_led_remove_6_11(struct platform_device *pdev) { ++ as7926_40xke_led_remove(pdev); ++} ++#endif + + static struct platform_driver as7926_40xke_led_driver = { + .probe = as7926_40xke_led_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as7926_40xke_led_remove_6_11, ++#else ++ + .remove = as7926_40xke_led_remove, ++#endif + .suspend = as7926_40xke_led_suspend, + .resume = as7926_40xke_led_resume, + .driver = { +diff --git a/packages/platforms/accton/x86-64/as7926-80xk/modules/builds/x86-64-accton-as7926-80xk-leds.c b/packages/platforms/accton/x86-64/as7926-80xk/modules/builds/x86-64-accton-as7926-80xk-leds.c +index cc60914395d4..348326d7fab2 100644 +--- a/packages/platforms/accton/x86-64/as7926-80xk/modules/builds/x86-64-accton-as7926-80xk-leds.c ++++ b/packages/platforms/accton/x86-64/as7926-80xk/modules/builds/x86-64-accton-as7926-80xk-leds.c +@@ -29,6 +29,7 @@ + #include + #include + #include ++#include + + extern int as7926_80xk_cpld_read(int bus_num, unsigned short cpld_addr, u8 reg); + extern int as7926_80xk_cpld_write(int bus_num, unsigned short cpld_addr, u8 reg, u8 value); +@@ -398,10 +399,20 @@ static int as7926_80xk_led_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as7926_80xk_led_remove_6_11(struct platform_device *pdev) { ++ as7926_80xk_led_remove(pdev); ++} ++#endif + + static struct platform_driver as7926_80xk_led_driver = { + .probe = as7926_80xk_led_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as7926_80xk_led_remove_6_11, ++#else ++ + .remove = as7926_80xk_led_remove, ++#endif + .suspend = as7926_80xk_led_suspend, + .resume = as7926_80xk_led_resume, + .driver = { +diff --git a/packages/platforms/accton/x86-64/as7936-22xke/modules/builds/x86-64-accton-as7936-22xke-leds.c b/packages/platforms/accton/x86-64/as7936-22xke/modules/builds/x86-64-accton-as7936-22xke-leds.c +index ea0aa0655bd8..21d0524c9f00 100644 +--- a/packages/platforms/accton/x86-64/as7936-22xke/modules/builds/x86-64-accton-as7936-22xke-leds.c ++++ b/packages/platforms/accton/x86-64/as7936-22xke/modules/builds/x86-64-accton-as7936-22xke-leds.c +@@ -30,6 +30,7 @@ + #include + #include + #include ++#include + + extern int as7936_22xke_cpld_read(int bus_num, unsigned short cpld_addr, u8 reg); + extern int as7936_22xke_cpld_write(int bus_num, unsigned short cpld_addr, u8 reg, u8 value); +@@ -454,10 +455,20 @@ static int as7936_22xke_led_remove(struct platform_device *pdev) + } + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as7936_22xke_led_remove_6_11(struct platform_device *pdev) { ++ as7936_22xke_led_remove(pdev); ++} ++#endif + + static struct platform_driver as7936_22xke_led_driver = { + .probe = as7936_22xke_led_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as7936_22xke_led_remove_6_11, ++#else ++ + .remove = as7936_22xke_led_remove, ++#endif + .suspend = as7936_22xke_led_suspend, + .resume = as7936_22xke_led_resume, + .driver = { +diff --git a/packages/platforms/accton/x86-64/as7946-30xb/modules/builds/x86-64-accton-as7946-30xb-fan.c b/packages/platforms/accton/x86-64/as7946-30xb/modules/builds/x86-64-accton-as7946-30xb-fan.c +index 6d67b5dac907..0180cd941c6b 100644 +--- a/packages/platforms/accton/x86-64/as7946-30xb/modules/builds/x86-64-accton-as7946-30xb-fan.c ++++ b/packages/platforms/accton/x86-64/as7946-30xb/modules/builds/x86-64-accton-as7946-30xb-fan.c +@@ -109,7 +109,12 @@ struct as7946_30xb_fan_data *data = NULL; + + static struct platform_driver as7946_30xb_fan_driver = { + .probe = as7946_30xb_fan_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as7946_30xb_fan_remove_6_11, ++#else ++ + .remove = as7946_30xb_fan_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -576,6 +581,11 @@ static int as7946_30xb_fan_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as7946_30xb_fan_remove_6_11(struct platform_device *pdev) { ++ as7946_30xb_fan_remove(pdev); ++} ++#endif + + static int __init as7946_30xb_fan_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as7946-30xb/modules/builds/x86-64-accton-as7946-30xb-leds.c b/packages/platforms/accton/x86-64/as7946-30xb/modules/builds/x86-64-accton-as7946-30xb-leds.c +index 54fea4737a46..19ee9183508d 100644 +--- a/packages/platforms/accton/x86-64/as7946-30xb/modules/builds/x86-64-accton-as7946-30xb-leds.c ++++ b/packages/platforms/accton/x86-64/as7946-30xb/modules/builds/x86-64-accton-as7946-30xb-leds.c +@@ -76,7 +76,12 @@ struct as7946_30xb_led_data *data = NULL; + + static struct platform_driver as7946_30xb_led_driver = { + .probe = as7946_30xb_led_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as7946_30xb_led_remove_6_11, ++#else ++ + .remove = as7946_30xb_led_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -492,6 +497,11 @@ static int as7946_30xb_led_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as7946_30xb_led_remove_6_11(struct platform_device *pdev) { ++ as7946_30xb_led_remove(pdev); ++} ++#endif + + static int __init as7946_30xb_led_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as7946-30xb/modules/builds/x86-64-accton-as7946-30xb-psu.c b/packages/platforms/accton/x86-64/as7946-30xb/modules/builds/x86-64-accton-as7946-30xb-psu.c +index cae7c50a5d6b..7a89831c5107 100644 +--- a/packages/platforms/accton/x86-64/as7946-30xb/modules/builds/x86-64-accton-as7946-30xb-psu.c ++++ b/packages/platforms/accton/x86-64/as7946-30xb/modules/builds/x86-64-accton-as7946-30xb-psu.c +@@ -135,7 +135,12 @@ struct as7946_30xb_psu_data *data = NULL; + + static struct platform_driver as7946_30xb_psu_driver = { + .probe = as7946_30xb_psu_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as7946_30xb_psu_remove_6_11, ++#else ++ + .remove = as7946_30xb_psu_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -649,6 +654,11 @@ static int as7946_30xb_psu_remove(struct platform_device *pdev) + sysfs_remove_group(&pdev->dev.kobj, &as7946_30xb_psu_group); + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as7946_30xb_psu_remove_6_11(struct platform_device *pdev) { ++ as7946_30xb_psu_remove(pdev); ++} ++#endif + + static int __init as7946_30xb_psu_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as7946-30xb/modules/builds/x86-64-accton-as7946-30xb-sys.c b/packages/platforms/accton/x86-64/as7946-30xb/modules/builds/x86-64-accton-as7946-30xb-sys.c +index fdd6ac5d28fd..24b1e022428e 100644 +--- a/packages/platforms/accton/x86-64/as7946-30xb/modules/builds/x86-64-accton-as7946-30xb-sys.c ++++ b/packages/platforms/accton/x86-64/as7946-30xb/modules/builds/x86-64-accton-as7946-30xb-sys.c +@@ -85,7 +85,12 @@ struct as7946_30xb_sys_data *data = NULL; + + static struct platform_driver as7946_30xb_sys_driver = { + .probe = as7946_30xb_sys_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as7946_30xb_sys_remove_6_11, ++#else ++ + .remove = as7946_30xb_sys_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -419,6 +424,11 @@ static int as7946_30xb_sys_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as7946_30xb_sys_remove_6_11(struct platform_device *pdev) { ++ as7946_30xb_sys_remove(pdev); ++} ++#endif + + static int __init as7946_30xb_sys_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as7946-30xb/modules/builds/x86-64-accton-as7946-30xb-thermal.c b/packages/platforms/accton/x86-64/as7946-30xb/modules/builds/x86-64-accton-as7946-30xb-thermal.c +index 0fd2a77190ce..23e1a36cb23d 100644 +--- a/packages/platforms/accton/x86-64/as7946-30xb/modules/builds/x86-64-accton-as7946-30xb-thermal.c ++++ b/packages/platforms/accton/x86-64/as7946-30xb/modules/builds/x86-64-accton-as7946-30xb-thermal.c +@@ -83,7 +83,12 @@ struct as7946_30xb_thermal_data *data = NULL; + + static struct platform_driver as7946_30xb_thermal_driver = { + .probe = as7946_30xb_thermal_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as7946_30xb_thermal_remove_6_11, ++#else ++ + .remove = as7946_30xb_thermal_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -333,6 +338,11 @@ static int as7946_30xb_thermal_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as7946_30xb_thermal_remove_6_11(struct platform_device *pdev) { ++ as7946_30xb_thermal_remove(pdev); ++} ++#endif + + static int __init as7946_30xb_thermal_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/x86-64-accton-as7946-74xkb-fan.c b/packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/x86-64-accton-as7946-74xkb-fan.c +index c17a1117e3cf..7f2882404cd4 100644 +--- a/packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/x86-64-accton-as7946-74xkb-fan.c ++++ b/packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/x86-64-accton-as7946-74xkb-fan.c +@@ -109,7 +109,12 @@ struct as7946_74xkb_fan_data *data = NULL; + + static struct platform_driver as7946_74xkb_fan_driver = { + .probe = as7946_74xkb_fan_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as7946_74xkb_fan_remove_6_11, ++#else ++ + .remove = as7946_74xkb_fan_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -576,6 +581,11 @@ static int as7946_74xkb_fan_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as7946_74xkb_fan_remove_6_11(struct platform_device *pdev) { ++ as7946_74xkb_fan_remove(pdev); ++} ++#endif + + static int __init as7946_74xkb_fan_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/x86-64-accton-as7946-74xkb-leds.c b/packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/x86-64-accton-as7946-74xkb-leds.c +index 18b91a433875..265f9c4f1a27 100644 +--- a/packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/x86-64-accton-as7946-74xkb-leds.c ++++ b/packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/x86-64-accton-as7946-74xkb-leds.c +@@ -76,7 +76,12 @@ struct as7946_74xkb_led_data *data = NULL; + + static struct platform_driver as7946_74xkb_led_driver = { + .probe = as7946_74xkb_led_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as7946_74xkb_led_remove_6_11, ++#else ++ + .remove = as7946_74xkb_led_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -492,6 +497,11 @@ static int as7946_74xkb_led_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as7946_74xkb_led_remove_6_11(struct platform_device *pdev) { ++ as7946_74xkb_led_remove(pdev); ++} ++#endif + + static int __init as7946_74xkb_led_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/x86-64-accton-as7946-74xkb-psu.c b/packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/x86-64-accton-as7946-74xkb-psu.c +index ce6202566e2d..92d5a1074d90 100644 +--- a/packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/x86-64-accton-as7946-74xkb-psu.c ++++ b/packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/x86-64-accton-as7946-74xkb-psu.c +@@ -135,7 +135,12 @@ struct as7946_74xkb_psu_data *data = NULL; + + static struct platform_driver as7946_74xkb_psu_driver = { + .probe = as7946_74xkb_psu_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as7946_74xkb_psu_remove_6_11, ++#else ++ + .remove = as7946_74xkb_psu_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -649,6 +654,11 @@ static int as7946_74xkb_psu_remove(struct platform_device *pdev) + sysfs_remove_group(&pdev->dev.kobj, &as7946_74xkb_psu_group); + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as7946_74xkb_psu_remove_6_11(struct platform_device *pdev) { ++ as7946_74xkb_psu_remove(pdev); ++} ++#endif + + static int __init as7946_74xkb_psu_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/x86-64-accton-as7946-74xkb-sys.c b/packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/x86-64-accton-as7946-74xkb-sys.c +index 40794af7f64a..1823e16b473e 100644 +--- a/packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/x86-64-accton-as7946-74xkb-sys.c ++++ b/packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/x86-64-accton-as7946-74xkb-sys.c +@@ -85,7 +85,12 @@ struct as7946_74xkb_sys_data *data = NULL; + + static struct platform_driver as7946_74xkb_sys_driver = { + .probe = as7946_74xkb_sys_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as7946_74xkb_sys_remove_6_11, ++#else ++ + .remove = as7946_74xkb_sys_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -419,6 +424,11 @@ static int as7946_74xkb_sys_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as7946_74xkb_sys_remove_6_11(struct platform_device *pdev) { ++ as7946_74xkb_sys_remove(pdev); ++} ++#endif + + static int __init as7946_74xkb_sys_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/x86-64-accton-as7946-74xkb-thermal.c b/packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/x86-64-accton-as7946-74xkb-thermal.c +index be73da0ad186..633b67f7a38d 100644 +--- a/packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/x86-64-accton-as7946-74xkb-thermal.c ++++ b/packages/platforms/accton/x86-64/as7946-74xkb/modules/builds/x86-64-accton-as7946-74xkb-thermal.c +@@ -83,7 +83,12 @@ struct as7946_74xkb_thermal_data *data = NULL; + + static struct platform_driver as7946_74xkb_thermal_driver = { + .probe = as7946_74xkb_thermal_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as7946_74xkb_thermal_remove_6_11, ++#else ++ + .remove = as7946_74xkb_thermal_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -333,6 +338,11 @@ static int as7946_74xkb_thermal_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as7946_74xkb_thermal_remove_6_11(struct platform_device *pdev) { ++ as7946_74xkb_thermal_remove(pdev); ++} ++#endif + + static int __init as7946_74xkb_thermal_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as9716_32d/modules/builds/x86-64-accton-as9716-32d-leds.c b/packages/platforms/accton/x86-64/as9716_32d/modules/builds/x86-64-accton-as9716-32d-leds.c +index 6250cfe6376e..a05e93d3a24f 100755 +--- a/packages/platforms/accton/x86-64/as9716_32d/modules/builds/x86-64-accton-as9716-32d-leds.c ++++ b/packages/platforms/accton/x86-64/as9716_32d/modules/builds/x86-64-accton-as9716-32d-leds.c +@@ -29,6 +29,7 @@ + #include + #include + #include ++#include + + extern int as9716_32d_cpld_read (unsigned short cpld_addr, u8 reg); + extern int as9716_32d_cpld_write(unsigned short cpld_addr, u8 reg, u8 value); +@@ -412,10 +413,20 @@ static int accton_as9716_32d_led_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void accton_as9716_32d_led_remove_6_11(struct platform_device *pdev) { ++ accton_as9716_32d_led_remove(pdev); ++} ++#endif + + static struct platform_driver accton_as9716_32d_led_driver = { + .probe = accton_as9716_32d_led_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = accton_as9716_32d_led_remove_6_11, ++#else ++ + .remove = accton_as9716_32d_led_remove, ++#endif + .suspend = accton_as9716_32d_led_suspend, + .resume = accton_as9716_32d_led_resume, + .driver = { +diff --git a/packages/platforms/accton/x86-64/as9817-64-nb/src/modules/x86-64-accton-as9817-64-fpga.c b/packages/platforms/accton/x86-64/as9817-64-nb/src/modules/x86-64-accton-as9817-64-fpga.c +index 8fd466864e58..b2eb7e135a72 100644 +--- a/packages/platforms/accton/x86-64/as9817-64-nb/src/modules/x86-64-accton-as9817-64-fpga.c ++++ b/packages/platforms/accton/x86-64/as9817-64-nb/src/modules/x86-64-accton-as9817-64-fpga.c +@@ -1192,10 +1192,20 @@ static int as9817_64_pcie_fpga_stat_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as9817_64_pcie_fpga_stat_remove_6_11(struct platform_device *pdev) { ++ as9817_64_pcie_fpga_stat_remove(pdev); ++} ++#endif + + static struct platform_driver pcie_fpga_port_stat_driver = { + .probe = as9817_64_pcie_fpga_stat_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as9817_64_pcie_fpga_stat_remove_6_11, ++#else ++ + .remove = as9817_64_pcie_fpga_stat_remove, ++#endif + .driver = { + .owner = THIS_MODULE, + .name = DRVNAME, +diff --git a/packages/platforms/accton/x86-64/as9817-64-nb/src/modules/x86-64-accton-as9817-64-i2c-ocores.c b/packages/platforms/accton/x86-64/as9817-64-nb/src/modules/x86-64-accton-as9817-64-i2c-ocores.c +index f107ff390d9b..75e2c789bd09 100644 +--- a/packages/platforms/accton/x86-64/as9817-64-nb/src/modules/x86-64-accton-as9817-64-i2c-ocores.c ++++ b/packages/platforms/accton/x86-64/as9817-64-nb/src/modules/x86-64-accton-as9817-64-i2c-ocores.c +@@ -26,6 +26,7 @@ + #include + #include + #include ++#include + + /* + * 'process_lock' exists because ocores_process() and ocores_process_timeout() +@@ -875,6 +876,11 @@ static int ocores_i2c_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void ocores_i2c_remove_6_11(struct platform_device *pdev) { ++ ocores_i2c_remove(pdev); ++} ++#endif + + #ifdef CONFIG_PM_SLEEP + static int ocores_i2c_suspend(struct device *dev) +@@ -918,7 +924,12 @@ static SIMPLE_DEV_PM_OPS(ocores_i2c_pm, ocores_i2c_suspend, ocores_i2c_resume); + + static struct platform_driver ocores_i2c_driver = { + .probe = ocores_i2c_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = ocores_i2c_remove_6_11, ++#else ++ + .remove = ocores_i2c_remove, ++#endif + .driver = { + .name = "ocores-as9817", + .of_match_table = ocores_i2c_match, +diff --git a/packages/platforms/accton/x86-64/as9817-64-nb/src/modules/x86-64-accton-as9817-64-leds.c b/packages/platforms/accton/x86-64/as9817-64-nb/src/modules/x86-64-accton-as9817-64-leds.c +index c05d3c1d8da6..fe78cc501e33 100644 +--- a/packages/platforms/accton/x86-64/as9817-64-nb/src/modules/x86-64-accton-as9817-64-leds.c ++++ b/packages/platforms/accton/x86-64/as9817-64-nb/src/modules/x86-64-accton-as9817-64-leds.c +@@ -28,6 +28,7 @@ + #include + #include + #include ++#include + + extern int as9817_64_cpld_read(u8 cpld_addr, u8 reg); + extern int as9817_64_cpld_write(unsigned short cpld_addr, u8 reg, u8 value); +@@ -558,10 +559,20 @@ static int as9817_64_led_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as9817_64_led_remove_6_11(struct platform_device *pdev) { ++ as9817_64_led_remove(pdev); ++} ++#endif + + static struct platform_driver as9817_64_led_driver = { + .probe = as9817_64_led_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as9817_64_led_remove_6_11, ++#else ++ + .remove = as9817_64_led_remove, ++#endif + .suspend = as9817_64_led_suspend, + .resume = as9817_64_led_resume, + .driver = { +diff --git a/packages/platforms/accton/x86-64/as9817-64/src/modules/x86-64-accton-as9817-64-fan.c b/packages/platforms/accton/x86-64/as9817-64/src/modules/x86-64-accton-as9817-64-fan.c +index d0b105a13de5..5fea5aa37ee8 100644 +--- a/packages/platforms/accton/x86-64/as9817-64/src/modules/x86-64-accton-as9817-64-fan.c ++++ b/packages/platforms/accton/x86-64/as9817-64/src/modules/x86-64-accton-as9817-64-fan.c +@@ -120,7 +120,12 @@ struct as9817_64_fan_data *data = NULL; + + static struct platform_driver as9817_64_fan_driver = { + .probe = as9817_64_fan_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as9817_64_fan_remove_6_11, ++#else ++ + .remove = as9817_64_fan_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -716,6 +721,11 @@ static int as9817_64_fan_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as9817_64_fan_remove_6_11(struct platform_device *pdev) { ++ as9817_64_fan_remove(pdev); ++} ++#endif + + static int __init as9817_64_fan_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as9817-64/src/modules/x86-64-accton-as9817-64-fpga.c b/packages/platforms/accton/x86-64/as9817-64/src/modules/x86-64-accton-as9817-64-fpga.c +index a09f80892037..c1fb74edff73 100644 +--- a/packages/platforms/accton/x86-64/as9817-64/src/modules/x86-64-accton-as9817-64-fpga.c ++++ b/packages/platforms/accton/x86-64/as9817-64/src/modules/x86-64-accton-as9817-64-fpga.c +@@ -1145,10 +1145,20 @@ static int as9817_64_pcie_fpga_stat_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as9817_64_pcie_fpga_stat_remove_6_11(struct platform_device *pdev) { ++ as9817_64_pcie_fpga_stat_remove(pdev); ++} ++#endif + + static struct platform_driver pcie_fpga_port_stat_driver = { + .probe = as9817_64_pcie_fpga_stat_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as9817_64_pcie_fpga_stat_remove_6_11, ++#else ++ + .remove = as9817_64_pcie_fpga_stat_remove, ++#endif + .driver = { + .owner = THIS_MODULE, + .name = DRVNAME, +diff --git a/packages/platforms/accton/x86-64/as9817-64/src/modules/x86-64-accton-as9817-64-i2c-ocores.c b/packages/platforms/accton/x86-64/as9817-64/src/modules/x86-64-accton-as9817-64-i2c-ocores.c +index bb7db8031479..eacb7fe4eecf 100644 +--- a/packages/platforms/accton/x86-64/as9817-64/src/modules/x86-64-accton-as9817-64-i2c-ocores.c ++++ b/packages/platforms/accton/x86-64/as9817-64/src/modules/x86-64-accton-as9817-64-i2c-ocores.c +@@ -27,6 +27,7 @@ + #include + #include + #include ++#include + + /* + * 'process_lock' exists because ocores_process() and ocores_process_timeout() +@@ -873,6 +874,11 @@ static int ocores_i2c_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void ocores_i2c_remove_6_11(struct platform_device *pdev) { ++ ocores_i2c_remove(pdev); ++} ++#endif + + #ifdef CONFIG_PM_SLEEP + static int ocores_i2c_suspend(struct device *dev) +@@ -917,7 +923,12 @@ static SIMPLE_DEV_PM_OPS(ocores_i2c_pm, ocores_i2c_suspend, ocores_i2c_resume); + + static struct platform_driver ocores_i2c_driver = { + .probe = ocores_i2c_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = ocores_i2c_remove_6_11, ++#else ++ + .remove = ocores_i2c_remove, ++#endif + .driver = { + .name = "ocores-as9817", + .of_match_table = ocores_i2c_match, +diff --git a/packages/platforms/accton/x86-64/as9817-64/src/modules/x86-64-accton-as9817-64-leds.c b/packages/platforms/accton/x86-64/as9817-64/src/modules/x86-64-accton-as9817-64-leds.c +index 04b194d0990b..aff17384b241 100644 +--- a/packages/platforms/accton/x86-64/as9817-64/src/modules/x86-64-accton-as9817-64-leds.c ++++ b/packages/platforms/accton/x86-64/as9817-64/src/modules/x86-64-accton-as9817-64-leds.c +@@ -77,7 +77,12 @@ struct as9817_64_led_data *data = NULL; + + static struct platform_driver as9817_64_led_driver = { + .probe = as9817_64_led_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as9817_64_led_remove_6_11, ++#else ++ + .remove = as9817_64_led_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -501,6 +506,11 @@ static int as9817_64_led_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as9817_64_led_remove_6_11(struct platform_device *pdev) { ++ as9817_64_led_remove(pdev); ++} ++#endif + + static int __init as9817_64_led_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as9817-64/src/modules/x86-64-accton-as9817-64-psu.c b/packages/platforms/accton/x86-64/as9817-64/src/modules/x86-64-accton-as9817-64-psu.c +index c69fdf7be069..8102a8020ee8 100644 +--- a/packages/platforms/accton/x86-64/as9817-64/src/modules/x86-64-accton-as9817-64-psu.c ++++ b/packages/platforms/accton/x86-64/as9817-64/src/modules/x86-64-accton-as9817-64-psu.c +@@ -188,7 +188,12 @@ struct as9817_64_psu_data *data = NULL; + + static struct platform_driver as9817_64_psu_driver = { + .probe = as9817_64_psu_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as9817_64_psu_remove_6_11, ++#else ++ + .remove = as9817_64_psu_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -1017,6 +1022,11 @@ static int as9817_64_psu_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as9817_64_psu_remove_6_11(struct platform_device *pdev) { ++ as9817_64_psu_remove(pdev); ++} ++#endif + + static int __init as9817_64_psu_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as9817-64/src/modules/x86-64-accton-as9817-64-sys.c b/packages/platforms/accton/x86-64/as9817-64/src/modules/x86-64-accton-as9817-64-sys.c +index 258a8dae2d1d..0019c20f05df 100644 +--- a/packages/platforms/accton/x86-64/as9817-64/src/modules/x86-64-accton-as9817-64-sys.c ++++ b/packages/platforms/accton/x86-64/as9817-64/src/modules/x86-64-accton-as9817-64-sys.c +@@ -81,7 +81,12 @@ struct as9817_64_sys_data *data = NULL; + + static struct platform_driver as9817_64_sys_driver = { + .probe = as9817_64_sys_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as9817_64_sys_remove_6_11, ++#else ++ + .remove = as9817_64_sys_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -368,6 +373,11 @@ static int as9817_64_sys_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as9817_64_sys_remove_6_11(struct platform_device *pdev) { ++ as9817_64_sys_remove(pdev); ++} ++#endif + + static int __init as9817_64_sys_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as9817-64/src/modules/x86-64-accton-as9817-64-thermal.c b/packages/platforms/accton/x86-64/as9817-64/src/modules/x86-64-accton-as9817-64-thermal.c +index 060400584911..e65705fef061 100644 +--- a/packages/platforms/accton/x86-64/as9817-64/src/modules/x86-64-accton-as9817-64-thermal.c ++++ b/packages/platforms/accton/x86-64/as9817-64/src/modules/x86-64-accton-as9817-64-thermal.c +@@ -99,7 +99,12 @@ struct as9817_64_thermal_data *data = NULL; + + static struct platform_driver as9817_64_thermal_driver = { + .probe = as9817_64_thermal_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as9817_64_thermal_remove_6_11, ++#else ++ + .remove = as9817_64_thermal_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -467,6 +472,11 @@ static int as9817_64_thermal_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as9817_64_thermal_remove_6_11(struct platform_device *pdev) { ++ as9817_64_thermal_remove(pdev); ++} ++#endif + + static int __init as9817_64_thermal_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as9926-24d/modules/builds/x86-64-accton-as9926-24d-fpga.c b/packages/platforms/accton/x86-64/as9926-24d/modules/builds/x86-64-accton-as9926-24d-fpga.c +index 624aca0944e3..09954ea2827b 100644 +--- a/packages/platforms/accton/x86-64/as9926-24d/modules/builds/x86-64-accton-as9926-24d-fpga.c ++++ b/packages/platforms/accton/x86-64/as9926-24d/modules/builds/x86-64-accton-as9926-24d-fpga.c +@@ -39,6 +39,7 @@ + #include + #include + #include ++#include + + + #define DRVNAME "as9926_24d_fpga" +@@ -319,10 +320,20 @@ static int as9926_24d_fpga_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as9926_24d_fpga_remove_6_11(struct platform_device *pdev) { ++ as9926_24d_fpga_remove(pdev); ++} ++#endif + + static struct platform_driver as9926_24d_fpga_driver = { + .probe = as9926_24d_fpga_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as9926_24d_fpga_remove_6_11, ++#else ++ + .remove = as9926_24d_fpga_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +diff --git a/packages/platforms/accton/x86-64/as9926-24d/modules/builds/x86-64-accton-as9926-24d-leds.c b/packages/platforms/accton/x86-64/as9926-24d/modules/builds/x86-64-accton-as9926-24d-leds.c +index 03cc4e073a59..5abc3bae5b1d 100644 +--- a/packages/platforms/accton/x86-64/as9926-24d/modules/builds/x86-64-accton-as9926-24d-leds.c ++++ b/packages/platforms/accton/x86-64/as9926-24d/modules/builds/x86-64-accton-as9926-24d-leds.c +@@ -26,6 +26,7 @@ + #include + #include + #include ++#include + + #define DRVNAME "as9926_24d_led" + +@@ -317,10 +318,20 @@ static int as9926_24d_led_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as9926_24d_led_remove_6_11(struct platform_device *pdev) { ++ as9926_24d_led_remove(pdev); ++} ++#endif + + static struct platform_driver as9926_24d_led_driver = { + .probe = as9926_24d_led_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as9926_24d_led_remove_6_11, ++#else ++ + .remove = as9926_24d_led_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +diff --git a/packages/platforms/accton/x86-64/as9926-24db/modules/builds/x86-64-accton-as9926-24db-fan.c b/packages/platforms/accton/x86-64/as9926-24db/modules/builds/x86-64-accton-as9926-24db-fan.c +index 1050c6b15cb7..801518a3026c 100644 +--- a/packages/platforms/accton/x86-64/as9926-24db/modules/builds/x86-64-accton-as9926-24db-fan.c ++++ b/packages/platforms/accton/x86-64/as9926-24db/modules/builds/x86-64-accton-as9926-24db-fan.c +@@ -104,7 +104,13 @@ struct as9926_24db_fan_data *data = NULL; + + static struct platform_driver as9926_24db_fan_driver = { + .probe = as9926_24db_fan_probe, +- .remove = as9926_24db_fan_remove, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as9926_24db_fan_remove_6_11, ++#else ++ ++ .remove = as9926_24db_fan_remove, ++#endif ++ + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -507,7 +513,12 @@ static int as9926_24db_fan_remove(struct platform_device *pdev) + sysfs_remove_group(&pdev->dev.kobj, &as9926_24db_fan_group); + + return 0; +-} ++} ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as9926_24db_fan_remove_6_11(struct platform_device *pdev) { ++ as9926_24db_fan_remove(pdev); ++} ++#endif + + static int __init as9926_24db_fan_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as9926-24db/modules/builds/x86-64-accton-as9926-24db-leds.c b/packages/platforms/accton/x86-64/as9926-24db/modules/builds/x86-64-accton-as9926-24db-leds.c +index ec344d088206..37f4705ceca8 100644 +--- a/packages/platforms/accton/x86-64/as9926-24db/modules/builds/x86-64-accton-as9926-24db-leds.c ++++ b/packages/platforms/accton/x86-64/as9926-24db/modules/builds/x86-64-accton-as9926-24db-leds.c +@@ -79,7 +79,13 @@ struct as9926_24db_led_data *data = NULL; + + static struct platform_driver as9926_24db_led_driver = { + .probe = as9926_24db_led_probe, +- .remove = as9926_24db_led_remove, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as9926_24db_led_remove_6_11, ++#else ++ ++ .remove = as9926_24db_led_remove, ++#endif ++ + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -426,7 +432,12 @@ static int as9926_24db_led_remove(struct platform_device *pdev) + sysfs_remove_group(&pdev->dev.kobj, &as9926_24db_led_group); + + return 0; +-} ++} ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as9926_24db_led_remove_6_11(struct platform_device *pdev) { ++ as9926_24db_led_remove(pdev); ++} ++#endif + + static int __init as9926_24db_led_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as9926-24db/modules/builds/x86-64-accton-as9926-24db-psu.c b/packages/platforms/accton/x86-64/as9926-24db/modules/builds/x86-64-accton-as9926-24db-psu.c +index 2221e48b2403..4007cbfa469c 100644 +--- a/packages/platforms/accton/x86-64/as9926-24db/modules/builds/x86-64-accton-as9926-24db-psu.c ++++ b/packages/platforms/accton/x86-64/as9926-24db/modules/builds/x86-64-accton-as9926-24db-psu.c +@@ -132,7 +132,12 @@ struct as9926_24db_psu_data *data = NULL; + + static struct platform_driver as9926_24db_psu_driver = { + .probe = as9926_24db_psu_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as9926_24db_psu_remove_6_11, ++#else ++ + .remove = as9926_24db_psu_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -631,6 +636,11 @@ static int as9926_24db_psu_remove(struct platform_device *pdev) + sysfs_remove_group(&pdev->dev.kobj, &as9926_24db_psu_group); + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as9926_24db_psu_remove_6_11(struct platform_device *pdev) { ++ as9926_24db_psu_remove(pdev); ++} ++#endif + + static int __init as9926_24db_psu_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as9926-24db/modules/builds/x86-64-accton-as9926-24db-sfp.c b/packages/platforms/accton/x86-64/as9926-24db/modules/builds/x86-64-accton-as9926-24db-sfp.c +index 66bbf76c895f..aedb7ec655e2 100644 +--- a/packages/platforms/accton/x86-64/as9926-24db/modules/builds/x86-64-accton-as9926-24db-sfp.c ++++ b/packages/platforms/accton/x86-64/as9926-24db/modules/builds/x86-64-accton-as9926-24db-sfp.c +@@ -170,7 +170,13 @@ struct as9926_24db_sfp_data *data = NULL; + + static struct platform_driver as9926_24db_sfp_driver = { + .probe = as9926_24db_sfp_probe, +- .remove = as9926_24db_sfp_remove, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as9926_24db_sfp_remove_6_11, ++#else ++ ++ .remove = as9926_24db_sfp_remove, ++#endif ++ + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -1699,7 +1705,12 @@ static int as9926_24db_sfp_remove(struct platform_device *pdev) + + sysfs_remove_group(&pdev->dev.kobj, &as9926_24db_sfp_group); + return 0; +-} ++} ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as9926_24db_sfp_remove_6_11(struct platform_device *pdev) { ++ as9926_24db_sfp_remove(pdev); ++} ++#endif + + static int __init as9926_24db_sfp_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as9926-24db/modules/builds/x86-64-accton-as9926-24db-sys.c b/packages/platforms/accton/x86-64/as9926-24db/modules/builds/x86-64-accton-as9926-24db-sys.c +index da679a6e9ab8..fc23b4930393 100644 +--- a/packages/platforms/accton/x86-64/as9926-24db/modules/builds/x86-64-accton-as9926-24db-sys.c ++++ b/packages/platforms/accton/x86-64/as9926-24db/modules/builds/x86-64-accton-as9926-24db-sys.c +@@ -87,7 +87,13 @@ struct as9926_24db_sys_data *data = NULL; + + static struct platform_driver as9926_24db_sys_driver = { + .probe = as9926_24db_sys_probe, +- .remove = as9926_24db_sys_remove, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as9926_24db_sys_remove_6_11, ++#else ++ ++ .remove = as9926_24db_sys_remove, ++#endif ++ + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -422,7 +428,12 @@ static int as9926_24db_sys_remove(struct platform_device *pdev) + sysfs_remove_group(&pdev->dev.kobj, &as9926_24db_sys_group); + + return 0; +-} ++} ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as9926_24db_sys_remove_6_11(struct platform_device *pdev) { ++ as9926_24db_sys_remove(pdev); ++} ++#endif + + static int __init as9926_24db_sys_init(void) + { +diff --git a/packages/platforms/accton/x86-64/as9926-24db/modules/builds/x86-64-accton-as9926-24db-thermal.c b/packages/platforms/accton/x86-64/as9926-24db/modules/builds/x86-64-accton-as9926-24db-thermal.c +index 1b0b8b7aa2cb..617ee5243693 100644 +--- a/packages/platforms/accton/x86-64/as9926-24db/modules/builds/x86-64-accton-as9926-24db-thermal.c ++++ b/packages/platforms/accton/x86-64/as9926-24db/modules/builds/x86-64-accton-as9926-24db-thermal.c +@@ -78,7 +78,13 @@ struct as9926_24db_thermal_data *data = NULL; + + static struct platform_driver as9926_24db_thermal_driver = { + .probe = as9926_24db_thermal_probe, +- .remove = as9926_24db_thermal_remove, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = as9926_24db_thermal_remove_6_11, ++#else ++ ++ .remove = as9926_24db_thermal_remove, ++#endif ++ + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -303,7 +309,12 @@ static int as9926_24db_thermal_remove(struct platform_device *pdev) + sysfs_remove_group(&pdev->dev.kobj, &as9926_24db_thermal_group); + + return 0; +-} ++} ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void as9926_24db_thermal_remove_6_11(struct platform_device *pdev) { ++ as9926_24db_thermal_remove(pdev); ++} ++#endif + + static int __init as9926_24db_thermal_init(void) + { +diff --git a/packages/platforms/accton/x86-64/asgvolt64/modules/builds/x86-64-accton-asgvolt64-fan.c b/packages/platforms/accton/x86-64/asgvolt64/modules/builds/x86-64-accton-asgvolt64-fan.c +index af0b7b817ed0..9c9b783cf0ce 100755 +--- a/packages/platforms/accton/x86-64/asgvolt64/modules/builds/x86-64-accton-asgvolt64-fan.c ++++ b/packages/platforms/accton/x86-64/asgvolt64/modules/builds/x86-64-accton-asgvolt64-fan.c +@@ -92,7 +92,12 @@ struct asgvolt64_fan_data *data = NULL; + + static struct platform_driver asgvolt64_fan_driver = { + .probe = asgvolt64_fan_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = asgvolt64_fan_remove_6_11, ++#else ++ + .remove = asgvolt64_fan_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -400,6 +405,11 @@ static int asgvolt64_fan_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void asgvolt64_fan_remove_6_11(struct platform_device *pdev) { ++ asgvolt64_fan_remove(pdev); ++} ++#endif + + static int __init asgvolt64_fan_init(void) + { +diff --git a/packages/platforms/accton/x86-64/asgvolt64/modules/builds/x86-64-accton-asgvolt64-fpga.c b/packages/platforms/accton/x86-64/asgvolt64/modules/builds/x86-64-accton-asgvolt64-fpga.c +index d5f74f7e872a..97ccf7270d87 100755 +--- a/packages/platforms/accton/x86-64/asgvolt64/modules/builds/x86-64-accton-asgvolt64-fpga.c ++++ b/packages/platforms/accton/x86-64/asgvolt64/modules/builds/x86-64-accton-asgvolt64-fpga.c +@@ -38,6 +38,7 @@ + #include + #include + #include ++#include + + + #define DRVNAME "asgvolt64_fpga" +@@ -198,10 +199,20 @@ static int accton_fpga_remove(struct platform_device *pdev) + } + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void accton_fpga_remove_6_11(struct platform_device *pdev) { ++ accton_fpga_remove(pdev); ++} ++#endif + + static struct platform_driver accton_fpga_driver = { + .probe = accton_fpga_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = accton_fpga_remove_6_11, ++#else ++ + .remove = accton_fpga_remove, ++#endif + .suspend = accton_fpga_suspend, + .resume = accton_fpga_resume, + .driver = { +diff --git a/packages/platforms/accton/x86-64/asgvolt64/modules/builds/x86-64-accton-asgvolt64-leds.c b/packages/platforms/accton/x86-64/asgvolt64/modules/builds/x86-64-accton-asgvolt64-leds.c +index cc98f52aa092..381521e731a1 100755 +--- a/packages/platforms/accton/x86-64/asgvolt64/modules/builds/x86-64-accton-asgvolt64-leds.c ++++ b/packages/platforms/accton/x86-64/asgvolt64/modules/builds/x86-64-accton-asgvolt64-leds.c +@@ -83,7 +83,12 @@ struct asgvolt64_led_data *data = NULL; + + static struct platform_driver asgvolt64_led_driver = { + .probe = asgvolt64_led_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = asgvolt64_led_remove_6_11, ++#else ++ + .remove = asgvolt64_led_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -446,6 +451,11 @@ static int asgvolt64_led_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void asgvolt64_led_remove_6_11(struct platform_device *pdev) { ++ asgvolt64_led_remove(pdev); ++} ++#endif + + static int __init asgvolt64_led_init(void) + { +diff --git a/packages/platforms/accton/x86-64/asgvolt64/modules/builds/x86-64-accton-asgvolt64-psu.c b/packages/platforms/accton/x86-64/asgvolt64/modules/builds/x86-64-accton-asgvolt64-psu.c +index 1cb673f97527..532cc37f9bba 100755 +--- a/packages/platforms/accton/x86-64/asgvolt64/modules/builds/x86-64-accton-asgvolt64-psu.c ++++ b/packages/platforms/accton/x86-64/asgvolt64/modules/builds/x86-64-accton-asgvolt64-psu.c +@@ -116,7 +116,12 @@ struct asgvolt64_psu_data *data = NULL; + + static struct platform_driver asgvolt64_psu_driver = { + .probe = asgvolt64_psu_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = asgvolt64_psu_remove_6_11, ++#else ++ + .remove = asgvolt64_psu_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -568,6 +573,11 @@ static int asgvolt64_psu_remove(struct platform_device *pdev) + sysfs_remove_group(&pdev->dev.kobj, &asgvolt64_psu_group); + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void asgvolt64_psu_remove_6_11(struct platform_device *pdev) { ++ asgvolt64_psu_remove(pdev); ++} ++#endif + + static int __init asgvolt64_psu_init(void) + { +diff --git a/packages/platforms/accton/x86-64/asgvolt64/modules/builds/x86-64-accton-asgvolt64-sys.c b/packages/platforms/accton/x86-64/asgvolt64/modules/builds/x86-64-accton-asgvolt64-sys.c +index 16e8f36c579c..cef78645d9c0 100755 +--- a/packages/platforms/accton/x86-64/asgvolt64/modules/builds/x86-64-accton-asgvolt64-sys.c ++++ b/packages/platforms/accton/x86-64/asgvolt64/modules/builds/x86-64-accton-asgvolt64-sys.c +@@ -76,7 +76,12 @@ struct asgvolt64_sys_data *data = NULL; + + static struct platform_driver asgvolt64_sys_driver = { + .probe = asgvolt64_sys_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = asgvolt64_sys_remove_6_11, ++#else ++ + .remove = asgvolt64_sys_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -352,6 +357,11 @@ static int asgvolt64_sys_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void asgvolt64_sys_remove_6_11(struct platform_device *pdev) { ++ asgvolt64_sys_remove(pdev); ++} ++#endif + + static int __init asgvolt64_sys_init(void) + { +diff --git a/packages/platforms/accton/x86-64/asgvolt64/modules/builds/x86-64-accton-asgvolt64-thermal.c b/packages/platforms/accton/x86-64/asgvolt64/modules/builds/x86-64-accton-asgvolt64-thermal.c +index f33826d2d900..6a2f52949e2d 100755 +--- a/packages/platforms/accton/x86-64/asgvolt64/modules/builds/x86-64-accton-asgvolt64-thermal.c ++++ b/packages/platforms/accton/x86-64/asgvolt64/modules/builds/x86-64-accton-asgvolt64-thermal.c +@@ -78,7 +78,12 @@ struct asgvolt64_thermal_data *data = NULL; + + static struct platform_driver asgvolt64_thermal_driver = { + .probe = asgvolt64_thermal_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = asgvolt64_thermal_remove_6_11, ++#else ++ + .remove = asgvolt64_thermal_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -296,6 +301,11 @@ static int asgvolt64_thermal_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void asgvolt64_thermal_remove_6_11(struct platform_device *pdev) { ++ asgvolt64_thermal_remove(pdev); ++} ++#endif + + static int __init asgvolt64_thermal_init(void) + { +diff --git a/packages/platforms/accton/x86-64/asxvolt16/modules/builds/x86-64-accton-asxvolt16-leds.c b/packages/platforms/accton/x86-64/asxvolt16/modules/builds/x86-64-accton-asxvolt16-leds.c +index da47c54d997b..16c40587673a 100755 +--- a/packages/platforms/accton/x86-64/asxvolt16/modules/builds/x86-64-accton-asxvolt16-leds.c ++++ b/packages/platforms/accton/x86-64/asxvolt16/modules/builds/x86-64-accton-asxvolt16-leds.c +@@ -25,7 +25,8 @@ + #include + #include + #include +-#include ++#include ++#include + + #define DRVNAME "asxvolt16_led" + +@@ -318,11 +319,22 @@ static int accton_asxvolt16_led_remove(struct platform_device *pdev) + } + + return 0; +-} ++} ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void accton_asxvolt16_led_remove_6_11(struct platform_device *pdev) { ++ accton_asxvolt16_led_remove(pdev); ++} ++#endif + + static struct platform_driver accton_asxvolt16_led_driver = { + .probe = accton_asxvolt16_led_probe, +- .remove = accton_asxvolt16_led_remove, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = accton_asxvolt16_led_remove_6_11, ++#else ++ ++ .remove = accton_asxvolt16_led_remove, ++#endif ++ + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +diff --git a/packages/platforms/accton/x86-64/csp9250/modules/builds/x86-64-accton-csp9250-leds.c b/packages/platforms/accton/x86-64/csp9250/modules/builds/x86-64-accton-csp9250-leds.c +index c6237ccd5dde..e5b7febd9e8d 100755 +--- a/packages/platforms/accton/x86-64/csp9250/modules/builds/x86-64-accton-csp9250-leds.c ++++ b/packages/platforms/accton/x86-64/csp9250/modules/builds/x86-64-accton-csp9250-leds.c +@@ -29,6 +29,7 @@ + #include + #include + #include ++#include + + extern int csp9250_i2c_cpld_read (unsigned short cpld_addr, u8 reg); + extern int csp9250_i2c_cpld_write(unsigned short cpld_addr, u8 reg, u8 value); +@@ -377,10 +378,20 @@ static int accton_csp9250_led_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void accton_csp9250_led_remove_6_11(struct platform_device *pdev) { ++ accton_csp9250_led_remove(pdev); ++} ++#endif + + static struct platform_driver accton_csp9250_led_driver = { + .probe = accton_csp9250_led_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = accton_csp9250_led_remove_6_11, ++#else ++ + .remove = accton_csp9250_led_remove, ++#endif + .suspend = accton_csp9250_led_suspend, + .resume = accton_csp9250_led_resume, + .driver = { +diff --git a/packages/platforms/accton/x86-64/es7632bt3/modules/builds/x86-64-accton-es7632bt3-leds.c b/packages/platforms/accton/x86-64/es7632bt3/modules/builds/x86-64-accton-es7632bt3-leds.c +index 36d49ad140b2..a251f4da4395 100644 +--- a/packages/platforms/accton/x86-64/es7632bt3/modules/builds/x86-64-accton-es7632bt3-leds.c ++++ b/packages/platforms/accton/x86-64/es7632bt3/modules/builds/x86-64-accton-es7632bt3-leds.c +@@ -29,6 +29,7 @@ + #include + #include + #include ++#include + + extern int es7632bt3_cpld_read (unsigned short cpld_addr, u8 reg); + extern int es7632bt3_cpld_write(unsigned short cpld_addr, u8 reg, u8 value); +@@ -376,10 +377,20 @@ static int accton_es7632bt3_led_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void accton_es7632bt3_led_remove_6_11(struct platform_device *pdev) { ++ accton_es7632bt3_led_remove(pdev); ++} ++#endif + + static struct platform_driver accton_es7632bt3_led_driver = { + .probe = accton_es7632bt3_led_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = accton_es7632bt3_led_remove_6_11, ++#else ++ + .remove = accton_es7632bt3_led_remove, ++#endif + .suspend = accton_es7632bt3_led_suspend, + .resume = accton_es7632bt3_led_resume, + .driver = { +diff --git a/packages/platforms/accton/x86-64/minipack/modules/builds/minipack_psensor.c b/packages/platforms/accton/x86-64/minipack/modules/builds/minipack_psensor.c +index 27a929e61d60..7e39dcccfc1e 100644 +--- a/packages/platforms/accton/x86-64/minipack/modules/builds/minipack_psensor.c ++++ b/packages/platforms/accton/x86-64/minipack/modules/builds/minipack_psensor.c +@@ -1365,10 +1365,20 @@ static int minipack_remove(struct platform_device *pdev) + kfree(mp_data->group.attrs); + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void minipack_remove_6_11(struct platform_device *pdev) { ++ minipack_remove(pdev); ++} ++#endif + + static struct platform_driver minipack_driver = { + .probe = minipack_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = minipack_remove_6_11, ++#else ++ + .remove = minipack_remove, ++#endif + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +diff --git a/packages/platforms/alphanetworks/x86-64/scg60d0-484t/modules/builds/scg60d0-484t_fan.c b/packages/platforms/alphanetworks/x86-64/scg60d0-484t/modules/builds/scg60d0-484t_fan.c +index 900a2ce64776..ad4a6ed316ae 100644 +--- a/packages/platforms/alphanetworks/x86-64/scg60d0-484t/modules/builds/scg60d0-484t_fan.c ++++ b/packages/platforms/alphanetworks/x86-64/scg60d0-484t/modules/builds/scg60d0-484t_fan.c +@@ -143,7 +143,13 @@ struct scg60d0_fan_data *data = NULL; + + static struct platform_driver scg60d0_fan_driver = { + .probe = scg60d0_fan_probe, +- .remove = scg60d0_fan_remove, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = scg60d0_fan_remove_6_11, ++#else ++ ++ .remove = scg60d0_fan_remove, ++#endif ++ + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -676,7 +682,12 @@ static int scg60d0_fan_remove(struct platform_device *pdev) + sysfs_remove_group(&pdev->dev.kobj, &scg60d0_fan_group); + + return 0; +-} ++} ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void scg60d0_fan_remove_6_11(struct platform_device *pdev) { ++ scg60d0_fan_remove(pdev); ++} ++#endif + + static int __init scg60d0_fan_init(void) + { +diff --git a/packages/platforms/alphanetworks/x86-64/scg60d0-484t/modules/builds/scg60d0-484t_led.c b/packages/platforms/alphanetworks/x86-64/scg60d0-484t/modules/builds/scg60d0-484t_led.c +index 2005bda550b2..6ac1766c15fa 100644 +--- a/packages/platforms/alphanetworks/x86-64/scg60d0-484t/modules/builds/scg60d0-484t_led.c ++++ b/packages/platforms/alphanetworks/x86-64/scg60d0-484t/modules/builds/scg60d0-484t_led.c +@@ -107,7 +107,13 @@ struct scg60d0_led_data *data = NULL; + + static struct platform_driver scg60d0_led_driver = { + .probe = scg60d0_led_probe, +- .remove = scg60d0_led_remove, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = scg60d0_led_remove_6_11, ++#else ++ ++ .remove = scg60d0_led_remove, ++#endif ++ + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -396,7 +402,12 @@ static int scg60d0_led_remove(struct platform_device *pdev) + sysfs_remove_group(&pdev->dev.kobj, &scg60d0_led_group); + + return 0; +-} ++} ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void scg60d0_led_remove_6_11(struct platform_device *pdev) { ++ scg60d0_led_remove(pdev); ++} ++#endif + + static int __init scg60d0_led_init(void) + { +diff --git a/packages/platforms/alphanetworks/x86-64/scg60d0-484t/modules/builds/scg60d0-484t_pwr_cpld.c b/packages/platforms/alphanetworks/x86-64/scg60d0-484t/modules/builds/scg60d0-484t_pwr_cpld.c +index 5b2514b32544..71ccc653f041 100644 +--- a/packages/platforms/alphanetworks/x86-64/scg60d0-484t/modules/builds/scg60d0-484t_pwr_cpld.c ++++ b/packages/platforms/alphanetworks/x86-64/scg60d0-484t/modules/builds/scg60d0-484t_pwr_cpld.c +@@ -123,7 +123,13 @@ struct scg60d0_pwr_cpld_data *data = NULL; + + static struct platform_driver scg60d0_pwr_cpld_driver = { + .probe = scg60d0_pwr_cpld_probe, +- .remove = scg60d0_pwr_cpld_remove, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = scg60d0_pwr_cpld_remove_6_11, ++#else ++ ++ .remove = scg60d0_pwr_cpld_remove, ++#endif ++ + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -509,7 +515,12 @@ static int scg60d0_pwr_cpld_remove(struct platform_device *pdev) + { + sysfs_remove_group(&pdev->dev.kobj, &scg60d0_pwr_cpld_group); + return 0; +-} ++} ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void scg60d0_pwr_cpld_remove_6_11(struct platform_device *pdev) { ++ scg60d0_pwr_cpld_remove(pdev); ++} ++#endif + + static int __init scg60d0_pwr_cpld_init(void) + { +diff --git a/packages/platforms/alphanetworks/x86-64/scg60d0-484t/modules/builds/scg60d0-484t_thermal.c b/packages/platforms/alphanetworks/x86-64/scg60d0-484t/modules/builds/scg60d0-484t_thermal.c +index fbf1609924a1..56eabc5843e1 100644 +--- a/packages/platforms/alphanetworks/x86-64/scg60d0-484t/modules/builds/scg60d0-484t_thermal.c ++++ b/packages/platforms/alphanetworks/x86-64/scg60d0-484t/modules/builds/scg60d0-484t_thermal.c +@@ -107,7 +107,13 @@ struct scg60d0_thermal_data *data = NULL; + + static struct platform_driver scg60d0_thermal_driver = { + .probe = scg60d0_thermal_probe, +- .remove = scg60d0_thermal_remove, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = scg60d0_thermal_remove_6_11, ++#else ++ ++ .remove = scg60d0_thermal_remove, ++#endif ++ + .driver = { + .name = DRVNAME, + .owner = THIS_MODULE, +@@ -407,7 +413,12 @@ static int scg60d0_thermal_remove(struct platform_device *pdev) + sysfs_remove_group(&pdev->dev.kobj, &scg60d0_thermal_group); + + return 0; +-} ++} ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void scg60d0_thermal_remove_6_11(struct platform_device *pdev) { ++ scg60d0_thermal_remove(pdev); ++} ++#endif + + static int __init scg60d0_thermal_init(void) + { +diff --git a/packages/platforms/celestica/x86-64/belgite/modules/builds/src/platform_cpld.c b/packages/platforms/celestica/x86-64/belgite/modules/builds/src/platform_cpld.c +index c56306dd4d00..657fb701c7fe 100644 +--- a/packages/platforms/celestica/x86-64/belgite/modules/builds/src/platform_cpld.c ++++ b/packages/platforms/celestica/x86-64/belgite/modules/builds/src/platform_cpld.c +@@ -26,6 +26,7 @@ + #include + #include + #include ++#include + + + #define DRIVER_NAME "sys_cpld" +@@ -974,10 +975,20 @@ static int cpld_drv_remove(struct platform_device *pdev) + printk(KERN_WARNING "SMC CPLD Driver Remove Successfully.\n"); + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void cpld_drv_remove_6_11(struct platform_device *pdev) { ++ cpld_drv_remove(pdev); ++} ++#endif + + static struct platform_driver cpld_drv = { + .probe = cpld_drv_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = __exit_p(cpld_drv_remove_6_11), ++#else ++ + .remove = __exit_p(cpld_drv_remove), ++#endif + .driver = { + .name = DRIVER_NAME, + }, +diff --git a/packages/platforms/celestica/x86-64/silverstone-v2/modules/builds/src/fpga_i2c_ocores.c b/packages/platforms/celestica/x86-64/silverstone-v2/modules/builds/src/fpga_i2c_ocores.c +index c1423cb88313..e80862ecfa68 100644 +--- a/packages/platforms/celestica/x86-64/silverstone-v2/modules/builds/src/fpga_i2c_ocores.c ++++ b/packages/platforms/celestica/x86-64/silverstone-v2/modules/builds/src/fpga_i2c_ocores.c +@@ -28,6 +28,7 @@ + #include + #include + #include ++#include + + #define DRIVER_NAME "fpga-xiic-i2c" + +@@ -716,6 +717,11 @@ static int xiic_i2c_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void xiic_i2c_remove_6_11(struct platform_device *pdev) { ++ xiic_i2c_remove(pdev); ++} ++#endif + + #if defined(CONFIG_OF) + static const struct of_device_id xiic_of_match[] = { +@@ -752,7 +758,12 @@ static const struct dev_pm_ops xiic_dev_pm_ops = { + + static struct platform_driver xiic_i2c_driver = { + .probe = xiic_i2c_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = xiic_i2c_remove_6_11, ++#else ++ + .remove = xiic_i2c_remove, ++#endif + .driver = { + .name = DRIVER_NAME, + .of_match_table = of_match_ptr(xiic_of_match), +diff --git a/packages/platforms/celestica/x86-64/silverstone-v2/modules/builds/src/fpga_system.c b/packages/platforms/celestica/x86-64/silverstone-v2/modules/builds/src/fpga_system.c +index 238ad8d55221..9f7ea8145dd6 100644 +--- a/packages/platforms/celestica/x86-64/silverstone-v2/modules/builds/src/fpga_system.c ++++ b/packages/platforms/celestica/x86-64/silverstone-v2/modules/builds/src/fpga_system.c +@@ -14,6 +14,7 @@ + #include + #include + #include ++#include + + #define FPGA_VERSION 0x0000 + #define FPGA_SCRATCH 0x0004 +@@ -285,11 +286,21 @@ static int cls_fpga_remove(struct platform_device *pdev) + iounmap(fpga->base); + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void cls_fpga_remove_6_11(struct platform_device *pdev) { ++ cls_fpga_remove(pdev); ++} ++#endif + + + static struct platform_driver cls_fpga_driver = { + .probe = cls_fpga_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = cls_fpga_remove_6_11, ++#else ++ + .remove = cls_fpga_remove, ++#endif + .driver = { + .name = "fpga-sys", + }, +diff --git a/packages/platforms/celestica/x86-64/silverstone-v2/modules/builds/src/fpga_xcvr.c b/packages/platforms/celestica/x86-64/silverstone-v2/modules/builds/src/fpga_xcvr.c +index 17da8ffa3d70..db2ed5048e04 100644 +--- a/packages/platforms/celestica/x86-64/silverstone-v2/modules/builds/src/fpga_xcvr.c ++++ b/packages/platforms/celestica/x86-64/silverstone-v2/modules/builds/src/fpga_xcvr.c +@@ -13,6 +13,7 @@ + #include + #include + #include ++#include + #include "fpga_xcvr.h" + + /* FPGA front panel */ +@@ -287,10 +288,20 @@ static int cls_xcvr_remove(struct platform_device *pdev) + xcvr_cleanup(xcvr); + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void cls_xcvr_remove_6_11(struct platform_device *pdev) { ++ cls_xcvr_remove(pdev); ++} ++#endif + + static struct platform_driver cls_xcvr_driver = { + .probe = cls_xcvr_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = cls_xcvr_remove_6_11, ++#else ++ + .remove = cls_xcvr_remove, ++#endif + .driver = { + .name = "fpga-xcvr", + }, +diff --git a/packages/platforms/celestica/x86-64/silverstone-v2/modules/builds/src/lpc_basecpld.c b/packages/platforms/celestica/x86-64/silverstone-v2/modules/builds/src/lpc_basecpld.c +index 2694dcd11d7f..f7550db46c6c 100644 +--- a/packages/platforms/celestica/x86-64/silverstone-v2/modules/builds/src/lpc_basecpld.c ++++ b/packages/platforms/celestica/x86-64/silverstone-v2/modules/builds/src/lpc_basecpld.c +@@ -31,6 +31,7 @@ + #include + #include + #include ++#include + + #define DRIVER_NAME "sys_cpld" + /** +@@ -674,10 +675,20 @@ static int cpld_b_drv_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void cpld_b_drv_remove_6_11(struct platform_device *pdev) { ++ cpld_b_drv_remove(pdev); ++} ++#endif + + static struct platform_driver cpld_b_drv = { + .probe = cpld_b_drv_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = __exit_p(cpld_b_drv_remove_6_11), ++#else ++ + .remove = __exit_p(cpld_b_drv_remove), ++#endif + .driver = { + .name = DRIVER_NAME, + }, +diff --git a/packages/platforms/celestica/x86-64/silverstone-v2/modules/builds/src/watch_dog.c b/packages/platforms/celestica/x86-64/silverstone-v2/modules/builds/src/watch_dog.c +index 5e9309f91278..2272df063655 100644 +--- a/packages/platforms/celestica/x86-64/silverstone-v2/modules/builds/src/watch_dog.c ++++ b/packages/platforms/celestica/x86-64/silverstone-v2/modules/builds/src/watch_dog.c +@@ -33,7 +33,8 @@ + #include + #include + #include +-#include ++#include ++#include + + #define WDT_CONTROL_BASE 0xA100 + #define TEST_SCRATCH_REG 0xA101 +@@ -649,11 +650,22 @@ static int cpld_wdt_remove(struct platform_device *pdev) + unregister_reboot_notifier(&watchdog_notifier); + return 0; + +-} ++} ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void cpld_wdt_remove_6_11(struct platform_device *pdev) { ++ cpld_wdt_remove(pdev); ++} ++#endif + + static struct platform_driver cpld_wdt_driver = { + .probe = cpld_wdt_probe, +- .remove = cpld_wdt_remove, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = cpld_wdt_remove_6_11, ++#else ++ ++ .remove = cpld_wdt_remove, ++#endif ++ + .driver = { + .name = DRV_NAME, + }, +diff --git a/packages/platforms/celestica/x86-64/silverstone/modules/builds/src/cpld_b.c b/packages/platforms/celestica/x86-64/silverstone/modules/builds/src/cpld_b.c +index f777f190e9ca..c2f31fbc12b7 100644 +--- a/packages/platforms/celestica/x86-64/silverstone/modules/builds/src/cpld_b.c ++++ b/packages/platforms/celestica/x86-64/silverstone/modules/builds/src/cpld_b.c +@@ -28,6 +28,7 @@ + #include + #include + #include ++#include + + #define DRIVER_NAME "sys_cpld" + /** +@@ -380,10 +381,20 @@ static int cpld_b_drv_remove(struct platform_device *pdev) + sysfs_remove_group(&pdev->dev.kobj, &cpld_b_attrs_grp); + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void cpld_b_drv_remove_6_11(struct platform_device *pdev) { ++ cpld_b_drv_remove(pdev); ++} ++#endif + + static struct platform_driver cpld_b_drv = { + .probe = cpld_b_drv_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = __exit_p(cpld_b_drv_remove_6_11), ++#else ++ + .remove = __exit_p(cpld_b_drv_remove), ++#endif + .driver = { + .name = DRIVER_NAME, + }, +diff --git a/packages/platforms/celestica/x86-64/silverstone/modules/builds/src/i2c-cls.c b/packages/platforms/celestica/x86-64/silverstone/modules/builds/src/i2c-cls.c +index 6faed7e46a95..d9f58a819e82 100644 +--- a/packages/platforms/celestica/x86-64/silverstone/modules/builds/src/i2c-cls.c ++++ b/packages/platforms/celestica/x86-64/silverstone/modules/builds/src/i2c-cls.c +@@ -24,6 +24,7 @@ + #include + #include + #include ++#include + #include "i2c-cls.h" + + /* The registers for one core */ +@@ -468,6 +469,11 @@ static int cls_i2c_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void cls_i2c_remove_6_11(struct platform_device *pdev) { ++ cls_i2c_remove(pdev); ++} ++#endif + + #ifdef CONFIG_PM_SLEEP + static int cls_i2c_suspend(struct device *dev) +@@ -499,7 +505,12 @@ static SIMPLE_DEV_PM_OPS(cls_i2c_pm, cls_i2c_suspend, cls_i2c_resume); + + static struct platform_driver cls_i2c_driver = { + .probe = cls_i2c_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = cls_i2c_remove_6_11, ++#else ++ + .remove = cls_i2c_remove, ++#endif + .driver = { + .name = "cls-i2c", + .pm = CLS_I2C_PM, +diff --git a/packages/platforms/celestica/x86-64/silverstone/modules/builds/src/i2c-ocores.c b/packages/platforms/celestica/x86-64/silverstone/modules/builds/src/i2c-ocores.c +index 7d9f40fbb9d6..169a1b4c49a0 100644 +--- a/packages/platforms/celestica/x86-64/silverstone/modules/builds/src/i2c-ocores.c ++++ b/packages/platforms/celestica/x86-64/silverstone/modules/builds/src/i2c-ocores.c +@@ -25,6 +25,7 @@ + #include + #include + #include ++#include + #include "i2c-ocores.h" + + #define OCORES_FLAG_POLL BIT(0) +@@ -776,6 +777,11 @@ static int ocores_i2c_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void ocores_i2c_remove_6_11(struct platform_device *pdev) { ++ ocores_i2c_remove(pdev); ++} ++#endif + + #ifdef CONFIG_PM_SLEEP + static int ocores_i2c_suspend(struct device *dev) +@@ -820,7 +826,12 @@ static SIMPLE_DEV_PM_OPS(ocores_i2c_pm, ocores_i2c_suspend, ocores_i2c_resume); + + static struct platform_driver ocores_i2c_driver = { + .probe = ocores_i2c_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = ocores_i2c_remove_6_11, ++#else ++ + .remove = ocores_i2c_remove, ++#endif + .driver = { + .name = "cls-ocores-i2c", + .of_match_table = ocores_i2c_match, +diff --git a/packages/platforms/celestica/x86-64/silverstone/modules/builds/src/switchboard-diag.c b/packages/platforms/celestica/x86-64/silverstone/modules/builds/src/switchboard-diag.c +index ff9fde4f7420..1fc842d98322 100644 +--- a/packages/platforms/celestica/x86-64/silverstone/modules/builds/src/switchboard-diag.c ++++ b/packages/platforms/celestica/x86-64/silverstone/modules/builds/src/switchboard-diag.c +@@ -51,6 +51,7 @@ + #include + #include + #include ++#include + + #define MOD_VERSION "2.0.3" + #define FPGA_PCI_DEVICE_ID 0x7021 +@@ -1221,6 +1222,11 @@ static int silverstone_drv_remove(struct platform_device *pdev) + fpga_pci_remove(); + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void silverstone_drv_remove_6_11(struct platform_device *pdev) { ++ silverstone_drv_remove(pdev); ++} ++#endif + + /* move this on top of platform_probe() */ + static int fpga_pci_probe(struct pci_dev *pdev) +@@ -1286,7 +1292,12 @@ static void fpga_pci_remove(void) + + static struct platform_driver silverstone_drv = { + .probe = silverstone_drv_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = __exit_p(silverstone_drv_remove_6_11), ++#else ++ + .remove = __exit_p(silverstone_drv_remove), ++#endif + .driver = { + .name = DRIVER_NAME, + }, +diff --git a/packages/platforms/celestica/x86-64/silverstone/modules/builds/src/xcvr-cls.c b/packages/platforms/celestica/x86-64/silverstone/modules/builds/src/xcvr-cls.c +index bc0da613ec8d..efab5f4a62b4 100644 +--- a/packages/platforms/celestica/x86-64/silverstone/modules/builds/src/xcvr-cls.c ++++ b/packages/platforms/celestica/x86-64/silverstone/modules/builds/src/xcvr-cls.c +@@ -13,6 +13,7 @@ + #include + #include + #include ++#include + #include "xcvr-cls.h" + + /* FPGA front panel */ +@@ -501,11 +502,21 @@ static int cls_xcvr_remove(struct platform_device *pdev) + xcvr_cleanup(xcvr); + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void cls_xcvr_remove_6_11(struct platform_device *pdev) { ++ cls_xcvr_remove(pdev); ++} ++#endif + + + static struct platform_driver cls_xcvr_driver = { + .probe = cls_xcvr_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = cls_xcvr_remove_6_11, ++#else ++ + .remove = cls_xcvr_remove, ++#endif + .driver = { + .name = "cls-xcvr", + }, +diff --git a/packages/platforms/delta/x86-64/ag8032/modules/builds/x86-64-delta-ag8032-i2c-mux-cpld.c b/packages/platforms/delta/x86-64/ag8032/modules/builds/x86-64-delta-ag8032-i2c-mux-cpld.c +index d553217750f3..b920b8e53464 100644 +--- a/packages/platforms/delta/x86-64/ag8032/modules/builds/x86-64-delta-ag8032-i2c-mux-cpld.c ++++ b/packages/platforms/delta/x86-64/ag8032/modules/builds/x86-64-delta-ag8032-i2c-mux-cpld.c +@@ -193,10 +193,20 @@ static int i2c_mux_cpld_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void i2c_mux_cpld_remove_6_11(struct platform_device *pdev) { ++ i2c_mux_cpld_remove(pdev); ++} ++#endif + + static struct platform_driver i2c_mux_cpld_driver = { + .probe = i2c_mux_cpld_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = i2c_mux_cpld_remove_6_11, ++#else ++ + .remove = i2c_mux_cpld_remove, ++#endif + .driver = { + .name = "i2c-mux-cpld", + }, +diff --git a/packages/platforms/delta/x86-64/ag9032v2a/modules/builds/delta_ag9032v2a_platform.c b/packages/platforms/delta/x86-64/ag9032v2a/modules/builds/delta_ag9032v2a_platform.c +index cddd70850edc..80406eb3b915 100644 +--- a/packages/platforms/delta/x86-64/ag9032v2a/modules/builds/delta_ag9032v2a_platform.c ++++ b/packages/platforms/delta/x86-64/ag9032v2a/modules/builds/delta_ag9032v2a_platform.c +@@ -11,6 +11,7 @@ + #include + #include + #include ++#include + + #define CPUPLD_ADDR 0x31 + #define SWPLD1_ADDR 0x6a +@@ -811,9 +812,19 @@ static int __exit i2c_deivce_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void i2c_deivce_remove_6_11(struct platform_device *pdev) { ++ i2c_deivce_remove(pdev); ++} ++#endif + static struct platform_driver i2c_device_driver = { + .probe = i2c_device_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = __exit_p(i2c_deivce_remove_6_11), ++#else ++ + .remove = __exit_p(i2c_deivce_remove), ++#endif + .driver = { + .owner = THIS_MODULE, + .name = "delta-ag9032v2a-i2c-device", +@@ -1711,6 +1722,11 @@ static int __exit cpld_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void cpld_remove_6_11(struct platform_device *pdev) { ++ cpld_remove(pdev); ++} ++#endif + + static int __exit swpld1_remove(struct platform_device *pdev) + { +@@ -1732,6 +1748,11 @@ static int __exit swpld1_remove(struct platform_device *pdev) + i2c_put_adapter(parent); + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void swpld1_remove_6_11(struct platform_device *pdev) { ++ swpld1_remove(pdev); ++} ++#endif + + static int __exit swpld2_remove(struct platform_device *pdev) + { +@@ -1753,6 +1774,11 @@ static int __exit swpld2_remove(struct platform_device *pdev) + i2c_put_adapter(parent); + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void swpld2_remove_6_11(struct platform_device *pdev) { ++ swpld2_remove(pdev); ++} ++#endif + + static int __exit swpld3_remove(struct platform_device *pdev) + { +@@ -1774,10 +1800,20 @@ static int __exit swpld3_remove(struct platform_device *pdev) + i2c_put_adapter(parent); + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void swpld3_remove_6_11(struct platform_device *pdev) { ++ swpld3_remove(pdev); ++} ++#endif + + static struct platform_driver cpld_driver = { + .probe = cpld_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = __exit_p(cpld_remove_6_11), ++#else ++ + .remove = __exit_p(cpld_remove), ++#endif + .driver = { + .owner = THIS_MODULE, + .name = "delta-ag9032v2a-cpld", +@@ -1786,7 +1822,12 @@ static struct platform_driver cpld_driver = { + + static struct platform_driver swpld1_driver = { + .probe = swpld1_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = __exit_p(swpld1_remove_6_11), ++#else ++ + .remove = __exit_p(swpld1_remove), ++#endif + .driver = { + .owner = THIS_MODULE, + .name = "delta-ag9032v2a-swpld1", +@@ -1795,7 +1836,12 @@ static struct platform_driver swpld1_driver = { + + static struct platform_driver swpld2_driver = { + .probe = swpld2_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = __exit_p(swpld2_remove_6_11), ++#else ++ + .remove = __exit_p(swpld2_remove), ++#endif + .driver = { + .owner = THIS_MODULE, + .name = "delta-ag9032v2a-swpld2", +@@ -1804,7 +1850,12 @@ static struct platform_driver swpld2_driver = { + + static struct platform_driver swpld3_driver = { + .probe = swpld3_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = __exit_p(swpld3_remove_6_11), ++#else ++ + .remove = __exit_p(swpld3_remove), ++#endif + .driver = { + .owner = THIS_MODULE, + .name = "delta-ag9032v2a-swpld3", +@@ -2120,6 +2171,11 @@ static int __exit cpld_mux_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void cpld_mux_remove_6_11(struct platform_device *pdev) { ++ cpld_mux_remove(pdev); ++} ++#endif + + static int __exit swpld_mux_remove(struct platform_device *pdev) + { +@@ -2131,10 +2187,21 @@ static int __exit swpld_mux_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void swpld_mux_remove_6_11(struct platform_device *pdev) { ++ swpld_mux_remove(pdev); ++} ++#endif + + static struct platform_driver cpld_mux_driver = { + .probe = cpld_mux_probe, +- .remove = __exit_p(cpld_mux_remove), /* TODO */ ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = __exit_p(cpld_mux_remove_6_11), ++#else ++ ++ .remove = __exit_p(cpld_mux_remove), ++#endif ++ /* TODO */ + .driver = { + .owner = THIS_MODULE, + .name = "delta-ag9032v2a-cpld-mux", +@@ -2143,7 +2210,13 @@ static struct platform_driver cpld_mux_driver = { + + static struct platform_driver swpld1_mux_driver = { + .probe = swpld_mux_probe, +- .remove = __exit_p(swpld_mux_remove), /* TODO */ ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = __exit_p(swpld_mux_remove_6_11), ++#else ++ ++ .remove = __exit_p(swpld_mux_remove), ++#endif ++ /* TODO */ + .driver = { + .owner = THIS_MODULE, + .name = "delta-ag9032v2a-swpld1-mux", +diff --git a/packages/platforms/delta/x86-64/ag9064/modules/builds/src/delta_ag9064_cpld.c b/packages/platforms/delta/x86-64/ag9064/modules/builds/src/delta_ag9064_cpld.c +index 4db8f0cfd7b0..ea93622ec86c 100755 +--- a/packages/platforms/delta/x86-64/ag9064/modules/builds/src/delta_ag9064_cpld.c ++++ b/packages/platforms/delta/x86-64/ag9064/modules/builds/src/delta_ag9064_cpld.c +@@ -801,10 +801,20 @@ static int __exit cpld_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void cpld_remove_6_11(struct platform_device *pdev) { ++ cpld_remove(pdev); ++} ++#endif + + static struct platform_driver cpld_driver = { + .probe = cpld_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = __exit_p(cpld_remove_6_11), ++#else ++ + .remove = __exit_p(cpld_remove), ++#endif + .driver = { + .owner = THIS_MODULE, + .name = "delta-ag9064-cpld", +diff --git a/packages/platforms/delta/x86-64/ag9064/modules/builds/src/delta_ag9064_platform.c b/packages/platforms/delta/x86-64/ag9064/modules/builds/src/delta_ag9064_platform.c +index 42ecc1787bf4..ea6423024196 100755 +--- a/packages/platforms/delta/x86-64/ag9064/modules/builds/src/delta_ag9064_platform.c ++++ b/packages/platforms/delta/x86-64/ag9064/modules/builds/src/delta_ag9064_platform.c +@@ -691,9 +691,19 @@ static int __exit i2c_deivce_remove(struct platform_device *pdev) + } + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void i2c_deivce_remove_6_11(struct platform_device *pdev) { ++ i2c_deivce_remove(pdev); ++} ++#endif + static struct platform_driver i2c_device_driver = { + .probe = i2c_device_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = __exit_p(i2c_deivce_remove_6_11), ++#else ++ + .remove = __exit_p(i2c_deivce_remove), ++#endif + .driver = { + .owner = THIS_MODULE, + .name = "delta-ag9064-i2c-device", +@@ -837,10 +847,21 @@ static int __exit swpld_mux_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void swpld_mux_remove_6_11(struct platform_device *pdev) { ++ swpld_mux_remove(pdev); ++} ++#endif + + static struct platform_driver swpld_mux_driver = { + .probe = swpld_mux_probe, +- .remove = __exit_p(swpld_mux_remove), /* TODO */ ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = __exit_p(swpld_mux_remove_6_11), ++#else ++ ++ .remove = __exit_p(swpld_mux_remove), ++#endif ++ /* TODO */ + .driver = { + .owner = THIS_MODULE, + .name = "delta-ag9064-swpld-mux", +diff --git a/packages/platforms/delta/x86-64/ag9064/modules/builds/src/delta_ag9064_swpld.c b/packages/platforms/delta/x86-64/ag9064/modules/builds/src/delta_ag9064_swpld.c +index 4614e10bbce7..910020c08ea4 100755 +--- a/packages/platforms/delta/x86-64/ag9064/modules/builds/src/delta_ag9064_swpld.c ++++ b/packages/platforms/delta/x86-64/ag9064/modules/builds/src/delta_ag9064_swpld.c +@@ -441,28 +441,53 @@ static int __exit swpld1_remove(struct platform_device *pdev) + sysfs_remove_group(&pdev->dev.kobj, &swpld1_device_attr_grp); + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void swpld1_remove_6_11(struct platform_device *pdev) { ++ swpld1_remove(pdev); ++} ++#endif + + static int __exit swpld2_remove(struct platform_device *pdev) + { + sysfs_remove_group(&pdev->dev.kobj, &swpld2_device_attr_grp); + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void swpld2_remove_6_11(struct platform_device *pdev) { ++ swpld2_remove(pdev); ++} ++#endif + + static int __exit swpld3_remove(struct platform_device *pdev) + { + sysfs_remove_group(&pdev->dev.kobj, &swpld3_device_attr_grp); + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void swpld3_remove_6_11(struct platform_device *pdev) { ++ swpld3_remove(pdev); ++} ++#endif + + static int __exit swpld4_remove(struct platform_device *pdev) + { + sysfs_remove_group(&pdev->dev.kobj, &swpld4_device_attr_grp); + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void swpld4_remove_6_11(struct platform_device *pdev) { ++ swpld4_remove(pdev); ++} ++#endif + + static struct platform_driver swpld1_driver = { + .probe = swpld1_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = __exit_p(swpld1_remove_6_11), ++#else ++ + .remove = __exit_p(swpld1_remove), ++#endif + .driver = { + .owner = THIS_MODULE, + .name = "delta-ag9064-swpld1", +@@ -471,7 +496,12 @@ static struct platform_driver swpld1_driver = { + + static struct platform_driver swpld2_driver = { + .probe = swpld2_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = __exit_p(swpld2_remove_6_11), ++#else ++ + .remove = __exit_p(swpld2_remove), ++#endif + .driver = { + .owner = THIS_MODULE, + .name = "delta-ag9064-swpld2", +@@ -480,7 +510,12 @@ static struct platform_driver swpld2_driver = { + + static struct platform_driver swpld3_driver = { + .probe = swpld3_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = __exit_p(swpld3_remove_6_11), ++#else ++ + .remove = __exit_p(swpld3_remove), ++#endif + .driver = { + .owner = THIS_MODULE, + .name = "delta-ag9064-swpld3", +@@ -489,7 +524,12 @@ static struct platform_driver swpld3_driver = { + + static struct platform_driver swpld4_driver = { + .probe = swpld4_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = __exit_p(swpld4_remove_6_11), ++#else ++ + .remove = __exit_p(swpld4_remove), ++#endif + .driver = { + .owner = THIS_MODULE, + .name = "delta-ag9064-swpld4", +diff --git a/packages/platforms/delta/x86-64/agc7008s/modules/builds/src/delta_agc7008s_cpld.c b/packages/platforms/delta/x86-64/agc7008s/modules/builds/src/delta_agc7008s_cpld.c +index 8b2ae30dd58e..f356245eae1d 100755 +--- a/packages/platforms/delta/x86-64/agc7008s/modules/builds/src/delta_agc7008s_cpld.c ++++ b/packages/platforms/delta/x86-64/agc7008s/modules/builds/src/delta_agc7008s_cpld.c +@@ -229,10 +229,20 @@ static int __exit cpld_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void cpld_remove_6_11(struct platform_device *pdev) { ++ cpld_remove(pdev); ++} ++#endif + + static struct platform_driver cpld_driver = { + .probe = cpld_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = __exit_p(cpld_remove_6_11), ++#else ++ + .remove = __exit_p(cpld_remove), ++#endif + .driver = { + .owner = THIS_MODULE, + .name = "delta-agc7008s-cpld", +diff --git a/packages/platforms/delta/x86-64/agc7008s/modules/builds/src/delta_agc7008s_platform.c b/packages/platforms/delta/x86-64/agc7008s/modules/builds/src/delta_agc7008s_platform.c +index 0471572e5dd5..8e9c2153b06c 100755 +--- a/packages/platforms/delta/x86-64/agc7008s/modules/builds/src/delta_agc7008s_platform.c ++++ b/packages/platforms/delta/x86-64/agc7008s/modules/builds/src/delta_agc7008s_platform.c +@@ -420,9 +420,19 @@ static int __exit i2c_deivce_remove(struct platform_device *pdev) + } + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void i2c_deivce_remove_6_11(struct platform_device *pdev) { ++ i2c_deivce_remove(pdev); ++} ++#endif + static struct platform_driver i2c_device_driver = { + .probe = i2c_device_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = __exit_p(i2c_deivce_remove_6_11), ++#else ++ + .remove = __exit_p(i2c_deivce_remove), ++#endif + .driver = { + .owner = THIS_MODULE, + .name = "delta-agc7008s-i2c-device", +diff --git a/packages/platforms/delta/x86-64/agc7008s/modules/builds/src/delta_agc7008s_swpld.c b/packages/platforms/delta/x86-64/agc7008s/modules/builds/src/delta_agc7008s_swpld.c +index 242da0b0c8ac..256368f3b9b2 100755 +--- a/packages/platforms/delta/x86-64/agc7008s/modules/builds/src/delta_agc7008s_swpld.c ++++ b/packages/platforms/delta/x86-64/agc7008s/modules/builds/src/delta_agc7008s_swpld.c +@@ -507,10 +507,20 @@ static int __exit system_cpld_remove(struct platform_device *pdev) + sysfs_remove_group(&pdev->dev.kobj, &system_cpld_device_attr_grp); + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void system_cpld_remove_6_11(struct platform_device *pdev) { ++ system_cpld_remove(pdev); ++} ++#endif + + static struct platform_driver system_cpld_driver = { + .probe = system_cpld_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = __exit_p(system_cpld_remove_6_11), ++#else ++ + .remove = __exit_p(system_cpld_remove), ++#endif + .driver = { + .owner = THIS_MODULE, + .name = "delta-agc7008s-system-cpld", +@@ -533,10 +543,20 @@ static int __exit port_cpld0_remove(struct platform_device *pdev) + sysfs_remove_group(&pdev->dev.kobj, &port_cpld0_device_attr_grp); + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void port_cpld0_remove_6_11(struct platform_device *pdev) { ++ port_cpld0_remove(pdev); ++} ++#endif + + static struct platform_driver port_cpld0_driver = { + .probe = port_cpld0_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = __exit_p(port_cpld0_remove_6_11), ++#else ++ + .remove = __exit_p(port_cpld0_remove), ++#endif + .driver = { + .owner = THIS_MODULE, + .name = "delta-agc7008s-port-cpld0", +diff --git a/packages/platforms/delta/x86-64/agc7646slv1b/modules/builds/delta_agc7646slv1b_platform.c b/packages/platforms/delta/x86-64/agc7646slv1b/modules/builds/delta_agc7646slv1b_platform.c +index 9c95ad9cbaf7..3214650edea4 100755 +--- a/packages/platforms/delta/x86-64/agc7646slv1b/modules/builds/delta_agc7646slv1b_platform.c ++++ b/packages/platforms/delta/x86-64/agc7646slv1b/modules/builds/delta_agc7646slv1b_platform.c +@@ -13,6 +13,7 @@ + #include + #include + #include ++#include + + #define CPUPLD_ADDR 0x31 + #define SWPLD1_ADDR 0x6a +@@ -1271,9 +1272,19 @@ static int __exit i2c_deivce_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void i2c_deivce_remove_6_11(struct platform_device *pdev) { ++ i2c_deivce_remove(pdev); ++} ++#endif + static struct platform_driver i2c_device_driver = { + .probe = i2c_device_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = __exit_p(i2c_deivce_remove_6_11), ++#else ++ + .remove = __exit_p(i2c_deivce_remove), ++#endif + .driver = { + .owner = THIS_MODULE, + .name = "delta-agc7646slv1b-i2c-device", +@@ -2445,6 +2456,11 @@ static int __exit cpld_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void cpld_remove_6_11(struct platform_device *pdev) { ++ cpld_remove(pdev); ++} ++#endif + + static int __exit swpld1_remove(struct platform_device *pdev) + { +@@ -2466,6 +2482,11 @@ static int __exit swpld1_remove(struct platform_device *pdev) + i2c_put_adapter(parent); + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void swpld1_remove_6_11(struct platform_device *pdev) { ++ swpld1_remove(pdev); ++} ++#endif + + static int __exit swpld2_remove(struct platform_device *pdev) + { +@@ -2487,6 +2508,11 @@ static int __exit swpld2_remove(struct platform_device *pdev) + i2c_put_adapter(parent); + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void swpld2_remove_6_11(struct platform_device *pdev) { ++ swpld2_remove(pdev); ++} ++#endif + + static int __exit swpld3_remove(struct platform_device *pdev) + { +@@ -2508,10 +2534,20 @@ static int __exit swpld3_remove(struct platform_device *pdev) + i2c_put_adapter(parent); + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void swpld3_remove_6_11(struct platform_device *pdev) { ++ swpld3_remove(pdev); ++} ++#endif + + static struct platform_driver cpld_driver = { + .probe = cpld_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = __exit_p(cpld_remove_6_11), ++#else ++ + .remove = __exit_p(cpld_remove), ++#endif + .driver = { + .owner = THIS_MODULE, + .name = "delta-agc7646slv1b-cpld", +@@ -2520,7 +2556,12 @@ static struct platform_driver cpld_driver = { + + static struct platform_driver swpld1_driver = { + .probe = swpld1_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = __exit_p(swpld1_remove_6_11), ++#else ++ + .remove = __exit_p(swpld1_remove), ++#endif + .driver = { + .owner = THIS_MODULE, + .name = "delta-agc7646slv1b-swpld1", +@@ -2529,7 +2570,12 @@ static struct platform_driver swpld1_driver = { + + static struct platform_driver swpld2_driver = { + .probe = swpld2_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = __exit_p(swpld2_remove_6_11), ++#else ++ + .remove = __exit_p(swpld2_remove), ++#endif + .driver = { + .owner = THIS_MODULE, + .name = "delta-agc7646slv1b-swpld2", +@@ -2538,7 +2584,12 @@ static struct platform_driver swpld2_driver = { + + static struct platform_driver swpld3_driver = { + .probe = swpld3_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = __exit_p(swpld3_remove_6_11), ++#else ++ + .remove = __exit_p(swpld3_remove), ++#endif + .driver = { + .owner = THIS_MODULE, + .name = "delta-agc7646slv1b-swpld3", +@@ -3133,6 +3184,11 @@ static int __exit cpld_mux_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void cpld_mux_remove_6_11(struct platform_device *pdev) { ++ cpld_mux_remove(pdev); ++} ++#endif + + static int __exit swpld1_mux_remove(struct platform_device *pdev) + { +@@ -3144,6 +3200,11 @@ static int __exit swpld1_mux_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void swpld1_mux_remove_6_11(struct platform_device *pdev) { ++ swpld1_mux_remove(pdev); ++} ++#endif + + static int __exit swpld3_mux_remove(struct platform_device *pdev) + { +@@ -3155,10 +3216,21 @@ static int __exit swpld3_mux_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void swpld3_mux_remove_6_11(struct platform_device *pdev) { ++ swpld3_mux_remove(pdev); ++} ++#endif + + static struct platform_driver cpld_mux_driver = { + .probe = cpld_mux_probe, +- .remove = __exit_p(cpld_mux_remove), /* TODO */ ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = __exit_p(cpld_mux_remove_6_11), ++#else ++ ++ .remove = __exit_p(cpld_mux_remove), ++#endif ++ /* TODO */ + .driver = { + .owner = THIS_MODULE, + .name = "delta-agc7646slv1b-cpld-mux", +@@ -3167,7 +3239,13 @@ static struct platform_driver cpld_mux_driver = { + + static struct platform_driver swpld1_mux_driver = { + .probe = swpld1_mux_probe, +- .remove = __exit_p(swpld1_mux_remove), /* TODO */ ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = __exit_p(swpld1_mux_remove_6_11), ++#else ++ ++ .remove = __exit_p(swpld1_mux_remove), ++#endif ++ /* TODO */ + .driver = { + .owner = THIS_MODULE, + .name = "delta-agc7646slv1b-swpld1-mux", +@@ -3176,7 +3254,13 @@ static struct platform_driver swpld1_mux_driver = { + + static struct platform_driver swpld3_mux_driver = { + .probe = swpld3_mux_probe, +- .remove = __exit_p(swpld3_mux_remove), /* TODO */ ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = __exit_p(swpld3_mux_remove_6_11), ++#else ++ ++ .remove = __exit_p(swpld3_mux_remove), ++#endif ++ /* TODO */ + .driver = { + .owner = THIS_MODULE, + .name = "delta-agc7646slv1b-swpld3-mux", +diff --git a/packages/platforms/delta/x86-64/agc7646v1/modules/builds/delta_agc7646v1_platform.c b/packages/platforms/delta/x86-64/agc7646v1/modules/builds/delta_agc7646v1_platform.c +index 8b5688e0af66..01f2190aef1f 100755 +--- a/packages/platforms/delta/x86-64/agc7646v1/modules/builds/delta_agc7646v1_platform.c ++++ b/packages/platforms/delta/x86-64/agc7646v1/modules/builds/delta_agc7646v1_platform.c +@@ -13,6 +13,7 @@ + #include + #include + #include ++#include + + #define CPUPLD_ADDR 0x31 + #define SWPLD1_ADDR 0x6a +@@ -1271,9 +1272,19 @@ static int __exit i2c_deivce_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void i2c_deivce_remove_6_11(struct platform_device *pdev) { ++ i2c_deivce_remove(pdev); ++} ++#endif + static struct platform_driver i2c_device_driver = { + .probe = i2c_device_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = __exit_p(i2c_deivce_remove_6_11), ++#else ++ + .remove = __exit_p(i2c_deivce_remove), ++#endif + .driver = { + .owner = THIS_MODULE, + .name = "delta-agc7646v1-i2c-device", +@@ -2445,6 +2456,11 @@ static int __exit cpld_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void cpld_remove_6_11(struct platform_device *pdev) { ++ cpld_remove(pdev); ++} ++#endif + + static int __exit swpld1_remove(struct platform_device *pdev) + { +@@ -2466,6 +2482,11 @@ static int __exit swpld1_remove(struct platform_device *pdev) + i2c_put_adapter(parent); + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void swpld1_remove_6_11(struct platform_device *pdev) { ++ swpld1_remove(pdev); ++} ++#endif + + static int __exit swpld2_remove(struct platform_device *pdev) + { +@@ -2487,6 +2508,11 @@ static int __exit swpld2_remove(struct platform_device *pdev) + i2c_put_adapter(parent); + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void swpld2_remove_6_11(struct platform_device *pdev) { ++ swpld2_remove(pdev); ++} ++#endif + + static int __exit swpld3_remove(struct platform_device *pdev) + { +@@ -2508,10 +2534,20 @@ static int __exit swpld3_remove(struct platform_device *pdev) + i2c_put_adapter(parent); + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void swpld3_remove_6_11(struct platform_device *pdev) { ++ swpld3_remove(pdev); ++} ++#endif + + static struct platform_driver cpld_driver = { + .probe = cpld_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = __exit_p(cpld_remove_6_11), ++#else ++ + .remove = __exit_p(cpld_remove), ++#endif + .driver = { + .owner = THIS_MODULE, + .name = "delta-agc7646v1-cpld", +@@ -2520,7 +2556,12 @@ static struct platform_driver cpld_driver = { + + static struct platform_driver swpld1_driver = { + .probe = swpld1_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = __exit_p(swpld1_remove_6_11), ++#else ++ + .remove = __exit_p(swpld1_remove), ++#endif + .driver = { + .owner = THIS_MODULE, + .name = "delta-agc7646v1-swpld1", +@@ -2529,7 +2570,12 @@ static struct platform_driver swpld1_driver = { + + static struct platform_driver swpld2_driver = { + .probe = swpld2_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = __exit_p(swpld2_remove_6_11), ++#else ++ + .remove = __exit_p(swpld2_remove), ++#endif + .driver = { + .owner = THIS_MODULE, + .name = "delta-agc7646v1-swpld2", +@@ -2538,7 +2584,12 @@ static struct platform_driver swpld2_driver = { + + static struct platform_driver swpld3_driver = { + .probe = swpld3_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = __exit_p(swpld3_remove_6_11), ++#else ++ + .remove = __exit_p(swpld3_remove), ++#endif + .driver = { + .owner = THIS_MODULE, + .name = "delta-agc7646v1-swpld3", +@@ -3133,6 +3184,11 @@ static int __exit cpld_mux_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void cpld_mux_remove_6_11(struct platform_device *pdev) { ++ cpld_mux_remove(pdev); ++} ++#endif + + static int __exit swpld1_mux_remove(struct platform_device *pdev) + { +@@ -3144,6 +3200,11 @@ static int __exit swpld1_mux_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void swpld1_mux_remove_6_11(struct platform_device *pdev) { ++ swpld1_mux_remove(pdev); ++} ++#endif + + static int __exit swpld3_mux_remove(struct platform_device *pdev) + { +@@ -3155,10 +3216,21 @@ static int __exit swpld3_mux_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void swpld3_mux_remove_6_11(struct platform_device *pdev) { ++ swpld3_mux_remove(pdev); ++} ++#endif + + static struct platform_driver cpld_mux_driver = { + .probe = cpld_mux_probe, +- .remove = __exit_p(cpld_mux_remove), /* TODO */ ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = __exit_p(cpld_mux_remove_6_11), ++#else ++ ++ .remove = __exit_p(cpld_mux_remove), ++#endif ++ /* TODO */ + .driver = { + .owner = THIS_MODULE, + .name = "delta-agc7646v1-cpld-mux", +@@ -3167,7 +3239,13 @@ static struct platform_driver cpld_mux_driver = { + + static struct platform_driver swpld1_mux_driver = { + .probe = swpld1_mux_probe, +- .remove = __exit_p(swpld1_mux_remove), /* TODO */ ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = __exit_p(swpld1_mux_remove_6_11), ++#else ++ ++ .remove = __exit_p(swpld1_mux_remove), ++#endif ++ /* TODO */ + .driver = { + .owner = THIS_MODULE, + .name = "delta-agc7646v1-swpld1-mux", +@@ -3176,7 +3254,13 @@ static struct platform_driver swpld1_mux_driver = { + + static struct platform_driver swpld3_mux_driver = { + .probe = swpld3_mux_probe, +- .remove = __exit_p(swpld3_mux_remove), /* TODO */ ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = __exit_p(swpld3_mux_remove_6_11), ++#else ++ ++ .remove = __exit_p(swpld3_mux_remove), ++#endif ++ /* TODO */ + .driver = { + .owner = THIS_MODULE, + .name = "delta-agc7646v1-swpld3-mux", +diff --git a/packages/platforms/delta/x86-64/agc7648sv1/modules/builds/delta_agc7648sv1_platform.c b/packages/platforms/delta/x86-64/agc7648sv1/modules/builds/delta_agc7648sv1_platform.c +index 3b3dd00484e4..f2d5423d4a33 100755 +--- a/packages/platforms/delta/x86-64/agc7648sv1/modules/builds/delta_agc7648sv1_platform.c ++++ b/packages/platforms/delta/x86-64/agc7648sv1/modules/builds/delta_agc7648sv1_platform.c +@@ -13,6 +13,7 @@ + #include + #include + #include ++#include + + #define CPUPLD_ADDR 0x31 + #define SWPLD1_ADDR 0x6a +@@ -851,9 +852,19 @@ static int __exit i2c_deivce_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void i2c_deivce_remove_6_11(struct platform_device *pdev) { ++ i2c_deivce_remove(pdev); ++} ++#endif + static struct platform_driver i2c_device_driver = { + .probe = i2c_device_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = __exit_p(i2c_deivce_remove_6_11), ++#else ++ + .remove = __exit_p(i2c_deivce_remove), ++#endif + .driver = { + .owner = THIS_MODULE, + .name = "delta-agc7648sv1-i2c-device", +@@ -1144,10 +1155,20 @@ static int __exit cpld_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void cpld_remove_6_11(struct platform_device *pdev) { ++ cpld_remove(pdev); ++} ++#endif + + static struct platform_driver cpld_driver = { + .probe = cpld_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = __exit_p(cpld_remove_6_11), ++#else ++ + .remove = __exit_p(cpld_remove), ++#endif + .driver = { + .owner = THIS_MODULE, + .name = "delta-agc7648sv1-cpld", +@@ -1574,6 +1595,11 @@ static int __exit cpld_mux_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void cpld_mux_remove_6_11(struct platform_device *pdev) { ++ cpld_mux_remove(pdev); ++} ++#endif + + static int __exit swpld3_mux_remove(struct platform_device *pdev) + { +@@ -1585,10 +1611,21 @@ static int __exit swpld3_mux_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void swpld3_mux_remove_6_11(struct platform_device *pdev) { ++ swpld3_mux_remove(pdev); ++} ++#endif + + static struct platform_driver cpld_mux_driver = { + .probe = cpld_mux_probe, +- .remove = __exit_p(cpld_mux_remove), /* TODO */ ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = __exit_p(cpld_mux_remove_6_11), ++#else ++ ++ .remove = __exit_p(cpld_mux_remove), ++#endif ++ /* TODO */ + .driver = { + .owner = THIS_MODULE, + .name = "delta-agc7648sv1-cpld-mux", +@@ -1597,7 +1634,13 @@ static struct platform_driver cpld_mux_driver = { + + static struct platform_driver swpld3_mux_driver = { + .probe = swpld3_mux_probe, +- .remove = __exit_p(swpld3_mux_remove), /* TODO */ ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = __exit_p(swpld3_mux_remove_6_11), ++#else ++ ++ .remove = __exit_p(swpld3_mux_remove), ++#endif ++ /* TODO */ + .driver = { + .owner = THIS_MODULE, + .name = "delta-agc7648sv1-swpld3-mux", +diff --git a/packages/platforms/delta/x86-64/ak7448/modules/builds/delta_ak7448_platform.c b/packages/platforms/delta/x86-64/ak7448/modules/builds/delta_ak7448_platform.c +index cdd078ac6bd8..e34d3beac900 100644 +--- a/packages/platforms/delta/x86-64/ak7448/modules/builds/delta_ak7448_platform.c ++++ b/packages/platforms/delta/x86-64/ak7448/modules/builds/delta_ak7448_platform.c +@@ -562,10 +562,21 @@ static int __exit i2c_deivce_remove(struct platform_device *pdev) + } + + return 0; +-} ++} ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void i2c_deivce_remove_6_11(struct platform_device *pdev) { ++ i2c_deivce_remove(pdev); ++} ++#endif + static struct platform_driver i2c_device_driver = { + .probe = i2c_device_probe, +- .remove = __exit_p(i2c_deivce_remove), ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = __exit_p(i2c_deivce_remove_6_11), ++#else ++ ++ .remove = __exit_p(i2c_deivce_remove), ++#endif ++ + .driver = { + .owner = THIS_MODULE, + .name = "delta-ak7448-i2c-device", +@@ -1076,11 +1087,22 @@ static int __exit cpld_remove(struct platform_device *pdev) + i2c_put_adapter(parent); + + return 0; +-} ++} ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void cpld_remove_6_11(struct platform_device *pdev) { ++ cpld_remove(pdev); ++} ++#endif + + static struct platform_driver cpld_driver = { + .probe = cpld_probe, +- .remove = __exit_p(cpld_remove), ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = __exit_p(cpld_remove_6_11), ++#else ++ ++ .remove = __exit_p(cpld_remove), ++#endif ++ + .driver = { + .owner = THIS_MODULE, + .name = "delta-ak7448-cpld", +@@ -1314,11 +1336,22 @@ static int __exit swpld_mux_remove(struct platform_device *pdev) + kfree(mux); + + return 0; +-} ++} ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void swpld_mux_remove_6_11(struct platform_device *pdev) { ++ swpld_mux_remove(pdev); ++} ++#endif + + static struct platform_driver swpld_mux_driver = { + .probe = swpld_mux_probe, +- .remove = __exit_p(swpld_mux_remove), /* TODO */ ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = __exit_p(swpld_mux_remove_6_11), ++#else ++ ++ .remove = __exit_p(swpld_mux_remove), ++#endif ++ /* TODO */ + .driver = { + .owner = THIS_MODULE, + .name = "delta-ak7448-swpld-mux", +diff --git a/packages/platforms/inventec/x86-64/d10056/modules/builds/src/gpio-ich.c b/packages/platforms/inventec/x86-64/d10056/modules/builds/src/gpio-ich.c +index 3db7133c849b..1a81412ff1df 100644 +--- a/packages/platforms/inventec/x86-64/d10056/modules/builds/src/gpio-ich.c ++++ b/packages/platforms/inventec/x86-64/d10056/modules/builds/src/gpio-ich.c +@@ -26,6 +26,7 @@ + #include + #include + #include ++#include + + #define DRV_NAME "gpio_ich" + +@@ -496,13 +497,23 @@ static int ichx_gpio_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void ichx_gpio_remove_6_11(struct platform_device *pdev) { ++ ichx_gpio_remove(pdev); ++} ++#endif + + static struct platform_driver ichx_gpio_driver = { + .driver = { + .name = DRV_NAME, + }, + .probe = ichx_gpio_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = ichx_gpio_remove_6_11, ++#else ++ + .remove = ichx_gpio_remove, ++#endif + }; + + module_platform_driver(ichx_gpio_driver); +diff --git a/packages/platforms/inventec/x86-64/d10056/modules/builds/src/i2c-gpio.c b/packages/platforms/inventec/x86-64/d10056/modules/builds/src/i2c-gpio.c +index be3848bb156c..49833ac5b71a 100644 +--- a/packages/platforms/inventec/x86-64/d10056/modules/builds/src/i2c-gpio.c ++++ b/packages/platforms/inventec/x86-64/d10056/modules/builds/src/i2c-gpio.c +@@ -17,6 +17,7 @@ + #include + #include + #include ++#include + + struct i2c_gpio_private_data { + struct i2c_adapter adap; +@@ -248,6 +249,11 @@ static int i2c_gpio_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void i2c_gpio_remove_6_11(struct platform_device *pdev) { ++ i2c_gpio_remove(pdev); ++} ++#endif + + #if defined(CONFIG_OF) + static const struct of_device_id i2c_gpio_dt_ids[] = { +@@ -264,7 +270,12 @@ static struct platform_driver i2c_gpio_driver = { + .of_match_table = of_match_ptr(i2c_gpio_dt_ids), + }, + .probe = i2c_gpio_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = i2c_gpio_remove_6_11, ++#else ++ + .remove = i2c_gpio_remove, ++#endif + }; + + static int __init i2c_gpio_init(void) +diff --git a/packages/platforms/inventec/x86-64/d3352/modules/builds/src/i2c-gpio.c b/packages/platforms/inventec/x86-64/d3352/modules/builds/src/i2c-gpio.c +index 4a2ee87fd9fa..f3cccf98b103 100644 +--- a/packages/platforms/inventec/x86-64/d3352/modules/builds/src/i2c-gpio.c ++++ b/packages/platforms/inventec/x86-64/d3352/modules/builds/src/i2c-gpio.c +@@ -17,6 +17,7 @@ + #include + #include + #include ++#include + + struct i2c_gpio_private_data { + struct i2c_adapter adap; +@@ -250,6 +251,11 @@ static int i2c_gpio_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void i2c_gpio_remove_6_11(struct platform_device *pdev) { ++ i2c_gpio_remove(pdev); ++} ++#endif + + #if defined(CONFIG_OF) + static const struct of_device_id i2c_gpio_dt_ids[] = { +@@ -267,7 +273,12 @@ static struct platform_driver i2c_gpio_driver = { + .of_match_table = of_match_ptr(i2c_gpio_dt_ids), + }, + .probe = i2c_gpio_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = i2c_gpio_remove_6_11, ++#else ++ + .remove = i2c_gpio_remove, ++#endif + }; + + static int __init i2c_gpio_init(void) +diff --git a/packages/platforms/inventec/x86-64/d5052/modules/builds/src/i2c-gpio.c b/packages/platforms/inventec/x86-64/d5052/modules/builds/src/i2c-gpio.c +index 4a2ee87fd9fa..f3cccf98b103 100644 +--- a/packages/platforms/inventec/x86-64/d5052/modules/builds/src/i2c-gpio.c ++++ b/packages/platforms/inventec/x86-64/d5052/modules/builds/src/i2c-gpio.c +@@ -17,6 +17,7 @@ + #include + #include + #include ++#include + + struct i2c_gpio_private_data { + struct i2c_adapter adap; +@@ -250,6 +251,11 @@ static int i2c_gpio_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void i2c_gpio_remove_6_11(struct platform_device *pdev) { ++ i2c_gpio_remove(pdev); ++} ++#endif + + #if defined(CONFIG_OF) + static const struct of_device_id i2c_gpio_dt_ids[] = { +@@ -267,7 +273,12 @@ static struct platform_driver i2c_gpio_driver = { + .of_match_table = of_match_ptr(i2c_gpio_dt_ids), + }, + .probe = i2c_gpio_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = i2c_gpio_remove_6_11, ++#else ++ + .remove = i2c_gpio_remove, ++#endif + }; + + static int __init i2c_gpio_init(void) +diff --git a/packages/platforms/inventec/x86-64/d5254/modules/builds/src/i2c-gpio.c b/packages/platforms/inventec/x86-64/d5254/modules/builds/src/i2c-gpio.c +index be3848bb156c..49833ac5b71a 100644 +--- a/packages/platforms/inventec/x86-64/d5254/modules/builds/src/i2c-gpio.c ++++ b/packages/platforms/inventec/x86-64/d5254/modules/builds/src/i2c-gpio.c +@@ -17,6 +17,7 @@ + #include + #include + #include ++#include + + struct i2c_gpio_private_data { + struct i2c_adapter adap; +@@ -248,6 +249,11 @@ static int i2c_gpio_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void i2c_gpio_remove_6_11(struct platform_device *pdev) { ++ i2c_gpio_remove(pdev); ++} ++#endif + + #if defined(CONFIG_OF) + static const struct of_device_id i2c_gpio_dt_ids[] = { +@@ -264,7 +270,12 @@ static struct platform_driver i2c_gpio_driver = { + .of_match_table = of_match_ptr(i2c_gpio_dt_ids), + }, + .probe = i2c_gpio_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = i2c_gpio_remove_6_11, ++#else ++ + .remove = i2c_gpio_remove, ++#endif + }; + + static int __init i2c_gpio_init(void) +diff --git a/packages/platforms/inventec/x86-64/d6254qs/modules/builds/src/gpio-ich.c b/packages/platforms/inventec/x86-64/d6254qs/modules/builds/src/gpio-ich.c +index d1ad794de18d..c0f356d041ba 100644 +--- a/packages/platforms/inventec/x86-64/d6254qs/modules/builds/src/gpio-ich.c ++++ b/packages/platforms/inventec/x86-64/d6254qs/modules/builds/src/gpio-ich.c +@@ -24,6 +24,7 @@ + #include + #include + #include ++#include + //#include + #include "lpc_ich.h" + +@@ -549,6 +550,11 @@ static int ichx_gpio_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void ichx_gpio_remove_6_11(struct platform_device *pdev) { ++ ichx_gpio_remove(pdev); ++} ++#endif + + static struct platform_driver ichx_gpio_driver = { + .driver = { +@@ -556,7 +562,12 @@ static struct platform_driver ichx_gpio_driver = { + .name = DRV_NAME, + }, + .probe = ichx_gpio_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = ichx_gpio_remove_6_11, ++#else ++ + .remove = ichx_gpio_remove, ++#endif + }; + + module_platform_driver(ichx_gpio_driver); +diff --git a/packages/platforms/inventec/x86-64/d6332/modules/builds/src/i2c-gpio.c b/packages/platforms/inventec/x86-64/d6332/modules/builds/src/i2c-gpio.c +index be3848bb156c..49833ac5b71a 100644 +--- a/packages/platforms/inventec/x86-64/d6332/modules/builds/src/i2c-gpio.c ++++ b/packages/platforms/inventec/x86-64/d6332/modules/builds/src/i2c-gpio.c +@@ -17,6 +17,7 @@ + #include + #include + #include ++#include + + struct i2c_gpio_private_data { + struct i2c_adapter adap; +@@ -248,6 +249,11 @@ static int i2c_gpio_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void i2c_gpio_remove_6_11(struct platform_device *pdev) { ++ i2c_gpio_remove(pdev); ++} ++#endif + + #if defined(CONFIG_OF) + static const struct of_device_id i2c_gpio_dt_ids[] = { +@@ -264,7 +270,12 @@ static struct platform_driver i2c_gpio_driver = { + .of_match_table = of_match_ptr(i2c_gpio_dt_ids), + }, + .probe = i2c_gpio_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = i2c_gpio_remove_6_11, ++#else ++ + .remove = i2c_gpio_remove, ++#endif + }; + + static int __init i2c_gpio_init(void) +diff --git a/packages/platforms/inventec/x86-64/d6356/modules/builds/src/gpio-ich.c b/packages/platforms/inventec/x86-64/d6356/modules/builds/src/gpio-ich.c +index 70304220a479..6a5d7c4306a8 100644 +--- a/packages/platforms/inventec/x86-64/d6356/modules/builds/src/gpio-ich.c ++++ b/packages/platforms/inventec/x86-64/d6356/modules/builds/src/gpio-ich.c +@@ -25,6 +25,7 @@ + #include + #include + #include ++#include + + #define DRV_NAME "gpio_ich" + +@@ -530,6 +531,11 @@ static int ichx_gpio_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void ichx_gpio_remove_6_11(struct platform_device *pdev) { ++ ichx_gpio_remove(pdev); ++} ++#endif + + static struct platform_driver ichx_gpio_driver = { + .driver = { +@@ -537,7 +543,12 @@ static struct platform_driver ichx_gpio_driver = { + .name = DRV_NAME, + }, + .probe = ichx_gpio_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = ichx_gpio_remove_6_11, ++#else ++ + .remove = ichx_gpio_remove, ++#endif + }; + + module_platform_driver(ichx_gpio_driver); +diff --git a/packages/platforms/inventec/x86-64/d6356/modules/builds/src/i2c-gpio.c b/packages/platforms/inventec/x86-64/d6356/modules/builds/src/i2c-gpio.c +index 4a2ee87fd9fa..f3cccf98b103 100644 +--- a/packages/platforms/inventec/x86-64/d6356/modules/builds/src/i2c-gpio.c ++++ b/packages/platforms/inventec/x86-64/d6356/modules/builds/src/i2c-gpio.c +@@ -17,6 +17,7 @@ + #include + #include + #include ++#include + + struct i2c_gpio_private_data { + struct i2c_adapter adap; +@@ -250,6 +251,11 @@ static int i2c_gpio_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void i2c_gpio_remove_6_11(struct platform_device *pdev) { ++ i2c_gpio_remove(pdev); ++} ++#endif + + #if defined(CONFIG_OF) + static const struct of_device_id i2c_gpio_dt_ids[] = { +@@ -267,7 +273,12 @@ static struct platform_driver i2c_gpio_driver = { + .of_match_table = of_match_ptr(i2c_gpio_dt_ids), + }, + .probe = i2c_gpio_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = i2c_gpio_remove_6_11, ++#else ++ + .remove = i2c_gpio_remove, ++#endif + }; + + static int __init i2c_gpio_init(void) +diff --git a/packages/platforms/inventec/x86-64/d6556/modules/builds/src/i2c-gpio.c b/packages/platforms/inventec/x86-64/d6556/modules/builds/src/i2c-gpio.c +index 4a2ee87fd9fa..f3cccf98b103 100644 +--- a/packages/platforms/inventec/x86-64/d6556/modules/builds/src/i2c-gpio.c ++++ b/packages/platforms/inventec/x86-64/d6556/modules/builds/src/i2c-gpio.c +@@ -17,6 +17,7 @@ + #include + #include + #include ++#include + + struct i2c_gpio_private_data { + struct i2c_adapter adap; +@@ -250,6 +251,11 @@ static int i2c_gpio_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void i2c_gpio_remove_6_11(struct platform_device *pdev) { ++ i2c_gpio_remove(pdev); ++} ++#endif + + #if defined(CONFIG_OF) + static const struct of_device_id i2c_gpio_dt_ids[] = { +@@ -267,7 +273,12 @@ static struct platform_driver i2c_gpio_driver = { + .of_match_table = of_match_ptr(i2c_gpio_dt_ids), + }, + .probe = i2c_gpio_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = i2c_gpio_remove_6_11, ++#else ++ + .remove = i2c_gpio_remove, ++#endif + }; + + static int __init i2c_gpio_init(void) +diff --git a/packages/platforms/inventec/x86-64/d7032q28b/modules/builds/src/gpio-ich.c b/packages/platforms/inventec/x86-64/d7032q28b/modules/builds/src/gpio-ich.c +index 70304220a479..6a5d7c4306a8 100644 +--- a/packages/platforms/inventec/x86-64/d7032q28b/modules/builds/src/gpio-ich.c ++++ b/packages/platforms/inventec/x86-64/d7032q28b/modules/builds/src/gpio-ich.c +@@ -25,6 +25,7 @@ + #include + #include + #include ++#include + + #define DRV_NAME "gpio_ich" + +@@ -530,6 +531,11 @@ static int ichx_gpio_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void ichx_gpio_remove_6_11(struct platform_device *pdev) { ++ ichx_gpio_remove(pdev); ++} ++#endif + + static struct platform_driver ichx_gpio_driver = { + .driver = { +@@ -537,7 +543,12 @@ static struct platform_driver ichx_gpio_driver = { + .name = DRV_NAME, + }, + .probe = ichx_gpio_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = ichx_gpio_remove_6_11, ++#else ++ + .remove = ichx_gpio_remove, ++#endif + }; + + module_platform_driver(ichx_gpio_driver); +diff --git a/packages/platforms/inventec/x86-64/d7264q28b/modules/builds/src/gpio-ich.c b/packages/platforms/inventec/x86-64/d7264q28b/modules/builds/src/gpio-ich.c +index 70304220a479..6a5d7c4306a8 100644 +--- a/packages/platforms/inventec/x86-64/d7264q28b/modules/builds/src/gpio-ich.c ++++ b/packages/platforms/inventec/x86-64/d7264q28b/modules/builds/src/gpio-ich.c +@@ -25,6 +25,7 @@ + #include + #include + #include ++#include + + #define DRV_NAME "gpio_ich" + +@@ -530,6 +531,11 @@ static int ichx_gpio_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void ichx_gpio_remove_6_11(struct platform_device *pdev) { ++ ichx_gpio_remove(pdev); ++} ++#endif + + static struct platform_driver ichx_gpio_driver = { + .driver = { +@@ -537,7 +543,12 @@ static struct platform_driver ichx_gpio_driver = { + .name = DRV_NAME, + }, + .probe = ichx_gpio_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = ichx_gpio_remove_6_11, ++#else ++ + .remove = ichx_gpio_remove, ++#endif + }; + + module_platform_driver(ichx_gpio_driver); +diff --git a/packages/platforms/inventec/x86-64/d7332/modules/builds/src/i2c-gpio.c b/packages/platforms/inventec/x86-64/d7332/modules/builds/src/i2c-gpio.c +index be3848bb156c..49833ac5b71a 100644 +--- a/packages/platforms/inventec/x86-64/d7332/modules/builds/src/i2c-gpio.c ++++ b/packages/platforms/inventec/x86-64/d7332/modules/builds/src/i2c-gpio.c +@@ -17,6 +17,7 @@ + #include + #include + #include ++#include + + struct i2c_gpio_private_data { + struct i2c_adapter adap; +@@ -248,6 +249,11 @@ static int i2c_gpio_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void i2c_gpio_remove_6_11(struct platform_device *pdev) { ++ i2c_gpio_remove(pdev); ++} ++#endif + + #if defined(CONFIG_OF) + static const struct of_device_id i2c_gpio_dt_ids[] = { +@@ -264,7 +270,12 @@ static struct platform_driver i2c_gpio_driver = { + .of_match_table = of_match_ptr(i2c_gpio_dt_ids), + }, + .probe = i2c_gpio_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = i2c_gpio_remove_6_11, ++#else ++ + .remove = i2c_gpio_remove, ++#endif + }; + + static int __init i2c_gpio_init(void) +diff --git a/packages/platforms/netberg/x86-64/aurora-610/modules/builds/src/gpio-ich.c b/packages/platforms/netberg/x86-64/aurora-610/modules/builds/src/gpio-ich.c +index 3db7133c849b..1a81412ff1df 100644 +--- a/packages/platforms/netberg/x86-64/aurora-610/modules/builds/src/gpio-ich.c ++++ b/packages/platforms/netberg/x86-64/aurora-610/modules/builds/src/gpio-ich.c +@@ -26,6 +26,7 @@ + #include + #include + #include ++#include + + #define DRV_NAME "gpio_ich" + +@@ -496,13 +497,23 @@ static int ichx_gpio_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void ichx_gpio_remove_6_11(struct platform_device *pdev) { ++ ichx_gpio_remove(pdev); ++} ++#endif + + static struct platform_driver ichx_gpio_driver = { + .driver = { + .name = DRV_NAME, + }, + .probe = ichx_gpio_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = ichx_gpio_remove_6_11, ++#else ++ + .remove = ichx_gpio_remove, ++#endif + }; + + module_platform_driver(ichx_gpio_driver); +diff --git a/packages/platforms/netberg/x86-64/aurora-610/modules/builds/src/i2c-gpio.c b/packages/platforms/netberg/x86-64/aurora-610/modules/builds/src/i2c-gpio.c +index b33b8911089e..b3a46f7671b8 100644 +--- a/packages/platforms/netberg/x86-64/aurora-610/modules/builds/src/i2c-gpio.c ++++ b/packages/platforms/netberg/x86-64/aurora-610/modules/builds/src/i2c-gpio.c +@@ -16,7 +16,8 @@ + #include + #include + #include +-#include ++#include ++#include + + struct i2c_gpio_private_data { + struct i2c_adapter adap; +@@ -248,7 +249,12 @@ static int i2c_gpio_remove(struct platform_device *pdev) + i2c_del_adapter(adap); + + return 0; +-} ++} ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void i2c_gpio_remove_6_11(struct platform_device *pdev) { ++ i2c_gpio_remove(pdev); ++} ++#endif + + #if defined(CONFIG_OF) + static const struct of_device_id i2c_gpio_dt_ids[] = { +@@ -265,7 +271,13 @@ static struct platform_driver i2c_gpio_driver = { + .of_match_table = of_match_ptr(i2c_gpio_dt_ids), + }, + .probe = i2c_gpio_probe, +- .remove = i2c_gpio_remove, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = i2c_gpio_remove_6_11, ++#else ++ ++ .remove = i2c_gpio_remove, ++#endif ++ + }; + + static int __init i2c_gpio_init(void) +diff --git a/packages/platforms/netberg/x86-64/aurora-820/modules/builds/src/i2c-gpio.c b/packages/platforms/netberg/x86-64/aurora-820/modules/builds/src/i2c-gpio.c +index be3848bb156c..49833ac5b71a 100644 +--- a/packages/platforms/netberg/x86-64/aurora-820/modules/builds/src/i2c-gpio.c ++++ b/packages/platforms/netberg/x86-64/aurora-820/modules/builds/src/i2c-gpio.c +@@ -17,6 +17,7 @@ + #include + #include + #include ++#include + + struct i2c_gpio_private_data { + struct i2c_adapter adap; +@@ -248,6 +249,11 @@ static int i2c_gpio_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void i2c_gpio_remove_6_11(struct platform_device *pdev) { ++ i2c_gpio_remove(pdev); ++} ++#endif + + #if defined(CONFIG_OF) + static const struct of_device_id i2c_gpio_dt_ids[] = { +@@ -264,7 +270,12 @@ static struct platform_driver i2c_gpio_driver = { + .of_match_table = of_match_ptr(i2c_gpio_dt_ids), + }, + .probe = i2c_gpio_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = i2c_gpio_remove_6_11, ++#else ++ + .remove = i2c_gpio_remove, ++#endif + }; + + static int __init i2c_gpio_init(void) +diff --git a/packages/platforms/ufispace/x86-64/s9700-23d/modules/builds/src/x86-64-ufispace-s9700-23d-lpc.c b/packages/platforms/ufispace/x86-64/s9700-23d/modules/builds/src/x86-64-ufispace-s9700-23d-lpc.c +index 1529260273b4..018a37c77e52 100644 +--- a/packages/platforms/ufispace/x86-64/s9700-23d/modules/builds/src/x86-64-ufispace-s9700-23d-lpc.c ++++ b/packages/platforms/ufispace/x86-64/s9700-23d/modules/builds/src/x86-64-ufispace-s9700-23d-lpc.c +@@ -26,6 +26,7 @@ + #include + #include + #include ++#include + + #define DRIVER_NAME "x86_64_ufispace_s9700_23d_lpc" + +@@ -298,10 +299,20 @@ static int lpc_drv_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void lpc_drv_remove_6_11(struct platform_device *pdev) { ++ lpc_drv_remove(pdev); ++} ++#endif + + static struct platform_driver lpc_drv = { + .probe = lpc_drv_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = __exit_p(lpc_drv_remove_6_11), ++#else ++ + .remove = __exit_p(lpc_drv_remove), ++#endif + .driver = { + .name = DRIVER_NAME, + }, +diff --git a/packages/platforms/ufispace/x86-64/s9700-53dx/modules/builds/src/x86-64-ufispace-s9700-53dx-lpc.c b/packages/platforms/ufispace/x86-64/s9700-53dx/modules/builds/src/x86-64-ufispace-s9700-53dx-lpc.c +index 0c91cd80efa4..4b3e51801f0d 100644 +--- a/packages/platforms/ufispace/x86-64/s9700-53dx/modules/builds/src/x86-64-ufispace-s9700-53dx-lpc.c ++++ b/packages/platforms/ufispace/x86-64/s9700-53dx/modules/builds/src/x86-64-ufispace-s9700-53dx-lpc.c +@@ -26,6 +26,7 @@ + #include + #include + #include ++#include + + #define DRIVER_NAME "x86_64_ufispace_s9700_53dx_lpc" + +@@ -298,10 +299,20 @@ static int lpc_drv_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void lpc_drv_remove_6_11(struct platform_device *pdev) { ++ lpc_drv_remove(pdev); ++} ++#endif + + static struct platform_driver lpc_drv = { + .probe = lpc_drv_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = __exit_p(lpc_drv_remove_6_11), ++#else ++ + .remove = __exit_p(lpc_drv_remove), ++#endif + .driver = { + .name = DRIVER_NAME, + }, +diff --git a/packages/platforms/ufispace/x86-64/s9705-48d/modules/builds/src/x86-64-ufispace-s9705-48d-lpc.c b/packages/platforms/ufispace/x86-64/s9705-48d/modules/builds/src/x86-64-ufispace-s9705-48d-lpc.c +index e2d01fda954f..d357491e67ac 100644 +--- a/packages/platforms/ufispace/x86-64/s9705-48d/modules/builds/src/x86-64-ufispace-s9705-48d-lpc.c ++++ b/packages/platforms/ufispace/x86-64/s9705-48d/modules/builds/src/x86-64-ufispace-s9705-48d-lpc.c +@@ -26,6 +26,7 @@ + #include + #include + #include ++#include + + #define DRIVER_NAME "x86_64_ufispace_s9705_48d_lpc" + +@@ -298,10 +299,20 @@ static int lpc_drv_remove(struct platform_device *pdev) + + return 0; + } ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void lpc_drv_remove_6_11(struct platform_device *pdev) { ++ lpc_drv_remove(pdev); ++} ++#endif + + static struct platform_driver lpc_drv = { + .probe = lpc_drv_probe, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = __exit_p(lpc_drv_remove_6_11), ++#else ++ + .remove = __exit_p(lpc_drv_remove), ++#endif + .driver = { + .name = DRIVER_NAME, + }, +-- +2.51.0 + diff --git a/recipes-extended/onl/onl_git.bb b/recipes-extended/onl/onl_git.bb index 3fc26d9a..94a55939 100644 --- a/recipes-extended/onl/onl_git.bb +++ b/recipes-extended/onl/onl_git.bb @@ -32,6 +32,9 @@ SRC_URI += " \ file://onl/0015-modules-update-i2c_drivers-with-6.1.patch \ file://onl/0016-modules-update-i2c_drivers-with-6.3-compatibility.patch \ file://onl/0017-modules-update-class_create-usage-for-6.4.patch \ + file://onl/0018-modules-replace-strlcpy-with-strscpy-for-6.8.patch \ + file://onl/0019-modules-update-i2c_mux_add_adapter-usage-for-6.10.patch \ + file://onl/0020-modules-update-platform_drivers-with-6.11-compatibil.patch \ file://bigcode/0001-WIP-convert-to-python3.patch;patchdir=${SUBMODULE_BIGCODE} \ file://bigcode/0002-dynamically-determine-location-of-python3.patch;patchdir=${SUBMODULE_BIGCODE} \ file://bigcode/0003-avoid-multiple-global-definitions-for-not_empty.patch;patchdir=${SUBMODULE_BIGCODE} \ @@ -55,8 +58,11 @@ SRC_URI += " \ file://cel-questone-2a/0006-cel-questone-2a-update-i2c_drivers-with-6.1-compatib.patch \ file://cel-questone-2a/0007-cel-questone-2a-update-i2c_drivers-with-6.3-compatib.patch \ file://cel-questone-2a/0008-cel-questone-2a-update-class_create-usage-for-6.4.patch \ + file://cel-questone-2a/0009-cel-questone-2a-adapt-i2c-adapter-class-usage-for-6..patch \ + file://cel-questone-2a/0010-cel-questone-2a-update-platform_drivers-with-6.11-co.patch \ file://delta-ag5648/0001-delta-ag5648-avoid-multiple-definitions-of-mutex-mut.patch \ file://delta-ag5648/0002-ag5648-update-modules-to-compile-and-work-on-recent-.patch \ + file://delta-ag5648/0003-delta-modules-update-i2c_mux_add_adapter-usage-for-6.patch \ file://delta-ag7648/0001-agema-ag7648-fix-buffer-overflow-while-reading-therm.patch \ file://delta-ag7648/0002-agema-ag7648-don-t-create-random-rx_los-bitmap-value.patch \ file://delta-ag7648/0003-bump-kernel-to-4.9.patch \ @@ -70,6 +76,8 @@ SRC_URI += " \ file://delta-ag7648/0011-delta-ag7648-do-not-reset-QSFP-modules-when-IRQ-is-a.patch \ file://delta-ag7648/0012-delta-ag7648-make-sure-i2c-i801-is-loaded-before-cre.patch \ file://delta-ag7648/0013-delta-ag7648-prevent-potential-deadlock-on-probe.patch \ + file://delta-ag7648/0014-delta-ag7648-update-i2c_mux_add_adapter-usage-for-6..patch \ + file://delta-ag7648/0015-delta-ag7648-update-platform_drivers-with-6.11-compa.patch \ " FILES:${PN} = " \ diff --git a/scripts/coccinelle/modules/6.10-i2c_mux_add_adapter.cocci b/scripts/coccinelle/modules/6.10-i2c_mux_add_adapter.cocci new file mode 100644 index 00000000..a49d84bf --- /dev/null +++ b/scripts/coccinelle/modules/6.10-i2c_mux_add_adapter.cocci @@ -0,0 +1,22 @@ +// SPDX-License-Identifier: GPL-2.0-only +// +// Drop the class argument from i2c_mux_adapter() +// +// Copyright (c) 2025 Jonas Gorski, BISDN GmbH + +@r@ +expression R,E1,E2,E3,E4; +position p; +@@ ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,10,0) ++R = i2c_mux_add_adapter(E1, E2, E3); ++#else + R = i2c_mux_add_adapter(E1, E2, E3, E4); ++#endif +@i depends on r@ +@@ +#include +@depends on r && !i@ +@@ +#include <...> ++#include diff --git a/scripts/coccinelle/modules/6.11-platform_remove_sig.cocci b/scripts/coccinelle/modules/6.11-platform_remove_sig.cocci new file mode 100644 index 00000000..2540fead --- /dev/null +++ b/scripts/coccinelle/modules/6.11-platform_remove_sig.cocci @@ -0,0 +1,66 @@ +// SPDX-License-Identifier: GPL-2.0-only +// +// Adds a wrapper for the remove function for 6.11 that returns void to handle +// the changed signature. +// +// Not idempotent! +// +// Copyright (c) 2025 Jonas Gorski, BISDN GmbH + +@r@ +identifier DRIVER; +identifier remove_fn; +fresh identifier remove_fn_wrap = remove_fn ## "_6_11"; +position p; +@@ +struct platform_driver DRIVER@p = { ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = remove_fn_wrap, ++#else + .remove = remove_fn, ++#endif +}; + +@s@ +identifier DRIVER; +identifier remove_fn; +fresh identifier remove_fn_wrap = remove_fn ## "_6_11"; +position p; +@@ +struct platform_driver DRIVER@p = { ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++ .remove = __exit_p(remove_fn_wrap), ++#else + .remove = __exit_p(remove_fn), ++#endif +}; + +@i depends on (r || s)@ +@@ +#include +@depends on (r || s) && !i@ +@@ +#include <...> ++#include +@depends on r@ +identifier r.remove_fn; +identifier r.remove_fn_wrap; +@@ +int remove_fn(...) {...} ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void remove_fn_wrap(struct platform_device *pdev) ++{ ++ remove_fn(pdev); ++} ++#endif +@depends on s@ +identifier s.remove_fn; +identifier s.remove_fn_wrap; +@@ +int remove_fn(...) {...} ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0) ++static void remove_fn_wrap(struct platform_device *pdev) ++{ ++ remove_fn(pdev); ++} ++#endif diff --git a/scripts/coccinelle/modules/6.8-strlcpy-strscpy.cocci b/scripts/coccinelle/modules/6.8-strlcpy-strscpy.cocci new file mode 100644 index 00000000..99719c64 --- /dev/null +++ b/scripts/coccinelle/modules/6.8-strlcpy-strscpy.cocci @@ -0,0 +1,11 @@ +// SPDX-License-Identifier: GPL-2.0-only +// +// Replace strlcpy() which was removed in 6.8 with strscpy() +// +// Copyright (c) 2025 Jonas Gorski, BISDN GmbH + +@@ +expression E1,E2,E3; +@@ +-strlcpy(E1, E2, E3); ++strscpy(E1, E2, E3); From eb1df8b04da183a2ab50e576c0d7bcc5869e1fc6 Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Thu, 20 Feb 2025 09:00:04 +0000 Subject: [PATCH 2/6] bcm591xx-poe-mcu: allow compilation with kernel 6.12 Update bcm591xx to work with kernel 6.12. Mostly minor things, i.e.: * return type of pse_ops::receive() was changed from ssize_t to size_t * unaligned.h was moved from asm to linux Signed-off-by: Jonas Gorski --- .../bcm591xx-poe-mcu/files/accton_as4610_poe_mcu.c | 10 ++++++++-- recipes-kernel/bcm591xx-poe-mcu/files/bcm591xx.c | 5 +++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/recipes-kernel/bcm591xx-poe-mcu/files/accton_as4610_poe_mcu.c b/recipes-kernel/bcm591xx-poe-mcu/files/accton_as4610_poe_mcu.c index e65a3ffb..e90453aa 100644 --- a/recipes-kernel/bcm591xx-poe-mcu/files/accton_as4610_poe_mcu.c +++ b/recipes-kernel/bcm591xx-poe-mcu/files/accton_as4610_poe_mcu.c @@ -28,6 +28,7 @@ #include #include #include +#include #include "bcm591xx.h" @@ -72,8 +73,13 @@ struct as4610_poe_pse { #define to_as4610_poe_pse(d) container_of(d, struct as4610_poe_pse, mcu) -static int as4610_poe_pse_receive(struct serdev_device *serdev, - const unsigned char *data, size_t count) +#if LINUX_VERSION_CODE < KERNEL_VERSION(6,9,0) +static int +#else +static size_t +#endif +as4610_poe_pse_receive(struct serdev_device *serdev, + const unsigned char *data, size_t count) { struct as4610_poe_pse *pse = serdev_device_get_drvdata(serdev); int need, want; diff --git a/recipes-kernel/bcm591xx-poe-mcu/files/bcm591xx.c b/recipes-kernel/bcm591xx-poe-mcu/files/bcm591xx.c index 82cfd7c5..69c58cd1 100644 --- a/recipes-kernel/bcm591xx-poe-mcu/files/bcm591xx.c +++ b/recipes-kernel/bcm591xx-poe-mcu/files/bcm591xx.c @@ -10,8 +10,13 @@ #include #include #include +#include +#if LINUX_VERSION_CODE < KERNEL_VERSION(6,12,0) #include +#else +#include +#endif #include "bcm591xx.h" From bc319b6d2e60cb14fd6b643dae9910996f8ac3e3 Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Wed, 15 Oct 2025 16:12:31 +0200 Subject: [PATCH 3/6] strace: update to 6.12 Update strace to 6.12 matching the 6.12 LTS kernel, taken from walnascar [1] [1] https://github.com/openembedded/openembedded-core/tree/07d4e9312781f5a865cbdd088d5e3485e8c1bffc/meta/recipes-devtools/strace Signed-off-by: Jonas Gorski --- ...toconf-macro-to-detect-largefile-sup.patch | 6 +- ...001-strace-fix-reproducibilty-issues.patch | 9 +-- ...002-tests-Replace-off64_t-with-off_t.patch | 35 ++++++---- .../strace/strace/Makefile-ptest.patch | 9 ++- .../strace/strace/ptest-spacesave.patch | 7 +- recipes-devtools/strace/strace/run-ptest | 2 +- .../strace/strace/skip-load.patch | 9 +-- .../strace/strace/update-gawk-paths.patch | 70 ++++++++++--------- .../strace/{strace_6.7.bb => strace_6.12.bb} | 17 +++-- 9 files changed, 84 insertions(+), 80 deletions(-) rename recipes-devtools/strace/{strace_6.7.bb => strace_6.12.bb} (82%) diff --git a/recipes-devtools/strace/strace/0001-configure-Use-autoconf-macro-to-detect-largefile-sup.patch b/recipes-devtools/strace/strace/0001-configure-Use-autoconf-macro-to-detect-largefile-sup.patch index 76ca7a76..86dcd977 100644 --- a/recipes-devtools/strace/strace/0001-configure-Use-autoconf-macro-to-detect-largefile-sup.patch +++ b/recipes-devtools/strace/strace/0001-configure-Use-autoconf-macro-to-detect-largefile-sup.patch @@ -1,4 +1,4 @@ -From 470399f3636c412b74f9daf6ae430b13c3126f02 Mon Sep 17 00:00:00 2001 +From ec543417b8e1df7c71dfc4728313849d9ab669a6 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Thu, 15 Dec 2022 15:54:27 -0800 Subject: [PATCH] configure: Use autoconf macro to detect largefile support @@ -13,10 +13,10 @@ Signed-off-by: Khem Raj 1 file changed, 2 insertions(+) diff --git a/configure.ac b/configure.ac -index 4797b42dd..7d57fb254 100644 +index 36fff90..9e40ab5 100644 --- a/configure.ac +++ b/configure.ac -@@ -43,6 +43,8 @@ AC_PROG_INSTALL +@@ -42,6 +42,8 @@ AC_PROG_INSTALL AC_PROG_RANLIB AC_PROG_LN_S diff --git a/recipes-devtools/strace/strace/0001-strace-fix-reproducibilty-issues.patch b/recipes-devtools/strace/strace/0001-strace-fix-reproducibilty-issues.patch index c4c176e6..9cdb7c61 100644 --- a/recipes-devtools/strace/strace/0001-strace-fix-reproducibilty-issues.patch +++ b/recipes-devtools/strace/strace/0001-strace-fix-reproducibilty-issues.patch @@ -1,4 +1,4 @@ -From 6309792c49ca900cec6a7f1dc5b51bf75b629e11 Mon Sep 17 00:00:00 2001 +From d5f681c2de834110de260f4d071c7bc1fb0d7564 Mon Sep 17 00:00:00 2001 From: Jeremy Puhlman Date: Wed, 11 Mar 2020 19:56:55 +0000 Subject: [PATCH] strace: fix reproducibilty issues @@ -13,7 +13,7 @@ Signed-off-by: Jeremy Puhlman 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/gen_tests.sh b/tests/gen_tests.sh -index 5e1e7c9..1e65eac 100755 +index 8f47651..65267db 100755 --- a/tests/gen_tests.sh +++ b/tests/gen_tests.sh @@ -46,7 +46,7 @@ while read -r name arg0 args; do { @@ -25,7 +25,7 @@ index 5e1e7c9..1e65eac 100755 case "$arg0" in +*) -@@ -80,7 +80,7 @@ while read -r name arg0 args; do { +@@ -91,7 +91,7 @@ while read -r name arg0 args; do { if [ -n "$names" ]; then { @@ -34,6 +34,3 @@ index 5e1e7c9..1e65eac 100755 printf 'GEN_TESTS =' printf ' %s.gen.test' $names echo --- -2.24.1 - diff --git a/recipes-devtools/strace/strace/0002-tests-Replace-off64_t-with-off_t.patch b/recipes-devtools/strace/strace/0002-tests-Replace-off64_t-with-off_t.patch index 0cabdfe9..fc6ed7ac 100644 --- a/recipes-devtools/strace/strace/0002-tests-Replace-off64_t-with-off_t.patch +++ b/recipes-devtools/strace/strace/0002-tests-Replace-off64_t-with-off_t.patch @@ -1,4 +1,4 @@ -From 579b2ebe52d4b97f954e6188df2d07e137820075 Mon Sep 17 00:00:00 2001 +From 1891db87da3b204c512f47155aaa4e692008f1bf Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Thu, 15 Dec 2022 15:56:13 -0800 Subject: [PATCH] tests: Replace off64_t with off_t @@ -10,9 +10,12 @@ Upstream-Status: Submitted [https://github.com/strace/strace/pull/230] Signed-off-by: Khem Raj --- tests/readahead.c | 2 +- + tests/sync_file_range.c | 4 ++-- tests/sync_file_range2.c | 4 ++-- - 2 files changed, 3 insertions(+), 3 deletions(-) + 3 files changed, 5 insertions(+), 5 deletions(-) +diff --git a/tests/readahead.c b/tests/readahead.c +index 1072378..b9597e6 100644 --- a/tests/readahead.c +++ b/tests/readahead.c @@ -42,7 +42,7 @@ static const int fds[] = { @@ -24,29 +27,33 @@ Signed-off-by: Khem Raj -0x8000000000000000LL, -0x5060708090a0b0c0LL, -1LL, ---- a/tests/sync_file_range2.c -+++ b/tests/sync_file_range2.c +diff --git a/tests/sync_file_range.c b/tests/sync_file_range.c +index e93ab6c..dc76865 100644 +--- a/tests/sync_file_range.c ++++ b/tests/sync_file_range.c @@ -20,8 +20,8 @@ int main(void) { const int fd = -1; -- const off64_t offset = 0xdeadbeefbadc0ded; -- const off64_t nbytes = 0xfacefeedcafef00d; -+ const off_t offset = 0xdeadbeefbadc0ded; -+ const off_t nbytes = 0xfacefeedcafef00d; +- const off64_t offset = 0xdeadbeefbadc0dedULL; +- const off64_t nbytes = 0xfacefeedcafef00dULL; ++ const off_t offset = 0xdeadbeefbadc0dedULL; ++ const off_t nbytes = 0xfacefeedcafef00dULL; const unsigned int flags = -1; int rc = sync_file_range(fd, offset, nbytes, flags); ---- a/tests/sync_file_range.c -+++ b/tests/sync_file_range.c +diff --git a/tests/sync_file_range2.c b/tests/sync_file_range2.c +index b8dc712..e4b003c 100644 +--- a/tests/sync_file_range2.c ++++ b/tests/sync_file_range2.c @@ -20,8 +20,8 @@ int main(void) { const int fd = -1; -- const off64_t offset = 0xdeadbeefbadc0dedULL; -- const off64_t nbytes = 0xfacefeedcafef00dULL; -+ const off_t offset = 0xdeadbeefbadc0dedULL; -+ const off_t nbytes = 0xfacefeedcafef00dULL; +- const off64_t offset = 0xdeadbeefbadc0ded; +- const off64_t nbytes = 0xfacefeedcafef00d; ++ const off_t offset = 0xdeadbeefbadc0ded; ++ const off_t nbytes = 0xfacefeedcafef00d; const unsigned int flags = -1; int rc = sync_file_range(fd, offset, nbytes, flags); diff --git a/recipes-devtools/strace/strace/Makefile-ptest.patch b/recipes-devtools/strace/strace/Makefile-ptest.patch index 9af77376..a78c86f6 100644 --- a/recipes-devtools/strace/strace/Makefile-ptest.patch +++ b/recipes-devtools/strace/strace/Makefile-ptest.patch @@ -1,4 +1,4 @@ -From 1f50e0a09d828be8f5b1f28db9af0b12492a1553 Mon Sep 17 00:00:00 2001 +From 593bea35a044b55222a71737ca8455c2359817d1 Mon Sep 17 00:00:00 2001 From: Gabriel Barbu Date: Thu, 25 Jul 2013 15:28:33 +0200 Subject: [PATCH] strace: Add ptest @@ -8,16 +8,15 @@ Upstream-Status: Inappropriate Signed-off-by: Gabriel Barbu Signed-off-by: Chong Lu Signed-off-by: Anuj Mittal - --- tests/Makefile.am | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/tests/Makefile.am b/tests/Makefile.am -index 55566ee..a7ae6f9 100644 +index e1254c3..149570d 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am -@@ -16,6 +16,7 @@ SIZEOF_LONG = @SIZEOF_LONG@ +@@ -18,6 +18,7 @@ SIZEOF_LONG = @SIZEOF_LONG@ MPERS_NAME = MPERS_CC_FLAGS = ARCH_MFLAGS = @@ -25,7 +24,7 @@ index 55566ee..a7ae6f9 100644 AM_CFLAGS = $(WARN_CFLAGS) bundled_CPPFLAGS = if USE_BUNDLED_HEADERS -@@ -703,3 +704,22 @@ BUILT_SOURCES = ksysent.h +@@ -903,3 +904,22 @@ BUILT_SOURCES = ksysent.h CLEANFILES = ksysent.h include ../src/scno.am diff --git a/recipes-devtools/strace/strace/ptest-spacesave.patch b/recipes-devtools/strace/strace/ptest-spacesave.patch index 4e86ccad..14ea469c 100644 --- a/recipes-devtools/strace/strace/ptest-spacesave.patch +++ b/recipes-devtools/strace/strace/ptest-spacesave.patch @@ -1,4 +1,4 @@ -From 3fad4821d90cd264d1b94253b9cf4fdf5d4034b8 Mon Sep 17 00:00:00 2001 +From cf77d301faf96cc892c6df0e19fccbf5853f249d Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Wed, 29 May 2019 00:10:32 +0100 Subject: [PATCH] strace: Tweak ptest disk space management @@ -9,16 +9,15 @@ using around 600MB of disk space and running our ptest images out of space. RP 2019/5/29 Upstream-Status: Inappropriate [specific to OE image space issues] - --- tests/gen_tests.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/gen_tests.sh b/tests/gen_tests.sh -index 3540204..5e1e7c9 100755 +index ce1467e..8f47651 100755 --- a/tests/gen_tests.sh +++ b/tests/gen_tests.sh -@@ -62,6 +62,7 @@ while read -r name arg0 args; do { +@@ -73,6 +73,7 @@ while read -r name arg0 args; do { $hdr . "\${srcdir=.}/init.sh" run_strace_match_diff $arg0 $args diff --git a/recipes-devtools/strace/strace/run-ptest b/recipes-devtools/strace/strace/run-ptest index 1224229e..d9248df2 100755 --- a/recipes-devtools/strace/strace/run-ptest +++ b/recipes-devtools/strace/strace/run-ptest @@ -2,7 +2,7 @@ set -u -export TIMEOUT_DURATION=240 +export TIMEOUT_DURATION=600 make -j4 -B -C tests -k test-suite.log res=$? if [ $res -ne 0 ]; then diff --git a/recipes-devtools/strace/strace/skip-load.patch b/recipes-devtools/strace/strace/skip-load.patch index b1acfda5..fe737d8f 100644 --- a/recipes-devtools/strace/strace/skip-load.patch +++ b/recipes-devtools/strace/strace/skip-load.patch @@ -1,9 +1,13 @@ +From 3af7272a3435fc79e5da729155480a346ccf2d44 Mon Sep 17 00:00:00 2001 +From: Ross Burton +Date: Mon, 31 Jan 2022 17:40:13 +0000 +Subject: [PATCH] strace: skip a number of load-sensitive tests + Skip tests which are known to be unreliable under load, typically because they care about timing. Upstream-Status: Inappropriate Signed-off-by: Ross Burton - --- tests/clock_nanosleep.gen.test | 1 + tests/delay.test | 1 + @@ -44,6 +48,3 @@ index 8299737..d89c7df 100755 r_opt="${1:--r}" --- -2.25.1 - diff --git a/recipes-devtools/strace/strace/update-gawk-paths.patch b/recipes-devtools/strace/strace/update-gawk-paths.patch index a16ede95..429588d2 100644 --- a/recipes-devtools/strace/strace/update-gawk-paths.patch +++ b/recipes-devtools/strace/strace/update-gawk-paths.patch @@ -1,4 +1,4 @@ -From 4cd26cfaec255ec87f22abe886e0be89312a9671 Mon Sep 17 00:00:00 2001 +From 920ff2e0e838fae4fe49bf8e8fa093d5b2485677 Mon Sep 17 00:00:00 2001 From: Andre McCurdy Date: Mon, 18 Jan 2016 11:01:00 -0800 Subject: [PATCH] update gawk paths, /bin/gawk -> /usr/bin/gawk @@ -11,22 +11,24 @@ from #!/bin/gawk to #!/usr/bin/gawk. Fixes missing RDPENDS QA tests: Upstream-Status: Inappropriate [configuration] Signed-off-by: Andre McCurdy - --- src/mpers.awk | 2 +- + tests-m32/caps-abbrev.awk | 2 +- tests-m32/caps.awk | 2 +- tests-m32/match.awk | 2 +- tests-m32/rt_sigaction.awk | 2 +- + tests-mx32/caps-abbrev.awk | 2 +- tests-mx32/caps.awk | 2 +- tests-mx32/match.awk | 2 +- tests-mx32/rt_sigaction.awk | 2 +- + tests/caps-abbrev.awk | 2 +- tests/caps.awk | 2 +- tests/match.awk | 2 +- tests/rt_sigaction.awk | 2 +- - 10 files changed, 10 insertions(+), 10 deletions(-) + 13 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/mpers.awk b/src/mpers.awk -index 25a212f..b2ff53f 100644 +index 425ab65..33ece5c 100644 --- a/src/mpers.awk +++ b/src/mpers.awk @@ -1,4 +1,4 @@ @@ -35,6 +37,16 @@ index 25a212f..b2ff53f 100644 # # Copyright (c) 2015 Elvira Khabirova # Copyright (c) 2015-2016 Dmitry V. Levin +diff --git a/tests-m32/caps-abbrev.awk b/tests-m32/caps-abbrev.awk +index e8393fd..76c4e51 100644 +--- a/tests-m32/caps-abbrev.awk ++++ b/tests-m32/caps-abbrev.awk +@@ -1,4 +1,4 @@ +-#!/bin/gawk ++#!/usr/bin/gawk + # + # This file is part of caps strace test. + # diff --git a/tests-m32/caps.awk b/tests-m32/caps.awk index 69500ec..e5dfd87 100644 --- a/tests-m32/caps.awk @@ -65,6 +77,16 @@ index dce78f5..573d9ea 100644 # # Copyright (c) 2014-2015 Dmitry V. Levin # Copyright (c) 2016 Elvira Khabirova +diff --git a/tests-mx32/caps-abbrev.awk b/tests-mx32/caps-abbrev.awk +index e8393fd..76c4e51 100644 +--- a/tests-mx32/caps-abbrev.awk ++++ b/tests-mx32/caps-abbrev.awk +@@ -1,4 +1,4 @@ +-#!/bin/gawk ++#!/usr/bin/gawk + # + # This file is part of caps strace test. + # diff --git a/tests-mx32/caps.awk b/tests-mx32/caps.awk index 69500ec..e5dfd87 100644 --- a/tests-mx32/caps.awk @@ -95,6 +117,16 @@ index dce78f5..573d9ea 100644 # # Copyright (c) 2014-2015 Dmitry V. Levin # Copyright (c) 2016 Elvira Khabirova +diff --git a/tests/caps-abbrev.awk b/tests/caps-abbrev.awk +index e8393fd..76c4e51 100644 +--- a/tests/caps-abbrev.awk ++++ b/tests/caps-abbrev.awk +@@ -1,4 +1,4 @@ +-#!/bin/gawk ++#!/usr/bin/gawk + # + # This file is part of caps strace test. + # diff --git a/tests/caps.awk b/tests/caps.awk index 69500ec..e5dfd87 100644 --- a/tests/caps.awk @@ -125,33 +157,3 @@ index dce78f5..573d9ea 100644 # # Copyright (c) 2014-2015 Dmitry V. Levin # Copyright (c) 2016 Elvira Khabirova -diff --git a/tests-m32/caps-abbrev.awk b/tests-m32/caps-abbrev.awk -index c00023b..a56cd56 100644 ---- a/tests-m32/caps-abbrev.awk -+++ b/tests-m32/caps-abbrev.awk -@@ -1,4 +1,4 @@ --#!/bin/gawk -+#!/usr/bin/gawk - # - # This file is part of caps strace test. - # -diff --git a/tests-mx32/caps-abbrev.awk b/tests-mx32/caps-abbrev.awk -index c00023b..a56cd56 100644 ---- a/tests-mx32/caps-abbrev.awk -+++ b/tests-mx32/caps-abbrev.awk -@@ -1,4 +1,4 @@ --#!/bin/gawk -+#!/usr/bin/gawk - # - # This file is part of caps strace test. - # -diff --git a/tests/caps-abbrev.awk b/tests/caps-abbrev.awk -index c00023b..a56cd56 100644 ---- a/tests/caps-abbrev.awk -+++ b/tests/caps-abbrev.awk -@@ -1,4 +1,4 @@ --#!/bin/gawk -+#!/usr/bin/gawk - # - # This file is part of caps strace test. - # diff --git a/recipes-devtools/strace/strace_6.7.bb b/recipes-devtools/strace/strace_6.12.bb similarity index 82% rename from recipes-devtools/strace/strace_6.7.bb rename to recipes-devtools/strace/strace_6.12.bb index f365477c..c16e5dc4 100644 --- a/recipes-devtools/strace/strace_6.7.bb +++ b/recipes-devtools/strace/strace_6.12.bb @@ -5,7 +5,7 @@ SECTION = "console/utils" LICENSE = "LGPL-2.1-or-later & GPL-2.0-or-later" LIC_FILES_CHKSUM = "file://COPYING;md5=2433d82e1432a76dc3eadd9002bfe304" -SRC_URI = "https://strace.io/files/${PV}/strace-${PV}.tar.xz \ +SRC_URI = "${GITHUB_BASE_URI}/download/v${PV}/strace-${PV}.tar.xz \ file://update-gawk-paths.patch \ file://Makefile-ptest.patch \ file://run-ptest \ @@ -15,9 +15,10 @@ SRC_URI = "https://strace.io/files/${PV}/strace-${PV}.tar.xz \ file://0001-configure-Use-autoconf-macro-to-detect-largefile-sup.patch \ file://0002-tests-Replace-off64_t-with-off_t.patch \ " -SRC_URI[sha256sum] = "2090201e1a3ff32846f4fe421c1163b15f440bb38e31355d09f82d3949922af7" +SRC_URI[sha256sum] = "c47da93be45b6055f4dc741d7f20efaf50ca10160a5b100c109b294fd9c0bdfe" -inherit autotools ptest + +inherit autotools github-releases ptest # Not yet ported to rv32 COMPATIBLE_HOST:riscv32 = "null" @@ -44,13 +45,11 @@ do_install_ptest() { mkdir -p ${D}${PTEST_PATH}/src install -m 755 ${S}/build-aux/test-driver ${D}${PTEST_PATH}/build-aux/ install -m 644 ${B}/src/config.h ${D}${PTEST_PATH}/src/ - sed -i -e '/^src/s/strace.*[0-9]/ptest/' ${D}/${PTEST_PATH}/${TESTDIR}/Makefile + sed -e '/^src/s/strace.*[0-9]/ptest/' \ + -e "/^TEST_LOG_DRIVER =/s|(top_srcdir)|(top_builddir)|" \ + -i ${D}/${PTEST_PATH}/${TESTDIR}/Makefile } -RDEPENDS:${PN}-ptest += "make coreutils grep gawk sed" - -RDEPENDS:${PN}-ptest:append:libc-glibc = "\ - locale-base-en-us.iso-8859-1 \ -" +RDEPENDS:${PN}-ptest += "make coreutils grep gawk sed locale-base-en-us" BBCLASSEXTEND = "native" From 05a6f74a4e7a34941c2701180c37f386e1477d6f Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Thu, 20 Feb 2025 09:01:03 +0000 Subject: [PATCH 4/6] linux-yocto-onl: add support for kernel 6.12 Add support for Linux 6.12, and update the kernel configs accordingly: v6.12.10: * CLOCKSOURCE_VALIDATE_LAST_CYCLE: e26cbab9821a timekeeping: Always check for negative motion * DEBUG_TIMEKEEPING: 7b7a9175c63b timekeeping: Remove CONFIG_DEBUG_TIMEKEEPING v6.12: * ARCH_USES_PG_UNCACHED: 7a87225ae2c6 x86: remove PG_uncached * I2C_COMPAT: 7e722083fcc3 i2c: Remove I2C_COMPAT config symbol and related code * KEYBOARD_MCS: dd29eadee1e8 Input: msc_touchkey - remove the driver * MODULE_COMPRESS_NONE: c7ff693fa209 module: Split modules_install compression and in-kernel decompression * SND_VERBOSE_PRINTK: 504dc9f5e62e ALSA: core: Drop snd_print stuff and co * SPLIT_PTLOCK_CPUS: 394290cba966 mm: turn USE_SPLIT_PTE_PTLOCKS / USE_SPLIT_PTE_PTLOCKS into Kconfig options * TOUCHSCREEN_CYTTSP4_CORE: 25162a4f64f8 Input: cyttsp4 - remove driver * TOUCHSCREEN_MCS5000: e8858fc07eb8 Input: msc5000_ts - remove the driver v6.11: * EFI_FAKE_MEMMAP: 37aee82c213d x86/efi: Drop support for fake EFI memory maps * KALLSYMS_BASE_RELATIVE: 64e166099b69 kallsyms: get rid of code for absolute kallsyms * SENSORS_ADM1021: ed99ae74f232 hwmon: Remove obsolete adm1021 and max6642 drivers * SENSORS_MAX6642: ed99ae74f232 hwmon: Remove obsolete adm1021 and max6642 drivers * TEST_USER_COPY: cf6219ee889f usercopy: Convert test_user_copy to KUnit test v6.10: * ACPI_CUSTOM_METHOD: 0cc46f1a52b4 ACPI: Drop the custom_method debugfs interface * AMD_IOMMU_V2: 5a0b11a180a9 iommu/amd: Remove iommu_v2 module * ARCH_HAS_UBSAN_SANITIZE_ALL: 918327e9b7ff ubsan: Remove CONFIG_UBSAN_SANITIZE_ALL * BASE_FULL: 27021649ec88 printk: Remove redundant CONFIG_BASE_FULL * BPFILTER: 98e20e5e13d2 bpfilter: remove bpfilter * CMA_DEBUG: fe58582c0e36 mm/cma: drop CONFIG_CMA_DEBUG * CRASH_CORE => VMCORE_INFO: CRASH_CORE: 443cbaf9e2fd crash: split vmcoreinfo exporting code out from crash_core.c * CRYPTO_CFB: 412ac51ce0b8 crypto: cfb,ofb - Remove cfb and ofb * CRYPTO_OFB: 412ac51ce0b8 crypto: cfb,ofb - Remove cfb and ofb * DRM_DP_AUX_CHARDEV => DRM_DISPLAY_DP_AUX_CHARDEV: 4d66d841a725 drm/display: Make DisplayPort AUX Chardev Kconfig name consistent * DRM_DP_CEC => DRM_DISPLAY_DP_AUX_CEC: 847ad2b5afe6 drm/display: Make DisplayPort CEC-over-AUX Kconfig name consistent * DRM_LEGACY: 94f8f319cbcb drm: Remove Kconfig option for legacy support * FB_LE80578: d9f25b59ed85 fbdev: Remove support for Carillo Ranch driver * FB_SYS_FOPS => FB_SYSMEM_FOPS: 27ad64eac10f fbdev: Rename FB_SYS_FOPS token to FB_SYSMEM_FOPS * HAVE_FAST_GUP => HAVE_GUP_FAST: 25176ad09ca3 mm/treewide: rename CONFIG_HAVE_FAST_GUP to CONFIG_HAVE_GUP_FAST * HAVE_KVM: f48212ee8e78 treewide: remove CONFIG_HAVE_KVM * HW_CONSOLE: 5c49b6a4a4bc vt: remove superfluous CONFIG_HW_CONSOLE * LEDS_TRIGGER_AUDIO: a24de38de804 ALSA: control-led: Integrate mute led trigger * MD_FAULTY: 415c7451872b md: Remove deprecated CONFIG_MD_FAULTY * MD_LINEAR: 849d18e27be9 md: Remove deprecated CONFIG_MD_LINEAR * MD_MULTIPATH: d8730f0cf4ef md: Remove deprecated CONFIG_MD_MULTIPATH * MTD_AR7_PARTS: f10672800876 mtd: parsers: ar7: remove support * MTD_INTEL_VR_NOR: 77bf03252839 mtd: Remove support for Carillo Ranch driver * NET_ACT_IPT: 86fe596b588f net: sched: Remove NET_ACT_IPT from Kconfig * NTFS_DEBUG: 7ffa8f3d3023 fs: Remove NTFS classic * NTFS_RW: 7ffa8f3d3023 fs: Remove NTFS classic * PAGE_TABLE_ISOLATION => MITIGATION_PAGE_TABLE_ISOLATION: ea4654e08853 x86/bugs: Rename CONFIG_PAGE_TABLE_ISOLATION => CONFIG_MITIGATION_PAGE_TABLE_ISOLATION * QLGE: 875be090928d staging: qlge: Retire the driver * RETPOLINE => MITIGATION_RETPOLINE: aefb2f2e619b x86/bugs: Rename CONFIG_RETPOLINE => CONFIG_MITIGATION_RETPOLINE * SLAB: 2a19be61a651 mm/slab: remove CONFIG_SLAB from all Kconfig and Makefile * STRING_SELFTEST: 29d8568849fe string: Convert selftest to KUnit * STRSCPY_KUNIT_TEST: bb8d9b742aa7 string: Merge strscpy KUnit tests into string_kunit.c * TEST_STRING_HELPERS: fb57550fcbd8 string: Convert helpers selftest to KUnit * THERMAL_WRITABLE_TRIPS: a85739c8c689 thermal: Get rid of CONFIG_THERMAL_WRITABLE_TRIPS * UNIX_SCM: 99a7a5b9943e af_unix: Remove CONFIG_UNIX_SCM. * XZ_DEC_IA64: cf8e8658100d arch: Remove Itanium (IA-64) architecture Signed-off-by: Jonas Gorski --- recipes-kernel/linux/cve-exclusion_6.12.inc | 17362 ++++++++++++++++ ...1-Revert-virtio-Add-prereqs-for-tiny.patch | 44 + ...bus-after-timeout-if-START_BUSY-is-s.patch | 45 + .../10-01-soc-xgs_iproc-drivers.patch | 599 + .../armel-iproc/10-02-arm-add-iproc-xgs.patch | 6432 ++++++ .../10-03-arm-add-iproc-xgs-shim-layer.patch | 154 + .../10-04-arm-init-DEBUG_RODATA-fix.patch | 33 + .../10-05-hw_random-xgs-iproc-rng100.patch | 265 + ...-clk-clk-iproc-armpll-avoid-overflow.patch | 40 + .../armel-iproc/10-07-clk-clk-xgs-iproc.patch | 215 + ...xgs-iproc-for-ARCH_XGS_IPROC-as-well.patch | 30 + ...bcm-iproc-for-ARCH_XGS_IPROC-as-well.patch | 28 + .../10-10-mtd-brcmnand-ignore-warning.patch | 34 + .../10-11-bgmac-xgs-iproc-changes.patch | 497 + ...bcm-iproc-for-ARCH_XGS_IPROC-as-well.patch | 29 + .../10-13-phy-xgs-iproc-serdes.patch | 1076 + .../10-14-pci-pcie-xgs-iproc.patch | 588 + ...spi-spi-iproc-qspi-xgs-iproc-support.patch | 405 + .../10-16-usb-ipproc-xgs-hack.patch | 185 + .../10-17-usb-udc-xgs-iproc-udc.patch | 3234 +++ .../10-18-usb-phy-phy-xgs-iproc.patch | 719 + ...-watchdog-sp805_wdt-clear-bootstatus.patch | 84 + ...s-usb-phy-phy-xgs-iproc-usb-phy-mode.patch | 39 + .../bsp/armel-iproc/armel-iproc.cfg | 3204 +++ .../bsp/armel-iproc/armel-iproc.scc | 38 + ...river-support-intel-igb-bcm5461S-phy.patch | 252 + ...ackets-if-rx-flow-control-is-enabled.patch | 137 + ...com-54616-PHY-when-no-EEPROM-present.patch | 283 + .../x86_64-intel/igb_print_mac_phy_type.patch | 13 + .../bsp/x86_64-intel/x86_64-intel.cfg | 4830 +++++ .../bsp/x86_64-intel/x86_64-intel.scc | 17 + ...e-that-link-local-traffic-cannot-unl.patch | 48 + ...IFLA_INET6_ADDR_GEN_MODE-immediately.patch | 36 + ...nd-BONDING_INFO-events-down-to-users.patch | 25 + ...ing-hwaddr-on-tap-interface-creation.patch | 42 + .../bisdn-kmeta/cfg/bisdn-linux.scc | 20 + .../bisdn-kmeta/cfg/docker-extra.cfg | 18 + .../bisdn-kmeta/cfg/docker-extra.scc | 4 + .../kernel-meta/cfg/virtio.cfg | 18 + recipes-kernel/linux/linux-yocto-onl_6.12.bb | 51 + 40 files changed, 41173 insertions(+) create mode 100644 recipes-kernel/linux/cve-exclusion_6.12.inc create mode 100644 recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/0001-Revert-virtio-Add-prereqs-for-tiny.patch create mode 100644 recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/09-01-i2c-iproc-reset-bus-after-timeout-if-START_BUSY-is-s.patch create mode 100644 recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-01-soc-xgs_iproc-drivers.patch create mode 100644 recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-02-arm-add-iproc-xgs.patch create mode 100644 recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-03-arm-add-iproc-xgs-shim-layer.patch create mode 100644 recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-04-arm-init-DEBUG_RODATA-fix.patch create mode 100644 recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-05-hw_random-xgs-iproc-rng100.patch create mode 100644 recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-06-clk-clk-iproc-armpll-avoid-overflow.patch create mode 100644 recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-07-clk-clk-xgs-iproc.patch create mode 100644 recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-08-gpio-allow-xgs-iproc-for-ARCH_XGS_IPROC-as-well.patch create mode 100644 recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-09-i2c-allow-i2c-bcm-iproc-for-ARCH_XGS_IPROC-as-well.patch create mode 100644 recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-10-mtd-brcmnand-ignore-warning.patch create mode 100644 recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-11-bgmac-xgs-iproc-changes.patch create mode 100644 recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-12-mdio-allow-mdio-bcm-iproc-for-ARCH_XGS_IPROC-as-well.patch create mode 100644 recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-13-phy-xgs-iproc-serdes.patch create mode 100644 recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-14-pci-pcie-xgs-iproc.patch create mode 100644 recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-15-spi-spi-iproc-qspi-xgs-iproc-support.patch create mode 100644 recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-16-usb-ipproc-xgs-hack.patch create mode 100644 recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-17-usb-udc-xgs-iproc-udc.patch create mode 100644 recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-18-usb-phy-phy-xgs-iproc.patch create mode 100644 recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-19-watchdog-sp805_wdt-clear-bootstatus.patch create mode 100644 recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-20-drivers-usb-phy-phy-xgs-iproc-usb-phy-mode.patch create mode 100644 recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/armel-iproc.cfg create mode 100644 recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/armel-iproc.scc create mode 100644 recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/x86_64-intel/0002-driver-support-intel-igb-bcm5461S-phy.patch create mode 100644 recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/x86_64-intel/igb-dont-drop-packets-if-rx-flow-control-is-enabled.patch create mode 100644 recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/x86_64-intel/igb-setup-Broadcom-54616-PHY-when-no-EEPROM-present.patch create mode 100644 recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/x86_64-intel/igb_print_mac_phy_type.patch create mode 100644 recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/x86_64-intel/x86_64-intel.cfg create mode 100644 recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/x86_64-intel/x86_64-intel.scc create mode 100644 recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/cfg/0001-net-bridge-ensure-that-link-local-traffic-cannot-unl.patch create mode 100644 recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/cfg/0001-net-ipv6-apply-IFLA_INET6_ADDR_GEN_MODE-immediately.patch create mode 100644 recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/cfg/0001-net-rtnetlink-send-BONDING_INFO-events-down-to-users.patch create mode 100644 recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/cfg/0001-tun-allow-setting-hwaddr-on-tap-interface-creation.patch create mode 100644 recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/cfg/bisdn-linux.scc create mode 100644 recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/cfg/docker-extra.cfg create mode 100644 recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/cfg/docker-extra.scc create mode 100644 recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/kernel-meta/cfg/virtio.cfg create mode 100644 recipes-kernel/linux/linux-yocto-onl_6.12.bb diff --git a/recipes-kernel/linux/cve-exclusion_6.12.inc b/recipes-kernel/linux/cve-exclusion_6.12.inc new file mode 100644 index 00000000..5b05b5d5 --- /dev/null +++ b/recipes-kernel/linux/cve-exclusion_6.12.inc @@ -0,0 +1,17362 @@ + +# Auto-generated CVE metadata, DO NOT EDIT BY HAND. +# Generated at 2025-10-22 12:21:50.891196+00:00 for kernel version 6.12.54 +# From cvelistV5 cve_2025-10-20_0500Z + + +python check_kernel_cve_status_version() { + this_version = "6.12.54" + kernel_version = d.getVar("LINUX_VERSION") + if kernel_version != this_version: + bb.warn("Kernel CVE status needs updating: generated for %s but kernel is %s" % (this_version, kernel_version)) +} +do_cve_check[prefuncs] += "check_kernel_cve_status_version" + +CVE_STATUS[CVE-2019-25160] = "fixed-version: Fixed from version 5.0" + +CVE_STATUS[CVE-2019-25162] = "fixed-version: Fixed from version 6.0" + +# CVE-2019-3459 has no known resolution + +# CVE-2019-3460 has no known resolution + +CVE_STATUS[CVE-2020-36775] = "fixed-version: Fixed from version 5.7" + +CVE_STATUS[CVE-2020-36776] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2020-36777] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2020-36778] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2020-36779] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2020-36780] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2020-36781] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2020-36782] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2020-36783] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2020-36784] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2020-36785] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2020-36786] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2020-36787] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2020-36788] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2020-36789] = "fixed-version: Fixed from version 5.10" + +CVE_STATUS[CVE-2020-36790] = "fixed-version: Fixed from version 5.9" + +CVE_STATUS[CVE-2020-36791] = "fixed-version: Fixed from version 5.5.14" + +# CVE-2021-28688 has no known resolution + +# CVE-2021-28691 has no known resolution + +# CVE-2021-28711 has no known resolution + +# CVE-2021-28712 has no known resolution + +# CVE-2021-28713 has no known resolution + +# CVE-2021-28714 has no known resolution + +# CVE-2021-28715 has no known resolution + +CVE_STATUS[CVE-2021-46904] = "fixed-version: Fixed from version 5.12" + +CVE_STATUS[CVE-2021-46905] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46906] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46908] = "fixed-version: Fixed from version 5.12" + +CVE_STATUS[CVE-2021-46909] = "fixed-version: Fixed from version 5.12" + +CVE_STATUS[CVE-2021-46910] = "fixed-version: Fixed from version 5.12" + +CVE_STATUS[CVE-2021-46911] = "fixed-version: Fixed from version 5.12" + +CVE_STATUS[CVE-2021-46912] = "fixed-version: Fixed from version 5.12" + +CVE_STATUS[CVE-2021-46913] = "fixed-version: Fixed from version 5.12" + +CVE_STATUS[CVE-2021-46914] = "fixed-version: Fixed from version 5.12" + +CVE_STATUS[CVE-2021-46915] = "fixed-version: Fixed from version 5.12" + +CVE_STATUS[CVE-2021-46916] = "fixed-version: Fixed from version 5.12" + +CVE_STATUS[CVE-2021-46917] = "fixed-version: Fixed from version 5.12" + +CVE_STATUS[CVE-2021-46918] = "fixed-version: Fixed from version 5.12" + +CVE_STATUS[CVE-2021-46919] = "fixed-version: Fixed from version 5.12" + +CVE_STATUS[CVE-2021-46920] = "fixed-version: Fixed from version 5.12" + +CVE_STATUS[CVE-2021-46921] = "fixed-version: Fixed from version 5.12" + +CVE_STATUS[CVE-2021-46922] = "fixed-version: Fixed from version 5.11.17" + +CVE_STATUS[CVE-2021-46923] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-46924] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-46925] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-46926] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-46927] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-46928] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-46929] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-46930] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-46931] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-46932] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-46933] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-46934] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-46935] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-46936] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-46937] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-46938] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46939] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46940] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46941] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46942] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46943] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46944] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46945] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46947] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46948] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46949] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46950] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46951] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46952] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46953] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46954] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46955] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46956] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46957] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46958] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46959] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46960] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46961] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46962] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46963] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46964] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46965] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46966] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46967] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46968] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46969] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46970] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46971] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46972] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46973] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46974] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46976] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46977] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46978] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46979] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46980] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46981] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46982] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46983] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46984] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46985] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46986] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46987] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46988] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46989] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46990] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46991] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46992] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46993] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46994] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46995] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46996] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46997] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46998] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-46999] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47000] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47001] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47002] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47003] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47004] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47005] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47006] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47007] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47008] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47009] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47010] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47011] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47012] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47013] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47014] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47015] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47016] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47017] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47018] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47019] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47020] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47021] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47022] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47023] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47024] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47025] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47026] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47027] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47028] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47029] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47030] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47031] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47032] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47033] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47034] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47035] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47036] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47037] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47038] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47039] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47040] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47041] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47042] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47043] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47044] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47045] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47046] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47047] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47048] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47049] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47050] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47051] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47052] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47053] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47054] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47055] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47056] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47057] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47058] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47059] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47060] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47061] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47062] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47063] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47064] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47065] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47066] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47067] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47068] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47069] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47070] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47071] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47072] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47073] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47074] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47075] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47076] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47077] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47078] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47079] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47080] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47081] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47082] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47083] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47086] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47087] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47088] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47089] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47090] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47091] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47092] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47093] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47094] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47095] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47096] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47097] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47098] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47099] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47100] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47101] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47102] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47103] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47104] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47105] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47106] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47107] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47108] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47109] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47110] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47111] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47112] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47113] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47114] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47116] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47117] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47118] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47119] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47120] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47121] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47122] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47123] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47124] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47125] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47126] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47127] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47128] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47129] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47130] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47131] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47132] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47133] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47134] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47135] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47136] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47137] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47138] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47139] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47140] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47141] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47142] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47143] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47145] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47146] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47147] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47148] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47149] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47150] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47151] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47152] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47153] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47158] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47159] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47160] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47161] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47162] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47163] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47164] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47165] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47166] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47167] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47168] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47169] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47170] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47171] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47172] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47173] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47174] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47175] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47176] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47177] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47178] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47179] = "fixed-version: Fixed from version 5.12.9" + +CVE_STATUS[CVE-2021-47180] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47181] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47182] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47183] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47184] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47185] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47186] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47187] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47188] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47189] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47190] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47191] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47192] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47193] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47194] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47195] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47196] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47197] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47198] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47199] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47200] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47201] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47202] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47203] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47204] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47205] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47206] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47207] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47209] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47210] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47211] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47212] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47214] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47215] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47216] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47217] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47218] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47219] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47221] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47222] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47223] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47224] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47225] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47226] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47227] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47228] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47229] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47230] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47231] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47232] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47233] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47234] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47235] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47236] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47237] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47238] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47239] = "fixed-version: Fixed from version 5.12.13" + +CVE_STATUS[CVE-2021-47240] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47241] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47242] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47243] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47244] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47245] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47246] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47247] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47248] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47249] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47250] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47251] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47252] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47253] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47254] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47255] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47256] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47257] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47258] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47259] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47260] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47261] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47262] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47263] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47264] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47265] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47266] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47267] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47268] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47269] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47270] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47271] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47272] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47273] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47274] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47275] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47276] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47277] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47278] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47279] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47280] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47281] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47282] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47283] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47284] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-47286] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47287] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47288] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47289] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47290] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47291] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47292] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47293] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47294] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47295] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47296] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47297] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47298] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47299] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47300] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47301] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47302] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47303] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47304] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47305] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47306] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47307] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47308] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47309] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47310] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47311] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47312] = "fixed-version: Fixed from version 5.13.5" + +CVE_STATUS[CVE-2021-47313] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47314] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47315] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47316] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47317] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47318] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47319] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47320] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47321] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47322] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47323] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47324] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47325] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47327] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47328] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47329] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47330] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47331] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47332] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47333] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47334] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47335] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47336] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47337] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47338] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47339] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47340] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47341] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47342] = "fixed-version: Fixed from version 5.10.77" + +CVE_STATUS[CVE-2021-47343] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47344] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47345] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47346] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47347] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47348] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47349] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47350] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47351] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47352] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47353] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47354] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47355] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47356] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47357] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-47358] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47359] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47360] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47361] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47362] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47363] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47364] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47365] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47366] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47367] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47368] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47369] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47370] = "fixed-version: Fixed from version 5.14.9" + +CVE_STATUS[CVE-2021-47371] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47372] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47373] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47374] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47375] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47376] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47378] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47379] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47380] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47381] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47382] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47383] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47384] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47385] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47386] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47387] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47388] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47389] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47390] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47391] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47392] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47393] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47394] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47395] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47396] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47397] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47398] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47399] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47400] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47401] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47402] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47403] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47404] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47405] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47406] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47407] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47408] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47409] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47410] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47412] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47413] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47414] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47415] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47416] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47417] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47418] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47419] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47420] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47421] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47422] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47423] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47424] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47425] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47426] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47427] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47428] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47429] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47430] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47431] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47432] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2021-47433] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47434] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47435] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47436] = "fixed-version: Fixed from version 5.14.14" + +CVE_STATUS[CVE-2021-47437] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47438] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47439] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47440] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47441] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47442] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47443] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47444] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47445] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47446] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47447] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47448] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47449] = "fixed-version: Fixed from version 5.14.14" + +CVE_STATUS[CVE-2021-47450] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47451] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47452] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47453] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47454] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47455] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47456] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47457] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47458] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47459] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47460] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47461] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47462] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47463] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47464] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47465] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47466] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47467] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47468] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47470] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47471] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47473] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47474] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47475] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47476] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47477] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47478] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47479] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47480] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47481] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47482] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47483] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47484] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47485] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47486] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47489] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47490] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47491] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47492] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47493] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47494] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47495] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47496] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47497] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47498] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-47499] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47500] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47501] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47502] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47503] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47504] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47505] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47506] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47507] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47508] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47509] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47510] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47511] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47512] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47513] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47514] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47515] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47516] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47517] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47518] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47519] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47520] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47521] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47522] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47523] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47524] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47525] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47526] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47527] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47528] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47529] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47530] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47531] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47532] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47533] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47534] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47535] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47536] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47537] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47538] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47539] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47540] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47541] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47542] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47544] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47546] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47547] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47548] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47549] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47550] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47551] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47552] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47553] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47554] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47555] = "fixed-version: Fixed from version 5.15.6" + +CVE_STATUS[CVE-2021-47556] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47557] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47558] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47559] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47560] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47561] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47562] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47563] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47564] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47565] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47566] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47567] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47568] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47569] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47570] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47571] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47572] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47576] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47577] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47578] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47579] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47580] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47582] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47583] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47584] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47585] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47586] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47587] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47588] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47589] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47590] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47591] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47592] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47593] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47594] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47595] = "fixed-version: Fixed from version 5.15.11" + +CVE_STATUS[CVE-2021-47596] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47597] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47598] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47599] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47600] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47601] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47602] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47603] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47604] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47605] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47606] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47607] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47608] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47609] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47610] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47611] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47612] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47613] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47614] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47616] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-47617] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2021-47618] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2021-47619] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2021-47620] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2021-47622] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2021-47623] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2021-47624] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2021-47631] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2021-47632] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2021-47633] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2021-47634] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2021-47635] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2021-47636] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2021-47637] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2021-47638] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2021-47639] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2021-47640] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2021-47641] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2021-47642] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2021-47643] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2021-47644] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2021-47645] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2021-47646] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2021-47647] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2021-47648] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2021-47649] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2021-47650] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2021-47651] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2021-47652] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2021-47653] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2021-47654] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2021-47655] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2021-47656] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2021-47657] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2021-47658] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2021-47659] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2021-47660] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2021-47668] = "fixed-version: Fixed from version 5.11" + +CVE_STATUS[CVE-2021-47669] = "fixed-version: Fixed from version 5.11" + +CVE_STATUS[CVE-2021-47670] = "fixed-version: Fixed from version 5.11" + +CVE_STATUS[CVE-2021-47671] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-4439] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-4440] = "fixed-version: Fixed from version 5.10.218" + +CVE_STATUS[CVE-2021-4441] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2021-4442] = "fixed-version: Fixed from version 5.12" + +CVE_STATUS[CVE-2021-4453] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-4454] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2021-4460] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2022-21546] = "fixed-version: Fixed from version 5.19" + +# CVE-2022-26365 has no known resolution + +# CVE-2022-33740 has no known resolution + +# CVE-2022-33741 has no known resolution + +# CVE-2022-33742 has no known resolution + +# CVE-2022-33743 has no known resolution + +# CVE-2022-33744 has no known resolution + +# CVE-2022-3643 has no known resolution + +# CVE-2022-42328 has no known resolution + +# CVE-2022-42329 has no known resolution + +CVE_STATUS[CVE-2022-48626] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48627] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-48628] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2022-48629] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48630] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-48631] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48632] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48633] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48634] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48635] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48636] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48637] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48638] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48639] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48640] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48641] = "fixed-version: Fixed from version 5.19.12" + +CVE_STATUS[CVE-2022-48642] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48643] = "fixed-version: Fixed from version 5.19.12" + +CVE_STATUS[CVE-2022-48644] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48645] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48646] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48647] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48648] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48649] = "fixed-version: Fixed from version 5.19.12" + +CVE_STATUS[CVE-2022-48650] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48651] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48652] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48653] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48654] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48655] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48656] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48657] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48658] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48659] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48660] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48661] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48662] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48663] = "fixed-version: Fixed from version 5.19.12" + +CVE_STATUS[CVE-2022-48664] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48665] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48666] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48667] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48668] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48669] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2022-48670] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48671] = "fixed-version: Fixed from version 5.19.11" + +CVE_STATUS[CVE-2022-48672] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48673] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48674] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48675] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48686] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48687] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48688] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48689] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48690] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48691] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48692] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48693] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48694] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48695] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48696] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48697] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48698] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48699] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48701] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48702] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48703] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48704] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48705] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-48706] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-48707] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-48708] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-48709] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-48710] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-48711] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48712] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48713] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48714] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48715] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48716] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48717] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48718] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48719] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48720] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48721] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48722] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48723] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48724] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48725] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48726] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48727] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48728] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48729] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48730] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48731] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48732] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48733] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48734] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48735] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48738] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48739] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48740] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48741] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48742] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48743] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48744] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48745] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48746] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48747] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48748] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48749] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48750] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48751] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48752] = "fixed-version: Fixed from version 5.16.5" + +CVE_STATUS[CVE-2022-48753] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48754] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48755] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48756] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48757] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48758] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48759] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48760] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48761] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48762] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48763] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48764] = "fixed-version: Fixed from version 5.16.5" + +CVE_STATUS[CVE-2022-48765] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48766] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48767] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48768] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48769] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48770] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48771] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48772] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2022-48773] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48774] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48775] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48776] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48777] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48778] = "fixed-version: Fixed from version 5.16.11" + +CVE_STATUS[CVE-2022-48779] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48780] = "fixed-version: Fixed from version 5.16.11" + +CVE_STATUS[CVE-2022-48781] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48782] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48783] = "fixed-version: Fixed from version 5.16.11" + +CVE_STATUS[CVE-2022-48784] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48785] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48786] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48787] = "fixed-version: Fixed from version 5.16.11" + +CVE_STATUS[CVE-2022-48788] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48789] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48790] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48791] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48792] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48793] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48794] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48795] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48796] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48797] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48798] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48799] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48800] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48801] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48802] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48803] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48804] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48805] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48806] = "fixed-version: Fixed from version 5.16.10" + +CVE_STATUS[CVE-2022-48807] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48808] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48809] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48810] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48811] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48812] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48813] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48814] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48815] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48816] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48817] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48818] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48819] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48820] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48821] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48822] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48823] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48824] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48825] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48826] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48827] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48828] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48829] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48830] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48831] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48832] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48833] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48834] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48835] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48836] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48837] = "fixed-version: Fixed from version 5.16.17" + +CVE_STATUS[CVE-2022-48838] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48839] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48840] = "fixed-version: Fixed from version 5.16.17" + +CVE_STATUS[CVE-2022-48841] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48842] = "fixed-version: Fixed from version 5.16.16" + +CVE_STATUS[CVE-2022-48843] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48844] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48845] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48846] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48847] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48848] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48849] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48850] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48851] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48852] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48853] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48854] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48855] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48856] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48857] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48858] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48859] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48860] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48861] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48862] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48863] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48864] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48865] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48866] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48867] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-48868] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-48869] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-48870] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-48871] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-48872] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-48873] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-48874] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-48875] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-48876] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-48877] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-48878] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-48879] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-48880] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-48881] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-48882] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-48883] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-48884] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-48885] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-48886] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-48887] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-48888] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-48889] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-48890] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-48891] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-48892] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-48893] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-48894] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-48895] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-48896] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-48897] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-48898] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-48899] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-48901] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48902] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48903] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48904] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48905] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48906] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48907] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48908] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48909] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48910] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48911] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48912] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48913] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48914] = "fixed-version: Fixed from version 5.16.13" + +CVE_STATUS[CVE-2022-48915] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48916] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48918] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48919] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48920] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48921] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48922] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48923] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48924] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48925] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48926] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48927] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48928] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48929] = "fixed-version: Fixed from version 5.16.12" + +CVE_STATUS[CVE-2022-48930] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48931] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48932] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48933] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48934] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48935] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48937] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48938] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48939] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48940] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48941] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48942] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48943] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48944] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-48945] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-48946] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-48947] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-48948] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-48949] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-48950] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-48951] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-48952] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-48953] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-48954] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-48955] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-48956] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-48957] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-48958] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-48959] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-48960] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-48961] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-48962] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-48963] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-48964] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-48965] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-48966] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-48967] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-48968] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-48969] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-48970] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-48971] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-48972] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-48973] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-48974] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-48975] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-48976] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-48977] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-48978] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-48979] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-48980] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-48981] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-48982] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-48983] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-48984] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-48985] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-48986] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-48987] = "fixed-version: Fixed from version 6.0.13" + +CVE_STATUS[CVE-2022-48988] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-48989] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-48990] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-48991] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-48992] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-48994] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-48995] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-48996] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-48997] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-48998] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-48999] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49000] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49001] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49002] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49003] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49004] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49005] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49006] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49007] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49008] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49009] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49010] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49011] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49012] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49013] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49014] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49015] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49016] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49017] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49018] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49019] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49020] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49021] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49022] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49023] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49024] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49025] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49026] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49027] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49028] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49029] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49030] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49031] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49032] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49033] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49034] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2022-49035] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49044] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49046] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49047] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49048] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49049] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49050] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49051] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49052] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49053] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49054] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49055] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49057] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49058] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49059] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49060] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49061] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49062] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49063] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49064] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49065] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49066] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49067] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49068] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49069] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49070] = "fixed-version: Fixed from version 5.17.3" + +CVE_STATUS[CVE-2022-49071] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49072] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49073] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49074] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49075] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49076] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49077] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49078] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49079] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49080] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49081] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49082] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49083] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49084] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49085] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49086] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49087] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49088] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49089] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49090] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49091] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49092] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49093] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49094] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49095] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49096] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49097] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49098] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49099] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49100] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49102] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49103] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49104] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49105] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49106] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49107] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49108] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49109] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49110] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49111] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49112] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49113] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49114] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49115] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49116] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49117] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49118] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49119] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49120] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49121] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49122] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49123] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49124] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49125] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49126] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49127] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49128] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49129] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49130] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49131] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49132] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49133] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49134] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49135] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49136] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49137] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49138] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49139] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49141] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49142] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49144] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49145] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49146] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49147] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49148] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49149] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49150] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49151] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49152] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49153] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49154] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49155] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49156] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49157] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49158] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49159] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49160] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49161] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49162] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49163] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49164] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49165] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49166] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49167] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49168] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49169] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49170] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49171] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49172] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49173] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49174] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49175] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49176] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49177] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49178] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49179] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49180] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49182] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49183] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49184] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49185] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49186] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49187] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49188] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49189] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49190] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49191] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49192] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49193] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49194] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49195] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49196] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49197] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49198] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49199] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49200] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49201] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49202] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49203] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49204] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49205] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49206] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49207] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49208] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49209] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49210] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49211] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49212] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49213] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49214] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49215] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49216] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49217] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49218] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49219] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49220] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49221] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49222] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49223] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49224] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49225] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49226] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49227] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49228] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49229] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49230] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49231] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49232] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49233] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49234] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49235] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49236] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49237] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49238] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49239] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49240] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49241] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49242] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49243] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49244] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49245] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49246] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49247] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49248] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49249] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49250] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49251] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49252] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49253] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49254] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49255] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49256] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49257] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49258] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49259] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49260] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49261] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49262] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49263] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49264] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49265] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49266] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49267] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49268] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49269] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49270] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49271] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49272] = "fixed-version: Fixed from version 5.17.2" + +CVE_STATUS[CVE-2022-49273] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49274] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49275] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49276] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49277] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49278] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49279] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49280] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49281] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49282] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49283] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49284] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49285] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49286] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49287] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49288] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49289] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49290] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49291] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49292] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49293] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-49294] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49295] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49296] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49297] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49298] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49300] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49301] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49302] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49303] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49304] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49305] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49306] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49307] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49308] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49309] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49310] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49311] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49312] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49313] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49314] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49315] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49316] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49317] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49318] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49319] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49320] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49321] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49322] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49323] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49324] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49325] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49326] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49327] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49328] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49329] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49330] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49331] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49332] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49333] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49334] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49335] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49336] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49337] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49338] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49339] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49340] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49341] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49342] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49343] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49344] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49345] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49346] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49347] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49348] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49349] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49350] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49351] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49352] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49353] = "fixed-version: Fixed from version 5.18.4" + +CVE_STATUS[CVE-2022-49354] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49356] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49357] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49358] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49359] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49360] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49361] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49362] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49363] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49364] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49365] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49366] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49367] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49368] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49369] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49370] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49371] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49372] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49373] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49374] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49375] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49376] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49377] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49378] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49379] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49380] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49381] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49382] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49383] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49384] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49385] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49386] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49387] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49388] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49389] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49390] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49391] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49392] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49393] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49394] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49395] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49396] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49397] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49398] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49399] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49400] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49401] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49402] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49403] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49404] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49405] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49406] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49407] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49408] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49409] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49410] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49411] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49412] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49413] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49414] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49415] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49416] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49417] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49418] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49419] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49420] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49421] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49422] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49423] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49424] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49425] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49426] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49427] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49428] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49429] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49430] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49431] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49432] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49433] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49434] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49435] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49436] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49437] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49438] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49439] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49440] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49441] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49442] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49443] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49444] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49445] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49446] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49447] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49448] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49449] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49450] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49451] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49452] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49453] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49454] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49455] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49456] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49457] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49458] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49459] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49460] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49461] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49462] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49463] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49464] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49465] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49466] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49467] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49468] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49469] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49470] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49471] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49472] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49473] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49474] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49475] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49476] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49477] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49478] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49479] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49480] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49481] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49482] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49483] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49484] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49485] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49486] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49487] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49488] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49489] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49490] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49491] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49492] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49493] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49494] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49495] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49496] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49497] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49498] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49499] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49500] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49501] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49502] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49503] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49504] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49505] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49506] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49507] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49508] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49509] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49510] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49511] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49512] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49513] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49514] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49515] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49516] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49517] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49518] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49519] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49520] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49521] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49522] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49523] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49524] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49525] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49526] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49527] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49528] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49529] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49530] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49531] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49532] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49533] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49534] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49535] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49536] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49537] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49538] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49539] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49540] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49541] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49542] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49543] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49544] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49545] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49546] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49547] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49548] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49549] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49550] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49551] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49552] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49553] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49554] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49555] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49556] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49557] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49558] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49559] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49560] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49561] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49562] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49563] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49564] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49565] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49566] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49567] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49568] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49569] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49570] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49571] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49572] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49573] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49574] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49575] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49576] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49577] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49578] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49579] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49580] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49581] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49582] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49583] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49584] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49585] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49586] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49587] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49588] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49589] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49590] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49591] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49592] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49593] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49594] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49595] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49596] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49597] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49598] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49599] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49600] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49601] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49602] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49603] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49604] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49605] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49606] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49607] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49608] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49609] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49610] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49611] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49612] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49613] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49615] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49616] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49617] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49618] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49619] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49620] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49621] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49622] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49623] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49624] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49625] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49626] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49627] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49628] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49629] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49630] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49631] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49632] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49633] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49634] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49635] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49636] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49637] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49638] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49639] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49640] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49641] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49642] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49643] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49644] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49645] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49646] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49647] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49648] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49649] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49650] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49651] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49652] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49653] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49654] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49655] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49656] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49657] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49658] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49659] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49661] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49662] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49663] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49664] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49665] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49666] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49667] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49668] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49669] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49670] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49671] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49672] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49673] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49674] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49675] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49676] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49677] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49678] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49679] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49680] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49681] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49682] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49683] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49684] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49685] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49686] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49687] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49688] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49691] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49692] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49693] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49694] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49695] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49696] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49697] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49698] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49699] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49700] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49701] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49702] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49703] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49704] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49705] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49706] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49707] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49708] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49709] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49710] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49711] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49712] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49713] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49714] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49715] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49716] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49717] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49718] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49719] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49720] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49721] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49722] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49723] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49724] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49725] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49726] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49727] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49728] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49729] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49730] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49731] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49732] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-49733] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49738] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-49739] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-49740] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-49741] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-49742] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-49743] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-49744] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-49745] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-49746] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-49747] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-49748] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-49749] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-49750] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-49751] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-49752] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-49753] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-49754] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-49755] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-49756] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-49757] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-49758] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-49759] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-49760] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-49761] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-49762] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49763] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49764] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49765] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49766] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49767] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49768] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49769] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49770] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49771] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49772] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49773] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49774] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49775] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49776] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49777] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49778] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49779] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49780] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49781] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49782] = "fixed-version: Fixed from version 6.0.10" + +CVE_STATUS[CVE-2022-49783] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49784] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49785] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49786] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49787] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49788] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49789] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49790] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49791] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49792] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49793] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49794] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49795] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49796] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49797] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49798] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49799] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49800] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49801] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49802] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49803] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49804] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49805] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49806] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49807] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49808] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49809] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49810] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49811] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49812] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49813] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49814] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49815] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49817] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49818] = "fixed-version: Fixed from version 6.0.10" + +CVE_STATUS[CVE-2022-49819] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49820] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49821] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49822] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49823] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49824] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49825] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49826] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49827] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49828] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49829] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49830] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49831] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49832] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49833] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49834] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49835] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49836] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49837] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49838] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49839] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49840] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49841] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49842] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49844] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49845] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49846] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49847] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49848] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49849] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49850] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49851] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49852] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49853] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49854] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49855] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49857] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49858] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49859] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49860] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49861] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49862] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49863] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49864] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49865] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49866] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49867] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49868] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49869] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49870] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49871] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49872] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49873] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49874] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49875] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49876] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49877] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49878] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49879] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49880] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49881] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49882] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49883] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49884] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49885] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49886] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49887] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49888] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49889] = "fixed-version: Fixed from version 6.0.8" + +CVE_STATUS[CVE-2022-49890] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49891] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49892] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49893] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49894] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49895] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49896] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49898] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49899] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49900] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49901] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49902] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49903] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49904] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49905] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49906] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49907] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49908] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49909] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49910] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49911] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49912] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49913] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49914] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49915] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49916] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49917] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49918] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49919] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49920] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49921] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49922] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49923] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49924] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49925] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49926] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49927] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49928] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49929] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49930] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49931] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-49932] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2022-49934] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49935] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49936] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49937] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49938] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49939] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49940] = "fixed-version: Fixed from version 5.19.8" + +CVE_STATUS[CVE-2022-49942] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49943] = "fixed-version: Fixed from version 5.19.8" + +CVE_STATUS[CVE-2022-49944] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49945] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49946] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49947] = "fixed-version: Fixed from version 5.19.8" + +CVE_STATUS[CVE-2022-49948] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49949] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49950] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49951] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49952] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49953] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49954] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49955] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49956] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49957] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49958] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49959] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49960] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49961] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49962] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49963] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49964] = "fixed-version: Fixed from version 5.19.7" + +CVE_STATUS[CVE-2022-49965] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49966] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49967] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49968] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49969] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49970] = "fixed-version: Fixed from version 5.19.8" + +CVE_STATUS[CVE-2022-49971] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49972] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49973] = "fixed-version: Fixed from version 5.19.8" + +CVE_STATUS[CVE-2022-49974] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49975] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49976] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49977] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49978] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49979] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49980] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49981] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49982] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49983] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49984] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49985] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49986] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49987] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49989] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49990] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49991] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49992] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49993] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49994] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49995] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49996] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49997] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49998] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-49999] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50000] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50001] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50002] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50003] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50004] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50005] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50006] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50007] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50008] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50009] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50010] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50011] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50012] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50013] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50014] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50015] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50016] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50017] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50019] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50020] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50021] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50022] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50023] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50024] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50025] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50026] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50027] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50028] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50029] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50030] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50032] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50033] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50034] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50035] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50036] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50037] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50038] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50039] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50040] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50041] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50042] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50043] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50044] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50045] = "fixed-version: Fixed from version 5.19.4" + +CVE_STATUS[CVE-2022-50046] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50047] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50048] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50049] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50050] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50051] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50052] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50053] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50054] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50055] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50056] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50057] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50058] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50059] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50060] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50061] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50062] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50063] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50064] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50065] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50066] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50067] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50068] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50069] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50070] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50071] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50072] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50073] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50074] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50075] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50076] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50077] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50078] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50079] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50080] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50082] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50084] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50085] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50086] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50087] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50088] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50089] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50090] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50091] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50092] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50093] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50094] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50095] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50096] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50097] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50098] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50099] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50100] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50101] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50102] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50103] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50104] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50105] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50106] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50107] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50108] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50109] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50110] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50111] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50112] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50113] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50114] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50115] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50116] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50117] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50118] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50119] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50120] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50121] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50122] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50123] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50124] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50125] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50126] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50127] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50129] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50130] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50131] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50132] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50133] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50134] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50135] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50136] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50137] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50138] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50139] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50140] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50141] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50142] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50143] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50144] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50145] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50146] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50147] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50148] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50149] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50151] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50152] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50153] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50154] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50155] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50156] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50157] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50158] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50159] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50160] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50161] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50162] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50163] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50164] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50165] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50166] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50167] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50168] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50169] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50170] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50171] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50172] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50173] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50174] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50175] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50176] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50177] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50178] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50179] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50181] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50182] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50183] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50184] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50185] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50186] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50187] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50188] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50189] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50190] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50191] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50192] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50193] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50194] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50195] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50196] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50197] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50198] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50199] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50200] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50201] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50202] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50203] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50204] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50205] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50206] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50207] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50208] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50209] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50210] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50211] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50212] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50213] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50214] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50215] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50217] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50218] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50219] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50220] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50221] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50222] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50223] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50224] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50225] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50226] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50227] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50228] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50229] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50230] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50231] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50232] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50233] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50234] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50235] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50236] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50239] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50240] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-50241] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50242] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50243] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50244] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50245] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50246] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50247] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50248] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50249] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50250] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50251] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50252] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50253] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50254] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50255] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50256] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50257] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50258] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2022-50259] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50260] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50261] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50262] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50263] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50264] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50265] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50266] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50267] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50268] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50269] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2022-50270] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50271] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50272] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50273] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50274] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50275] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50276] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50277] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50278] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50279] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2022-50280] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50281] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50282] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50283] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50284] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50285] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50286] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50287] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50288] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50289] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50291] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50292] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50293] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50294] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2022-50295] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50296] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50297] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50298] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50299] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50300] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50301] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50302] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50303] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50304] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50305] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50306] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50307] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50308] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50309] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50310] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50311] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50312] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50313] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50314] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50315] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50316] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50317] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50318] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50319] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50320] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50321] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2022-50322] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50323] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50324] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50325] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50326] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50327] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50328] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50329] = "fixed-version: Fixed from version 6.1.3" + +CVE_STATUS[CVE-2022-50330] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50331] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50332] = "fixed-version: Fixed from version 6.0.6" + +CVE_STATUS[CVE-2022-50333] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50334] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50335] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50336] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50337] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50339] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50340] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50341] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50342] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50343] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50344] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50346] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50347] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50348] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50349] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50350] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50351] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50352] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50353] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50354] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50355] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50356] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50357] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50358] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50359] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50360] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50361] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2022-50362] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50363] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50364] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50365] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50366] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50367] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50368] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50369] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2022-50370] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50371] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50372] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50373] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50374] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50375] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50376] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50378] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50379] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50380] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50381] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50382] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50383] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50384] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50385] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50386] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50387] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50388] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50389] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50390] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50391] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50392] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50393] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50394] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50395] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50396] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50398] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50399] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50400] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50401] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50402] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50404] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50405] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50406] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50407] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50408] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50409] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50410] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50411] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50412] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50413] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50414] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50415] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50416] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50417] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50418] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50419] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50420] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50421] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50422] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50423] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50424] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2022-50425] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50426] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50427] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50428] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50429] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50430] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50431] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50432] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50433] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50434] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50435] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50436] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50437] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50438] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50439] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50440] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50441] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50442] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50443] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50444] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50445] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50446] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50447] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50448] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50449] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50451] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50452] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50453] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50454] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50456] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50457] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50458] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50459] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50460] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50461] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50462] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50463] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50464] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50465] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50466] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50467] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50468] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50469] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50470] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50471] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50472] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50473] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50474] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50475] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50476] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50477] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50478] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50479] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50480] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50481] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50482] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50483] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50484] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50485] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50486] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50488] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50489] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50490] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50491] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50492] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50493] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50494] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50496] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50497] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50498] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50499] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50500] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50501] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50503] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50504] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50505] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50506] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50507] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50508] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2022-50509] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50510] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50511] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50512] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50513] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50514] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50515] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50516] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50517] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50518] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50519] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50520] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50521] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50522] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50523] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50524] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50525] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50526] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50527] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50528] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50529] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50530] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50531] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50532] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50533] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50534] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50535] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2022-50536] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50537] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50538] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50539] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2022-50540] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50541] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50542] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50543] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50544] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50545] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50546] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50547] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50548] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50549] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50550] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50551] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50552] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-50553] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50554] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-50555] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2023-32246] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-32249] = "fixed-version: Fixed from version 6.4" + +# CVE-2023-34319 has no known resolution + +# CVE-2023-34324 has no known resolution + +CVE_STATUS[CVE-2023-3865] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-3866] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-3867] = "fixed-version: Fixed from version 6.5" + +# CVE-2023-46838 has no known resolution + +CVE_STATUS[CVE-2023-4130] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-4515] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-52433] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52434] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52435] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52436] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52438] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52439] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52440] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52441] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-52442] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-52443] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52444] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52445] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52446] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52447] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52448] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52449] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52450] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52451] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52452] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52453] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52454] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52455] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52456] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52457] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52458] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52459] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52460] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52461] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52462] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52463] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52464] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52465] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52467] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52468] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52469] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52470] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52471] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52472] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52473] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52474] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-52475] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52476] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52477] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52478] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52479] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52480] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52481] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52482] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52483] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52484] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52485] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52486] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52487] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52488] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52489] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52490] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52491] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52492] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52493] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52494] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52495] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52497] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52498] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52499] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52500] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52501] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52502] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52503] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52504] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52505] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52506] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52507] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52508] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52509] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52510] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52511] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52512] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52513] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52515] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52516] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52517] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52518] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52519] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52520] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52522] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52523] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52524] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52525] = "fixed-version: Fixed from version 6.5.7" + +CVE_STATUS[CVE-2023-52526] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52527] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52528] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52529] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52530] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52531] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52532] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52559] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52560] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52561] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52562] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52563] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52564] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52565] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52566] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52567] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52568] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52569] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52570] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52571] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52572] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52573] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52574] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52576] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52577] = "fixed-version: Fixed from version 6.5.6" + +CVE_STATUS[CVE-2023-52578] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52580] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52581] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52582] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52583] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52584] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52585] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52586] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52587] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52588] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52589] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52590] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52591] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52593] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52594] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52595] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52596] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52597] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52598] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52599] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52600] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52601] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52602] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52603] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52604] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52606] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52607] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52608] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52609] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52610] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52611] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52612] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52613] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52614] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52615] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52616] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52617] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52618] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52619] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52620] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-52621] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52622] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52623] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52624] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52625] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52626] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52627] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52628] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52629] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52631] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52632] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52633] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52634] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52635] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52636] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52637] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52638] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52639] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52640] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52641] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52642] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52643] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52644] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2023-52645] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52646] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52647] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2023-52648] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2023-52649] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2023-52650] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2023-52652] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2023-52653] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2023-52654] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52655] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52656] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52657] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52658] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52659] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2023-52660] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52661] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2023-52662] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2023-52663] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2023-52664] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52667] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52668] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52669] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52670] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52671] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52672] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52673] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52674] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52675] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52676] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52677] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52678] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52679] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52680] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52681] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52682] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52683] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52684] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52686] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52687] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52688] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52689] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52690] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52691] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52692] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52693] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52694] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52695] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52696] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52697] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52698] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52699] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2023-52700] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52701] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52702] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52703] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52704] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52705] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52706] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52707] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52708] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52730] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52731] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52732] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52735] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52736] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52737] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52738] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52739] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52740] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52741] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52742] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52743] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52744] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52745] = "fixed-version: Fixed from version 6.1.12" + +CVE_STATUS[CVE-2023-52746] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52747] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52748] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52749] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52750] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52751] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52752] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52753] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52754] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52755] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52757] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52760] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52761] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52762] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52763] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52764] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52765] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52766] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52767] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52768] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52769] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52770] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52771] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52772] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52773] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52774] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52775] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52776] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52777] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52778] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52779] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52780] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52781] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52782] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52783] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52784] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52785] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52786] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52787] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52788] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52789] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52790] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52791] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52792] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52794] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52795] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52796] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52797] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52798] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52799] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52800] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52801] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52803] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52804] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52805] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52806] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52807] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52808] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52809] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52810] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52811] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52812] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52813] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52814] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52815] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52816] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52817] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52818] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52819] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52821] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52825] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52826] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52827] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52828] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52829] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52831] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52832] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52833] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52834] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52835] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52836] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52837] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52838] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52839] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52840] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52841] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52842] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52843] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52844] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52845] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52846] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52847] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52848] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52849] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52850] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52851] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52852] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52853] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52854] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52855] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52856] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52857] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52858] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52859] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52860] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52861] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52862] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52863] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52864] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52865] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52866] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52867] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52868] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52869] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52870] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52871] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52872] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52873] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52874] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52875] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52876] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52877] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52878] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52879] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52880] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52881] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52882] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2023-52883] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52884] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2023-52885] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-52886] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52887] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2023-52888] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2023-52889] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2023-52893] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52894] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52895] = "fixed-version: Fixed from version 6.1.8" + +CVE_STATUS[CVE-2023-52896] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52897] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52898] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52899] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52900] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52901] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52902] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52903] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52904] = "fixed-version: Fixed from version 5.15.168" + +CVE_STATUS[CVE-2023-52905] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52906] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52907] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52908] = "fixed-version: Fixed from version 6.1.7" + +CVE_STATUS[CVE-2023-52909] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52910] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52911] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52912] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52913] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52914] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52915] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52916] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52918] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2023-52919] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52920] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2023-52921] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-52922] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-52923] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-52924] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-52925] = "fixed-version: Fixed from version 6.4.12" + +CVE_STATUS[CVE-2023-52926] = "fixed-version: Fixed from version 6.7" + +CVE_STATUS[CVE-2023-52927] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-52928] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52929] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52930] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52931] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52932] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52933] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52934] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52935] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52936] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52937] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52938] = "fixed-version: Fixed from version 6.1.11" + +CVE_STATUS[CVE-2023-52939] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52940] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52941] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52942] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52973] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52974] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52975] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52976] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52977] = "fixed-version: Fixed from version 6.1.11" + +CVE_STATUS[CVE-2023-52978] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52980] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52981] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52982] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52983] = "fixed-version: Fixed from version 6.1.11" + +CVE_STATUS[CVE-2023-52984] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52985] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52986] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52987] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52988] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52989] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52991] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52992] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52993] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52994] = "fixed-version: Fixed from version 6.1.9" + +CVE_STATUS[CVE-2023-52995] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52996] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52997] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52998] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-52999] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-53000] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-53002] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-53003] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-53004] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-53005] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-53006] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-53007] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-53008] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-53009] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-53010] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-53011] = "fixed-version: Fixed from version 6.2" + +# CVE-2023-53012 has no known resolution + +CVE_STATUS[CVE-2023-53013] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-53014] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-53015] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-53016] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-53017] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-53018] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-53019] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-53020] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-53021] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-53022] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-53023] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-53024] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-53026] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-53028] = "fixed-version: Fixed from version 6.1.8" + +CVE_STATUS[CVE-2023-53029] = "fixed-version: Fixed from version 6.1.8" + +CVE_STATUS[CVE-2023-53030] = "fixed-version: Fixed from version 6.1.8" + +CVE_STATUS[CVE-2023-53031] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-53032] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-53033] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-53034] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2023-53035] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53036] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53037] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53038] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53039] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53040] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53041] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53042] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53043] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53044] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53045] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53046] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53047] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53048] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53049] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53050] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53051] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53052] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53053] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53054] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53055] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53056] = "fixed-version: Fixed from version 6.2.9" + +CVE_STATUS[CVE-2023-53057] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53058] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53059] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53060] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53061] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53062] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53064] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53065] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53066] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53067] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53068] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53069] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53070] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53071] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53072] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53073] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53074] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53075] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53077] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53078] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53079] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53080] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53081] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53082] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53083] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53084] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53085] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53086] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53087] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53088] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53089] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53090] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53091] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53092] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53093] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53094] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53095] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53096] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53097] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53098] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53099] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53100] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53101] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53102] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53103] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53105] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53106] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53107] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53108] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53109] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53110] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53111] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53112] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53113] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53114] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53115] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53116] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53117] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53118] = "fixed-version: Fixed from version 6.2.8" + +CVE_STATUS[CVE-2023-53119] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53120] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53121] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53123] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53124] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53125] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53126] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53127] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53128] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53131] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53132] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53133] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53134] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53135] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53136] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53138] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53139] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53140] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53141] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53142] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53143] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53144] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53145] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53146] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53147] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53148] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53149] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53150] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53151] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53152] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53153] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53163] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-53164] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53165] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53166] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53167] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53168] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53169] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53170] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53171] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53172] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53173] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53174] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53175] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53176] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53177] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53178] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53179] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53180] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53181] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53182] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53183] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53184] = "fixed-version: Fixed from version 6.4.8" + +CVE_STATUS[CVE-2023-53185] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53186] = "fixed-version: Fixed from version 6.3" + +# CVE-2023-53187 has no known resolution + +CVE_STATUS[CVE-2023-53188] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53189] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53190] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-53191] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53192] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53193] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53194] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53195] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53196] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53197] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53198] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53199] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53200] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53201] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53202] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53203] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53204] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53205] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53206] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53207] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53208] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53209] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53210] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53211] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53213] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53214] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53215] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53216] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53217] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53218] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53219] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53220] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53221] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53222] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53223] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53224] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53225] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53226] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53228] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53229] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53230] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53231] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53232] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53233] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53234] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53235] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53236] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53237] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53238] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53239] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53240] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53241] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53242] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53243] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53244] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53245] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53246] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53247] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53248] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53249] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53250] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53251] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53252] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53253] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53254] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53255] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53256] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53257] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53258] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53259] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53260] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53261] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53262] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53263] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53264] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53265] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53266] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53267] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53268] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53269] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53270] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53271] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53272] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53273] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53274] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53275] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53276] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53277] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53278] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53279] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53280] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53281] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53282] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53284] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53285] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53286] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53287] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53288] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53289] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53290] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53291] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53292] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53293] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53294] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53295] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53296] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53297] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53298] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53299] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53300] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53301] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53302] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53303] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53304] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53305] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53306] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53307] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53308] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53309] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53310] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53311] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53312] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53313] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53314] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53315] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53316] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53317] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53318] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53319] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53320] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53321] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53322] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53323] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53324] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53325] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53326] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53327] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53328] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53329] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53330] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-53331] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53332] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53333] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53334] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53335] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53336] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53337] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53338] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53339] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53340] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53341] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-53342] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53343] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53344] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53345] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53346] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53347] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53348] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53349] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53350] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53351] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53352] = "fixed-version: Fixed from version 6.4.10" + +CVE_STATUS[CVE-2023-53353] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53354] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53355] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53356] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53357] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53358] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53359] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53360] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53361] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53362] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53363] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53364] = "fixed-version: Fixed from version 6.4.12" + +CVE_STATUS[CVE-2023-53365] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53366] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53367] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53368] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53369] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53370] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53371] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53372] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53373] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53374] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53375] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53376] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53377] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53378] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53379] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53380] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53381] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53382] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53383] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53384] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53385] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53386] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53387] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53388] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53389] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53390] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53391] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53392] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53393] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-53394] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53395] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53396] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53397] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53398] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53399] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53400] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53401] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53402] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53403] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53404] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53405] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53406] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53407] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53408] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53409] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53410] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53411] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53412] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53413] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53414] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53415] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53416] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53417] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53418] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53419] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53420] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53421] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53422] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53423] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53424] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53425] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53426] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53427] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53428] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53429] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53430] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53431] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53432] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53433] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53434] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53435] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53436] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53437] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53438] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53439] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53440] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53441] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53442] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53443] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53444] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53445] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53446] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53447] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53448] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53449] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53450] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53451] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53452] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53453] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53454] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53455] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53456] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53457] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53458] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53459] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53460] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53461] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53462] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53463] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53464] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53465] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53466] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53467] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53468] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53469] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53470] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53471] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53472] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53473] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53474] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53475] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53476] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53477] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53478] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53479] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53480] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53481] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53482] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53483] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53484] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53485] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53486] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53487] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53488] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53489] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53490] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53491] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53492] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53493] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53494] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53495] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53496] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53497] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53498] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53499] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53500] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53501] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53503] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53504] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53505] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53506] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53507] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53508] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53509] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-53510] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53511] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53512] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53513] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53514] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53515] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53516] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53517] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53518] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53519] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53520] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53521] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53522] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53523] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53524] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53525] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53526] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53527] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53528] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53529] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53530] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53531] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53532] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53533] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53534] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53535] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53536] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53537] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53538] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53539] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53540] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53541] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53542] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53543] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53544] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53545] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53546] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53547] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53548] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53549] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-53550] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53551] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53552] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53553] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53554] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53555] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53556] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53557] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53558] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53559] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53560] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53561] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53562] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53563] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53564] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53565] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53566] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53567] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53568] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53569] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53570] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53571] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53572] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53573] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53574] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53575] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53576] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53577] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53578] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53579] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53580] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53581] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53582] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53583] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53584] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53585] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53586] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53587] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53588] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53589] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53590] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53591] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53592] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-53593] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53594] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53595] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53596] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53597] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53598] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53599] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53600] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53601] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53602] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53603] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53604] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53605] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53606] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53607] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53608] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53609] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53610] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53611] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53612] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53613] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53614] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53615] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53616] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53617] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53618] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53619] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53620] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53621] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53622] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53623] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53624] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53625] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-53626] = "fixed-version: Fixed from version 6.2.8" + +CVE_STATUS[CVE-2023-53627] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53628] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53629] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53630] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53631] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53632] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53633] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53634] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53635] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53636] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53637] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53638] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53639] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53640] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53641] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53642] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53643] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53644] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53645] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53646] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53647] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53648] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53649] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53650] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53651] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53652] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53653] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53654] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53655] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53656] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53657] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53658] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53659] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53660] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53661] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53662] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53663] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53664] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53665] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53666] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53667] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53668] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53669] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53670] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53671] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53672] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53673] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53674] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53675] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53676] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53677] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53678] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53679] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53680] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53681] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2023-53682] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53683] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53684] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-53685] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-53686] = "fixed-version: Fixed from version 6.6" + +CVE_STATUS[CVE-2023-53687] = "fixed-version: Fixed from version 6.5" + +CVE_STATUS[CVE-2024-26581] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26582] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26583] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26584] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26585] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26586] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26587] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26588] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26589] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26590] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26591] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26592] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26593] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26594] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26595] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26596] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26597] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26598] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26599] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26600] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26601] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26602] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26603] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26604] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26605] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26606] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26607] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26608] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26610] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26611] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26612] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26614] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26615] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26616] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26617] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26618] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26619] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26620] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26621] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26622] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26623] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26625] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26626] = "fixed-version: Fixed from version 6.7.4" + +CVE_STATUS[CVE-2024-26627] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26629] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26630] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26631] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26632] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26633] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26634] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26635] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26636] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26637] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26638] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26640] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26641] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26642] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26643] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26644] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26645] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26646] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26647] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26648] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26649] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26651] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26652] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26653] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26654] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26655] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26656] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26657] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26658] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26659] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26660] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26661] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26662] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26663] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26664] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26665] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26666] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26667] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26668] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26669] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26670] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26671] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26672] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26673] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26674] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26675] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26676] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26677] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26678] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26679] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26680] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26681] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26682] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26683] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26684] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26685] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26686] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26687] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26688] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26689] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26690] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26691] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26692] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26693] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26694] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26695] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26696] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26697] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26698] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26699] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26700] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26702] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26703] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26704] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26705] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26706] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26707] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26708] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26709] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26710] = "fixed-version: Fixed from version 6.7.6" + +CVE_STATUS[CVE-2024-26711] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26712] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26714] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26715] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26716] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26717] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26718] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26719] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26721] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26722] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26723] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26724] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26725] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26726] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26727] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26728] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26729] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26730] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26731] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26732] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26733] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26734] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26735] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26736] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26737] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26738] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26739] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26740] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26741] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26742] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26743] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26744] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26745] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26746] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26747] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26748] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26749] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26750] = "fixed-version: Fixed from version 5.15.151" + +CVE_STATUS[CVE-2024-26751] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26752] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26753] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26754] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26755] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26756] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26757] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26758] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26759] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26760] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26761] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26762] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26763] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26764] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26765] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26766] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26767] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26768] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26769] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26770] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26771] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26772] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26773] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26774] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26775] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26776] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26777] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26778] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26779] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26780] = "fixed-version: Fixed from version 6.7.9" + +CVE_STATUS[CVE-2024-26781] = "fixed-version: Fixed from version 6.7.9" + +CVE_STATUS[CVE-2024-26782] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26783] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26784] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26785] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26786] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26787] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26788] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26789] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26790] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26791] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26792] = "fixed-version: Fixed from version 6.7.9" + +CVE_STATUS[CVE-2024-26793] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26795] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26796] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26797] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26798] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26799] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26800] = "fixed-version: Fixed from version 6.7.9" + +CVE_STATUS[CVE-2024-26801] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26802] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26803] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26804] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26805] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26806] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26807] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26808] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26809] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26810] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26811] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26812] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26813] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26814] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26815] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26816] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26817] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26818] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26820] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26822] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26823] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26824] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26825] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26826] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26828] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26829] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26830] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26831] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26832] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26833] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26834] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26835] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26836] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26837] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26838] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26839] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26840] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26841] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26842] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26843] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26844] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26845] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26846] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26847] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26849] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26850] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26851] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26852] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26853] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26854] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26855] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26856] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26857] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26858] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26859] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26860] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26861] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26862] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26863] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26864] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26865] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26866] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26867] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26868] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26869] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26870] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26871] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26872] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26873] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26874] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26875] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26876] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26877] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26878] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26879] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26880] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26881] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26882] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26883] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26884] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26885] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26886] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26887] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26888] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26889] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26890] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26891] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26892] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26893] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26894] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26895] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26896] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26897] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26898] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26899] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26900] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26901] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26902] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26903] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26906] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26907] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26909] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26910] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26911] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26912] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26913] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26914] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26915] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26916] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26917] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26918] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26919] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26920] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-26921] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26922] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26923] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26924] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26925] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26926] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26927] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26928] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26930] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26931] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26932] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26933] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26934] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26935] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26936] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26937] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26938] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26939] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26940] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26941] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26942] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26943] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26944] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26945] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26946] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26947] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26948] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26949] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26950] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26951] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26952] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26953] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26954] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26955] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26956] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26957] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26958] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26959] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26960] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26961] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26962] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26963] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26964] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26965] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26966] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26967] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26968] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26969] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26970] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26971] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26973] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26974] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26975] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26976] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26977] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26978] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26980] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26981] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26982] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26983] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26984] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26985] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26986] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26987] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26988] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26989] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26990] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26991] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26992] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26993] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26994] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26995] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26996] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26997] = "fixed-version: Fixed from version 6.8.8" + +CVE_STATUS[CVE-2024-26998] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-26999] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27000] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27001] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27002] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27003] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27004] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27005] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27006] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27007] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27008] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27009] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27010] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27011] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27012] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27013] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27014] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27015] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27016] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27017] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27018] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27019] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27020] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27021] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27022] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27023] = "fixed-version: Fixed from version 6.7.7" + +CVE_STATUS[CVE-2024-27024] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-27025] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27026] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27027] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27028] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27029] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27030] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27031] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27032] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27033] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27034] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27035] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27036] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27037] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27038] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27039] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27040] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27041] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27042] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27043] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27044] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27045] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27046] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27047] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27048] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27049] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27050] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27051] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27052] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27053] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27054] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27056] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-27057] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-27058] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27059] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-27060] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-27061] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-27062] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-27063] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27064] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27065] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27066] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27067] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27068] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27069] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27070] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27071] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27072] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27073] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27074] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27075] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27076] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27077] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27078] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27079] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27080] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27388] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27389] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27390] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27391] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27392] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27393] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27394] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27395] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27396] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27397] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-27398] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27399] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27400] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27401] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27402] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-27403] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-27404] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-27405] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-27406] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-27407] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-27408] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-27409] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-27410] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-27411] = "fixed-version: Fixed from version 6.7.9" + +CVE_STATUS[CVE-2024-27412] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-27413] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-27414] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-27415] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-27416] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-27417] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-27418] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-27419] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-27431] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-27432] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27433] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27434] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27435] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27436] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-27437] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-31076] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-32936] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-33619] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-33621] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-33847] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-34027] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-34030] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-34777] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-35247] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-35784] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-35785] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-35786] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-35787] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35789] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35790] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-35791] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-35792] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-35793] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35794] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35795] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35796] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35797] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35798] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35799] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35800] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35801] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35803] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35804] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-35805] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35806] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35807] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35808] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35809] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35810] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35811] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35813] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35814] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35815] = "fixed-version: Fixed from version 6.7.12" + +CVE_STATUS[CVE-2024-35816] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-35817] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35818] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35819] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35821] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35822] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35823] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-35824] = "fixed-version: Fixed from version 6.7.12" + +CVE_STATUS[CVE-2024-35825] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-35826] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35827] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35828] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35829] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35830] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35831] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35832] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-35833] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-35834] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-35835] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-35836] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-35837] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-35838] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-35839] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-35840] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-35841] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-35842] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-35843] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35844] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35845] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35846] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35847] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35848] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35849] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35850] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35851] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35852] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35853] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35854] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35855] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35856] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35857] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35858] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35859] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35860] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35861] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35862] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35863] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35864] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35865] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35866] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35867] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35868] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35869] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35870] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35871] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35872] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35873] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35874] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35875] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35877] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35878] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35879] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35880] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35882] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35883] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35884] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35885] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35886] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35887] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35888] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35889] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35890] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35891] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35892] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35893] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35894] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35895] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35896] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35897] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35898] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35899] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35900] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35901] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35902] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35903] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35904] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35905] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35907] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35908] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35909] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35910] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35911] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35912] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35913] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35914] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35915] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35916] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35917] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35919] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35920] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35921] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35922] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35924] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35925] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35926] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35927] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35929] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35930] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35931] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35932] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35933] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35934] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35935] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35936] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35937] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35938] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35939] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35940] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35942] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35943] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35944] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35945] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35946] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35947] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35948] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35949] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35950] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35951] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35952] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35953] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35954] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35955] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35956] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35957] = "fixed-version: Fixed from version 6.8.7" + +CVE_STATUS[CVE-2024-35958] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35959] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35960] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35961] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35962] = "fixed-version: Fixed from version 6.8.7" + +CVE_STATUS[CVE-2024-35963] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35964] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35965] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35966] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35967] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35968] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35969] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35970] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35971] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35972] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35973] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35974] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35975] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35976] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35977] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35978] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35979] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35980] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35981] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35982] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35983] = "fixed-version: Fixed from version 6.8.9" + +CVE_STATUS[CVE-2024-35984] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35985] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35986] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35987] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35988] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35989] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35990] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35991] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35992] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35993] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35994] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35995] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35996] = "fixed-version: Fixed from version 6.8.9" + +CVE_STATUS[CVE-2024-35997] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35998] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-35999] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36000] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36001] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36002] = "fixed-version: Fixed from version 6.8.9" + +CVE_STATUS[CVE-2024-36003] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36004] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36005] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36006] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36007] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36008] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36009] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36010] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-36011] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36012] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36013] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36014] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-36015] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-36016] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-36017] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36018] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36019] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36020] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36021] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36023] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36024] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36025] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36026] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36027] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36028] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36029] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36030] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36031] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-36032] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36033] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36244] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-36270] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-36281] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-36286] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-36288] = "fixed-version: Fixed from version 6.9.4" + +CVE_STATUS[CVE-2024-36476] = "cpe-stable-backport: Backported in 6.12.9" + +CVE_STATUS[CVE-2024-36477] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-36478] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-36479] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-36481] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-36484] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-36489] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-36880] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36881] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36882] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36883] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36884] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36886] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36887] = "fixed-version: Fixed from version 6.8.10" + +CVE_STATUS[CVE-2024-36888] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36889] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36890] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36891] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36892] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36893] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36894] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36895] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36896] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36897] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36898] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36899] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36900] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36901] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36902] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36903] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36904] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36905] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36906] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36908] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36909] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36910] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36911] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36912] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36913] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36914] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36915] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36916] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36917] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36918] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36919] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36920] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36921] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36922] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36923] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36924] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36925] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36926] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36927] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36928] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36929] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36930] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36931] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36932] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36933] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36934] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36935] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36936] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36937] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36938] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36939] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36940] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36941] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36943] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36944] = "fixed-version: Fixed from version 6.8.10" + +CVE_STATUS[CVE-2024-36945] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36946] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36947] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36948] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36949] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36950] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36951] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36952] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36953] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36954] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36955] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36956] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36957] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36958] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36959] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36960] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36961] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36962] = "fixed-version: Fixed from version 6.8.10" + +CVE_STATUS[CVE-2024-36963] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36964] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36965] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-36966] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-36967] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-36968] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-36969] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-36970] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-36971] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-36972] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-36973] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-36974] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-36975] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-36976] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-36977] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-36978] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-36979] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-37021] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-37026] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-37078] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-37354] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-37356] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38306] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38381] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38384] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38385] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38388] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38390] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38538] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38539] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38540] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38541] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38542] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38543] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38544] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38545] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38546] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38547] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38548] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38549] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38550] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38551] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38552] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38553] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38554] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38555] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38556] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38557] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38558] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38559] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38560] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38561] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38562] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38563] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38564] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38565] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38566] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38567] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38568] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38569] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38570] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38571] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38572] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38573] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38574] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38575] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38576] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38577] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38578] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38579] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38580] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-38581] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-38582] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38583] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38584] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38585] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38586] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38587] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38588] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38589] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38590] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38591] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38592] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38593] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38594] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38595] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38596] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38597] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38598] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38599] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38600] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38601] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38602] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38603] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38604] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38605] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38606] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38607] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38608] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38609] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38610] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38611] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38612] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38613] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38614] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38615] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38616] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38617] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38618] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38619] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38620] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38621] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38622] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38623] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38624] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38625] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38626] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38627] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38628] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38629] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38630] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38631] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38632] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38633] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38634] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38635] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38636] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38637] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38659] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38661] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38662] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38663] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38664] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38667] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-38780] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39276] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39277] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39282] = "cpe-stable-backport: Backported in 6.12.9" + +CVE_STATUS[CVE-2024-39291] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39292] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39293] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39296] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39298] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39301] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39371] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39461] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39462] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39463] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39464] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39465] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39466] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39467] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39468] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39469] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39470] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39471] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39472] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39473] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39474] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39475] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39476] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39477] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39478] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39479] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39480] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39481] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39482] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39483] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39484] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39485] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39486] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39487] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39488] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39489] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39490] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39491] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39492] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39493] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39494] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39495] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39496] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39497] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39498] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39499] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39500] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39502] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39503] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39504] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39505] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39506] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39507] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39508] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39509] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-39510] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40899] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40900] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40901] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40902] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40903] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40904] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40905] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40906] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40907] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40908] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40909] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40910] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40911] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40912] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40913] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40914] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40915] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40916] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40917] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40918] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40919] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40920] = "fixed-version: Fixed from version 6.9.6" + +CVE_STATUS[CVE-2024-40921] = "fixed-version: Fixed from version 6.9.6" + +CVE_STATUS[CVE-2024-40922] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40923] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40924] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40925] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40926] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40927] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40928] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40929] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40930] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40931] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40932] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40933] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40934] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40935] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40936] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40937] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40938] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40939] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40940] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40941] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40942] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40943] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40944] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40945] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40947] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40948] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40949] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40950] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40951] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40952] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40953] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40954] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40955] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40956] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40957] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40958] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40959] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40960] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40961] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40962] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40963] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40964] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40965] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40966] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40967] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40968] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40969] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40970] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40971] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40972] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40973] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40974] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40975] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40976] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40977] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40978] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40979] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40980] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40981] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40983] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40984] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40985] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40986] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40987] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40988] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40989] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40990] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40991] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40992] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40993] = "fixed-version: Fixed from version 6.9.7" + +CVE_STATUS[CVE-2024-40994] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40995] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40996] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40997] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40998] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-40999] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41000] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41001] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41002] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41003] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41004] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41005] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41006] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41007] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41008] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-41009] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41010] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41011] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-41012] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41013] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-41014] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-41015] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-41016] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-41017] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-41018] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-41019] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-41020] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-41021] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-41022] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-41023] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41025] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41026] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41027] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41028] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41029] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41030] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41031] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41032] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41033] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41034] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41035] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41036] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41037] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41038] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41039] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41040] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41041] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41042] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41043] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41044] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41045] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41046] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41047] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41048] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41049] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41050] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41051] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41052] = "fixed-version: Fixed from version 6.9.10" + +CVE_STATUS[CVE-2024-41053] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41054] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41055] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41056] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41057] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41058] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41059] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41060] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41061] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41062] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41063] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41064] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41065] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41066] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41067] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41068] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41069] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41070] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41072] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41073] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41074] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41075] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41076] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41077] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41078] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41079] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41080] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41081] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41082] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41083] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41084] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41085] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41086] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41087] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41088] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41089] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41090] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-41091] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-41092] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41093] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41094] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41095] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41096] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41097] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41098] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-41149] = "fixed-version: Fixed from version 6.12.7" + +CVE_STATUS[CVE-2024-41932] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-41935] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-42063] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42064] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42065] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42066] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42067] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42068] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42069] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42070] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42071] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42072] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42073] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42074] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42075] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42076] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42077] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42078] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42079] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42080] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42081] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42082] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42083] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42084] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42085] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42086] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42087] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42088] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42089] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42090] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42091] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42092] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42093] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42094] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42095] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42096] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42097] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42098] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42099] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42100] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42101] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42102] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42103] = "fixed-version: Fixed from version 6.9.9" + +CVE_STATUS[CVE-2024-42104] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42105] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42106] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42107] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42108] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42109] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42110] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42111] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42112] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42113] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42114] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42115] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42117] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42118] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42119] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42120] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42121] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42122] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42123] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42124] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42125] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42126] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42127] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42128] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42129] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42130] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42131] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42132] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42133] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42134] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42135] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42136] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42137] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42138] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42139] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42140] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42141] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42142] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42144] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42145] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42146] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42147] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42148] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42149] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42150] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42151] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42152] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42153] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42154] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42155] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42156] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42157] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42158] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42159] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42160] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42161] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42162] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42223] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42224] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42225] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42227] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42228] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42229] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42230] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42231] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42232] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42233] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42234] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42235] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42236] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42237] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42238] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42239] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42240] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42241] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42242] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42243] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42244] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42245] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42246] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42247] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42248] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42249] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42250] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42251] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42252] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42253] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-42254] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42255] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42256] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42257] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42258] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42259] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42260] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42261] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42262] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42263] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42264] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42265] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42266] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42267] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42268] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42269] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42270] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42271] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42272] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42273] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42274] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42275] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42276] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42277] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42278] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42279] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42280] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42281] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42282] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42283] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42284] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42285] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42286] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42287] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42288] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42289] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42290] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42291] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42292] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42293] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42294] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42295] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42296] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42297] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42298] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42299] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42300] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42301] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42302] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42303] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42304] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42305] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42306] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42307] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42309] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42310] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42311] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42312] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42313] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42314] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42315] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42316] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42317] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42318] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42319] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42320] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42321] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-42322] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43098] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-43815] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43816] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43817] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43818] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43819] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43820] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43821] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43822] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43823] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43824] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43825] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43826] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43827] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43828] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43829] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43830] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43831] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43832] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43833] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43834] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43835] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43836] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43837] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43838] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43839] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43840] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43841] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43842] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43843] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43844] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43845] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43846] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43847] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43848] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43849] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43850] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43851] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43852] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43853] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43854] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43855] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43856] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43857] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43858] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43859] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43860] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43861] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43862] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43863] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43864] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43865] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43866] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43867] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43868] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43869] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43870] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43871] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43872] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43873] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43874] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43875] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43876] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43877] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43878] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43879] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43880] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43881] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43882] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43883] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43884] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43886] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43887] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43888] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43889] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43890] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43891] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43892] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43893] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43894] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43895] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43896] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43897] = "fixed-version: Fixed from version 6.10.5" + +CVE_STATUS[CVE-2024-43899] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43900] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43901] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43902] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43904] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43905] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43906] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43907] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43908] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43909] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43910] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43911] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43912] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43913] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-43914] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44931] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44932] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44933] = "fixed-version: Fixed from version 6.10.5" + +CVE_STATUS[CVE-2024-44934] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44935] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44936] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44937] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44938] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44939] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44940] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44941] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44942] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44943] = "fixed-version: Fixed from version 6.10" + +CVE_STATUS[CVE-2024-44944] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44945] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44946] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44947] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44948] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44949] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44950] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44951] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44953] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44954] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44956] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44957] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44958] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44959] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44960] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44961] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44962] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44963] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44964] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44965] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44966] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44967] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44968] = "fixed-version: Fixed from version 6.10.5" + +CVE_STATUS[CVE-2024-44969] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44970] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44971] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44972] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44973] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44974] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44975] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44976] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44977] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44978] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44979] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44980] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44981] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44982] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44983] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44984] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44985] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44986] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44987] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44988] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44989] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44990] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44991] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44992] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44993] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44994] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44995] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44996] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44997] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44998] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-44999] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-45000] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-45001] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-45002] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-45003] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-45004] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-45005] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-45006] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-45007] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-45008] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-45009] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-45010] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-45011] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-45012] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-45013] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-45014] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-45015] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-45016] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-45017] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-45018] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-45019] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-45020] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-45021] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-45022] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-45023] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-45024] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-45025] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-45026] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-45027] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-45028] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-45029] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-45030] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-45828] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-46672] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46673] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46674] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46675] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46676] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46677] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46678] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46679] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46680] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46681] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46682] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46683] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46684] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46685] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46686] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46687] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46688] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46689] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46690] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46691] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46692] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46693] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46694] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46695] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46696] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46697] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46698] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46699] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46701] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46702] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46703] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46704] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46705] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46706] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46707] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46708] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46709] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46710] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46711] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46712] = "fixed-version: Fixed from version 6.10.8" + +CVE_STATUS[CVE-2024-46713] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46714] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46715] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46716] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46717] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46718] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46719] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46720] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46721] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46722] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46723] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46724] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46725] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46726] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46727] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46728] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46729] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46730] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46731] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46732] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46733] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46734] = "fixed-version: Fixed from version 6.10.10" + +CVE_STATUS[CVE-2024-46735] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46736] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46737] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46738] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46739] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46740] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46741] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46742] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46743] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46744] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46745] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46746] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46747] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46748] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46749] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46750] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46751] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46752] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46753] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46754] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46755] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46759] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46760] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46761] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46762] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46763] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46764] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46765] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46766] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46767] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46768] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46769] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46770] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46771] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46772] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46773] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46774] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46775] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46776] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46777] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46778] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46779] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46780] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46781] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46782] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46783] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46784] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46785] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46786] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46787] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46788] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46789] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46790] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46791] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46792] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46793] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46794] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46795] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46796] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46797] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46798] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46799] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46800] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46801] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46802] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46803] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46804] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46805] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46806] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46807] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46808] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46809] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46810] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46811] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46812] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46813] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46814] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46815] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46816] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46817] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46818] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46819] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46820] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46821] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46822] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46823] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46824] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46825] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46826] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46827] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46828] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46829] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46830] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46831] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46832] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46833] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46834] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46835] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46836] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46837] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46838] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46840] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46841] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46842] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46843] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46844] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46845] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46846] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46847] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46848] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46849] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46850] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46851] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46852] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46853] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46854] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46855] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46856] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46857] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46858] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46859] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46860] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46861] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46862] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46863] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46864] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46865] = "fixed-version: Fixed from version 6.10.11" + +CVE_STATUS[CVE-2024-46866] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46867] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46868] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46869] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-46870] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46871] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-46896] = "fixed-version: Fixed from version 6.12.7" + +CVE_STATUS[CVE-2024-47141] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-47143] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-47408] = "cpe-stable-backport: Backported in 6.12.7" + +CVE_STATUS[CVE-2024-47658] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-47659] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-47660] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-47661] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-47662] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-47663] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-47664] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-47665] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-47666] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-47667] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-47668] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-47669] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-47670] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-47671] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47672] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-47673] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-47674] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-47675] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47676] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47677] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47678] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47679] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47680] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47681] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47682] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47683] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47684] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47685] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47686] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47687] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47688] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47689] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47690] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47691] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47692] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47693] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47694] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47695] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47696] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47697] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47698] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47699] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47700] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47701] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47702] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47703] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47704] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47705] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47706] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47707] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47708] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47709] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47710] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47711] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47712] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47713] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47714] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47715] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47716] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47717] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47718] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47719] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47720] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47721] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47723] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47724] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47726] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47727] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47728] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47729] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47730] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47731] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47732] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47733] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47734] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47735] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47736] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47737] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47738] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47739] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47740] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47741] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47742] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47743] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47744] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47745] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47746] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47747] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47748] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47749] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47750] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47751] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47752] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47753] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47754] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47756] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47757] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-47794] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-47809] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-48873] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-48875] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-48876] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-48881] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-49568] = "cpe-stable-backport: Backported in 6.12.7" + +CVE_STATUS[CVE-2024-49569] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-49570] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2024-49571] = "cpe-stable-backport: Backported in 6.12.7" + +CVE_STATUS[CVE-2024-49573] = "cpe-stable-backport: Backported in 6.12.7" + +CVE_STATUS[CVE-2024-49850] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49851] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49852] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49853] = "fixed-version: Fixed from version 6.12" + +# CVE-2024-49854 has no known resolution + +CVE_STATUS[CVE-2024-49855] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49856] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49857] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49858] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49859] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49860] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49861] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49862] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49863] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49864] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49865] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49866] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49867] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49868] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49869] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49870] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49871] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49872] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49873] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49874] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49875] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49876] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49877] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49878] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49879] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49880] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49881] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49882] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49883] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49884] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49885] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49886] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49887] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49888] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49889] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49890] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49891] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49892] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49893] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49894] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49895] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49896] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49897] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49898] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49899] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49900] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49901] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49902] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49903] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49904] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49905] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49906] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49907] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49908] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49909] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49910] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49911] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49912] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49913] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49914] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49915] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49916] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49917] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49918] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49919] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49920] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49921] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49922] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49923] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49924] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49925] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49926] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49927] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49928] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49929] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49930] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49931] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49932] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49933] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49934] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49935] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49936] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49937] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49938] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49939] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49940] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49941] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49942] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49943] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49944] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49945] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49946] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49947] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49948] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49949] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49950] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49951] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49952] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49953] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49954] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49955] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49956] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49957] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49958] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49959] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49960] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49961] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49962] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49963] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49964] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49965] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49966] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49968] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49969] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49970] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49971] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49972] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49973] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49974] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49975] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49976] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49977] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49978] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49979] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49980] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49981] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49982] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49983] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49984] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49985] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49986] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49987] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49988] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49989] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49990] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49991] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49992] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49994] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49996] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49997] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49998] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-49999] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50000] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50001] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50002] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50003] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50004] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50005] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50006] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50007] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50008] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50009] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50010] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50011] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50012] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50013] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50014] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50015] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50017] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50019] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50020] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50021] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50022] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50023] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50024] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50025] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50026] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50027] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50028] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50029] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50030] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50031] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50033] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50034] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50035] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50036] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50037] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50038] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50039] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50040] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50041] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50042] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50043] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50044] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50045] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50046] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50047] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50048] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50049] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50051] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-50055] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50056] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50057] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50058] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50059] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50060] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50061] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50062] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50063] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50064] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50065] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50066] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50067] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50068] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50069] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50070] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50071] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50072] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50073] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50074] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50075] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50076] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50077] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50078] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50079] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50080] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50081] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50082] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50083] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50084] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50085] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50086] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50087] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50088] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50090] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50091] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50092] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50093] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50094] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50095] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50096] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50097] = "fixed-version: Fixed from version 6.11.4" + +CVE_STATUS[CVE-2024-50098] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50099] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50100] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50101] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50102] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50103] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50104] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50105] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50106] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50107] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50108] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50109] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50110] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50111] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50112] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50113] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50114] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50115] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50116] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50117] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50118] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50119] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50120] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50121] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50122] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50123] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50124] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50125] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50126] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50127] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50128] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50129] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50130] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50131] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50132] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50133] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50134] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50135] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50136] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50137] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50138] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50139] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50140] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50141] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50142] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50143] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50144] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50145] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50146] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50147] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50148] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50149] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50150] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50151] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50152] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50153] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50154] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50155] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50156] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50157] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50158] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50159] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50160] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50161] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50162] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50163] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50164] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50165] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50166] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50167] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50168] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50169] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50170] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50171] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50172] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50173] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50174] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50175] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50176] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50177] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50178] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50179] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50180] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50182] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50183] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50184] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50185] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50186] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50187] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50188] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50189] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50190] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50191] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50192] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50193] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50194] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50195] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50196] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50197] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50198] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50199] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50200] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50201] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50202] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50203] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50204] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50205] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50206] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50207] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50208] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50209] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50210] = "fixed-version: Fixed from version 6.11.6" + +CVE_STATUS[CVE-2024-50211] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50212] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50213] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50214] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50215] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50216] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50217] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50218] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50220] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50221] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50222] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50223] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50224] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50225] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50226] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50227] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50229] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50230] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50231] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50232] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50233] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50234] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50235] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50236] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50237] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50238] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50239] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50240] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50241] = "fixed-version: Fixed from version 6.11.7" + +CVE_STATUS[CVE-2024-50242] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50243] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50244] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50245] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50246] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50247] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50248] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50249] = "fixed-version: Fixed from version 6.11.7" + +CVE_STATUS[CVE-2024-50250] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50251] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50252] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50253] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50254] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50255] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50256] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50257] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50258] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50259] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50260] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50261] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50262] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50263] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50264] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50265] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50266] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50267] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50268] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50269] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50270] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50271] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50272] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50273] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50274] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50275] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50276] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50277] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50278] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50279] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50280] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50281] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50282] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50283] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50284] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50285] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50286] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50287] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50288] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50289] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50290] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50291] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50292] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50293] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50294] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50295] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50296] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50297] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50298] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50299] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50300] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50301] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50302] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50303] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-50304] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-51729] = "cpe-stable-backport: Backported in 6.12.7" + +CVE_STATUS[CVE-2024-52319] = "cpe-stable-backport: Backported in 6.12.7" + +CVE_STATUS[CVE-2024-52332] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-52557] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2024-52559] = "cpe-stable-backport: Backported in 6.12.16" + +# CVE-2024-52560 needs backporting (fixed from 6.14) + +CVE_STATUS[CVE-2024-53042] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53043] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53044] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53045] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53046] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53047] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53048] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53049] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53050] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53051] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53052] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53053] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53055] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53056] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53057] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53058] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53059] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53060] = "fixed-version: Fixed from version 6.11.8" + +CVE_STATUS[CVE-2024-53061] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53062] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53063] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53064] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53065] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53066] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53067] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53068] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53069] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53070] = "fixed-version: Fixed from version 6.11.8" + +CVE_STATUS[CVE-2024-53071] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53072] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53073] = "fixed-version: Fixed from version 6.11.7" + +CVE_STATUS[CVE-2024-53074] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53075] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53076] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53077] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53078] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53079] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53080] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53081] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53082] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53083] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53084] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53085] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53086] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53087] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53088] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53089] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53090] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53091] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53092] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53093] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53094] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53095] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53096] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53097] = "fixed-version: Fixed from version 6.11.9" + +CVE_STATUS[CVE-2024-53098] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53099] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53100] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53101] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53103] = "cpe-stable-backport: Backported in 6.12.1" + +CVE_STATUS[CVE-2024-53104] = "cpe-stable-backport: Backported in 6.12.1" + +CVE_STATUS[CVE-2024-53105] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53106] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53107] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53108] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53109] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53110] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53111] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53112] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53113] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53114] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53115] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53116] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53117] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53118] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53119] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53120] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53121] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53122] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53123] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53124] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53125] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53126] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53127] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53128] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53129] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53130] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53131] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53132] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53133] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53134] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53135] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53136] = "fixed-version: Fixed from version 6.11.10" + +CVE_STATUS[CVE-2024-53137] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53138] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53139] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53140] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53141] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53142] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53143] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53144] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-53145] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53146] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53147] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53148] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53149] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53150] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53151] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53152] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53153] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53154] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53155] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53156] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53157] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53158] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53160] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53161] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53162] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53163] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53164] = "cpe-stable-backport: Backported in 6.12.7" + +CVE_STATUS[CVE-2024-53165] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53166] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53167] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53168] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53169] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53170] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53171] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53172] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53173] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53174] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53175] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53176] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53177] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53178] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53179] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53180] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53181] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53182] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53183] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53184] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53185] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53186] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53187] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53188] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53189] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53190] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53191] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53192] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53193] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53194] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53195] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53196] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53197] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53198] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53199] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53200] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53201] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53202] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53203] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53204] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53205] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53206] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53207] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53208] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53209] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53210] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53211] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53212] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53213] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53214] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53215] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53216] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53217] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53218] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53219] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53220] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53221] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53222] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53223] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53224] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53225] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53226] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53227] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53228] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53229] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53230] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53231] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53232] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53233] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53234] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53235] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53236] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53237] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53238] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53239] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-53240] = "cpe-stable-backport: Backported in 6.12.6" + +CVE_STATUS[CVE-2024-53241] = "cpe-stable-backport: Backported in 6.12.6" + +CVE_STATUS[CVE-2024-53680] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-53681] = "cpe-stable-backport: Backported in 6.12.9" + +CVE_STATUS[CVE-2024-53682] = "cpe-stable-backport: Backported in 6.12.6" + +CVE_STATUS[CVE-2024-53685] = "cpe-stable-backport: Backported in 6.12.7" + +CVE_STATUS[CVE-2024-53687] = "cpe-stable-backport: Backported in 6.12.6" + +CVE_STATUS[CVE-2024-53690] = "cpe-stable-backport: Backported in 6.12.7" + +CVE_STATUS[CVE-2024-54031] = "fixed-version: Fixed from version 6.12.9" + +CVE_STATUS[CVE-2024-54191] = "fixed-version: Fixed from version 6.12.6" + +CVE_STATUS[CVE-2024-54193] = "cpe-stable-backport: Backported in 6.12.7" + +CVE_STATUS[CVE-2024-54455] = "cpe-stable-backport: Backported in 6.12.7" + +CVE_STATUS[CVE-2024-54456] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2024-54458] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2024-54460] = "cpe-stable-backport: Backported in 6.12.6" + +CVE_STATUS[CVE-2024-54683] = "cpe-stable-backport: Backported in 6.12.6" + +CVE_STATUS[CVE-2024-55639] = "cpe-stable-backport: Backported in 6.12.6" + +CVE_STATUS[CVE-2024-55641] = "cpe-stable-backport: Backported in 6.12.6" + +CVE_STATUS[CVE-2024-55642] = "cpe-stable-backport: Backported in 6.12.6" + +CVE_STATUS[CVE-2024-55881] = "cpe-stable-backport: Backported in 6.12.7" + +CVE_STATUS[CVE-2024-55916] = "cpe-stable-backport: Backported in 6.12.7" + +CVE_STATUS[CVE-2024-56368] = "cpe-stable-backport: Backported in 6.12.7" + +CVE_STATUS[CVE-2024-56369] = "cpe-stable-backport: Backported in 6.12.7" + +CVE_STATUS[CVE-2024-56372] = "cpe-stable-backport: Backported in 6.12.7" + +CVE_STATUS[CVE-2024-56531] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56532] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56533] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56534] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56535] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56536] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56537] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56538] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56539] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56540] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56541] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56542] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56543] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56544] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56545] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56546] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56547] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56548] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56549] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56550] = "cpe-stable-backport: Backported in 6.12.4" + +CVE_STATUS[CVE-2024-56551] = "cpe-stable-backport: Backported in 6.12.4" + +CVE_STATUS[CVE-2024-56552] = "cpe-stable-backport: Backported in 6.12.4" + +CVE_STATUS[CVE-2024-56553] = "cpe-stable-backport: Backported in 6.12.4" + +CVE_STATUS[CVE-2024-56554] = "cpe-stable-backport: Backported in 6.12.4" + +CVE_STATUS[CVE-2024-56555] = "cpe-stable-backport: Backported in 6.12.4" + +CVE_STATUS[CVE-2024-56556] = "cpe-stable-backport: Backported in 6.12.4" + +CVE_STATUS[CVE-2024-56557] = "cpe-stable-backport: Backported in 6.12.4" + +CVE_STATUS[CVE-2024-56558] = "cpe-stable-backport: Backported in 6.12.4" + +CVE_STATUS[CVE-2024-56559] = "cpe-stable-backport: Backported in 6.12.4" + +CVE_STATUS[CVE-2024-56560] = "cpe-stable-backport: Backported in 6.12.4" + +CVE_STATUS[CVE-2024-56561] = "cpe-stable-backport: Backported in 6.12.4" + +CVE_STATUS[CVE-2024-56562] = "cpe-stable-backport: Backported in 6.12.4" + +CVE_STATUS[CVE-2024-56563] = "cpe-stable-backport: Backported in 6.12.4" + +CVE_STATUS[CVE-2024-56564] = "cpe-stable-backport: Backported in 6.12.4" + +CVE_STATUS[CVE-2024-56565] = "cpe-stable-backport: Backported in 6.12.4" + +CVE_STATUS[CVE-2024-56566] = "cpe-stable-backport: Backported in 6.12.4" + +CVE_STATUS[CVE-2024-56567] = "cpe-stable-backport: Backported in 6.12.4" + +CVE_STATUS[CVE-2024-56568] = "cpe-stable-backport: Backported in 6.12.4" + +CVE_STATUS[CVE-2024-56569] = "cpe-stable-backport: Backported in 6.12.4" + +CVE_STATUS[CVE-2024-56570] = "cpe-stable-backport: Backported in 6.12.4" + +CVE_STATUS[CVE-2024-56572] = "cpe-stable-backport: Backported in 6.12.4" + +CVE_STATUS[CVE-2024-56573] = "cpe-stable-backport: Backported in 6.12.4" + +CVE_STATUS[CVE-2024-56574] = "cpe-stable-backport: Backported in 6.12.4" + +CVE_STATUS[CVE-2024-56575] = "cpe-stable-backport: Backported in 6.12.4" + +CVE_STATUS[CVE-2024-56576] = "cpe-stable-backport: Backported in 6.12.4" + +CVE_STATUS[CVE-2024-56577] = "cpe-stable-backport: Backported in 6.12.4" + +CVE_STATUS[CVE-2024-56578] = "cpe-stable-backport: Backported in 6.12.4" + +CVE_STATUS[CVE-2024-56579] = "cpe-stable-backport: Backported in 6.12.4" + +CVE_STATUS[CVE-2024-56580] = "cpe-stable-backport: Backported in 6.12.4" + +CVE_STATUS[CVE-2024-56581] = "cpe-stable-backport: Backported in 6.12.4" + +CVE_STATUS[CVE-2024-56582] = "cpe-stable-backport: Backported in 6.12.4" + +CVE_STATUS[CVE-2024-56583] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56584] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56585] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56586] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56587] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56588] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56589] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56590] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56591] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56592] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56593] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56594] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56595] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56596] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56597] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56598] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56599] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56600] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56601] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56602] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56603] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56604] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56605] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56606] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56607] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56608] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56609] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56610] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56611] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56612] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56613] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56614] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56615] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56616] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56617] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56618] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56619] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56620] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56621] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56622] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56623] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56624] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56625] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56626] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56627] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56628] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56629] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56630] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56631] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56632] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56633] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56634] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56635] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56636] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56637] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56638] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56639] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56640] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56641] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56642] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56643] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56644] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56645] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56646] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56647] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56648] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56649] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56650] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56651] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56652] = "cpe-stable-backport: Backported in 6.12.6" + +CVE_STATUS[CVE-2024-56653] = "cpe-stable-backport: Backported in 6.12.6" + +CVE_STATUS[CVE-2024-56654] = "cpe-stable-backport: Backported in 6.12.6" + +CVE_STATUS[CVE-2024-56655] = "cpe-stable-backport: Backported in 6.12.6" + +CVE_STATUS[CVE-2024-56656] = "cpe-stable-backport: Backported in 6.12.6" + +CVE_STATUS[CVE-2024-56657] = "cpe-stable-backport: Backported in 6.12.6" + +CVE_STATUS[CVE-2024-56658] = "cpe-stable-backport: Backported in 6.12.6" + +CVE_STATUS[CVE-2024-56659] = "cpe-stable-backport: Backported in 6.12.6" + +CVE_STATUS[CVE-2024-56660] = "cpe-stable-backport: Backported in 6.12.6" + +CVE_STATUS[CVE-2024-56661] = "fixed-version: Fixed from version 6.12.6" + +CVE_STATUS[CVE-2024-56662] = "cpe-stable-backport: Backported in 6.12.6" + +CVE_STATUS[CVE-2024-56663] = "cpe-stable-backport: Backported in 6.12.6" + +CVE_STATUS[CVE-2024-56664] = "cpe-stable-backport: Backported in 6.12.6" + +CVE_STATUS[CVE-2024-56665] = "cpe-stable-backport: Backported in 6.12.6" + +CVE_STATUS[CVE-2024-56666] = "cpe-stable-backport: Backported in 6.12.6" + +CVE_STATUS[CVE-2024-56667] = "cpe-stable-backport: Backported in 6.12.6" + +CVE_STATUS[CVE-2024-56668] = "cpe-stable-backport: Backported in 6.12.6" + +CVE_STATUS[CVE-2024-56669] = "cpe-stable-backport: Backported in 6.12.6" + +CVE_STATUS[CVE-2024-56670] = "cpe-stable-backport: Backported in 6.12.6" + +CVE_STATUS[CVE-2024-56671] = "cpe-stable-backport: Backported in 6.12.6" + +CVE_STATUS[CVE-2024-56672] = "cpe-stable-backport: Backported in 6.12.6" + +CVE_STATUS[CVE-2024-56673] = "cpe-stable-backport: Backported in 6.12.6" + +CVE_STATUS[CVE-2024-56674] = "cpe-stable-backport: Backported in 6.12.6" + +CVE_STATUS[CVE-2024-56675] = "cpe-stable-backport: Backported in 6.12.6" + +CVE_STATUS[CVE-2024-56676] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56677] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56678] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56679] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56680] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56681] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56682] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56683] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56684] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56685] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56687] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56688] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56689] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56690] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56691] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56692] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56693] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56694] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56695] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56696] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56697] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56698] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56699] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56700] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56701] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56702] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56703] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56704] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56705] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56706] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56707] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56708] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56709] = "cpe-stable-backport: Backported in 6.12.7" + +CVE_STATUS[CVE-2024-56710] = "cpe-stable-backport: Backported in 6.12.7" + +CVE_STATUS[CVE-2024-56711] = "cpe-stable-backport: Backported in 6.12.7" + +CVE_STATUS[CVE-2024-56712] = "cpe-stable-backport: Backported in 6.12.7" + +CVE_STATUS[CVE-2024-56713] = "cpe-stable-backport: Backported in 6.12.7" + +CVE_STATUS[CVE-2024-56714] = "cpe-stable-backport: Backported in 6.12.7" + +CVE_STATUS[CVE-2024-56715] = "cpe-stable-backport: Backported in 6.12.7" + +CVE_STATUS[CVE-2024-56716] = "cpe-stable-backport: Backported in 6.12.7" + +CVE_STATUS[CVE-2024-56717] = "cpe-stable-backport: Backported in 6.12.7" + +CVE_STATUS[CVE-2024-56718] = "cpe-stable-backport: Backported in 6.12.7" + +CVE_STATUS[CVE-2024-56719] = "cpe-stable-backport: Backported in 6.12.7" + +CVE_STATUS[CVE-2024-56720] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56721] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56722] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56723] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56724] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56725] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56726] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56727] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56728] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56729] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56730] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56739] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56740] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56742] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56743] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56744] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56745] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56746] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56747] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56748] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56749] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56750] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56751] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56752] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56753] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56754] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56755] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56756] = "cpe-stable-backport: Backported in 6.12.2" + +CVE_STATUS[CVE-2024-56757] = "cpe-stable-backport: Backported in 6.12.8" + +CVE_STATUS[CVE-2024-56758] = "cpe-stable-backport: Backported in 6.12.8" + +CVE_STATUS[CVE-2024-56759] = "cpe-stable-backport: Backported in 6.12.8" + +CVE_STATUS[CVE-2024-56760] = "cpe-stable-backport: Backported in 6.12.8" + +CVE_STATUS[CVE-2024-56761] = "cpe-stable-backport: Backported in 6.12.8" + +CVE_STATUS[CVE-2024-56763] = "cpe-stable-backport: Backported in 6.12.8" + +CVE_STATUS[CVE-2024-56764] = "cpe-stable-backport: Backported in 6.12.8" + +CVE_STATUS[CVE-2024-56765] = "cpe-stable-backport: Backported in 6.12.8" + +CVE_STATUS[CVE-2024-56766] = "fixed-version: Fixed from version 6.12.8" + +CVE_STATUS[CVE-2024-56767] = "cpe-stable-backport: Backported in 6.12.8" + +CVE_STATUS[CVE-2024-56768] = "cpe-stable-backport: Backported in 6.12.8" + +CVE_STATUS[CVE-2024-56769] = "cpe-stable-backport: Backported in 6.12.8" + +CVE_STATUS[CVE-2024-56770] = "cpe-stable-backport: Backported in 6.12.6" + +CVE_STATUS[CVE-2024-56771] = "cpe-stable-backport: Backported in 6.12.4" + +CVE_STATUS[CVE-2024-56772] = "cpe-stable-backport: Backported in 6.12.4" + +CVE_STATUS[CVE-2024-56773] = "cpe-stable-backport: Backported in 6.12.4" + +CVE_STATUS[CVE-2024-56774] = "cpe-stable-backport: Backported in 6.12.4" + +CVE_STATUS[CVE-2024-56775] = "cpe-stable-backport: Backported in 6.12.4" + +CVE_STATUS[CVE-2024-56776] = "cpe-stable-backport: Backported in 6.12.4" + +CVE_STATUS[CVE-2024-56777] = "cpe-stable-backport: Backported in 6.12.4" + +CVE_STATUS[CVE-2024-56778] = "cpe-stable-backport: Backported in 6.12.4" + +CVE_STATUS[CVE-2024-56779] = "cpe-stable-backport: Backported in 6.12.4" + +CVE_STATUS[CVE-2024-56780] = "cpe-stable-backport: Backported in 6.12.4" + +CVE_STATUS[CVE-2024-56781] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56782] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56783] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56784] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56785] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56787] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-56788] = "cpe-stable-backport: Backported in 6.12.7" + +CVE_STATUS[CVE-2024-57791] = "cpe-stable-backport: Backported in 6.12.7" + +CVE_STATUS[CVE-2024-57792] = "cpe-stable-backport: Backported in 6.12.8" + +CVE_STATUS[CVE-2024-57793] = "cpe-stable-backport: Backported in 6.12.8" + +CVE_STATUS[CVE-2024-57795] = "cpe-stable-backport: Backported in 6.12.9" + +CVE_STATUS[CVE-2024-57798] = "cpe-stable-backport: Backported in 6.12.8" + +CVE_STATUS[CVE-2024-57799] = "cpe-stable-backport: Backported in 6.12.8" + +CVE_STATUS[CVE-2024-57800] = "cpe-stable-backport: Backported in 6.12.8" + +CVE_STATUS[CVE-2024-57801] = "cpe-stable-backport: Backported in 6.12.9" + +CVE_STATUS[CVE-2024-57802] = "cpe-stable-backport: Backported in 6.12.9" + +CVE_STATUS[CVE-2024-57804] = "cpe-stable-backport: Backported in 6.12.8" + +CVE_STATUS[CVE-2024-57805] = "cpe-stable-backport: Backported in 6.12.8" + +CVE_STATUS[CVE-2024-57806] = "cpe-stable-backport: Backported in 6.12.8" + +CVE_STATUS[CVE-2024-57807] = "cpe-stable-backport: Backported in 6.12.8" + +CVE_STATUS[CVE-2024-57809] = "cpe-stable-backport: Backported in 6.12.4" + +CVE_STATUS[CVE-2024-57834] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2024-57838] = "cpe-stable-backport: Backported in 6.12.4" + +CVE_STATUS[CVE-2024-57839] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-57841] = "cpe-stable-backport: Backported in 6.12.9" + +CVE_STATUS[CVE-2024-57843] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-57844] = "cpe-stable-backport: Backported in 6.12.9" + +CVE_STATUS[CVE-2024-57849] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-57850] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-57852] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2024-57857] = "cpe-stable-backport: Backported in 6.12.9" + +CVE_STATUS[CVE-2024-57872] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-57874] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-57875] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-57876] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-57877] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-57878] = "cpe-stable-backport: Backported in 6.12.5" + +CVE_STATUS[CVE-2024-57879] = "cpe-stable-backport: Backported in 6.12.6" + +CVE_STATUS[CVE-2024-57880] = "cpe-stable-backport: Backported in 6.12.6" + +CVE_STATUS[CVE-2024-57881] = "cpe-stable-backport: Backported in 6.12.7" + +CVE_STATUS[CVE-2024-57882] = "cpe-stable-backport: Backported in 6.12.9" + +CVE_STATUS[CVE-2024-57883] = "cpe-stable-backport: Backported in 6.12.9" + +CVE_STATUS[CVE-2024-57884] = "cpe-stable-backport: Backported in 6.12.9" + +CVE_STATUS[CVE-2024-57885] = "cpe-stable-backport: Backported in 6.12.9" + +CVE_STATUS[CVE-2024-57886] = "cpe-stable-backport: Backported in 6.12.9" + +CVE_STATUS[CVE-2024-57887] = "cpe-stable-backport: Backported in 6.12.9" + +CVE_STATUS[CVE-2024-57888] = "cpe-stable-backport: Backported in 6.12.9" + +CVE_STATUS[CVE-2024-57889] = "cpe-stable-backport: Backported in 6.12.9" + +CVE_STATUS[CVE-2024-57890] = "cpe-stable-backport: Backported in 6.12.9" + +CVE_STATUS[CVE-2024-57891] = "cpe-stable-backport: Backported in 6.12.9" + +CVE_STATUS[CVE-2024-57892] = "cpe-stable-backport: Backported in 6.12.9" + +CVE_STATUS[CVE-2024-57893] = "cpe-stable-backport: Backported in 6.12.9" + +CVE_STATUS[CVE-2024-57895] = "cpe-stable-backport: Backported in 6.12.9" + +CVE_STATUS[CVE-2024-57896] = "cpe-stable-backport: Backported in 6.12.9" + +CVE_STATUS[CVE-2024-57897] = "cpe-stable-backport: Backported in 6.12.9" + +CVE_STATUS[CVE-2024-57898] = "cpe-stable-backport: Backported in 6.12.9" + +CVE_STATUS[CVE-2024-57899] = "cpe-stable-backport: Backported in 6.12.9" + +CVE_STATUS[CVE-2024-57900] = "cpe-stable-backport: Backported in 6.12.9" + +CVE_STATUS[CVE-2024-57901] = "cpe-stable-backport: Backported in 6.12.9" + +CVE_STATUS[CVE-2024-57902] = "cpe-stable-backport: Backported in 6.12.9" + +CVE_STATUS[CVE-2024-57903] = "cpe-stable-backport: Backported in 6.12.9" + +CVE_STATUS[CVE-2024-57904] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2024-57905] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2024-57906] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2024-57907] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2024-57908] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2024-57909] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2024-57910] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2024-57911] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2024-57912] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2024-57913] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2024-57914] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2024-57916] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2024-57917] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2024-57918] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2024-57919] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2024-57921] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2024-57922] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2024-57923] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2024-57924] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2024-57925] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2024-57926] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2024-57927] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2024-57928] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2024-57929] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2024-57930] = "fixed-version: Fixed from version 6.12.9" + +CVE_STATUS[CVE-2024-57931] = "cpe-stable-backport: Backported in 6.12.9" + +CVE_STATUS[CVE-2024-57932] = "cpe-stable-backport: Backported in 6.12.9" + +CVE_STATUS[CVE-2024-57933] = "cpe-stable-backport: Backported in 6.12.9" + +CVE_STATUS[CVE-2024-57934] = "cpe-stable-backport: Backported in 6.12.9" + +CVE_STATUS[CVE-2024-57935] = "fixed-version: Fixed from version 6.12.9" + +CVE_STATUS[CVE-2024-57936] = "cpe-stable-backport: Backported in 6.12.9" + +CVE_STATUS[CVE-2024-57938] = "cpe-stable-backport: Backported in 6.12.9" + +CVE_STATUS[CVE-2024-57939] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2024-57940] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2024-57941] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2024-57942] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2024-57943] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2024-57944] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2024-57945] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2024-57946] = "cpe-stable-backport: Backported in 6.12.8" + +CVE_STATUS[CVE-2024-57947] = "fixed-version: Fixed from version 6.11" + +CVE_STATUS[CVE-2024-57948] = "cpe-stable-backport: Backported in 6.12.11" + +CVE_STATUS[CVE-2024-57949] = "cpe-stable-backport: Backported in 6.12.11" + +CVE_STATUS[CVE-2024-57950] = "cpe-stable-backport: Backported in 6.12.12" + +CVE_STATUS[CVE-2024-57951] = "cpe-stable-backport: Backported in 6.12.11" + +CVE_STATUS[CVE-2024-57952] = "cpe-stable-backport: Backported in 6.12.12" + +CVE_STATUS[CVE-2024-57953] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2024-57973] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2024-57974] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2024-57975] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2024-57976] = "cpe-stable-backport: Backported in 6.12.36" + +CVE_STATUS[CVE-2024-57977] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2024-57978] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2024-57979] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2024-57980] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2024-57981] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2024-57982] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2024-57983] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2024-57984] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2024-57985] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2024-57986] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2024-57987] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2024-57988] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2024-57989] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2024-57990] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2024-57991] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2024-57992] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2024-57993] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2024-57994] = "cpe-stable-backport: Backported in 6.12.13" + +# CVE-2024-57995 needs backporting (fixed from 6.14) + +CVE_STATUS[CVE-2024-57996] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2024-57997] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2024-57998] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2024-57999] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2024-58000] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2024-58001] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2024-58002] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2024-58003] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2024-58004] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2024-58005] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2024-58006] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2024-58007] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2024-58008] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2024-58009] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2024-58010] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2024-58011] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2024-58012] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2024-58013] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2024-58014] = "cpe-stable-backport: Backported in 6.12.14" + +# CVE-2024-58015 needs backporting (fixed from 6.14) + +CVE_STATUS[CVE-2024-58016] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2024-58017] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2024-58018] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2024-58019] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2024-58020] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2024-58021] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2024-58022] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2024-58034] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2024-58042] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2024-58051] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2024-58052] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2024-58053] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2024-58054] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2024-58055] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2024-58056] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2024-58057] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2024-58058] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2024-58059] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2024-58060] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2024-58061] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2024-58062] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2024-58063] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2024-58064] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2024-58065] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2024-58066] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2024-58067] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2024-58068] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2024-58069] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2024-58070] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2024-58071] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2024-58072] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2024-58073] = "fixed-version: only affects 6.13 onwards" + +# CVE-2024-58074 needs backporting (fixed from 6.14) + +CVE_STATUS[CVE-2024-58075] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2024-58076] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2024-58077] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2024-58078] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2024-58079] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2024-58080] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2024-58081] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2024-58082] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2024-58083] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2024-58084] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2024-58085] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2024-58086] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2024-58087] = "cpe-stable-backport: Backported in 6.12.6" + +CVE_STATUS[CVE-2024-58088] = "cpe-stable-backport: Backported in 6.12.17" + +CVE_STATUS[CVE-2024-58089] = "cpe-stable-backport: Backported in 6.12.17" + +CVE_STATUS[CVE-2024-58090] = "cpe-stable-backport: Backported in 6.12.18" + +CVE_STATUS[CVE-2024-58091] = "cpe-stable-backport: Backported in 6.12.36" + +CVE_STATUS[CVE-2024-58092] = "cpe-stable-backport: Backported in 6.12.22" + +# CVE-2024-58093 needs backporting (fixed from 6.15) + +# CVE-2024-58094 needs backporting (fixed from 6.15) + +# CVE-2024-58095 needs backporting (fixed from 6.15) + +# CVE-2024-58096 needs backporting (fixed from 6.15) + +# CVE-2024-58097 needs backporting (fixed from 6.15) + +CVE_STATUS[CVE-2024-58098] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2024-58099] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2024-58100] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2024-58237] = "cpe-stable-backport: Backported in 6.12.9" + +CVE_STATUS[CVE-2024-58238] = "fixed-version: Fixed from version 6.9" + +CVE_STATUS[CVE-2024-58239] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-58240] = "fixed-version: Fixed from version 6.8" + +CVE_STATUS[CVE-2024-58241] = "fixed-version: Fixed from version 6.12" + +CVE_STATUS[CVE-2025-21629] = "cpe-stable-backport: Backported in 6.12.9" + +CVE_STATUS[CVE-2025-21631] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2025-21632] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2025-21634] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2025-21635] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2025-21636] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2025-21637] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2025-21638] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2025-21639] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2025-21640] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2025-21641] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2025-21642] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2025-21643] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2025-21644] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2025-21645] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2025-21646] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2025-21647] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2025-21648] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2025-21649] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2025-21650] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2025-21651] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2025-21652] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2025-21653] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2025-21654] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2025-21655] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2025-21656] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2025-21657] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2025-21658] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2025-21659] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2025-21660] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2025-21661] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2025-21662] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2025-21663] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2025-21664] = "cpe-stable-backport: Backported in 6.12.10" + +CVE_STATUS[CVE-2025-21665] = "cpe-stable-backport: Backported in 6.12.11" + +CVE_STATUS[CVE-2025-21666] = "cpe-stable-backport: Backported in 6.12.11" + +CVE_STATUS[CVE-2025-21667] = "cpe-stable-backport: Backported in 6.12.11" + +CVE_STATUS[CVE-2025-21668] = "cpe-stable-backport: Backported in 6.12.11" + +CVE_STATUS[CVE-2025-21669] = "cpe-stable-backport: Backported in 6.12.11" + +CVE_STATUS[CVE-2025-21670] = "cpe-stable-backport: Backported in 6.12.11" + +CVE_STATUS[CVE-2025-21671] = "fixed-version: Fixed from version 6.12.11" + +CVE_STATUS[CVE-2025-21672] = "cpe-stable-backport: Backported in 6.12.11" + +CVE_STATUS[CVE-2025-21673] = "cpe-stable-backport: Backported in 6.12.11" + +CVE_STATUS[CVE-2025-21674] = "cpe-stable-backport: Backported in 6.12.11" + +CVE_STATUS[CVE-2025-21675] = "cpe-stable-backport: Backported in 6.12.11" + +CVE_STATUS[CVE-2025-21676] = "cpe-stable-backport: Backported in 6.12.11" + +CVE_STATUS[CVE-2025-21677] = "cpe-stable-backport: Backported in 6.12.11" + +CVE_STATUS[CVE-2025-21678] = "cpe-stable-backport: Backported in 6.12.11" + +CVE_STATUS[CVE-2025-21679] = "fixed-version: Fixed from version 6.12.11" + +CVE_STATUS[CVE-2025-21680] = "cpe-stable-backport: Backported in 6.12.11" + +CVE_STATUS[CVE-2025-21681] = "cpe-stable-backport: Backported in 6.12.11" + +CVE_STATUS[CVE-2025-21682] = "cpe-stable-backport: Backported in 6.12.11" + +CVE_STATUS[CVE-2025-21683] = "cpe-stable-backport: Backported in 6.12.11" + +CVE_STATUS[CVE-2025-21684] = "cpe-stable-backport: Backported in 6.12.11" + +CVE_STATUS[CVE-2025-21685] = "cpe-stable-backport: Backported in 6.12.11" + +CVE_STATUS[CVE-2025-21687] = "cpe-stable-backport: Backported in 6.12.12" + +CVE_STATUS[CVE-2025-21688] = "cpe-stable-backport: Backported in 6.12.12" + +CVE_STATUS[CVE-2025-21689] = "cpe-stable-backport: Backported in 6.12.12" + +CVE_STATUS[CVE-2025-21690] = "cpe-stable-backport: Backported in 6.12.12" + +CVE_STATUS[CVE-2025-21691] = "cpe-stable-backport: Backported in 6.12.12" + +CVE_STATUS[CVE-2025-21692] = "cpe-stable-backport: Backported in 6.12.12" + +CVE_STATUS[CVE-2025-21693] = "cpe-stable-backport: Backported in 6.12.12" + +CVE_STATUS[CVE-2025-21694] = "cpe-stable-backport: Backported in 6.12.11" + +CVE_STATUS[CVE-2025-21695] = "cpe-stable-backport: Backported in 6.12.11" + +CVE_STATUS[CVE-2025-21696] = "cpe-stable-backport: Backported in 6.12.11" + +CVE_STATUS[CVE-2025-21697] = "cpe-stable-backport: Backported in 6.12.11" + +CVE_STATUS[CVE-2025-21699] = "cpe-stable-backport: Backported in 6.12.12" + +CVE_STATUS[CVE-2025-21700] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2025-21701] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2025-21702] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2025-21703] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2025-21704] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2025-21705] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2025-21706] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2025-21707] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2025-21708] = "cpe-stable-backport: Backported in 6.12.13" + +# CVE-2025-21709 needs backporting (fixed from 6.14) + +CVE_STATUS[CVE-2025-21710] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2025-21711] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2025-21712] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2025-21713] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2025-21714] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2025-21715] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2025-21716] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2025-21717] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-21718] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2025-21719] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2025-21720] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2025-21721] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2025-21722] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2025-21723] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2025-21724] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2025-21725] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2025-21726] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2025-21727] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2025-21728] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2025-21729] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2025-21730] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-21731] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2025-21732] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2025-21733] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2025-21734] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2025-21735] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2025-21736] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2025-21737] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2025-21738] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2025-21739] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2025-21741] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2025-21742] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2025-21743] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2025-21744] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2025-21745] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2025-21746] = "cpe-stable-backport: Backported in 6.12.17" + +CVE_STATUS[CVE-2025-21747] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-21748] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2025-21749] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2025-21750] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2025-21751] = "cpe-stable-backport: Backported in 6.12.48" + +# CVE-2025-21752 needs backporting (fixed from 6.14) + +CVE_STATUS[CVE-2025-21753] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2025-21754] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2025-21756] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2025-21758] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2025-21759] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2025-21760] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2025-21761] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2025-21762] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2025-21763] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2025-21764] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2025-21765] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2025-21766] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2025-21767] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2025-21768] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2025-21769] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-21770] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2025-21771] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2025-21772] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2025-21773] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2025-21774] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2025-21775] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2025-21776] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2025-21777] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2025-21778] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2025-21779] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2025-21780] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2025-21781] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2025-21782] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2025-21783] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2025-21784] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2025-21785] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2025-21786] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2025-21787] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2025-21788] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2025-21789] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2025-21790] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2025-21791] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2025-21792] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2025-21793] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2025-21794] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2025-21795] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2025-21796] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2025-21797] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-21798] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2025-21799] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2025-21800] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2025-21801] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2025-21802] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2025-21803] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2025-21804] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2025-21805] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2025-21806] = "cpe-stable-backport: Backported in 6.12.13" + +# CVE-2025-21807 needs backporting (fixed from 6.14) + +CVE_STATUS[CVE-2025-21808] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2025-21809] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2025-21810] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2025-21811] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2025-21812] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2025-21813] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2025-21814] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2025-21815] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2025-21816] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2025-21817] = "fixed-version: only affects 6.13.2 onwards" + +CVE_STATUS[CVE-2025-21819] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2025-21820] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2025-21821] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2025-21822] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-21823] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2025-21824] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2025-21825] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2025-21826] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2025-21827] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2025-21828] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2025-21829] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2025-21830] = "cpe-stable-backport: Backported in 6.12.13" + +CVE_STATUS[CVE-2025-21831] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2025-21832] = "cpe-stable-backport: Backported in 6.12.14" + +# CVE-2025-21833 needs backporting (fixed from 6.14) + +CVE_STATUS[CVE-2025-21834] = "cpe-stable-backport: Backported in 6.12.14" + +CVE_STATUS[CVE-2025-21835] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2025-21836] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2025-21838] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2025-21839] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2025-21840] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-21841] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2025-21842] = "cpe-stable-backport: Backported in 6.12.16" + +CVE_STATUS[CVE-2025-21843] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-21844] = "cpe-stable-backport: Backported in 6.12.17" + +CVE_STATUS[CVE-2025-21845] = "cpe-stable-backport: Backported in 6.12.17" + +CVE_STATUS[CVE-2025-21846] = "cpe-stable-backport: Backported in 6.12.17" + +CVE_STATUS[CVE-2025-21847] = "cpe-stable-backport: Backported in 6.12.17" + +CVE_STATUS[CVE-2025-21848] = "cpe-stable-backport: Backported in 6.12.17" + +CVE_STATUS[CVE-2025-21849] = "cpe-stable-backport: Backported in 6.12.17" + +CVE_STATUS[CVE-2025-21850] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-21851] = "cpe-stable-backport: Backported in 6.12.17" + +CVE_STATUS[CVE-2025-21852] = "cpe-stable-backport: Backported in 6.12.17" + +CVE_STATUS[CVE-2025-21853] = "cpe-stable-backport: Backported in 6.12.17" + +CVE_STATUS[CVE-2025-21854] = "cpe-stable-backport: Backported in 6.12.17" + +CVE_STATUS[CVE-2025-21855] = "cpe-stable-backport: Backported in 6.12.17" + +CVE_STATUS[CVE-2025-21856] = "cpe-stable-backport: Backported in 6.12.17" + +CVE_STATUS[CVE-2025-21857] = "cpe-stable-backport: Backported in 6.12.17" + +CVE_STATUS[CVE-2025-21858] = "cpe-stable-backport: Backported in 6.12.17" + +CVE_STATUS[CVE-2025-21859] = "cpe-stable-backport: Backported in 6.12.17" + +CVE_STATUS[CVE-2025-21860] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-21861] = "cpe-stable-backport: Backported in 6.12.17" + +CVE_STATUS[CVE-2025-21862] = "cpe-stable-backport: Backported in 6.12.17" + +CVE_STATUS[CVE-2025-21863] = "cpe-stable-backport: Backported in 6.12.17" + +CVE_STATUS[CVE-2025-21864] = "cpe-stable-backport: Backported in 6.12.17" + +CVE_STATUS[CVE-2025-21865] = "cpe-stable-backport: Backported in 6.12.17" + +CVE_STATUS[CVE-2025-21866] = "cpe-stable-backport: Backported in 6.12.17" + +CVE_STATUS[CVE-2025-21867] = "cpe-stable-backport: Backported in 6.12.17" + +CVE_STATUS[CVE-2025-21868] = "cpe-stable-backport: Backported in 6.12.17" + +CVE_STATUS[CVE-2025-21869] = "cpe-stable-backport: Backported in 6.12.17" + +CVE_STATUS[CVE-2025-21870] = "cpe-stable-backport: Backported in 6.12.17" + +CVE_STATUS[CVE-2025-21871] = "cpe-stable-backport: Backported in 6.12.17" + +CVE_STATUS[CVE-2025-21872] = "cpe-stable-backport: Backported in 6.12.18" + +CVE_STATUS[CVE-2025-21873] = "cpe-stable-backport: Backported in 6.12.18" + +CVE_STATUS[CVE-2025-21874] = "cpe-stable-backport: Backported in 6.12.18" + +CVE_STATUS[CVE-2025-21875] = "cpe-stable-backport: Backported in 6.12.18" + +CVE_STATUS[CVE-2025-21876] = "cpe-stable-backport: Backported in 6.12.18" + +CVE_STATUS[CVE-2025-21877] = "cpe-stable-backport: Backported in 6.12.18" + +CVE_STATUS[CVE-2025-21878] = "cpe-stable-backport: Backported in 6.12.18" + +CVE_STATUS[CVE-2025-21879] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-21880] = "cpe-stable-backport: Backported in 6.12.18" + +CVE_STATUS[CVE-2025-21881] = "cpe-stable-backport: Backported in 6.12.18" + +CVE_STATUS[CVE-2025-21882] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-21883] = "cpe-stable-backport: Backported in 6.12.18" + +CVE_STATUS[CVE-2025-21884] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-21885] = "cpe-stable-backport: Backported in 6.12.18" + +CVE_STATUS[CVE-2025-21886] = "cpe-stable-backport: Backported in 6.12.18" + +CVE_STATUS[CVE-2025-21887] = "cpe-stable-backport: Backported in 6.12.18" + +CVE_STATUS[CVE-2025-21888] = "cpe-stable-backport: Backported in 6.12.18" + +CVE_STATUS[CVE-2025-21889] = "cpe-stable-backport: Backported in 6.12.18" + +CVE_STATUS[CVE-2025-21890] = "cpe-stable-backport: Backported in 6.12.18" + +CVE_STATUS[CVE-2025-21891] = "cpe-stable-backport: Backported in 6.12.18" + +CVE_STATUS[CVE-2025-21892] = "cpe-stable-backport: Backported in 6.12.18" + +CVE_STATUS[CVE-2025-21893] = "cpe-stable-backport: Backported in 6.12.21" + +CVE_STATUS[CVE-2025-21894] = "cpe-stable-backport: Backported in 6.12.18" + +CVE_STATUS[CVE-2025-21895] = "cpe-stable-backport: Backported in 6.12.18" + +CVE_STATUS[CVE-2025-21896] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-21897] = "cpe-stable-backport: Backported in 6.12.18" + +CVE_STATUS[CVE-2025-21898] = "cpe-stable-backport: Backported in 6.12.18" + +CVE_STATUS[CVE-2025-21899] = "cpe-stable-backport: Backported in 6.12.18" + +CVE_STATUS[CVE-2025-21900] = "cpe-stable-backport: Backported in 6.12.18" + +CVE_STATUS[CVE-2025-21901] = "cpe-stable-backport: Backported in 6.12.18" + +CVE_STATUS[CVE-2025-21902] = "cpe-stable-backport: Backported in 6.12.19" + +CVE_STATUS[CVE-2025-21903] = "cpe-stable-backport: Backported in 6.12.19" + +CVE_STATUS[CVE-2025-21904] = "cpe-stable-backport: Backported in 6.12.19" + +CVE_STATUS[CVE-2025-21905] = "cpe-stable-backport: Backported in 6.12.19" + +CVE_STATUS[CVE-2025-21906] = "cpe-stable-backport: Backported in 6.12.19" + +CVE_STATUS[CVE-2025-21907] = "cpe-stable-backport: Backported in 6.12.19" + +CVE_STATUS[CVE-2025-21908] = "cpe-stable-backport: Backported in 6.12.19" + +CVE_STATUS[CVE-2025-21909] = "cpe-stable-backport: Backported in 6.12.19" + +CVE_STATUS[CVE-2025-21910] = "cpe-stable-backport: Backported in 6.12.19" + +CVE_STATUS[CVE-2025-21911] = "cpe-stable-backport: Backported in 6.12.19" + +CVE_STATUS[CVE-2025-21912] = "cpe-stable-backport: Backported in 6.12.19" + +CVE_STATUS[CVE-2025-21913] = "cpe-stable-backport: Backported in 6.12.19" + +CVE_STATUS[CVE-2025-21914] = "cpe-stable-backport: Backported in 6.12.19" + +CVE_STATUS[CVE-2025-21915] = "cpe-stable-backport: Backported in 6.12.19" + +CVE_STATUS[CVE-2025-21916] = "cpe-stable-backport: Backported in 6.12.19" + +CVE_STATUS[CVE-2025-21917] = "cpe-stable-backport: Backported in 6.12.19" + +CVE_STATUS[CVE-2025-21918] = "cpe-stable-backport: Backported in 6.12.19" + +CVE_STATUS[CVE-2025-21919] = "cpe-stable-backport: Backported in 6.12.19" + +CVE_STATUS[CVE-2025-21920] = "cpe-stable-backport: Backported in 6.12.19" + +CVE_STATUS[CVE-2025-21921] = "cpe-stable-backport: Backported in 6.12.19" + +CVE_STATUS[CVE-2025-21922] = "cpe-stable-backport: Backported in 6.12.19" + +CVE_STATUS[CVE-2025-21923] = "cpe-stable-backport: Backported in 6.12.19" + +CVE_STATUS[CVE-2025-21924] = "cpe-stable-backport: Backported in 6.12.19" + +CVE_STATUS[CVE-2025-21925] = "cpe-stable-backport: Backported in 6.12.19" + +CVE_STATUS[CVE-2025-21926] = "cpe-stable-backport: Backported in 6.12.19" + +CVE_STATUS[CVE-2025-21927] = "cpe-stable-backport: Backported in 6.12.19" + +CVE_STATUS[CVE-2025-21928] = "cpe-stable-backport: Backported in 6.12.19" + +CVE_STATUS[CVE-2025-21929] = "cpe-stable-backport: Backported in 6.12.19" + +CVE_STATUS[CVE-2025-21930] = "cpe-stable-backport: Backported in 6.12.19" + +CVE_STATUS[CVE-2025-21931] = "cpe-stable-backport: Backported in 6.12.19" + +CVE_STATUS[CVE-2025-21932] = "cpe-stable-backport: Backported in 6.12.19" + +CVE_STATUS[CVE-2025-21933] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-21934] = "cpe-stable-backport: Backported in 6.12.19" + +CVE_STATUS[CVE-2025-21935] = "cpe-stable-backport: Backported in 6.12.19" + +CVE_STATUS[CVE-2025-21936] = "cpe-stable-backport: Backported in 6.12.19" + +CVE_STATUS[CVE-2025-21937] = "cpe-stable-backport: Backported in 6.12.19" + +CVE_STATUS[CVE-2025-21938] = "cpe-stable-backport: Backported in 6.12.19" + +CVE_STATUS[CVE-2025-21939] = "cpe-stable-backport: Backported in 6.12.19" + +CVE_STATUS[CVE-2025-21940] = "cpe-stable-backport: Backported in 6.12.19" + +CVE_STATUS[CVE-2025-21941] = "cpe-stable-backport: Backported in 6.12.19" + +CVE_STATUS[CVE-2025-21942] = "fixed-version: only affects 6.13.2 onwards" + +CVE_STATUS[CVE-2025-21943] = "cpe-stable-backport: Backported in 6.12.19" + +CVE_STATUS[CVE-2025-21944] = "cpe-stable-backport: Backported in 6.12.19" + +CVE_STATUS[CVE-2025-21945] = "cpe-stable-backport: Backported in 6.12.19" + +CVE_STATUS[CVE-2025-21946] = "cpe-stable-backport: Backported in 6.12.19" + +CVE_STATUS[CVE-2025-21947] = "cpe-stable-backport: Backported in 6.12.19" + +CVE_STATUS[CVE-2025-21948] = "cpe-stable-backport: Backported in 6.12.19" + +# CVE-2025-21949 needs backporting (fixed from 6.14) + +CVE_STATUS[CVE-2025-21950] = "cpe-stable-backport: Backported in 6.12.19" + +CVE_STATUS[CVE-2025-21951] = "cpe-stable-backport: Backported in 6.12.19" + +CVE_STATUS[CVE-2025-21952] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-21953] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-21954] = "cpe-stable-backport: Backported in 6.12.20" + +CVE_STATUS[CVE-2025-21955] = "cpe-stable-backport: Backported in 6.12.20" + +CVE_STATUS[CVE-2025-21956] = "cpe-stable-backport: Backported in 6.12.20" + +CVE_STATUS[CVE-2025-21957] = "cpe-stable-backport: Backported in 6.12.20" + +CVE_STATUS[CVE-2025-21958] = "cpe-stable-backport: Backported in 6.12.20" + +CVE_STATUS[CVE-2025-21959] = "cpe-stable-backport: Backported in 6.12.20" + +CVE_STATUS[CVE-2025-21960] = "cpe-stable-backport: Backported in 6.12.20" + +CVE_STATUS[CVE-2025-21961] = "cpe-stable-backport: Backported in 6.12.20" + +CVE_STATUS[CVE-2025-21962] = "cpe-stable-backport: Backported in 6.12.20" + +CVE_STATUS[CVE-2025-21963] = "cpe-stable-backport: Backported in 6.12.20" + +CVE_STATUS[CVE-2025-21964] = "cpe-stable-backport: Backported in 6.12.20" + +CVE_STATUS[CVE-2025-21965] = "cpe-stable-backport: Backported in 6.12.20" + +CVE_STATUS[CVE-2025-21966] = "cpe-stable-backport: Backported in 6.12.20" + +CVE_STATUS[CVE-2025-21967] = "cpe-stable-backport: Backported in 6.12.20" + +CVE_STATUS[CVE-2025-21968] = "cpe-stable-backport: Backported in 6.12.20" + +CVE_STATUS[CVE-2025-21969] = "cpe-stable-backport: Backported in 6.12.20" + +CVE_STATUS[CVE-2025-21970] = "cpe-stable-backport: Backported in 6.12.20" + +CVE_STATUS[CVE-2025-21971] = "cpe-stable-backport: Backported in 6.12.20" + +CVE_STATUS[CVE-2025-21972] = "cpe-stable-backport: Backported in 6.12.20" + +CVE_STATUS[CVE-2025-21973] = "cpe-stable-backport: Backported in 6.12.20" + +CVE_STATUS[CVE-2025-21974] = "cpe-stable-backport: Backported in 6.12.20" + +CVE_STATUS[CVE-2025-21975] = "cpe-stable-backport: Backported in 6.12.20" + +CVE_STATUS[CVE-2025-21976] = "cpe-stable-backport: Backported in 6.12.20" + +CVE_STATUS[CVE-2025-21977] = "cpe-stable-backport: Backported in 6.12.20" + +CVE_STATUS[CVE-2025-21978] = "cpe-stable-backport: Backported in 6.12.20" + +CVE_STATUS[CVE-2025-21979] = "cpe-stable-backport: Backported in 6.12.20" + +CVE_STATUS[CVE-2025-21980] = "cpe-stable-backport: Backported in 6.12.20" + +CVE_STATUS[CVE-2025-21981] = "cpe-stable-backport: Backported in 6.12.20" + +CVE_STATUS[CVE-2025-21982] = "cpe-stable-backport: Backported in 6.12.20" + +CVE_STATUS[CVE-2025-21983] = "cpe-stable-backport: Backported in 6.12.20" + +CVE_STATUS[CVE-2025-21984] = "cpe-stable-backport: Backported in 6.12.20" + +CVE_STATUS[CVE-2025-21985] = "cpe-stable-backport: Backported in 6.12.20" + +CVE_STATUS[CVE-2025-21986] = "cpe-stable-backport: Backported in 6.12.20" + +CVE_STATUS[CVE-2025-21987] = "cpe-stable-backport: Backported in 6.12.18" + +CVE_STATUS[CVE-2025-21988] = "cpe-stable-backport: Backported in 6.12.20" + +CVE_STATUS[CVE-2025-21989] = "cpe-stable-backport: Backported in 6.12.20" + +CVE_STATUS[CVE-2025-21990] = "cpe-stable-backport: Backported in 6.12.20" + +CVE_STATUS[CVE-2025-21991] = "cpe-stable-backport: Backported in 6.12.20" + +CVE_STATUS[CVE-2025-21992] = "cpe-stable-backport: Backported in 6.12.20" + +CVE_STATUS[CVE-2025-21993] = "cpe-stable-backport: Backported in 6.12.20" + +CVE_STATUS[CVE-2025-21994] = "cpe-stable-backport: Backported in 6.12.21" + +CVE_STATUS[CVE-2025-21995] = "cpe-stable-backport: Backported in 6.12.21" + +CVE_STATUS[CVE-2025-21996] = "cpe-stable-backport: Backported in 6.12.21" + +CVE_STATUS[CVE-2025-21997] = "cpe-stable-backport: Backported in 6.12.21" + +CVE_STATUS[CVE-2025-21998] = "cpe-stable-backport: Backported in 6.12.21" + +CVE_STATUS[CVE-2025-21999] = "cpe-stable-backport: Backported in 6.12.21" + +CVE_STATUS[CVE-2025-22000] = "cpe-stable-backport: Backported in 6.12.21" + +CVE_STATUS[CVE-2025-22001] = "cpe-stable-backport: Backported in 6.12.21" + +CVE_STATUS[CVE-2025-22002] = "cpe-stable-backport: Backported in 6.12.21" + +CVE_STATUS[CVE-2025-22003] = "cpe-stable-backport: Backported in 6.12.21" + +CVE_STATUS[CVE-2025-22004] = "cpe-stable-backport: Backported in 6.12.21" + +CVE_STATUS[CVE-2025-22005] = "cpe-stable-backport: Backported in 6.12.21" + +CVE_STATUS[CVE-2025-22006] = "cpe-stable-backport: Backported in 6.12.21" + +CVE_STATUS[CVE-2025-22007] = "cpe-stable-backport: Backported in 6.12.21" + +CVE_STATUS[CVE-2025-22008] = "cpe-stable-backport: Backported in 6.12.21" + +CVE_STATUS[CVE-2025-22009] = "cpe-stable-backport: Backported in 6.12.21" + +CVE_STATUS[CVE-2025-22010] = "cpe-stable-backport: Backported in 6.12.21" + +CVE_STATUS[CVE-2025-22011] = "cpe-stable-backport: Backported in 6.12.21" + +CVE_STATUS[CVE-2025-22012] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-22013] = "cpe-stable-backport: Backported in 6.12.21" + +CVE_STATUS[CVE-2025-22014] = "cpe-stable-backport: Backported in 6.12.21" + +CVE_STATUS[CVE-2025-22015] = "cpe-stable-backport: Backported in 6.12.21" + +CVE_STATUS[CVE-2025-22016] = "cpe-stable-backport: Backported in 6.12.21" + +CVE_STATUS[CVE-2025-22017] = "cpe-stable-backport: Backported in 6.12.21" + +CVE_STATUS[CVE-2025-22018] = "cpe-stable-backport: Backported in 6.12.22" + +CVE_STATUS[CVE-2025-22019] = "cpe-stable-backport: Backported in 6.12.22" + +CVE_STATUS[CVE-2025-22020] = "cpe-stable-backport: Backported in 6.12.22" + +CVE_STATUS[CVE-2025-22021] = "cpe-stable-backport: Backported in 6.12.22" + +CVE_STATUS[CVE-2025-22022] = "cpe-stable-backport: Backported in 6.12.22" + +CVE_STATUS[CVE-2025-22023] = "cpe-stable-backport: Backported in 6.12.22" + +CVE_STATUS[CVE-2025-22024] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22025] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22026] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-22027] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22028] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22030] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22031] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-22032] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22033] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22034] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22035] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22036] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22037] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22038] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22039] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22040] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22041] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22042] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22043] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22044] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22045] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22046] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22047] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22048] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22049] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22050] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22051] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-22052] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-22053] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22054] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22055] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22056] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22057] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22058] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22059] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22060] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22061] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-22062] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22063] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22064] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22065] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22066] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22067] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22068] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22069] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-22070] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22071] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22072] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22073] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22074] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22075] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22076] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22077] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2025-22078] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22079] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22080] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22081] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22082] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22083] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22084] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22085] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22086] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22087] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22088] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22089] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22090] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22091] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22092] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-22093] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22094] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-22095] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22096] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-22097] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-22098] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-22099] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-22100] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-22101] = "cpe-stable-backport: Backported in 6.12.36" + +CVE_STATUS[CVE-2025-22102] = "cpe-stable-backport: Backported in 6.12.30" + +CVE_STATUS[CVE-2025-22103] = "cpe-stable-backport: Backported in 6.12.46" + +# CVE-2025-22104 needs backporting (fixed from 6.15) + +# CVE-2025-22105 needs backporting (fixed from 6.15) + +CVE_STATUS[CVE-2025-22106] = "cpe-stable-backport: Backported in 6.12.49" + +# CVE-2025-22107 needs backporting (fixed from 6.15) + +# CVE-2025-22108 needs backporting (fixed from 6.15) + +# CVE-2025-22109 needs backporting (fixed from 6.15) + +CVE_STATUS[CVE-2025-22110] = "fixed-version: only affects 6.14 onwards" + +# CVE-2025-22111 needs backporting (fixed from 6.15) + +CVE_STATUS[CVE-2025-22112] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-22113] = "cpe-stable-backport: Backported in 6.12.46" + +CVE_STATUS[CVE-2025-22114] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-22115] = "cpe-stable-backport: Backported in 6.12.40" + +# CVE-2025-22116 needs backporting (fixed from 6.15) + +# CVE-2025-22117 needs backporting (fixed from 6.15) + +CVE_STATUS[CVE-2025-22118] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-22119] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-22120] = "cpe-stable-backport: Backported in 6.12.26" + +# CVE-2025-22121 needs backporting (fixed from 6.15) + +CVE_STATUS[CVE-2025-22122] = "cpe-stable-backport: Backported in 6.12.33" + +CVE_STATUS[CVE-2025-22123] = "cpe-stable-backport: Backported in 6.12.33" + +CVE_STATUS[CVE-2025-22124] = "cpe-stable-backport: Backported in 6.12.46" + +CVE_STATUS[CVE-2025-22125] = "cpe-stable-backport: Backported in 6.12.46" + +CVE_STATUS[CVE-2025-22126] = "cpe-stable-backport: Backported in 6.12.25" + +# CVE-2025-22127 needs backporting (fixed from 6.15) + +CVE_STATUS[CVE-2025-22128] = "cpe-stable-backport: Backported in 6.12.35" + +# CVE-2025-23129 needs backporting (fixed from 6.15) + +# CVE-2025-23130 needs backporting (fixed from 6.15) + +# CVE-2025-23131 needs backporting (fixed from 6.15) + +# CVE-2025-23132 needs backporting (fixed from 6.15) + +CVE_STATUS[CVE-2025-23133] = "cpe-stable-backport: Backported in 6.12.46" + +CVE_STATUS[CVE-2025-23134] = "cpe-stable-backport: Backported in 6.12.23" + +# CVE-2025-23135 needs backporting (fixed from 6.15) + +CVE_STATUS[CVE-2025-23136] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-23137] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-23138] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-23140] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2025-23141] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-23142] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-23143] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-23144] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-23145] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-23146] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-23147] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-23148] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-23149] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-23150] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-23151] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-23152] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-23153] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-23154] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-23155] = "cpe-stable-backport: Backported in 6.12.36" + +CVE_STATUS[CVE-2025-23156] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-23157] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-23158] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-23159] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-23160] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-23161] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-23162] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-23163] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-37738] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-37739] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-37740] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-37741] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-37742] = "cpe-stable-backport: Backported in 6.12.24" + +# CVE-2025-37743 needs backporting (fixed from 6.15) + +CVE_STATUS[CVE-2025-37744] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-37745] = "cpe-stable-backport: Backported in 6.12.24" + +# CVE-2025-37746 needs backporting (fixed from 6.15) + +CVE_STATUS[CVE-2025-37747] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-37748] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-37749] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-37750] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-37751] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-37752] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-37754] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-37755] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-37756] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-37757] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-37758] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-37759] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-37760] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2025-37761] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2025-37762] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-37763] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2025-37764] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2025-37765] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2025-37766] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2025-37767] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2025-37768] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2025-37769] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2025-37770] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2025-37771] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2025-37772] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2025-37773] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2025-37774] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2025-37775] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2025-37776] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2025-37777] = "cpe-stable-backport: Backported in 6.12.26" + +CVE_STATUS[CVE-2025-37778] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2025-37779] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-37780] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2025-37781] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2025-37783] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-37784] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2025-37785] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-37786] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2025-37787] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2025-37788] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2025-37789] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2025-37790] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2025-37791] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2025-37792] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2025-37793] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2025-37794] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2025-37796] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2025-37797] = "cpe-stable-backport: Backported in 6.12.26" + +CVE_STATUS[CVE-2025-37798] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-37799] = "cpe-stable-backport: Backported in 6.12.26" + +CVE_STATUS[CVE-2025-37800] = "cpe-stable-backport: Backported in 6.12.26" + +CVE_STATUS[CVE-2025-37801] = "cpe-stable-backport: Backported in 6.12.26" + +CVE_STATUS[CVE-2025-37802] = "cpe-stable-backport: Backported in 6.12.26" + +# CVE-2025-37803 needs backporting (fixed from 6.15) + +CVE_STATUS[CVE-2025-37805] = "cpe-stable-backport: Backported in 6.12.26" + +CVE_STATUS[CVE-2025-37806] = "cpe-stable-backport: Backported in 6.12.26" + +CVE_STATUS[CVE-2025-37807] = "cpe-stable-backport: Backported in 6.12.26" + +CVE_STATUS[CVE-2025-37808] = "cpe-stable-backport: Backported in 6.12.26" + +CVE_STATUS[CVE-2025-37809] = "cpe-stable-backport: Backported in 6.12.26" + +CVE_STATUS[CVE-2025-37810] = "cpe-stable-backport: Backported in 6.12.26" + +CVE_STATUS[CVE-2025-37811] = "cpe-stable-backport: Backported in 6.12.26" + +CVE_STATUS[CVE-2025-37812] = "cpe-stable-backport: Backported in 6.12.26" + +CVE_STATUS[CVE-2025-37813] = "cpe-stable-backport: Backported in 6.12.26" + +CVE_STATUS[CVE-2025-37814] = "cpe-stable-backport: Backported in 6.12.26" + +CVE_STATUS[CVE-2025-37815] = "cpe-stable-backport: Backported in 6.12.26" + +CVE_STATUS[CVE-2025-37816] = "cpe-stable-backport: Backported in 6.12.26" + +CVE_STATUS[CVE-2025-37817] = "cpe-stable-backport: Backported in 6.12.26" + +CVE_STATUS[CVE-2025-37818] = "cpe-stable-backport: Backported in 6.12.26" + +CVE_STATUS[CVE-2025-37819] = "cpe-stable-backport: Backported in 6.12.26" + +CVE_STATUS[CVE-2025-37820] = "cpe-stable-backport: Backported in 6.12.26" + +CVE_STATUS[CVE-2025-37821] = "cpe-stable-backport: Backported in 6.12.29" + +CVE_STATUS[CVE-2025-37822] = "cpe-stable-backport: Backported in 6.12.26" + +CVE_STATUS[CVE-2025-37823] = "cpe-stable-backport: Backported in 6.12.26" + +CVE_STATUS[CVE-2025-37824] = "cpe-stable-backport: Backported in 6.12.26" + +CVE_STATUS[CVE-2025-37825] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-37826] = "cpe-stable-backport: Backported in 6.12.26" + +CVE_STATUS[CVE-2025-37827] = "cpe-stable-backport: Backported in 6.12.26" + +CVE_STATUS[CVE-2025-37828] = "cpe-stable-backport: Backported in 6.12.26" + +CVE_STATUS[CVE-2025-37829] = "cpe-stable-backport: Backported in 6.12.26" + +CVE_STATUS[CVE-2025-37830] = "cpe-stable-backport: Backported in 6.12.26" + +CVE_STATUS[CVE-2025-37831] = "cpe-stable-backport: Backported in 6.12.26" + +CVE_STATUS[CVE-2025-37833] = "cpe-stable-backport: Backported in 6.12.26" + +CVE_STATUS[CVE-2025-37834] = "cpe-stable-backport: Backported in 6.12.26" + +CVE_STATUS[CVE-2025-37836] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-37837] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-37838] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-37839] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-37840] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-37841] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-37842] = "cpe-stable-backport: Backported in 6.12.36" + +CVE_STATUS[CVE-2025-37843] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-37844] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-37845] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-37846] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-37847] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-37848] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-37849] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-37850] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-37851] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-37852] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-37853] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-37854] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-37855] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-37856] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-37857] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-37858] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-37859] = "cpe-stable-backport: Backported in 6.12.24" + +# CVE-2025-37860 needs backporting (fixed from 6.15) + +CVE_STATUS[CVE-2025-37861] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-37862] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-37863] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2025-37864] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2025-37865] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2025-37866] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-37867] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2025-37868] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2025-37869] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2025-37870] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2025-37871] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2025-37872] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2025-37873] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2025-37874] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2025-37875] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2025-37876] = "cpe-stable-backport: Backported in 6.12.26" + +CVE_STATUS[CVE-2025-37877] = "cpe-stable-backport: Backported in 6.12.26" + +CVE_STATUS[CVE-2025-37878] = "cpe-stable-backport: Backported in 6.12.26" + +CVE_STATUS[CVE-2025-37879] = "cpe-stable-backport: Backported in 6.12.26" + +# CVE-2025-37880 needs backporting (fixed from 6.15) + +CVE_STATUS[CVE-2025-37881] = "cpe-stable-backport: Backported in 6.12.26" + +CVE_STATUS[CVE-2025-37882] = "cpe-stable-backport: Backported in 6.12.26" + +CVE_STATUS[CVE-2025-37883] = "cpe-stable-backport: Backported in 6.12.26" + +CVE_STATUS[CVE-2025-37884] = "cpe-stable-backport: Backported in 6.12.26" + +CVE_STATUS[CVE-2025-37885] = "cpe-stable-backport: Backported in 6.12.26" + +CVE_STATUS[CVE-2025-37886] = "cpe-stable-backport: Backported in 6.12.26" + +CVE_STATUS[CVE-2025-37887] = "cpe-stable-backport: Backported in 6.12.26" + +CVE_STATUS[CVE-2025-37888] = "cpe-stable-backport: Backported in 6.12.26" + +CVE_STATUS[CVE-2025-37889] = "cpe-stable-backport: Backported in 6.12.20" + +CVE_STATUS[CVE-2025-37890] = "cpe-stable-backport: Backported in 6.12.28" + +CVE_STATUS[CVE-2025-37891] = "cpe-stable-backport: Backported in 6.12.28" + +CVE_STATUS[CVE-2025-37892] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-37893] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-37894] = "cpe-stable-backport: Backported in 6.12.28" + +CVE_STATUS[CVE-2025-37895] = "cpe-stable-backport: Backported in 6.12.28" + +CVE_STATUS[CVE-2025-37896] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-37897] = "cpe-stable-backport: Backported in 6.12.28" + +CVE_STATUS[CVE-2025-37898] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-37899] = "cpe-stable-backport: Backported in 6.12.28" + +CVE_STATUS[CVE-2025-37900] = "cpe-stable-backport: Backported in 6.12.28" + +CVE_STATUS[CVE-2025-37901] = "cpe-stable-backport: Backported in 6.12.28" + +CVE_STATUS[CVE-2025-37903] = "cpe-stable-backport: Backported in 6.12.28" + +CVE_STATUS[CVE-2025-37904] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-37905] = "cpe-stable-backport: Backported in 6.12.28" + +# CVE-2025-37906 needs backporting (fixed from 6.15) + +CVE_STATUS[CVE-2025-37907] = "cpe-stable-backport: Backported in 6.12.28" + +CVE_STATUS[CVE-2025-37908] = "cpe-stable-backport: Backported in 6.12.28" + +CVE_STATUS[CVE-2025-37909] = "cpe-stable-backport: Backported in 6.12.28" + +CVE_STATUS[CVE-2025-37910] = "cpe-stable-backport: Backported in 6.12.28" + +CVE_STATUS[CVE-2025-37911] = "cpe-stable-backport: Backported in 6.12.28" + +CVE_STATUS[CVE-2025-37912] = "cpe-stable-backport: Backported in 6.12.28" + +CVE_STATUS[CVE-2025-37913] = "cpe-stable-backport: Backported in 6.12.28" + +CVE_STATUS[CVE-2025-37914] = "cpe-stable-backport: Backported in 6.12.28" + +CVE_STATUS[CVE-2025-37915] = "cpe-stable-backport: Backported in 6.12.28" + +CVE_STATUS[CVE-2025-37916] = "cpe-stable-backport: Backported in 6.12.28" + +CVE_STATUS[CVE-2025-37917] = "cpe-stable-backport: Backported in 6.12.28" + +CVE_STATUS[CVE-2025-37918] = "cpe-stable-backport: Backported in 6.12.28" + +CVE_STATUS[CVE-2025-37919] = "cpe-stable-backport: Backported in 6.12.28" + +CVE_STATUS[CVE-2025-37920] = "cpe-stable-backport: Backported in 6.12.28" + +CVE_STATUS[CVE-2025-37921] = "cpe-stable-backport: Backported in 6.12.28" + +CVE_STATUS[CVE-2025-37922] = "cpe-stable-backport: Backported in 6.12.28" + +CVE_STATUS[CVE-2025-37923] = "cpe-stable-backport: Backported in 6.12.28" + +CVE_STATUS[CVE-2025-37924] = "cpe-stable-backport: Backported in 6.12.28" + +CVE_STATUS[CVE-2025-37925] = "cpe-stable-backport: Backported in 6.12.41" + +CVE_STATUS[CVE-2025-37926] = "cpe-stable-backport: Backported in 6.12.28" + +CVE_STATUS[CVE-2025-37927] = "cpe-stable-backport: Backported in 6.12.28" + +CVE_STATUS[CVE-2025-37928] = "cpe-stable-backport: Backported in 6.12.28" + +CVE_STATUS[CVE-2025-37929] = "cpe-stable-backport: Backported in 6.12.28" + +CVE_STATUS[CVE-2025-37930] = "cpe-stable-backport: Backported in 6.12.28" + +CVE_STATUS[CVE-2025-37931] = "cpe-stable-backport: Backported in 6.12.28" + +CVE_STATUS[CVE-2025-37932] = "cpe-stable-backport: Backported in 6.12.28" + +CVE_STATUS[CVE-2025-37933] = "cpe-stable-backport: Backported in 6.12.28" + +CVE_STATUS[CVE-2025-37934] = "cpe-stable-backport: Backported in 6.12.28" + +CVE_STATUS[CVE-2025-37935] = "cpe-stable-backport: Backported in 6.12.28" + +CVE_STATUS[CVE-2025-37936] = "cpe-stable-backport: Backported in 6.12.28" + +CVE_STATUS[CVE-2025-37937] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-37938] = "cpe-stable-backport: Backported in 6.12.26" + +CVE_STATUS[CVE-2025-37939] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-37940] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-37941] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-37942] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-37943] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-37944] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2025-37945] = "cpe-stable-backport: Backported in 6.12.24" + +CVE_STATUS[CVE-2025-37946] = "cpe-stable-backport: Backported in 6.12.29" + +CVE_STATUS[CVE-2025-37947] = "cpe-stable-backport: Backported in 6.12.29" + +CVE_STATUS[CVE-2025-37948] = "cpe-stable-backport: Backported in 6.12.29" + +CVE_STATUS[CVE-2025-37949] = "cpe-stable-backport: Backported in 6.12.29" + +CVE_STATUS[CVE-2025-37950] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-37951] = "cpe-stable-backport: Backported in 6.12.29" + +CVE_STATUS[CVE-2025-37952] = "cpe-stable-backport: Backported in 6.12.29" + +CVE_STATUS[CVE-2025-37953] = "cpe-stable-backport: Backported in 6.12.29" + +CVE_STATUS[CVE-2025-37954] = "cpe-stable-backport: Backported in 6.12.29" + +CVE_STATUS[CVE-2025-37955] = "cpe-stable-backport: Backported in 6.12.29" + +CVE_STATUS[CVE-2025-37956] = "cpe-stable-backport: Backported in 6.12.29" + +CVE_STATUS[CVE-2025-37957] = "cpe-stable-backport: Backported in 6.12.29" + +CVE_STATUS[CVE-2025-37958] = "cpe-stable-backport: Backported in 6.12.29" + +CVE_STATUS[CVE-2025-37959] = "cpe-stable-backport: Backported in 6.12.29" + +CVE_STATUS[CVE-2025-37960] = "cpe-stable-backport: Backported in 6.12.29" + +CVE_STATUS[CVE-2025-37961] = "cpe-stable-backport: Backported in 6.12.29" + +CVE_STATUS[CVE-2025-37962] = "cpe-stable-backport: Backported in 6.12.29" + +CVE_STATUS[CVE-2025-37963] = "cpe-stable-backport: Backported in 6.12.29" + +CVE_STATUS[CVE-2025-37964] = "cpe-stable-backport: Backported in 6.12.29" + +CVE_STATUS[CVE-2025-37965] = "cpe-stable-backport: Backported in 6.12.29" + +CVE_STATUS[CVE-2025-37966] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-37967] = "cpe-stable-backport: Backported in 6.12.30" + +CVE_STATUS[CVE-2025-37968] = "cpe-stable-backport: Backported in 6.12.30" + +CVE_STATUS[CVE-2025-37969] = "cpe-stable-backport: Backported in 6.12.29" + +CVE_STATUS[CVE-2025-37970] = "cpe-stable-backport: Backported in 6.12.29" + +CVE_STATUS[CVE-2025-37971] = "cpe-stable-backport: Backported in 6.12.29" + +CVE_STATUS[CVE-2025-37972] = "cpe-stable-backport: Backported in 6.12.29" + +CVE_STATUS[CVE-2025-37973] = "cpe-stable-backport: Backported in 6.12.29" + +CVE_STATUS[CVE-2025-37974] = "cpe-stable-backport: Backported in 6.12.29" + +CVE_STATUS[CVE-2025-37975] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2025-37977] = "cpe-stable-backport: Backported in 6.12.26" + +CVE_STATUS[CVE-2025-37978] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2025-37979] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2025-37980] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2025-37981] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2025-37982] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2025-37983] = "cpe-stable-backport: Backported in 6.12.26" + +CVE_STATUS[CVE-2025-37984] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-37985] = "cpe-stable-backport: Backported in 6.12.26" + +CVE_STATUS[CVE-2025-37986] = "cpe-stable-backport: Backported in 6.12.26" + +CVE_STATUS[CVE-2025-37987] = "cpe-stable-backport: Backported in 6.12.26" + +CVE_STATUS[CVE-2025-37988] = "cpe-stable-backport: Backported in 6.12.26" + +CVE_STATUS[CVE-2025-37989] = "cpe-stable-backport: Backported in 6.12.26" + +CVE_STATUS[CVE-2025-37990] = "cpe-stable-backport: Backported in 6.12.28" + +CVE_STATUS[CVE-2025-37991] = "cpe-stable-backport: Backported in 6.12.28" + +CVE_STATUS[CVE-2025-37992] = "cpe-stable-backport: Backported in 6.12.30" + +CVE_STATUS[CVE-2025-37993] = "cpe-stable-backport: Backported in 6.12.29" + +CVE_STATUS[CVE-2025-37994] = "cpe-stable-backport: Backported in 6.12.29" + +CVE_STATUS[CVE-2025-37995] = "cpe-stable-backport: Backported in 6.12.29" + +CVE_STATUS[CVE-2025-37996] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-37997] = "cpe-stable-backport: Backported in 6.12.29" + +CVE_STATUS[CVE-2025-37998] = "cpe-stable-backport: Backported in 6.12.29" + +CVE_STATUS[CVE-2025-37999] = "cpe-stable-backport: Backported in 6.12.29" + +CVE_STATUS[CVE-2025-38000] = "cpe-stable-backport: Backported in 6.12.31" + +CVE_STATUS[CVE-2025-38001] = "cpe-stable-backport: Backported in 6.12.32" + +CVE_STATUS[CVE-2025-38002] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-38003] = "cpe-stable-backport: Backported in 6.12.31" + +CVE_STATUS[CVE-2025-38004] = "cpe-stable-backport: Backported in 6.12.31" + +CVE_STATUS[CVE-2025-38005] = "cpe-stable-backport: Backported in 6.12.30" + +CVE_STATUS[CVE-2025-38006] = "cpe-stable-backport: Backported in 6.12.30" + +CVE_STATUS[CVE-2025-38007] = "cpe-stable-backport: Backported in 6.12.30" + +CVE_STATUS[CVE-2025-38008] = "cpe-stable-backport: Backported in 6.12.30" + +CVE_STATUS[CVE-2025-38009] = "cpe-stable-backport: Backported in 6.12.30" + +CVE_STATUS[CVE-2025-38010] = "cpe-stable-backport: Backported in 6.12.30" + +CVE_STATUS[CVE-2025-38011] = "cpe-stable-backport: Backported in 6.12.30" + +CVE_STATUS[CVE-2025-38012] = "cpe-stable-backport: Backported in 6.12.30" + +CVE_STATUS[CVE-2025-38013] = "cpe-stable-backport: Backported in 6.12.30" + +CVE_STATUS[CVE-2025-38014] = "cpe-stable-backport: Backported in 6.12.30" + +CVE_STATUS[CVE-2025-38015] = "cpe-stable-backport: Backported in 6.12.30" + +CVE_STATUS[CVE-2025-38016] = "cpe-stable-backport: Backported in 6.12.30" + +CVE_STATUS[CVE-2025-38017] = "fixed-version: only affects 6.14.4 onwards" + +CVE_STATUS[CVE-2025-38018] = "cpe-stable-backport: Backported in 6.12.30" + +CVE_STATUS[CVE-2025-38019] = "cpe-stable-backport: Backported in 6.12.30" + +CVE_STATUS[CVE-2025-38020] = "cpe-stable-backport: Backported in 6.12.30" + +CVE_STATUS[CVE-2025-38021] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-38022] = "cpe-stable-backport: Backported in 6.12.30" + +CVE_STATUS[CVE-2025-38023] = "cpe-stable-backport: Backported in 6.12.30" + +CVE_STATUS[CVE-2025-38024] = "cpe-stable-backport: Backported in 6.12.30" + +CVE_STATUS[CVE-2025-38025] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-38027] = "cpe-stable-backport: Backported in 6.12.30" + +CVE_STATUS[CVE-2025-38028] = "fixed-version: only affects 6.14 onwards" + +# CVE-2025-38029 needs backporting (fixed from 6.15) + +CVE_STATUS[CVE-2025-38031] = "cpe-stable-backport: Backported in 6.12.31" + +CVE_STATUS[CVE-2025-38032] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-38033] = "cpe-stable-backport: Backported in 6.12.31" + +CVE_STATUS[CVE-2025-38034] = "cpe-stable-backport: Backported in 6.12.31" + +CVE_STATUS[CVE-2025-38035] = "cpe-stable-backport: Backported in 6.12.31" + +# CVE-2025-38036 needs backporting (fixed from 6.15) + +CVE_STATUS[CVE-2025-38037] = "cpe-stable-backport: Backported in 6.12.31" + +CVE_STATUS[CVE-2025-38038] = "cpe-stable-backport: Backported in 6.12.31" + +CVE_STATUS[CVE-2025-38039] = "cpe-stable-backport: Backported in 6.12.31" + +CVE_STATUS[CVE-2025-38040] = "cpe-stable-backport: Backported in 6.12.31" + +# CVE-2025-38041 needs backporting (fixed from 6.15) + +# CVE-2025-38042 needs backporting (fixed from 6.15) + +CVE_STATUS[CVE-2025-38043] = "cpe-stable-backport: Backported in 6.12.31" + +CVE_STATUS[CVE-2025-38044] = "cpe-stable-backport: Backported in 6.12.31" + +CVE_STATUS[CVE-2025-38045] = "cpe-stable-backport: Backported in 6.12.31" + +CVE_STATUS[CVE-2025-38047] = "cpe-stable-backport: Backported in 6.12.31" + +CVE_STATUS[CVE-2025-38048] = "cpe-stable-backport: Backported in 6.12.31" + +CVE_STATUS[CVE-2025-38049] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-38050] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-38051] = "cpe-stable-backport: Backported in 6.12.31" + +CVE_STATUS[CVE-2025-38052] = "cpe-stable-backport: Backported in 6.12.31" + +CVE_STATUS[CVE-2025-38053] = "cpe-stable-backport: Backported in 6.12.31" + +CVE_STATUS[CVE-2025-38054] = "cpe-stable-backport: Backported in 6.12.31" + +CVE_STATUS[CVE-2025-38055] = "cpe-stable-backport: Backported in 6.12.31" + +CVE_STATUS[CVE-2025-38056] = "cpe-stable-backport: Backported in 6.12.31" + +CVE_STATUS[CVE-2025-38057] = "cpe-stable-backport: Backported in 6.12.31" + +CVE_STATUS[CVE-2025-38058] = "cpe-stable-backport: Backported in 6.12.31" + +CVE_STATUS[CVE-2025-38059] = "cpe-stable-backport: Backported in 6.12.31" + +CVE_STATUS[CVE-2025-38060] = "cpe-stable-backport: Backported in 6.12.31" + +CVE_STATUS[CVE-2025-38061] = "cpe-stable-backport: Backported in 6.12.31" + +CVE_STATUS[CVE-2025-38062] = "cpe-stable-backport: Backported in 6.12.31" + +CVE_STATUS[CVE-2025-38063] = "cpe-stable-backport: Backported in 6.12.31" + +# CVE-2025-38064 needs backporting (fixed from 6.15) + +CVE_STATUS[CVE-2025-38065] = "cpe-stable-backport: Backported in 6.12.31" + +CVE_STATUS[CVE-2025-38066] = "cpe-stable-backport: Backported in 6.12.31" + +CVE_STATUS[CVE-2025-38067] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-38068] = "cpe-stable-backport: Backported in 6.12.31" + +CVE_STATUS[CVE-2025-38069] = "cpe-stable-backport: Backported in 6.12.31" + +CVE_STATUS[CVE-2025-38070] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-38071] = "cpe-stable-backport: Backported in 6.12.31" + +CVE_STATUS[CVE-2025-38072] = "cpe-stable-backport: Backported in 6.12.31" + +CVE_STATUS[CVE-2025-38073] = "cpe-stable-backport: Backported in 6.12.31" + +CVE_STATUS[CVE-2025-38074] = "cpe-stable-backport: Backported in 6.12.31" + +CVE_STATUS[CVE-2025-38075] = "cpe-stable-backport: Backported in 6.12.31" + +CVE_STATUS[CVE-2025-38076] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-38077] = "cpe-stable-backport: Backported in 6.12.31" + +CVE_STATUS[CVE-2025-38078] = "cpe-stable-backport: Backported in 6.12.31" + +CVE_STATUS[CVE-2025-38079] = "cpe-stable-backport: Backported in 6.12.31" + +CVE_STATUS[CVE-2025-38080] = "cpe-stable-backport: Backported in 6.12.31" + +CVE_STATUS[CVE-2025-38081] = "cpe-stable-backport: Backported in 6.12.31" + +CVE_STATUS[CVE-2025-38082] = "cpe-stable-backport: Backported in 6.12.32" + +CVE_STATUS[CVE-2025-38083] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38084] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38085] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38086] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38087] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38088] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38089] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38090] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38091] = "cpe-stable-backport: Backported in 6.12.32" + +CVE_STATUS[CVE-2025-38092] = "cpe-stable-backport: Backported in 6.12.32" + +CVE_STATUS[CVE-2025-38093] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38094] = "cpe-stable-backport: Backported in 6.12.30" + +CVE_STATUS[CVE-2025-38095] = "cpe-stable-backport: Backported in 6.12.30" + +CVE_STATUS[CVE-2025-38096] = "cpe-stable-backport: Backported in 6.12.31" + +CVE_STATUS[CVE-2025-38097] = "cpe-stable-backport: Backported in 6.12.31" + +CVE_STATUS[CVE-2025-38098] = "cpe-stable-backport: Backported in 6.12.31" + +CVE_STATUS[CVE-2025-38099] = "cpe-stable-backport: Backported in 6.12.31" + +CVE_STATUS[CVE-2025-38100] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38101] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38102] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38103] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38104] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-38105] = "cpe-stable-backport: Backported in 6.12.52" + +CVE_STATUS[CVE-2025-38106] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38107] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38108] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38109] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38110] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38111] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38112] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38113] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38114] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-38115] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38116] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-38117] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38118] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38119] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38120] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38121] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-38122] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38123] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38124] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38125] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38126] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38127] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38128] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-38129] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38130] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-38131] = "cpe-stable-backport: Backported in 6.12.34" + +# CVE-2025-38132 needs backporting (fixed from 6.16) + +CVE_STATUS[CVE-2025-38133] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-38134] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38135] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38136] = "cpe-stable-backport: Backported in 6.12.34" + +# CVE-2025-38137 needs backporting (fixed from 6.16) + +CVE_STATUS[CVE-2025-38138] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38139] = "cpe-stable-backport: Backported in 6.12.37" + +# CVE-2025-38140 needs backporting (fixed from 6.16) + +CVE_STATUS[CVE-2025-38141] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38142] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38143] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38144] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-38145] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38146] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38147] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38148] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38149] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38150] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-38151] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38152] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-38153] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38154] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38155] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38156] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38157] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38158] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38159] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38160] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38161] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38162] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38163] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38164] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38165] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38166] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38167] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38168] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38169] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38170] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38171] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-38172] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38173] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38174] = "cpe-stable-backport: Backported in 6.12.33" + +CVE_STATUS[CVE-2025-38175] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-38176] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-38177] = "cpe-stable-backport: Backported in 6.12.28" + +CVE_STATUS[CVE-2025-38179] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38180] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38181] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38182] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38183] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38184] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38185] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38186] = "cpe-stable-backport: Backported in 6.12.35" + +# CVE-2025-38187 needs backporting (fixed from 6.16) + +CVE_STATUS[CVE-2025-38188] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38189] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38190] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38191] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38192] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38193] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38194] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38195] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38196] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-38197] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38198] = "cpe-stable-backport: Backported in 6.12.35" + +# CVE-2025-38199 needs backporting (fixed from 6.16) + +CVE_STATUS[CVE-2025-38200] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38201] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38202] = "cpe-stable-backport: Backported in 6.12.35" + +# CVE-2025-38203 needs backporting (fixed from 6.16) + +# CVE-2025-38204 needs backporting (fixed from 6.16) + +# CVE-2025-38205 needs backporting (fixed from 6.16) + +# CVE-2025-38206 needs backporting (fixed from 6.16) + +# CVE-2025-38207 needs backporting (fixed from 6.16) + +CVE_STATUS[CVE-2025-38208] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38209] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-38210] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38211] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38212] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38214] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38215] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38216] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38217] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38218] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38219] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38220] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38221] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-38222] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38223] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38224] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38225] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38226] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38227] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38228] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38229] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38230] = "cpe-stable-backport: Backported in 6.12.36" + +CVE_STATUS[CVE-2025-38231] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38232] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38233] = "fixed-version: only affects 6.13 onwards" + +# CVE-2025-38234 needs backporting (fixed from 6.16) + +CVE_STATUS[CVE-2025-38235] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-38236] = "cpe-stable-backport: Backported in 6.12.36" + +# CVE-2025-38237 needs backporting (fixed from 6.16) + +CVE_STATUS[CVE-2025-38238] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-38239] = "cpe-stable-backport: Backported in 6.12.36" + +CVE_STATUS[CVE-2025-38240] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-38241] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-38242] = "cpe-stable-backport: Backported in 6.12.37" + +CVE_STATUS[CVE-2025-38243] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-38244] = "cpe-stable-backport: Backported in 6.12.36" + +CVE_STATUS[CVE-2025-38245] = "cpe-stable-backport: Backported in 6.12.36" + +CVE_STATUS[CVE-2025-38246] = "cpe-stable-backport: Backported in 6.12.36" + +CVE_STATUS[CVE-2025-38247] = "fixed-version: only affects 6.15 onwards" + +# CVE-2025-38248 needs backporting (fixed from 6.16) + +CVE_STATUS[CVE-2025-38249] = "cpe-stable-backport: Backported in 6.12.36" + +CVE_STATUS[CVE-2025-38250] = "cpe-stable-backport: Backported in 6.12.36" + +CVE_STATUS[CVE-2025-38251] = "cpe-stable-backport: Backported in 6.12.36" + +CVE_STATUS[CVE-2025-38252] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-38253] = "cpe-stable-backport: Backported in 6.12.36" + +CVE_STATUS[CVE-2025-38254] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-38255] = "cpe-stable-backport: Backported in 6.12.36" + +CVE_STATUS[CVE-2025-38256] = "cpe-stable-backport: Backported in 6.12.36" + +CVE_STATUS[CVE-2025-38257] = "cpe-stable-backport: Backported in 6.12.36" + +CVE_STATUS[CVE-2025-38258] = "cpe-stable-backport: Backported in 6.12.36" + +CVE_STATUS[CVE-2025-38259] = "cpe-stable-backport: Backported in 6.12.36" + +CVE_STATUS[CVE-2025-38260] = "cpe-stable-backport: Backported in 6.12.36" + +# CVE-2025-38261 needs backporting (fixed from 6.16) + +CVE_STATUS[CVE-2025-38262] = "cpe-stable-backport: Backported in 6.12.36" + +CVE_STATUS[CVE-2025-38263] = "cpe-stable-backport: Backported in 6.12.36" + +CVE_STATUS[CVE-2025-38264] = "cpe-stable-backport: Backported in 6.12.36" + +CVE_STATUS[CVE-2025-38265] = "cpe-stable-backport: Backported in 6.12.33" + +CVE_STATUS[CVE-2025-38266] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-38267] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38268] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38269] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38270] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38271] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-38272] = "cpe-stable-backport: Backported in 6.12.46" + +CVE_STATUS[CVE-2025-38273] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38274] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38275] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38276] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-38277] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38278] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38279] = "cpe-stable-backport: Backported in 6.12.37" + +CVE_STATUS[CVE-2025-38280] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38281] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-38282] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38283] = "cpe-stable-backport: Backported in 6.12.34" + +# CVE-2025-38284 needs backporting (fixed from 6.16) + +CVE_STATUS[CVE-2025-38285] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38286] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38287] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-38288] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38289] = "cpe-stable-backport: Backported in 6.12.37" + +CVE_STATUS[CVE-2025-38290] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38291] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-38292] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38293] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38294] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-38295] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38296] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-38297] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38298] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38299] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38300] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38301] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38302] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38303] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38304] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38305] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38306] = "cpe-stable-backport: Backported in 6.12.46" + +CVE_STATUS[CVE-2025-38307] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38308] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-38309] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-38310] = "cpe-stable-backport: Backported in 6.12.34" + +# CVE-2025-38311 needs backporting (fixed from 6.16) + +CVE_STATUS[CVE-2025-38312] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38313] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38314] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-38315] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38316] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-38317] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38318] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38319] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38320] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38321] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38322] = "cpe-stable-backport: Backported in 6.12.49" + +CVE_STATUS[CVE-2025-38323] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38324] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38325] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38326] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38327] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-38328] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38329] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-38330] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-38331] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38332] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38333] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38334] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38335] = "cpe-stable-backport: Backported in 6.12.41" + +CVE_STATUS[CVE-2025-38336] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38337] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38338] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38339] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-38340] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-38341] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38342] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38343] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38344] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38345] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38346] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38347] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38348] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38349] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-38350] = "cpe-stable-backport: Backported in 6.12.37" + +CVE_STATUS[CVE-2025-38351] = "cpe-stable-backport: Backported in 6.12.41" + +CVE_STATUS[CVE-2025-38352] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38353] = "cpe-stable-backport: Backported in 6.12.36" + +CVE_STATUS[CVE-2025-38354] = "cpe-stable-backport: Backported in 6.12.36" + +CVE_STATUS[CVE-2025-38355] = "cpe-stable-backport: Backported in 6.12.36" + +CVE_STATUS[CVE-2025-38356] = "cpe-stable-backport: Backported in 6.12.37" + +CVE_STATUS[CVE-2025-38357] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-38358] = "fixed-version: only affects 6.15 onwards" + +# CVE-2025-38359 needs backporting (fixed from 6.16) + +CVE_STATUS[CVE-2025-38360] = "cpe-stable-backport: Backported in 6.12.37" + +CVE_STATUS[CVE-2025-38361] = "cpe-stable-backport: Backported in 6.12.36" + +CVE_STATUS[CVE-2025-38362] = "cpe-stable-backport: Backported in 6.12.36" + +CVE_STATUS[CVE-2025-38363] = "cpe-stable-backport: Backported in 6.12.36" + +CVE_STATUS[CVE-2025-38364] = "cpe-stable-backport: Backported in 6.12.36" + +CVE_STATUS[CVE-2025-38365] = "cpe-stable-backport: Backported in 6.12.36" + +CVE_STATUS[CVE-2025-38366] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-38367] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-38368] = "cpe-stable-backport: Backported in 6.12.36" + +CVE_STATUS[CVE-2025-38369] = "cpe-stable-backport: Backported in 6.12.36" + +CVE_STATUS[CVE-2025-38370] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-38371] = "cpe-stable-backport: Backported in 6.12.37" + +CVE_STATUS[CVE-2025-38372] = "cpe-stable-backport: Backported in 6.12.37" + +CVE_STATUS[CVE-2025-38373] = "cpe-stable-backport: Backported in 6.12.37" + +CVE_STATUS[CVE-2025-38374] = "cpe-stable-backport: Backported in 6.12.37" + +CVE_STATUS[CVE-2025-38375] = "cpe-stable-backport: Backported in 6.12.37" + +CVE_STATUS[CVE-2025-38376] = "cpe-stable-backport: Backported in 6.12.37" + +CVE_STATUS[CVE-2025-38377] = "cpe-stable-backport: Backported in 6.12.37" + +CVE_STATUS[CVE-2025-38378] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-38379] = "cpe-stable-backport: Backported in 6.12.37" + +CVE_STATUS[CVE-2025-38381] = "cpe-stable-backport: Backported in 6.12.37" + +CVE_STATUS[CVE-2025-38382] = "cpe-stable-backport: Backported in 6.12.37" + +CVE_STATUS[CVE-2025-38383] = "cpe-stable-backport: Backported in 6.12.37" + +CVE_STATUS[CVE-2025-38384] = "cpe-stable-backport: Backported in 6.12.37" + +CVE_STATUS[CVE-2025-38385] = "cpe-stable-backport: Backported in 6.12.37" + +CVE_STATUS[CVE-2025-38386] = "cpe-stable-backport: Backported in 6.12.37" + +CVE_STATUS[CVE-2025-38387] = "cpe-stable-backport: Backported in 6.12.37" + +CVE_STATUS[CVE-2025-38388] = "cpe-stable-backport: Backported in 6.12.37" + +CVE_STATUS[CVE-2025-38389] = "cpe-stable-backport: Backported in 6.12.37" + +CVE_STATUS[CVE-2025-38390] = "cpe-stable-backport: Backported in 6.12.37" + +CVE_STATUS[CVE-2025-38391] = "cpe-stable-backport: Backported in 6.12.37" + +CVE_STATUS[CVE-2025-38392] = "cpe-stable-backport: Backported in 6.12.37" + +CVE_STATUS[CVE-2025-38393] = "cpe-stable-backport: Backported in 6.12.37" + +CVE_STATUS[CVE-2025-38394] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-38395] = "cpe-stable-backport: Backported in 6.12.37" + +CVE_STATUS[CVE-2025-38396] = "cpe-stable-backport: Backported in 6.12.37" + +CVE_STATUS[CVE-2025-38397] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-38398] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-38399] = "cpe-stable-backport: Backported in 6.12.37" + +CVE_STATUS[CVE-2025-38400] = "cpe-stable-backport: Backported in 6.12.37" + +CVE_STATUS[CVE-2025-38401] = "cpe-stable-backport: Backported in 6.12.37" + +CVE_STATUS[CVE-2025-38402] = "cpe-stable-backport: Backported in 6.12.37" + +CVE_STATUS[CVE-2025-38403] = "cpe-stable-backport: Backported in 6.12.37" + +CVE_STATUS[CVE-2025-38404] = "cpe-stable-backport: Backported in 6.12.37" + +CVE_STATUS[CVE-2025-38405] = "cpe-stable-backport: Backported in 6.12.37" + +CVE_STATUS[CVE-2025-38406] = "cpe-stable-backport: Backported in 6.12.37" + +CVE_STATUS[CVE-2025-38407] = "cpe-stable-backport: Backported in 6.12.37" + +CVE_STATUS[CVE-2025-38408] = "cpe-stable-backport: Backported in 6.12.37" + +CVE_STATUS[CVE-2025-38409] = "cpe-stable-backport: Backported in 6.12.37" + +CVE_STATUS[CVE-2025-38410] = "cpe-stable-backport: Backported in 6.12.37" + +CVE_STATUS[CVE-2025-38411] = "fixed-version: only affects 6.15.3 onwards" + +CVE_STATUS[CVE-2025-38412] = "cpe-stable-backport: Backported in 6.12.37" + +CVE_STATUS[CVE-2025-38413] = "cpe-stable-backport: Backported in 6.12.37" + +CVE_STATUS[CVE-2025-38414] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38415] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38416] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38417] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38418] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38419] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38420] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38421] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-38422] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38423] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38424] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38425] = "cpe-stable-backport: Backported in 6.12.35" + +# CVE-2025-38426 needs backporting (fixed from 6.16) + +CVE_STATUS[CVE-2025-38427] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38428] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38429] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38430] = "cpe-stable-backport: Backported in 6.12.35" + +CVE_STATUS[CVE-2025-38431] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-38432] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-38433] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-38434] = "cpe-stable-backport: Backported in 6.12.36" + +CVE_STATUS[CVE-2025-38435] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-38436] = "cpe-stable-backport: Backported in 6.12.36" + +CVE_STATUS[CVE-2025-38437] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-38438] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-38439] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-38440] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-38441] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-38442] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-38443] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-38444] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-38445] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-38446] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-38447] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-38448] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-38449] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-38450] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-38451] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-38452] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-38453] = "cpe-stable-backport: Backported in 6.12.46" + +CVE_STATUS[CVE-2025-38454] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-38455] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-38456] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-38457] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-38458] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-38459] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-38460] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-38461] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-38462] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-38463] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-38464] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-38465] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-38466] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-38467] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-38468] = "cpe-stable-backport: Backported in 6.12.40" + +CVE_STATUS[CVE-2025-38469] = "cpe-stable-backport: Backported in 6.12.40" + +CVE_STATUS[CVE-2025-38470] = "cpe-stable-backport: Backported in 6.12.40" + +CVE_STATUS[CVE-2025-38471] = "cpe-stable-backport: Backported in 6.12.40" + +CVE_STATUS[CVE-2025-38472] = "cpe-stable-backport: Backported in 6.12.40" + +CVE_STATUS[CVE-2025-38473] = "cpe-stable-backport: Backported in 6.12.40" + +CVE_STATUS[CVE-2025-38474] = "cpe-stable-backport: Backported in 6.12.40" + +CVE_STATUS[CVE-2025-38475] = "cpe-stable-backport: Backported in 6.12.40" + +CVE_STATUS[CVE-2025-38476] = "cpe-stable-backport: Backported in 6.12.40" + +CVE_STATUS[CVE-2025-38477] = "cpe-stable-backport: Backported in 6.12.40" + +CVE_STATUS[CVE-2025-38478] = "cpe-stable-backport: Backported in 6.12.40" + +CVE_STATUS[CVE-2025-38479] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-38480] = "cpe-stable-backport: Backported in 6.12.40" + +CVE_STATUS[CVE-2025-38481] = "cpe-stable-backport: Backported in 6.12.40" + +CVE_STATUS[CVE-2025-38482] = "cpe-stable-backport: Backported in 6.12.40" + +CVE_STATUS[CVE-2025-38483] = "cpe-stable-backport: Backported in 6.12.40" + +CVE_STATUS[CVE-2025-38484] = "cpe-stable-backport: Backported in 6.12.40" + +CVE_STATUS[CVE-2025-38485] = "cpe-stable-backport: Backported in 6.12.40" + +CVE_STATUS[CVE-2025-38486] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-38487] = "cpe-stable-backport: Backported in 6.12.40" + +CVE_STATUS[CVE-2025-38488] = "cpe-stable-backport: Backported in 6.12.40" + +CVE_STATUS[CVE-2025-38489] = "cpe-stable-backport: Backported in 6.12.40" + +CVE_STATUS[CVE-2025-38490] = "cpe-stable-backport: Backported in 6.12.40" + +CVE_STATUS[CVE-2025-38491] = "cpe-stable-backport: Backported in 6.12.40" + +CVE_STATUS[CVE-2025-38492] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-38493] = "cpe-stable-backport: Backported in 6.12.40" + +CVE_STATUS[CVE-2025-38494] = "cpe-stable-backport: Backported in 6.12.40" + +CVE_STATUS[CVE-2025-38495] = "cpe-stable-backport: Backported in 6.12.40" + +CVE_STATUS[CVE-2025-38496] = "cpe-stable-backport: Backported in 6.12.40" + +CVE_STATUS[CVE-2025-38497] = "cpe-stable-backport: Backported in 6.12.40" + +CVE_STATUS[CVE-2025-38498] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-38499] = "cpe-stable-backport: Backported in 6.12.40" + +CVE_STATUS[CVE-2025-38500] = "cpe-stable-backport: Backported in 6.12.41" + +CVE_STATUS[CVE-2025-38501] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38502] = "cpe-stable-backport: Backported in 6.12.46" + +CVE_STATUS[CVE-2025-38503] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-38504] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-38505] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-38506] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-38507] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-38508] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-38509] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-38510] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-38511] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-38512] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-38513] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-38514] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-38515] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-38516] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-38517] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-38518] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-38519] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-38520] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-38521] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-38522] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-38523] = "cpe-stable-backport: Backported in 6.12.36" + +CVE_STATUS[CVE-2025-38524] = "cpe-stable-backport: Backported in 6.12.40" + +CVE_STATUS[CVE-2025-38525] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-38526] = "cpe-stable-backport: Backported in 6.12.40" + +CVE_STATUS[CVE-2025-38527] = "cpe-stable-backport: Backported in 6.12.40" + +CVE_STATUS[CVE-2025-38528] = "cpe-stable-backport: Backported in 6.12.40" + +CVE_STATUS[CVE-2025-38529] = "cpe-stable-backport: Backported in 6.12.40" + +CVE_STATUS[CVE-2025-38530] = "cpe-stable-backport: Backported in 6.12.40" + +CVE_STATUS[CVE-2025-38531] = "cpe-stable-backport: Backported in 6.12.40" + +CVE_STATUS[CVE-2025-38532] = "cpe-stable-backport: Backported in 6.12.40" + +CVE_STATUS[CVE-2025-38533] = "cpe-stable-backport: Backported in 6.12.40" + +CVE_STATUS[CVE-2025-38534] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-38535] = "cpe-stable-backport: Backported in 6.12.40" + +CVE_STATUS[CVE-2025-38536] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-38537] = "cpe-stable-backport: Backported in 6.12.40" + +CVE_STATUS[CVE-2025-38538] = "cpe-stable-backport: Backported in 6.12.40" + +CVE_STATUS[CVE-2025-38539] = "cpe-stable-backport: Backported in 6.12.40" + +CVE_STATUS[CVE-2025-38540] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-38541] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-38542] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-38543] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-38544] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-38545] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-38546] = "cpe-stable-backport: Backported in 6.12.39" + +CVE_STATUS[CVE-2025-38547] = "cpe-stable-backport: Backported in 6.12.40" + +CVE_STATUS[CVE-2025-38548] = "cpe-stable-backport: Backported in 6.12.40" + +CVE_STATUS[CVE-2025-38549] = "cpe-stable-backport: Backported in 6.12.40" + +CVE_STATUS[CVE-2025-38550] = "cpe-stable-backport: Backported in 6.12.40" + +CVE_STATUS[CVE-2025-38551] = "cpe-stable-backport: Backported in 6.12.40" + +CVE_STATUS[CVE-2025-38552] = "cpe-stable-backport: Backported in 6.12.40" + +CVE_STATUS[CVE-2025-38553] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38554] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-38555] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38556] = "cpe-stable-backport: Backported in 6.12.46" + +CVE_STATUS[CVE-2025-38557] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38558] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-38559] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38560] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38561] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38562] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38563] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38564] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-38565] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38566] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38567] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-38568] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38569] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38570] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-38571] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38572] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38573] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38574] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38575] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-38576] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38577] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38578] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38579] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38580] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-38581] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38582] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38583] = "cpe-stable-backport: Backported in 6.12.42" + +# CVE-2025-38584 needs backporting (fixed from 6.17) + +CVE_STATUS[CVE-2025-38585] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38586] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38587] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38588] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38589] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-38590] = "cpe-stable-backport: Backported in 6.12.42" + +# CVE-2025-38591 needs backporting (fixed from 6.17) + +CVE_STATUS[CVE-2025-38592] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-38593] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38594] = "fixed-version: only affects 6.16 onwards" + +CVE_STATUS[CVE-2025-38595] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38596] = "fixed-version: only affects 6.16 onwards" + +# CVE-2025-38597 needs backporting (fixed from 6.17) + +CVE_STATUS[CVE-2025-38598] = "fixed-version: only affects 6.16 onwards" + +CVE_STATUS[CVE-2025-38599] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-38600] = "fixed-version: only affects 6.16 onwards" + +CVE_STATUS[CVE-2025-38601] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38602] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38604] = "cpe-stable-backport: Backported in 6.12.42" + +# CVE-2025-38605 needs backporting (fixed from 6.17) + +CVE_STATUS[CVE-2025-38606] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-38607] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-38608] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38609] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38610] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38612] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38613] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-38614] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-38615] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38616] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-38617] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38618] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38619] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38620] = "fixed-version: only affects 6.16 onwards" + +# CVE-2025-38621 needs backporting (fixed from 6.17) + +CVE_STATUS[CVE-2025-38622] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38623] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38624] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38625] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38626] = "cpe-stable-backport: Backported in 6.12.42" + +# CVE-2025-38627 needs backporting (fixed from 6.17) + +CVE_STATUS[CVE-2025-38628] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38629] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-38630] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38631] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38632] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38633] = "fixed-version: only affects 6.16 onwards" + +CVE_STATUS[CVE-2025-38634] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38635] = "cpe-stable-backport: Backported in 6.12.42" + +# CVE-2025-38636 needs backporting (fixed from 6.17) + +CVE_STATUS[CVE-2025-38637] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-38638] = "fixed-version: only affects 6.16 onwards" + +CVE_STATUS[CVE-2025-38639] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38640] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38641] = "fixed-version: only affects 6.16 onwards" + +CVE_STATUS[CVE-2025-38642] = "fixed-version: only affects 6.13 onwards" + +# CVE-2025-38643 needs backporting (fixed from 6.17) + +CVE_STATUS[CVE-2025-38644] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38645] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38646] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38647] = "fixed-version: only affects 6.16 onwards" + +CVE_STATUS[CVE-2025-38648] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38649] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-38650] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38651] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-38652] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38653] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38654] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-38655] = "fixed-version: only affects 6.13 onwards" + +# CVE-2025-38656 has no known resolution + +CVE_STATUS[CVE-2025-38657] = "fixed-version: only affects 6.16 onwards" + +CVE_STATUS[CVE-2025-38658] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-38659] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38660] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-38661] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-38662] = "cpe-stable-backport: Backported in 6.12.41" + +CVE_STATUS[CVE-2025-38663] = "cpe-stable-backport: Backported in 6.12.41" + +CVE_STATUS[CVE-2025-38664] = "cpe-stable-backport: Backported in 6.12.41" + +CVE_STATUS[CVE-2025-38665] = "cpe-stable-backport: Backported in 6.12.41" + +CVE_STATUS[CVE-2025-38666] = "cpe-stable-backport: Backported in 6.12.41" + +CVE_STATUS[CVE-2025-38667] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-38668] = "cpe-stable-backport: Backported in 6.12.41" + +CVE_STATUS[CVE-2025-38669] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-38670] = "cpe-stable-backport: Backported in 6.12.41" + +CVE_STATUS[CVE-2025-38671] = "cpe-stable-backport: Backported in 6.12.41" + +CVE_STATUS[CVE-2025-38672] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-38673] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-38674] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-38675] = "cpe-stable-backport: Backported in 6.12.41" + +CVE_STATUS[CVE-2025-38676] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-38677] = "cpe-stable-backport: Backported in 6.12.44" + +# CVE-2025-38678 needs backporting (fixed from 6.17) + +CVE_STATUS[CVE-2025-38679] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-38680] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-38681] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-38682] = "fixed-version: only affects 6.16 onwards" + +CVE_STATUS[CVE-2025-38683] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-38684] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-38685] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-38686] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-38687] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-38688] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-38689] = "fixed-version: only affects 6.16 onwards" + +CVE_STATUS[CVE-2025-38690] = "fixed-version: only affects 6.16 onwards" + +CVE_STATUS[CVE-2025-38691] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-38692] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-38693] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-38694] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-38695] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-38696] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-38697] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-38698] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-38699] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-38700] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-38701] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-38702] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-38703] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-38704] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-38705] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-38706] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-38707] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-38708] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-38709] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-38710] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-38711] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-38712] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-38713] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-38714] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-38715] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-38716] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-38717] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-38718] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-38719] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-38720] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-38721] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-38722] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-38723] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-38724] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-38725] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-38726] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-38727] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-38728] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-38729] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-38730] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-38731] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-38732] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-38733] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-38734] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-38735] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-38736] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-38737] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39673] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39674] = "fixed-version: only affects 6.16 onwards" + +CVE_STATUS[CVE-2025-39675] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39676] = "cpe-stable-backport: Backported in 6.12.44" + +# CVE-2025-39677 needs backporting (fixed from 6.17) + +# CVE-2025-39678 needs backporting (fixed from 6.17) + +CVE_STATUS[CVE-2025-39679] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39680] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-39681] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39682] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39683] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39684] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39685] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39686] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39687] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39688] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-39689] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39690] = "fixed-version: only affects 6.16 onwards" + +CVE_STATUS[CVE-2025-39691] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39692] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39693] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39694] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39695] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39696] = "fixed-version: only affects 6.16 onwards" + +CVE_STATUS[CVE-2025-39697] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39698] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39699] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-39700] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39701] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39702] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39703] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39704] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-39705] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39706] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39707] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39708] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-39709] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39710] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39711] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39712] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39713] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39714] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39715] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39716] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39717] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-39718] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39719] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39720] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39721] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39722] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39723] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39724] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39725] = "cpe-stable-backport: Backported in 6.12.41" + +CVE_STATUS[CVE-2025-39726] = "cpe-stable-backport: Backported in 6.12.41" + +CVE_STATUS[CVE-2025-39727] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-39728] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-39729] = "fixed-version: only affects 6.16 onwards" + +CVE_STATUS[CVE-2025-39730] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-39731] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-39732] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-39733] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-39734] = "cpe-stable-backport: Backported in 6.12.42" + +CVE_STATUS[CVE-2025-39735] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-39736] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-39737] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-39738] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-39739] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-39740] = "fixed-version: only affects 6.16 onwards" + +CVE_STATUS[CVE-2025-39741] = "fixed-version: only affects 6.16 onwards" + +CVE_STATUS[CVE-2025-39742] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-39743] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-39744] = "cpe-stable-backport: Backported in 6.12.43" + +# CVE-2025-39745 needs backporting (fixed from 6.17) + +CVE_STATUS[CVE-2025-39746] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-39747] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-39748] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-39749] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-39750] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-39752] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-39753] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-39754] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-39755] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-39756] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-39757] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-39758] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-39759] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39760] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-39761] = "cpe-stable-backport: Backported in 6.12.43" + +# CVE-2025-39762 needs backporting (fixed from 6.17) + +CVE_STATUS[CVE-2025-39763] = "cpe-stable-backport: Backported in 6.12.43" + +# CVE-2025-39764 needs backporting (fixed from 6.17) + +CVE_STATUS[CVE-2025-39765] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39766] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39767] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39768] = "fixed-version: only affects 6.16 onwards" + +CVE_STATUS[CVE-2025-39769] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-39770] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39771] = "fixed-version: only affects 6.16 onwards" + +CVE_STATUS[CVE-2025-39772] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39773] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39774] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-39775] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-39776] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39777] = "fixed-version: only affects 6.16 onwards" + +CVE_STATUS[CVE-2025-39778] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-39779] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39780] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39781] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39782] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39783] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39784] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-39785] = "fixed-version: only affects 6.16 onwards" + +CVE_STATUS[CVE-2025-39786] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-39787] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39788] = "cpe-stable-backport: Backported in 6.12.44" + +# CVE-2025-39789 needs backporting (fixed from 6.17) + +CVE_STATUS[CVE-2025-39790] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39791] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39792] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-39793] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-39794] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-39795] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-39796] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-39797] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-39798] = "cpe-stable-backport: Backported in 6.12.43" + +CVE_STATUS[CVE-2025-39800] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39801] = "cpe-stable-backport: Backported in 6.12.44" + +CVE_STATUS[CVE-2025-39802] = "fixed-version: only affects 6.16 onwards" + +CVE_STATUS[CVE-2025-39803] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-39804] = "fixed-version: only affects 6.16 onwards" + +CVE_STATUS[CVE-2025-39805] = "cpe-stable-backport: Backported in 6.12.45" + +CVE_STATUS[CVE-2025-39806] = "cpe-stable-backport: Backported in 6.12.45" + +CVE_STATUS[CVE-2025-39807] = "cpe-stable-backport: Backported in 6.12.45" + +CVE_STATUS[CVE-2025-39808] = "cpe-stable-backport: Backported in 6.12.45" + +CVE_STATUS[CVE-2025-39809] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-39810] = "cpe-stable-backport: Backported in 6.12.45" + +CVE_STATUS[CVE-2025-39811] = "cpe-stable-backport: Backported in 6.12.45" + +CVE_STATUS[CVE-2025-39812] = "cpe-stable-backport: Backported in 6.12.45" + +CVE_STATUS[CVE-2025-39813] = "cpe-stable-backport: Backported in 6.12.45" + +CVE_STATUS[CVE-2025-39814] = "fixed-version: only affects 6.16 onwards" + +CVE_STATUS[CVE-2025-39815] = "cpe-stable-backport: Backported in 6.12.45" + +CVE_STATUS[CVE-2025-39816] = "cpe-stable-backport: Backported in 6.12.49" + +CVE_STATUS[CVE-2025-39817] = "cpe-stable-backport: Backported in 6.12.45" + +CVE_STATUS[CVE-2025-39818] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-39819] = "cpe-stable-backport: Backported in 6.12.45" + +CVE_STATUS[CVE-2025-39820] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-39821] = "fixed-version: only affects 6.16 onwards" + +# CVE-2025-39822 needs backporting (fixed from 6.17) + +CVE_STATUS[CVE-2025-39823] = "cpe-stable-backport: Backported in 6.12.45" + +CVE_STATUS[CVE-2025-39824] = "cpe-stable-backport: Backported in 6.12.45" + +CVE_STATUS[CVE-2025-39825] = "cpe-stable-backport: Backported in 6.12.45" + +CVE_STATUS[CVE-2025-39826] = "cpe-stable-backport: Backported in 6.12.45" + +CVE_STATUS[CVE-2025-39827] = "cpe-stable-backport: Backported in 6.12.45" + +CVE_STATUS[CVE-2025-39828] = "cpe-stable-backport: Backported in 6.12.45" + +CVE_STATUS[CVE-2025-39829] = "cpe-stable-backport: Backported in 6.12.45" + +# CVE-2025-39830 needs backporting (fixed from 6.17) + +CVE_STATUS[CVE-2025-39831] = "cpe-stable-backport: Backported in 6.12.45" + +CVE_STATUS[CVE-2025-39832] = "cpe-stable-backport: Backported in 6.12.45" + +# CVE-2025-39833 needs backporting (fixed from 6.17) + +# CVE-2025-39834 needs backporting (fixed from 6.17) + +CVE_STATUS[CVE-2025-39835] = "cpe-stable-backport: Backported in 6.12.45" + +CVE_STATUS[CVE-2025-39836] = "cpe-stable-backport: Backported in 6.12.45" + +CVE_STATUS[CVE-2025-39837] = "fixed-version: only affects 6.16 onwards" + +CVE_STATUS[CVE-2025-39838] = "cpe-stable-backport: Backported in 6.12.46" + +CVE_STATUS[CVE-2025-39839] = "cpe-stable-backport: Backported in 6.12.46" + +CVE_STATUS[CVE-2025-39840] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-39841] = "cpe-stable-backport: Backported in 6.12.46" + +CVE_STATUS[CVE-2025-39842] = "cpe-stable-backport: Backported in 6.12.46" + +CVE_STATUS[CVE-2025-39843] = "cpe-stable-backport: Backported in 6.12.46" + +CVE_STATUS[CVE-2025-39844] = "cpe-stable-backport: Backported in 6.12.46" + +CVE_STATUS[CVE-2025-39845] = "cpe-stable-backport: Backported in 6.12.46" + +CVE_STATUS[CVE-2025-39846] = "cpe-stable-backport: Backported in 6.12.46" + +CVE_STATUS[CVE-2025-39847] = "cpe-stable-backport: Backported in 6.12.46" + +CVE_STATUS[CVE-2025-39848] = "cpe-stable-backport: Backported in 6.12.46" + +CVE_STATUS[CVE-2025-39849] = "cpe-stable-backport: Backported in 6.12.46" + +CVE_STATUS[CVE-2025-39850] = "cpe-stable-backport: Backported in 6.12.46" + +CVE_STATUS[CVE-2025-39851] = "cpe-stable-backport: Backported in 6.12.46" + +CVE_STATUS[CVE-2025-39852] = "cpe-stable-backport: Backported in 6.12.46" + +CVE_STATUS[CVE-2025-39853] = "cpe-stable-backport: Backported in 6.12.46" + +CVE_STATUS[CVE-2025-39854] = "cpe-stable-backport: Backported in 6.12.46" + +CVE_STATUS[CVE-2025-39855] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-39856] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-39857] = "cpe-stable-backport: Backported in 6.12.46" + +CVE_STATUS[CVE-2025-39858] = "fixed-version: only affects 6.15 onwards" + +# CVE-2025-39859 needs backporting (fixed from 6.17) + +CVE_STATUS[CVE-2025-39860] = "cpe-stable-backport: Backported in 6.12.46" + +CVE_STATUS[CVE-2025-39861] = "cpe-stable-backport: Backported in 6.12.46" + +# CVE-2025-39862 needs backporting (fixed from 6.17) + +CVE_STATUS[CVE-2025-39863] = "cpe-stable-backport: Backported in 6.12.46" + +CVE_STATUS[CVE-2025-39864] = "cpe-stable-backport: Backported in 6.12.46" + +CVE_STATUS[CVE-2025-39865] = "cpe-stable-backport: Backported in 6.12.46" + +CVE_STATUS[CVE-2025-39866] = "cpe-stable-backport: Backported in 6.12.46" + +CVE_STATUS[CVE-2025-39868] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-39869] = "cpe-stable-backport: Backported in 6.12.48" + +CVE_STATUS[CVE-2025-39870] = "cpe-stable-backport: Backported in 6.12.48" + +CVE_STATUS[CVE-2025-39871] = "cpe-stable-backport: Backported in 6.12.48" + +CVE_STATUS[CVE-2025-39872] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-39873] = "cpe-stable-backport: Backported in 6.12.48" + +CVE_STATUS[CVE-2025-39874] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-39875] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-39876] = "cpe-stable-backport: Backported in 6.12.48" + +CVE_STATUS[CVE-2025-39877] = "cpe-stable-backport: Backported in 6.12.48" + +CVE_STATUS[CVE-2025-39878] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-39879] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-39880] = "cpe-stable-backport: Backported in 6.12.48" + +CVE_STATUS[CVE-2025-39881] = "cpe-stable-backport: Backported in 6.12.48" + +CVE_STATUS[CVE-2025-39882] = "cpe-stable-backport: Backported in 6.12.48" + +CVE_STATUS[CVE-2025-39883] = "cpe-stable-backport: Backported in 6.12.48" + +CVE_STATUS[CVE-2025-39884] = "cpe-stable-backport: Backported in 6.12.48" + +CVE_STATUS[CVE-2025-39885] = "cpe-stable-backport: Backported in 6.12.48" + +CVE_STATUS[CVE-2025-39886] = "cpe-stable-backport: Backported in 6.12.48" + +CVE_STATUS[CVE-2025-39887] = "fixed-version: only affects 6.16 onwards" + +CVE_STATUS[CVE-2025-39888] = "fixed-version: only affects 6.16 onwards" + +CVE_STATUS[CVE-2025-39889] = "cpe-stable-backport: Backported in 6.12.25" + +CVE_STATUS[CVE-2025-39890] = "cpe-stable-backport: Backported in 6.12.34" + +CVE_STATUS[CVE-2025-39891] = "cpe-stable-backport: Backported in 6.12.46" + +CVE_STATUS[CVE-2025-39892] = "fixed-version: only affects 6.16 onwards" + +CVE_STATUS[CVE-2025-39893] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-39894] = "cpe-stable-backport: Backported in 6.12.46" + +CVE_STATUS[CVE-2025-39895] = "cpe-stable-backport: Backported in 6.12.46" + +CVE_STATUS[CVE-2025-39896] = "cpe-stable-backport: Backported in 6.12.46" + +CVE_STATUS[CVE-2025-39897] = "cpe-stable-backport: Backported in 6.12.46" + +CVE_STATUS[CVE-2025-39898] = "cpe-stable-backport: Backported in 6.12.46" + +CVE_STATUS[CVE-2025-39899] = "cpe-stable-backport: Backported in 6.12.46" + +CVE_STATUS[CVE-2025-39900] = "cpe-stable-backport: Backported in 6.12.46" + +CVE_STATUS[CVE-2025-39901] = "cpe-stable-backport: Backported in 6.12.46" + +CVE_STATUS[CVE-2025-39902] = "cpe-stable-backport: Backported in 6.12.46" + +CVE_STATUS[CVE-2025-39903] = "cpe-stable-backport: Backported in 6.12.46" + +CVE_STATUS[CVE-2025-39904] = "fixed-version: only affects 6.16 onwards" + +# CVE-2025-39905 needs backporting (fixed from 6.17) + +CVE_STATUS[CVE-2025-39906] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-39907] = "cpe-stable-backport: Backported in 6.12.48" + +CVE_STATUS[CVE-2025-39908] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-39909] = "cpe-stable-backport: Backported in 6.12.48" + +# CVE-2025-39910 needs backporting (fixed from 6.17) + +CVE_STATUS[CVE-2025-39911] = "cpe-stable-backport: Backported in 6.12.48" + +CVE_STATUS[CVE-2025-39912] = "cpe-stable-backport: Backported in 6.12.48" + +CVE_STATUS[CVE-2025-39913] = "cpe-stable-backport: Backported in 6.12.48" + +CVE_STATUS[CVE-2025-39914] = "cpe-stable-backport: Backported in 6.12.48" + +CVE_STATUS[CVE-2025-39915] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-39916] = "cpe-stable-backport: Backported in 6.12.48" + +CVE_STATUS[CVE-2025-39917] = "cpe-stable-backport: Backported in 6.12.48" + +CVE_STATUS[CVE-2025-39918] = "cpe-stable-backport: Backported in 6.12.46" + +CVE_STATUS[CVE-2025-39919] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-39920] = "cpe-stable-backport: Backported in 6.12.46" + +CVE_STATUS[CVE-2025-39921] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-39922] = "cpe-stable-backport: Backported in 6.12.46" + +CVE_STATUS[CVE-2025-39923] = "cpe-stable-backport: Backported in 6.12.48" + +CVE_STATUS[CVE-2025-39924] = "fixed-version: only affects 6.15 onwards" + +# CVE-2025-39925 needs backporting (fixed from 6.17) + +CVE_STATUS[CVE-2025-39926] = "cpe-stable-backport: Backported in 6.12.48" + +CVE_STATUS[CVE-2025-39927] = "cpe-stable-backport: Backported in 6.12.48" + +CVE_STATUS[CVE-2025-39928] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-39929] = "cpe-stable-backport: Backported in 6.12.49" + +CVE_STATUS[CVE-2025-39930] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-39931] = "cpe-stable-backport: Backported in 6.12.49" + +CVE_STATUS[CVE-2025-39932] = "cpe-stable-backport: Backported in 6.12.49" + +# CVE-2025-39933 needs backporting (fixed from 6.17) + +CVE_STATUS[CVE-2025-39934] = "cpe-stable-backport: Backported in 6.12.49" + +CVE_STATUS[CVE-2025-39935] = "fixed-version: only affects 6.13 onwards" + +CVE_STATUS[CVE-2025-39936] = "fixed-version: only affects 6.16 onwards" + +CVE_STATUS[CVE-2025-39937] = "cpe-stable-backport: Backported in 6.12.49" + +CVE_STATUS[CVE-2025-39938] = "cpe-stable-backport: Backported in 6.12.49" + +CVE_STATUS[CVE-2025-39939] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-39940] = "cpe-stable-backport: Backported in 6.12.49" + +CVE_STATUS[CVE-2025-39941] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-39942] = "cpe-stable-backport: Backported in 6.12.49" + +CVE_STATUS[CVE-2025-39943] = "cpe-stable-backport: Backported in 6.12.49" + +CVE_STATUS[CVE-2025-39944] = "cpe-stable-backport: Backported in 6.12.49" + +CVE_STATUS[CVE-2025-39945] = "cpe-stable-backport: Backported in 6.12.49" + +CVE_STATUS[CVE-2025-39946] = "cpe-stable-backport: Backported in 6.12.49" + +CVE_STATUS[CVE-2025-39947] = "cpe-stable-backport: Backported in 6.12.49" + +CVE_STATUS[CVE-2025-39948] = "cpe-stable-backport: Backported in 6.12.49" + +CVE_STATUS[CVE-2025-39949] = "cpe-stable-backport: Backported in 6.12.49" + +CVE_STATUS[CVE-2025-39950] = "cpe-stable-backport: Backported in 6.12.49" + +CVE_STATUS[CVE-2025-39951] = "cpe-stable-backport: Backported in 6.12.49" + +CVE_STATUS[CVE-2025-39952] = "cpe-stable-backport: Backported in 6.12.49" + +CVE_STATUS[CVE-2025-39953] = "cpe-stable-backport: Backported in 6.12.49" + +CVE_STATUS[CVE-2025-39954] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-39955] = "cpe-stable-backport: Backported in 6.12.49" + +CVE_STATUS[CVE-2025-39956] = "cpe-stable-backport: Backported in 6.12.49" + +CVE_STATUS[CVE-2025-39957] = "cpe-stable-backport: Backported in 6.12.49" + +# CVE-2025-39958 needs backporting (fixed from 6.17) + +CVE_STATUS[CVE-2025-39959] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-39960] = "fixed-version: only affects 6.16 onwards" + +CVE_STATUS[CVE-2025-39961] = "cpe-stable-backport: Backported in 6.12.49" + +CVE_STATUS[CVE-2025-39962] = "fixed-version: only affects 6.16 onwards" + +CVE_STATUS[CVE-2025-39963] = "cpe-stable-backport: Backported in 6.12.49" + +CVE_STATUS[CVE-2025-39964] = "cpe-stable-backport: Backported in 6.12.49" + +CVE_STATUS[CVE-2025-39965] = "cpe-stable-backport: Backported in 6.12.50" + +CVE_STATUS[CVE-2025-39966] = "cpe-stable-backport: Backported in 6.12.50" + +CVE_STATUS[CVE-2025-39967] = "cpe-stable-backport: Backported in 6.12.50" + +CVE_STATUS[CVE-2025-39968] = "cpe-stable-backport: Backported in 6.12.50" + +CVE_STATUS[CVE-2025-39969] = "cpe-stable-backport: Backported in 6.12.50" + +CVE_STATUS[CVE-2025-39970] = "cpe-stable-backport: Backported in 6.12.50" + +CVE_STATUS[CVE-2025-39971] = "cpe-stable-backport: Backported in 6.12.50" + +CVE_STATUS[CVE-2025-39972] = "cpe-stable-backport: Backported in 6.12.50" + +CVE_STATUS[CVE-2025-39973] = "cpe-stable-backport: Backported in 6.12.50" + +CVE_STATUS[CVE-2025-39974] = "fixed-version: only affects 6.16 onwards" + +CVE_STATUS[CVE-2025-39975] = "cpe-stable-backport: Backported in 6.12.50" + +CVE_STATUS[CVE-2025-39976] = "fixed-version: only affects 6.16 onwards" + +CVE_STATUS[CVE-2025-39977] = "cpe-stable-backport: Backported in 6.12.50" + +CVE_STATUS[CVE-2025-39978] = "cpe-stable-backport: Backported in 6.12.50" + +CVE_STATUS[CVE-2025-39979] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-39980] = "cpe-stable-backport: Backported in 6.12.50" + +# CVE-2025-39981 needs backporting (fixed from 6.17) + +CVE_STATUS[CVE-2025-39982] = "cpe-stable-backport: Backported in 6.12.50" + +CVE_STATUS[CVE-2025-39983] = "fixed-version: only affects 6.15 onwards" + +CVE_STATUS[CVE-2025-39984] = "cpe-stable-backport: Backported in 6.12.50" + +CVE_STATUS[CVE-2025-39985] = "cpe-stable-backport: Backported in 6.12.50" + +CVE_STATUS[CVE-2025-39986] = "cpe-stable-backport: Backported in 6.12.50" + +CVE_STATUS[CVE-2025-39987] = "cpe-stable-backport: Backported in 6.12.50" + +CVE_STATUS[CVE-2025-39988] = "cpe-stable-backport: Backported in 6.12.50" + +CVE_STATUS[CVE-2025-39989] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-39990] = "cpe-stable-backport: Backported in 6.12.50" + +CVE_STATUS[CVE-2025-39991] = "cpe-stable-backport: Backported in 6.12.51" + +CVE_STATUS[CVE-2025-39992] = "cpe-stable-backport: Backported in 6.12.51" + +CVE_STATUS[CVE-2025-39993] = "cpe-stable-backport: Backported in 6.12.51" + +CVE_STATUS[CVE-2025-39994] = "cpe-stable-backport: Backported in 6.12.51" + +CVE_STATUS[CVE-2025-39995] = "cpe-stable-backport: Backported in 6.12.52" + +CVE_STATUS[CVE-2025-39996] = "cpe-stable-backport: Backported in 6.12.51" + +CVE_STATUS[CVE-2025-39997] = "fixed-version: only affects 6.16 onwards" + +CVE_STATUS[CVE-2025-39998] = "cpe-stable-backport: Backported in 6.12.51" + +CVE_STATUS[CVE-2025-39999] = "fixed-version: only affects 6.16 onwards" + +CVE_STATUS[CVE-2025-40000] = "cpe-stable-backport: Backported in 6.12.52" + +CVE_STATUS[CVE-2025-40001] = "cpe-stable-backport: Backported in 6.12.54" + +CVE_STATUS[CVE-2025-40002] = "fixed-version: only affects 6.14 onwards" + +CVE_STATUS[CVE-2025-40003] = "cpe-stable-backport: Backported in 6.12.54" + +# CVE-2025-40014 needs backporting (fixed from 6.15) + +CVE_STATUS[CVE-2025-40114] = "cpe-stable-backport: Backported in 6.12.23" + +CVE_STATUS[CVE-2025-40300] = "cpe-stable-backport: Backported in 6.12.47" + +# CVE-2025-40325 needs backporting (fixed from 6.15) + +CVE_STATUS[CVE-2025-40364] = "cpe-stable-backport: Backported in 6.12.14" + diff --git a/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/0001-Revert-virtio-Add-prereqs-for-tiny.patch b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/0001-Revert-virtio-Add-prereqs-for-tiny.patch new file mode 100644 index 00000000..837e4ea7 --- /dev/null +++ b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/0001-Revert-virtio-Add-prereqs-for-tiny.patch @@ -0,0 +1,44 @@ +From c203a1cfd4b56162afd4a7afe26b38fb13026e9e Mon Sep 17 00:00:00 2001 +From: Jonas Gorski +Date: Thu, 22 May 2025 15:50:44 +0200 +Subject: [PATCH] Revert "virtio: Add prereqs for tiny" + +This enables DRM, and we have headless systems, so DRM just needlessly +increases code size and attack surface. + +This reverts commit 26ae60b03262f71c03a2685aa649493b86369c1d. +--- + cfg/virtio.cfg | 8 -------- + 1 file changed, 8 deletions(-) + +diff --git a/cfg/virtio.cfg b/cfg/virtio.cfg +index c653a461690a..b6e25f0cd661 100644 +--- a/cfg/virtio.cfg ++++ b/cfg/virtio.cfg +@@ -1,23 +1,15 @@ + # SPDX-License-Identifier: MIT + CONFIG_VIRTIO=y # OVERRIDE:$MODULE_OR_Y +-CONFIG_VIRTIO_MENU=y + CONFIG_VIRTIO_PCI=y # OVERRIDE:$MODULE_OR_Y + CONFIG_VIRTIO_BALLOON=y # OVERRIDE:$MODULE_OR_Y +-CONFIG_NET=y + CONFIG_VIRTIO_NET=y # OVERRIDE:$MODULE_OR_Y + CONFIG_VIRTIO_BLK=y # OVERRIDE:$MODULE_OR_Y +-CONFIG_BLK_MQ_VIRTIO=y # OVERRIDE:$MODULE_OR_Y + CONFIG_VIRTIO_CONSOLE=y # OVERRIDE:$MODULE_OR_Y + CONFIG_VIRTIO_MMIO=y # OVERRIDE:$MODULE_OR_Y + CONFIG_VIRTIO_INPUT=m + CONFIG_HW_RANDOM=y + CONFIG_HW_RANDOM_VIRTIO=y # OVERRIDE:$MODULE_OR_Y +-CONFIG_SCSI=y # OVERRIDE:$MODULE_OR_Y +-CONFIG_SCSI_LOWLEVEL=y + CONFIG_SCSI_VIRTIO=y # OVERRIDE:$MODULE_OR_Y +-CONFIG_CRYPTO=y # OVERRIDE:$MODULE_OR_Y +-CONFIG_CRYPTO_DEV_VIRTIO=y # OVERRIDE:$MODULE_OR_Y +-CONFIG_DRM=y # OVERRIDE:$MODULE_OR_Y + CONFIG_DRM_VIRTIO_GPU=y # OVERRIDE:$MODULE_OR_Y + CONFIG_DRM_FBDEV_EMULATION=y # OVERRIDE:$MODULE_OR_Y + CONFIG_VSOCKETS=y # OVERRIDE:$MODULE_OR_Y +-- +2.51.0 + diff --git a/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/09-01-i2c-iproc-reset-bus-after-timeout-if-START_BUSY-is-s.patch b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/09-01-i2c-iproc-reset-bus-after-timeout-if-START_BUSY-is-s.patch new file mode 100644 index 00000000..10bba327 --- /dev/null +++ b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/09-01-i2c-iproc-reset-bus-after-timeout-if-START_BUSY-is-s.patch @@ -0,0 +1,45 @@ +From 2e81504e624306c8fe178ffe415be8384ba0eb2b Mon Sep 17 00:00:00 2001 +From: Jonas Gorski +Date: Wed, 30 Aug 2023 14:47:45 +0200 +Subject: [PATCH 21/21] i2c: iproc: reset bus after timeout + +The bus may get stuck in START_BUSY, so we need to reset it in case of a +timeout to clear the state. + +Works around situations like: + + bcm-iproc-2c 1803b000.i2c: transaction timed out + bcm-iproc-2c 1803b000.i2c: bus is busy + bcm-iproc-2c 1803b000.i2c: bus is busy + bcm-iproc-2c 1803b000.i2c: bus is busy + bcm-iproc-2c 1803b000.i2c: bus is busy + bcm-iproc-2c 1803b000.i2c: bus is busy + ... + +Signed-off-by: Jonas Gorski +--- + drivers/i2c/busses/i2c-bcm-iproc.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/drivers/i2c/busses/i2c-bcm-iproc.c b/drivers/i2c/busses/i2c-bcm-iproc.c +index 133d02899c6b..486e61723ed6 100644 +--- a/drivers/i2c/busses/i2c-bcm-iproc.c ++++ b/drivers/i2c/busses/i2c-bcm-iproc.c +@@ -811,6 +811,14 @@ static int bcm_iproc_i2c_xfer_wait(struct bcm_iproc_i2c_dev *iproc_i2c, + } + + if (!time_left && !iproc_i2c->xfer_is_done) { ++ if (!!(iproc_i2c_rd_reg(iproc_i2c, ++ M_CMD_OFFSET) & BIT(M_CMD_START_BUSY_SHIFT))) { ++ /* re-initialize i2c for recovery */ ++ bcm_iproc_i2c_enable_disable(iproc_i2c, false); ++ bcm_iproc_i2c_init(iproc_i2c); ++ bcm_iproc_i2c_enable_disable(iproc_i2c, true); ++ } ++ + /* flush both TX/RX FIFOs */ + val = BIT(M_FIFO_RX_FLUSH_SHIFT) | BIT(M_FIFO_TX_FLUSH_SHIFT); + iproc_i2c_wr_reg(iproc_i2c, M_FIFO_CTRL_OFFSET, val); +-- +2.47.1 + diff --git a/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-01-soc-xgs_iproc-drivers.patch b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-01-soc-xgs_iproc-drivers.patch new file mode 100644 index 00000000..eaea7af4 --- /dev/null +++ b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-01-soc-xgs_iproc-drivers.patch @@ -0,0 +1,599 @@ +From 75e91a538fa668e2709725501d306a48069121d7 Mon Sep 17 00:00:00 2001 +From: Jonas Gorski +Date: Thu, 7 Oct 2021 09:59:49 +0200 +Subject: [PATCH 01/21] soc: xgs_iproc drivers + +--- + drivers/soc/bcm/Makefile | 1 + + drivers/soc/bcm/xgs_iproc/Makefile | 1 + + drivers/soc/bcm/xgs_iproc/xgs-iproc-idm.c | 309 ++++++++++++++++++ + .../soc/bcm/xgs_iproc/xgs-iproc-misc-setup.c | 73 +++++ + drivers/soc/bcm/xgs_iproc/xgs-iproc.c | 104 ++++++ + include/linux/soc/bcm/xgs-iproc-idm.h | 21 ++ + include/linux/soc/bcm/xgs-iproc-misc-setup.h | 22 ++ + 7 files changed, 531 insertions(+) + create mode 100644 drivers/soc/bcm/xgs_iproc/Makefile + create mode 100644 drivers/soc/bcm/xgs_iproc/xgs-iproc-idm.c + create mode 100644 drivers/soc/bcm/xgs_iproc/xgs-iproc-misc-setup.c + create mode 100644 drivers/soc/bcm/xgs_iproc/xgs-iproc.c + create mode 100644 include/linux/soc/bcm/xgs-iproc-idm.h + create mode 100644 include/linux/soc/bcm/xgs-iproc-misc-setup.h + +diff --git a/drivers/soc/bcm/Makefile b/drivers/soc/bcm/Makefile +index 32424b1032c7..31c24eb24f00 100644 +--- a/drivers/soc/bcm/Makefile ++++ b/drivers/soc/bcm/Makefile +@@ -1,2 +1,3 @@ + # SPDX-License-Identifier: GPL-2.0-only + obj-$(CONFIG_SOC_BRCMSTB) += brcmstb/ ++obj-$(CONFIG_ARCH_XGS_IPROC) += xgs_iproc/ +diff --git a/drivers/soc/bcm/xgs_iproc/Makefile b/drivers/soc/bcm/xgs_iproc/Makefile +new file mode 100644 +index 000000000000..905fd1c90143 +--- /dev/null ++++ b/drivers/soc/bcm/xgs_iproc/Makefile +@@ -0,0 +1 @@ ++obj-$(CONFIG_ARCH_XGS_IPROC) += xgs-iproc-misc-setup.o xgs-iproc-idm.o xgs-iproc.o +diff --git a/drivers/soc/bcm/xgs_iproc/xgs-iproc-idm.c b/drivers/soc/bcm/xgs_iproc/xgs-iproc-idm.c +new file mode 100644 +index 000000000000..ea4e2bb80aeb +--- /dev/null ++++ b/drivers/soc/bcm/xgs_iproc/xgs-iproc-idm.c +@@ -0,0 +1,309 @@ ++/* ++ * Copyright (C) 2016 Broadcom Corporation ++ * ++ * This program is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public License as ++ * published by the Free Software Foundation version 2. ++ * ++ * This program is distributed "as is" WITHOUT ANY WARRANTY of any ++ * kind, whether express or implied; without even the implied warranty ++ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++ ++#define IPROC_IDM_COMPATIBLE "brcm,iproc-idm" ++ ++#define IDM_ERROR_LOG_ENABLE 0x33A ++#define IDM_ERROR_LOG_CLEAR 0x3 ++ ++#define IDM_ERROR_LOG_CONTROL_REG(base) (base + 0x900) ++#define IDM_ERROR_LOG_COMPLETE_REG(base) (base + 0x904) ++#define IDM_ERROR_LOG_STATUS_REG(base) (base + 0x908) ++#define IDM_ERROR_LOG_ADDR_LSB_REG(base) (base + 0x90c) ++#define IDM_ERROR_LOG_ID_REG(base) (base + 0x914) ++#define IDM_ERROR_LOG_FLAGS_REG(base) (base + 0x91c) ++#define IDM_INTERRUPT_STATUS_REG(base) (base + 0xa00) ++ ++enum support_dev_ids { ++ XGS_IPROC_HX4 = 0, ++ XGS_IPROC_KT2, ++ XGS_IPROC_HR2, ++ XGS_IPROC_GH, ++ XGS_IPROC_SB2, ++ XGS_IPROC_HR3, ++ XGS_IPROC_GH2, ++ XGS_IPROC_WH2, ++ XGS_IPROC_HX5, ++ XGS_IPROC_MAX_DEVS, ++}; ++ ++static struct xgs_iproc_dev_infos_s { ++ char dt_compat_str[32]; ++ u32 dev_id; ++ u32 dmac_reset_offset; ++} xgs_iproc_dev_infos[] = { ++ { "brcm,helix4", XGS_IPROC_HX4, 0x14800 }, ++ { "brcm,katana2", XGS_IPROC_KT2, 0x14800 }, ++ { "brcm,hurricane2", XGS_IPROC_HR2, 0x14800 }, ++ { "brcm,greyhound", XGS_IPROC_GH, 0x14800 }, ++ { "brcm,saber2", XGS_IPROC_SB2, 0xf800 }, ++ { "brcm,hurricane3", XGS_IPROC_HR3, 0xf800 }, ++ { "brcm,greyhound2", XGS_IPROC_GH2, 0xf800 }, ++ { "brcm,wolfhound2", XGS_IPROC_WH2, 0xf800 }, ++ { "brcm,helix5", XGS_IPROC_HX5, 0x10800 }, ++ { "", 0, 0 } ++}; ++ ++#define IDM_BASE_ADDR_NUM 2 ++#define IDM_BASE_ADDR_MASK 0x10000000 ++#define IDM_BASE_ADDR_AREA(val) ((val & IDM_BASE_ADDR_MASK) >> 28) ++#define IDM_OFFSET_MASK 0x0FFFFFFF ++ ++static struct xgs_iproc_idm_err_offset_s { ++ u32 ihost_s1[XGS_IPROC_MAX_DEVS]; ++ u32 ihost_s0[XGS_IPROC_MAX_DEVS]; ++ u32 axi_pcie_s0[XGS_IPROC_MAX_DEVS]; ++ u32 ddr_s1[XGS_IPROC_MAX_DEVS]; ++ u32 ddr_s2[XGS_IPROC_MAX_DEVS]; ++ u32 cmic_s0[XGS_IPROC_MAX_DEVS]; ++ u32 apby_s0[XGS_IPROC_MAX_DEVS]; ++ u32 rom_s0[XGS_IPROC_MAX_DEVS]; ++ u32 nand_idm[XGS_IPROC_MAX_DEVS]; ++ u32 qspi_idm[XGS_IPROC_MAX_DEVS]; ++ u32 a9jtag_s0[XGS_IPROC_MAX_DEVS]; ++ u32 sram_s0[XGS_IPROC_MAX_DEVS]; ++ u32 apbz_s0[XGS_IPROC_MAX_DEVS]; ++ u32 axiic_ds_3[XGS_IPROC_MAX_DEVS]; ++ u32 apbw_idm[XGS_IPROC_MAX_DEVS]; ++ u32 apbx_idm[XGS_IPROC_MAX_DEVS]; ++ u32 axiic_ds_0[XGS_IPROC_MAX_DEVS]; ++ u32 periph_s0[XGS_IPROC_MAX_DEVS]; ++ u32 genres_s0[XGS_IPROC_MAX_DEVS]; ++} xgs_iproc_idm_err_offset = { ++ /* HX4, KT2, HR2, GH, SB2, HR3, ++ GH2, WH2, HX5 */ ++ { 0x00007000, 0x00007000, 0x00007000, 0x00006000, 0x00006000, 0x00006000, ++ 0x00006000, 0x00006000, 0x0 }, /* IHOST_S1_IDM */ ++ { 0x00008000, 0x00008000, 0x00008000, 0x00007000, 0x00007000, 0x00007000, ++ 0x00007000, 0x00007000, 0x00014000 }, /* IHOST_S0_IDM */ ++ { 0x0000b000, 0x0000b000, 0x0000b000, 0x00008000, 0x00008000, 0x00008000, ++ 0x00008000, 0x00008000, 0x0000a000 }, /* AXI_PCIE_S0_IDM */ ++ { 0x00009000, 0x00009000, 0x00009000, 0x10002000, 0x10002000, 0x00004000, ++ 0x10002000, 0x00004000, 0x0001a000 }, /* DDR_S1_IDM */ ++ { 0x0000a000, 0x0000a000, 0x0000a000, 0x10003000, 0x10003000, 0x00005000, ++ 0x10003000, 0x00005000, 0x0001b000 }, /* DDR_S2_IDM */ ++ { 0x0000d000, 0x0000d000, 0x0000d000, 0x0000a000, 0x0000a000, 0x0000a000, ++ 0x0000a000, 0x0000a000, 0x0000b000 }, /* CMICD_S0_IDM */ ++ { 0x0000f000, 0x0000f000, 0x0000f000, 0x0, 0x0, 0x0, ++ 0x0, 0x0, 0x0000c000 }, /* APBY_S0_IDM */ ++ { 0x0001a000, 0x0001a000, 0x0001a000, 0x10004000, 0x10004000, 0x0001a000, ++ 0x10004000, 0x0001a000, 0x0 }, /* ROM_S0_IDM */ ++ { 0x0001b000, 0x0001b000, 0x0001b000, 0x10005000, 0x10005000, 0x0001d000, ++ 0x10005000, 0x0001d000, 0x0 }, /* NAND_IDM */ ++ { 0x0001c000, 0x0001c000, 0x0001c000, 0x10006000, 0x10006000, 0x0001f000, ++ 0x10006000, 0x0001f000, 0x0 }, /* QSPI_IDM */ ++ { 0x0001d000, 0x0001d000, 0x0001d000, 0x00019000, 0x00019000, 0x00019000, ++ 0x00019000, 0x00019000, 0x0 }, /* A9JTAG_S0_IDM */ ++ { 0x00020000, 0x00020000, 0x00020000, 0x0001b000, 0x0001b000, 0x0, ++ 0x0001b000, 0x0, 0x0 }, /* SRAM_S0_IDM */ ++ { 0x00021000, 0x00021000, 0x00021000, 0x0, 0x0, 0x0, ++ 0x0, 0x0, 0x00017000 }, /* APBZ_S0_IDM */ ++ { 0x00023000, 0x00023000, 0x00023000, 0x0001e000, 0x0001e000, 0x0, ++ 0x0001e000, 0x0, 0x0 }, /* AXIIC_DS_3_IDM */ ++ { 0x00031000, 0x00031000, 0x00031000, 0x0, 0x0, 0x0, ++ 0x0, 0x0, 0x0 }, /* APBW_IDM */ ++ { 0x00032000, 0x00032000, 0x00032000, 0x00030000, 0x00030000, 0x00030000, ++ 0x00030000, 0x00030000, 0x0 }, /* APBX_IDM */ ++ { 0x00041000, 0x00041000, 0x00041000, 0x00020000, 0x00020000, 0x00020000, ++ 0x00020000, 0x00020000, 0x00053000 }, /* AXIIC_DS_0_IDM */ ++ { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ++ 0x0, 0x0, 0x00018000 }, /* PERIPH_S0_IDM */ ++ { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ++ 0x0, 0x0, 0x00019000 }, /* GENRES_S0_IDM */ ++}; ++ ++struct xgs_iproc_idm { ++ u32 curr_dev; ++ void __iomem *idm_base[IDM_BASE_ADDR_NUM]; ++ u32 dmac_reset_offset; ++}; ++ ++static struct xgs_iproc_idm xgs_iproc_idm = { 0 }; ++ ++/********************************************************************************** ++***********************************************************************************/ ++void inline __iomem *get_iproc_idm_base(int idx) ++{ ++ if (idx >= IDM_BASE_ADDR_NUM) ++ return NULL; ++ ++ return xgs_iproc_idm.idm_base[idx]; ++} ++ ++int xgs_iproc_idm_dmac_reset(void) ++{ ++ void __iomem *reset_base = NULL; ++ ++ if (xgs_iproc_idm.idm_base[0] == NULL || ++ xgs_iproc_idm.dmac_reset_offset == 0) { ++ return -EINVAL; ++ } ++ ++ reset_base = xgs_iproc_idm.idm_base[0] + xgs_iproc_idm.dmac_reset_offset; ++ writel(readl(reset_base) & ~0x1, reset_base); ++ ++ return 0; ++} ++ ++static int idm_error_log_dump(void __iomem *idm_addr) ++{ ++ void __iomem *reg_addr; ++ u32 val; ++ ++ reg_addr = (void __iomem *)IDM_ERROR_LOG_STATUS_REG(idm_addr); ++ if ((val = readl(reg_addr)) > 0) { ++ printk(KERN_DEBUG "%s: %d, %d\n", __func__, __LINE__, val); ++ ++ reg_addr = (void __iomem *)IDM_ERROR_LOG_ADDR_LSB_REG(idm_addr); ++ val = readl(reg_addr); ++ printk(KERN_DEBUG "%s: %d, %08x\n", __func__, __LINE__, val); ++ ++ reg_addr = (void __iomem *)IDM_ERROR_LOG_ID_REG(idm_addr); ++ val = readl(reg_addr); ++ printk(KERN_DEBUG "%s: %d, %08x\n", __func__, __LINE__, val); ++ ++ reg_addr = (void __iomem *)IDM_ERROR_LOG_FLAGS_REG(idm_addr); ++ val = readl(reg_addr); ++ printk(KERN_DEBUG "%s: %d, %08x\n", __func__, __LINE__, val); ++ ++ reg_addr = (void __iomem *)IDM_ERROR_LOG_COMPLETE_REG(idm_addr); ++ writel(IDM_ERROR_LOG_CLEAR, reg_addr); ++ ++ reg_addr = (void __iomem *)IDM_ERROR_LOG_STATUS_REG(idm_addr); ++ val = readl(reg_addr); ++ printk(KERN_DEBUG "%s: %d, %d\n", __func__, __LINE__, val); ++ } ++ ++ return 0; ++} ++ ++static irqreturn_t idm_timeout_handler(int val, void *ptr) ++{ ++ u32 idx, offset; ++ void __iomem *idm_addr; ++ u32 i, cnt, *idm_item; ++ ++ if (xgs_iproc_idm.curr_dev == XGS_IPROC_MAX_DEVS) ++ return IRQ_HANDLED; ++ ++ cnt = sizeof(struct xgs_iproc_idm_err_offset_s) / (sizeof(u32) * XGS_IPROC_MAX_DEVS); ++ for (i = 0; i < cnt; i++) { ++ idm_item = (u32*)((u32*)(&xgs_iproc_idm_err_offset) + i * XGS_IPROC_MAX_DEVS); ++ offset = idm_item[xgs_iproc_idm.curr_dev]; ++ if (offset != 0) { ++ idx = IDM_BASE_ADDR_AREA(offset); ++ if (xgs_iproc_idm.idm_base[idx]) { ++ idm_addr = xgs_iproc_idm.idm_base[idx] + (offset & IDM_OFFSET_MASK); ++ idm_error_log_dump(idm_addr); ++ } ++ } ++ } ++ ++ return IRQ_HANDLED; ++} ++ ++static int init_request_idm_timeout(void) ++{ ++ void __iomem *idm_addr; ++ void __iomem *reg_addr; ++ u32 i, cnt, *idm_item; ++ u32 idx, offset; ++ ++ if (xgs_iproc_idm.curr_dev == XGS_IPROC_MAX_DEVS) ++ return IRQ_HANDLED; ++ ++ /* clear all pending idm interrupts */ ++ idm_timeout_handler(0, NULL); ++ ++ /* enable idm error log for all slaves */ ++ cnt = sizeof(struct xgs_iproc_idm_err_offset_s) / (sizeof(u32) * XGS_IPROC_MAX_DEVS); ++ for (i = 0; i < cnt; i++) { ++ idm_item = (u32*)((u32*)(&xgs_iproc_idm_err_offset) + i * XGS_IPROC_MAX_DEVS); ++ offset = idm_item[xgs_iproc_idm.curr_dev]; ++ if (offset != 0) { ++ idx = IDM_BASE_ADDR_AREA(offset); ++ if (xgs_iproc_idm.idm_base[idx]) { ++ idm_addr = xgs_iproc_idm.idm_base[idx] + (offset & IDM_OFFSET_MASK); ++ reg_addr = (void __iomem *)IDM_ERROR_LOG_CONTROL_REG(idm_addr); ++ writel(IDM_ERROR_LOG_ENABLE, reg_addr); ++ } ++ } ++ } ++ ++ return 0; ++} ++ ++int xgs_iproc_idm_init(void) ++{ ++ struct device_node *np; ++ int idx, ret = 0; ++ int irq, irqs_total; ++ ++ /* Get IDM base addr */ ++ np = of_find_compatible_node(NULL, NULL, IPROC_IDM_COMPATIBLE); ++ if (!np) { ++ pr_err("%s: No IDM node found\n", __func__); ++ return -ENODEV; ++ } ++ ++ xgs_iproc_idm.idm_base[0] = of_iomap(np, 0); ++ if (!xgs_iproc_idm.idm_base[0]) { ++ return -ENOMEM; ++ } ++ ++ /* ++ * Second IDM base addr required for GH/SB2/GH2 IDM timeout handling. ++ * For other devices, the second IDM base addr is not used. So, it is ++ * fine even the addr is NULL. ++ */ ++ xgs_iproc_idm.idm_base[1] = of_iomap(np, 1); ++ ++ /* Get the current platform */ ++ idx = 0; ++ while(1) { ++ if (strlen(xgs_iproc_dev_infos[idx].dt_compat_str) == 0) ++ return -EINVAL; ++ if (of_machine_is_compatible(xgs_iproc_dev_infos[idx].dt_compat_str)) ++ break; ++ idx++; ++ } ++ xgs_iproc_idm.curr_dev = xgs_iproc_dev_infos[idx].dev_id; ++ xgs_iproc_idm.dmac_reset_offset = xgs_iproc_dev_infos[idx].dmac_reset_offset; ++ ++ /* Setup idm timeout handler for debug purpose */ ++ init_request_idm_timeout(); ++ ++ irqs_total = of_irq_count(np); ++ if (!irqs_total) ++ return -EINVAL; ++ ++ for (idx = 0; idx < irqs_total; idx++) { ++ irq = of_irq_get(np, idx); ++ ret = request_irq(irq, (irq_handler_t)idm_timeout_handler, ++ IRQF_PERCPU, "IDM", NULL); ++ if (ret != 0) ++ printk(KERN_WARNING "%s: request_irq return = %d\n", __func__, ret); ++ } ++ ++ return ret; ++} +diff --git a/drivers/soc/bcm/xgs_iproc/xgs-iproc-misc-setup.c b/drivers/soc/bcm/xgs_iproc/xgs-iproc-misc-setup.c +new file mode 100644 +index 000000000000..23c5142b69e1 +--- /dev/null ++++ b/drivers/soc/bcm/xgs_iproc/xgs-iproc-misc-setup.c +@@ -0,0 +1,73 @@ ++/* ++ * Copyright (C) 2016 Broadcom Corporation ++ * ++ * This program is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public License as ++ * published by the Free Software Foundation version 2. ++ * ++ * This program is distributed "as is" WITHOUT ANY WARRANTY of any ++ * kind, whether express or implied; without even the implied warranty ++ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ */ ++ ++#include ++#include ++#include ++#include ++ ++#define IPROC_DMU_PCU_COMPATIBLE "brcm,iproc-dmu-pcu" ++#define IPROC_WRAP_CTRL_COMPATIBLE "brcm,iproc-wrap-ctrl" ++#define KT2_WRAP_MISC_COMPATIBLE "brcm,kt2-wrap-misc" ++ ++static void __iomem *iproc_dmu_pcu_base = NULL; ++static void __iomem *iproc_wrap_ctrl_base = NULL; ++ ++extern void request_idm_timeout_interrupts(struct platform_device *); ++ ++void inline __iomem *get_iproc_dmu_pcu_base(void) ++{ ++ return iproc_dmu_pcu_base; ++} ++ ++void inline __iomem *get_iproc_wrap_ctrl_base(void) ++{ ++ return iproc_wrap_ctrl_base; ++} ++ ++int inline is_wh2_amac_sgmii(void) ++{ ++ return readl(get_iproc_wrap_ctrl_base() + 0xa8) & 0x04; ++} ++ ++int xgs_iproc_misc_setup(void) ++{ ++ struct device_node *np; ++ void __iomem *wrap_misc_reg = NULL; ++ u32 tmp; ++ u32 wrap_misc_offset, serdes_ctrl_sel, serdes_mdio_sel; ++ ++ /* Get DMU/PCU base addr */ ++ np = of_find_compatible_node(NULL, NULL, IPROC_DMU_PCU_COMPATIBLE); ++ if (!np) { ++ pr_err("%s: No dmu/pcu node found\n", __func__); ++ return -ENODEV ; ++ } ++ ++ iproc_dmu_pcu_base = of_iomap(np, 0); ++ if (!iproc_dmu_pcu_base) ++ return -ENOMEM; ++ ++ /* Get WRAP CTRL base addr */ ++ np = of_find_compatible_node(NULL, NULL, IPROC_WRAP_CTRL_COMPATIBLE); ++ if (!np) { ++ pr_err("%s: No wrap ctrl node found\n", __func__); ++ return -ENODEV; ++ } ++ ++ iproc_wrap_ctrl_base = of_iomap(np, 0); ++ if (!iproc_wrap_ctrl_base) ++ return -ENOMEM; ++ ++ return 1; ++} +diff --git a/drivers/soc/bcm/xgs_iproc/xgs-iproc.c b/drivers/soc/bcm/xgs_iproc/xgs-iproc.c +new file mode 100644 +index 000000000000..fdce5f3aca16 +--- /dev/null ++++ b/drivers/soc/bcm/xgs_iproc/xgs-iproc.c +@@ -0,0 +1,105 @@ ++/* ++ * Copyright (C) 2016 Broadcom ++ * ++ * This program is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public License as ++ * published by the Free Software Foundation version 2. ++ * ++ * This program is distributed "as is" WITHOUT ANY WARRANTY of any ++ * kind, whether express or implied; without even the implied warranty ++ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ */ ++ ++/* Currently, this driver is only support for Helix5. As for the other ++ * XGS IProc chips, the initial code and reset handler are defined in ++ * mach-iproc/board_bu.c ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++ ++#define DMU_CRU_RESET_OFFSET 0x200 ++ ++static int xgs_iproc_restart(struct notifier_block *nb, ++ unsigned long action, void *data) ++{ ++ void * __iomem reg_addr; ++ u32 val; ++ ++ /* CRU_RESET register */ ++ reg_addr = get_iproc_dmu_pcu_base() + DMU_CRU_RESET_OFFSET; ++ ++ /* set iproc_reset_n to 0 */ ++ val = readl(reg_addr); ++ val &= ~((u32) 1 << 1); ++ ++ writel(val, reg_addr); ++ ++ /* Wait for reset */ ++ while (1) { ++ cpu_do_idle(); ++ } ++ ++ return 0; ++} ++ ++static struct notifier_block xgs_iproc_nb = { ++ .notifier_call = xgs_iproc_restart, ++ .priority = 192, ++}; ++ ++static char * xgs_iproc_dt_compat_str[] = { ++ "brcm,helix5", ++ "", ++}; ++ ++static int __init xgs_iproc_init(void) ++{ ++ int ret; ++ int idx = 0; ++ ++ while(1) { ++ if (strlen(xgs_iproc_dt_compat_str[idx]) == 0) { ++ return -EINVAL; ++ } ++ if (of_machine_is_compatible(xgs_iproc_dt_compat_str[idx])) { ++ break; ++ } ++ idx++; ++ } ++ ++ ret = xgs_iproc_misc_setup(); ++ if (ret < 0) { ++ return ret; ++ } ++ ++ /* Init idm and setup idm timeout handler for debug purpose */ ++ /* xgs_iproc_idm_init should be init before reset dmac */ ++ ret = xgs_iproc_idm_init(); ++ if (ret < 0) { ++ return ret; ++ } ++ ++ /* FIXME, need confirm whether we need reset the DMAC or not */ ++ xgs_iproc_idm_dmac_reset(); ++ ++ /* Populate platform devices */ ++ of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); ++ ++ if (register_reboot_notifier(&xgs_iproc_nb)) { ++ printk("Register reboot handler failed\n"); ++ } ++ ++ return 0; ++} ++arch_initcall(xgs_iproc_init); ++ +diff --git a/include/linux/soc/bcm/xgs-iproc-idm.h b/include/linux/soc/bcm/xgs-iproc-idm.h +new file mode 100644 +index 000000000000..5c8726d9693a +--- /dev/null ++++ b/include/linux/soc/bcm/xgs-iproc-idm.h +@@ -0,0 +1,21 @@ ++/* ++ * Copyright (C) 2016 Broadcom Corporation ++ * ++ * This program is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public License as ++ * published by the Free Software Foundation version 2. ++ * ++ * This program is distributed "as is" WITHOUT ANY WARRANTY of any ++ * kind, whether express or implied; without even the implied warranty ++ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ */ ++ ++#ifndef XGS_IPROC_IDM_H ++#define XGS_IPROC_IDM_H ++ ++extern void inline __iomem *get_iproc_idm_base(int idx); ++extern int xgs_iproc_idm_dmac_reset(void); ++extern int xgs_iproc_idm_init(void); ++ ++#endif /* XGS_IPROC_IDM_H */ +diff --git a/include/linux/soc/bcm/xgs-iproc-misc-setup.h b/include/linux/soc/bcm/xgs-iproc-misc-setup.h +new file mode 100644 +index 000000000000..7d38a51c2221 +--- /dev/null ++++ b/include/linux/soc/bcm/xgs-iproc-misc-setup.h +@@ -0,0 +1,22 @@ ++/* ++ * Copyright (C) 2016 Broadcom Corporation ++ * ++ * This program is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public License as ++ * published by the Free Software Foundation version 2. ++ * ++ * This program is distributed "as is" WITHOUT ANY WARRANTY of any ++ * kind, whether express or implied; without even the implied warranty ++ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ */ ++ ++#ifndef XGS_IPROC_MISC_SETUP_H ++#define XGS_IPROC_MISC_SETUP_H ++ ++extern int xgs_iproc_misc_setup(void); ++extern void __iomem *get_iproc_wrap_ctrl_base(void); ++extern void __iomem *get_iproc_dmu_pcu_base(void); ++extern int is_wh2_amac_sgmii(void); ++ ++#endif /* XGS_IPROC_MISC_SETUP_H */ +-- +2.47.1 + diff --git a/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-02-arm-add-iproc-xgs.patch b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-02-arm-add-iproc-xgs.patch new file mode 100644 index 00000000..475adfad --- /dev/null +++ b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-02-arm-add-iproc-xgs.patch @@ -0,0 +1,6432 @@ +From 970fab9182ae1fa443ddb7b29642fc03c3c28afb Mon Sep 17 00:00:00 2001 +From: Jonas Gorski +Date: Thu, 7 Oct 2021 09:48:32 +0200 +Subject: [PATCH 02/21] arm: add iproc-xgs + +--- + arch/arm/Kconfig | 2 + + arch/arm/Makefile | 1 + + arch/arm/boot/dts/broadcom/Makefile | 18 + + arch/arm/boot/dts/broadcom/bcm-greyhound.dtsi | 408 ++++++++++++++ + .../arm/boot/dts/broadcom/bcm-greyhound2.dtsi | 429 +++++++++++++++ + arch/arm/boot/dts/broadcom/bcm-helix4.dtsi | 512 ++++++++++++++++++ + arch/arm/boot/dts/broadcom/bcm-hr2.dtsi | 2 + + .../arm/boot/dts/broadcom/bcm-hurricane3.dtsi | 416 ++++++++++++++ + arch/arm/boot/dts/broadcom/bcm-katana2.dtsi | 480 ++++++++++++++++ + arch/arm/boot/dts/broadcom/bcm-saber2.dtsi | 397 ++++++++++++++ + .../arm/boot/dts/broadcom/bcm-wolfhound2.dtsi | 385 +++++++++++++ + arch/arm/boot/dts/broadcom/bcm95341x.dts | 220 ++++++++ + arch/arm/boot/dts/broadcom/bcm953444.dts | 135 +++++ + arch/arm/boot/dts/broadcom/bcm953547.dts | 167 ++++++ + arch/arm/boot/dts/broadcom/bcm956160.dts | 225 ++++++++ + arch/arm/boot/dts/broadcom/bcm956170.dts | 248 +++++++++ + arch/arm/boot/dts/broadcom/bcm956260.dts | 203 +++++++ + arch/arm/boot/dts/broadcom/bcm956340.dts | 230 ++++++++ + arch/arm/boot/dts/broadcom/bcm956450.dts | 229 ++++++++ + arch/arm/boot/dts/broadcom/greyhound.its | 62 +++ + arch/arm/boot/dts/broadcom/greyhound2.its | 62 +++ + arch/arm/boot/dts/broadcom/helix4.its | 42 ++ + arch/arm/boot/dts/broadcom/hurricane3.its | 59 ++ + arch/arm/boot/dts/broadcom/katana2.its | 43 ++ + arch/arm/boot/dts/broadcom/saber2.its | 42 ++ + arch/arm/boot/dts/broadcom/wolfhound2.its | 60 ++ + .../arm/boot/dts/broadcom/xgs-iproc-arm32.its | 163 ++++++ + arch/arm/configs/iproc_arm32_be_defconfig | 210 +++++++ + arch/arm/configs/iproc_arm32_defconfig | 207 +++++++ + arch/arm/mach-iproc/Kconfig | 77 +++ + arch/arm/mach-iproc/Makefile | 2 + + arch/arm/mach-iproc/board_bu.c | 95 ++++ + arch/arm/mach-iproc/platsmp.c | 309 +++++++++++ + 33 files changed, 6140 insertions(+) + create mode 100644 arch/arm/boot/dts/broadcom/bcm-greyhound.dtsi + create mode 100644 arch/arm/boot/dts/broadcom/bcm-greyhound2.dtsi + create mode 100644 arch/arm/boot/dts/broadcom/bcm-helix4.dtsi + create mode 100644 arch/arm/boot/dts/broadcom/bcm-hurricane3.dtsi + create mode 100644 arch/arm/boot/dts/broadcom/bcm-katana2.dtsi + create mode 100644 arch/arm/boot/dts/broadcom/bcm-saber2.dtsi + create mode 100644 arch/arm/boot/dts/broadcom/bcm-wolfhound2.dtsi + create mode 100644 arch/arm/boot/dts/broadcom/bcm95341x.dts + create mode 100644 arch/arm/boot/dts/broadcom/bcm953444.dts + create mode 100644 arch/arm/boot/dts/broadcom/bcm953547.dts + create mode 100644 arch/arm/boot/dts/broadcom/bcm956160.dts + create mode 100644 arch/arm/boot/dts/broadcom/bcm956170.dts + create mode 100644 arch/arm/boot/dts/broadcom/bcm956260.dts + create mode 100644 arch/arm/boot/dts/broadcom/bcm956340.dts + create mode 100644 arch/arm/boot/dts/broadcom/bcm956450.dts + create mode 100644 arch/arm/boot/dts/broadcom/greyhound.its + create mode 100644 arch/arm/boot/dts/broadcom/greyhound2.its + create mode 100644 arch/arm/boot/dts/broadcom/helix4.its + create mode 100644 arch/arm/boot/dts/broadcom/hurricane3.its + create mode 100644 arch/arm/boot/dts/broadcom/katana2.its + create mode 100644 arch/arm/boot/dts/broadcom/saber2.its + create mode 100644 arch/arm/boot/dts/broadcom/wolfhound2.its + create mode 100644 arch/arm/boot/dts/broadcom/xgs-iproc-arm32.its + create mode 100644 arch/arm/configs/iproc_arm32_be_defconfig + create mode 100644 arch/arm/configs/iproc_arm32_defconfig + create mode 100644 arch/arm/mach-iproc/Kconfig + create mode 100644 arch/arm/mach-iproc/Makefile + create mode 100644 arch/arm/mach-iproc/board_bu.c + create mode 100644 arch/arm/mach-iproc/platsmp.c + +diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig +index 202397be76d8..e3ecfa931de3 100644 +--- a/arch/arm/Kconfig ++++ b/arch/arm/Kconfig +@@ -395,6 +395,8 @@ source "arch/arm/mach-hpe/Kconfig" + + source "arch/arm/mach-imx/Kconfig" + ++source "arch/arm/mach-iproc/Kconfig" ++ + source "arch/arm/mach-ixp4xx/Kconfig" + + source "arch/arm/mach-keystone/Kconfig" +diff --git a/arch/arm/Makefile b/arch/arm/Makefile +index aafebf145738..cf7d4f973875 100644 +--- a/arch/arm/Makefile ++++ b/arch/arm/Makefile +@@ -223,6 +223,7 @@ machine-$(CONFIG_ARCH_SUNXI) += sunxi + machine-$(CONFIG_ARCH_TEGRA) += tegra + machine-$(CONFIG_ARCH_U8500) += ux500 + machine-$(CONFIG_ARCH_VT8500) += vt8500 ++machine-$(CONFIG_ARCH_XGS_IPROC) += iproc + machine-$(CONFIG_ARCH_ZYNQ) += zynq + machine-$(CONFIG_PLAT_VERSATILE) += versatile + machine-$(CONFIG_PLAT_SPEAR) += spear +diff --git a/arch/arm/boot/dts/broadcom/Makefile b/arch/arm/boot/dts/broadcom/Makefile +index 5881bcc95eba..3ac7cc34c3e2 100644 +--- a/arch/arm/boot/dts/broadcom/Makefile ++++ b/arch/arm/boot/dts/broadcom/Makefile +@@ -126,3 +126,21 @@ dtb-$(CONFIG_ARCH_BCM_NSP) += \ + bcm958625k.dtb + dtb-$(CONFIG_ARCH_BRCMSTB) += \ + bcm7445-bcm97445svmb.dtb ++dtb-$(CONFIG_MACH_HX4) += bcm956340.dtb ++dtb-$(CONFIG_MACH_KT2) += bcm956450.dtb ++dtb-$(CONFIG_MACH_GH) += bcm95341x.dtb ++dtb-$(CONFIG_MACH_GH2) += bcm956170.dtb ++dtb-$(CONFIG_MACH_SB2) += bcm956260.dtb ++dtb-$(CONFIG_MACH_HR3) += \ ++ bcm956160.dtb \ ++ bcm953444.dtb ++dtb-$(CONFIG_MACH_WH2) += bcm953547.dtb ++dtb-$(CONFIG_XGS_IPROC_ARM32_PLATFORM) += \ ++ bcm956340.dtb \ ++ bcm956450.dtb \ ++ bcm95341x.dtb \ ++ bcm956260.dtb \ ++ bcm956160.dtb \ ++ bcm953444.dtb \ ++ bcm956170.dtb \ ++ bcm953547.dtb +diff --git a/arch/arm/boot/dts/broadcom/bcm-greyhound.dtsi b/arch/arm/boot/dts/broadcom/bcm-greyhound.dtsi +new file mode 100644 +index 000000000000..98d5fe265600 +--- /dev/null ++++ b/arch/arm/boot/dts/broadcom/bcm-greyhound.dtsi +@@ -0,0 +1,408 @@ ++/* ++ * BSD LICENSE ++ * ++ * Copyright(c) 2016 Broadcom Corporation. All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * ++ * * Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * * Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in ++ * the documentation and/or other materials provided with the ++ * distribution. ++ * * Neither the name of Broadcom Corporation nor the names of its ++ * contributors may be used to endorse or promote products derived ++ * from this software without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ */ ++ ++#include ++#include ++ ++/ { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ model = "Broadcom GH iProc"; ++ compatible = "brcm,greyhound"; ++ interrupt-parent = <&gic>; ++ ++ cpus { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ cpu@0 { ++ device_type = "cpu"; ++ compatible = "arm,cortex-a9"; ++ next-level-cache = <&L2>; ++ reg = <0x0>; ++ }; ++ }; ++ ++ core { ++ compatible = "simple-bus"; ++ ranges = <0x00000000 0x19000000 0x00023000>; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ ++ a9pll: arm_clk@00000 { ++ #clock-cells = <0>; ++ compatible = "brcm,xgs-iproc-armpll"; ++ clocks = <&osc>; ++ /*clocks = <&osc_50M>;*/ /* 50MHZ crystal/oscillator */ ++ reg = <0x0 0x1000>; ++ }; ++ ++ gic: interrupt-controller@21000 { ++ compatible = "arm,cortex-a9-gic"; ++ #interrupt-cells = <3>; ++ interrupt-controller; ++ reg = <0x21000 0x1000>, <0x20100 0x100>; ++ }; ++ ++ twd-timer@20600 { ++ compatible = "arm,cortex-a9-twd-timer"; ++ reg = <0x20600 0x100>; ++ interrupts = ; ++ clocks = <&periph_clk>; ++ }; ++ ++ timer@20200 { ++ compatible = "arm,cortex-a9-global-timer"; ++ reg = <0x20200 0x100>; ++ interrupts = ; ++ clocks = <&periph_clk>; ++ }; ++ ++ L2: l2-cache { ++ compatible = "arm,pl310-cache"; ++ reg = <0x22000 0x1000>; ++ cache-unified; ++ cache-level = <2>; ++ arm,filter-ranges = <0x60000000 0x80000000>; ++ }; ++ }; ++ ++ clocks { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ ranges; ++ ++ osc: oscillator { ++ #clock-cells = <0>; ++ compatible = "fixed-clock"; ++ clock-frequency = <25000000>; ++ }; ++ ++ /* 50MHZ crystal/oscillator clock source */ ++ /* ++ osc_50M: oscillator_50M { ++ #clock-cells = <0>; ++ compatible = "fixed-clock"; ++ clock-frequency = <50000000>; ++ }; ++ */ ++ ++ periph_clk: periph_clk { ++ #clock-cells = <0>; ++ compatible = "fixed-factor-clock"; ++ clocks = <&a9pll>; ++ clock-div = <2>; ++ clock-mult = <1>; ++ }; ++ ++ iproc_axi_clk: iproc_axi_clk@0x1800fc00 { ++ #clock-cells = <0>; ++ compatible = "brcm,xgs-iproc-axi-clk"; ++ clocks = <&osc>; ++ reg = <0x1800fc00 0x1c>; ++ }; ++ ++ iproc_apb_clk: iproc_apb_clk { ++ #clock-cells = <0>; ++ compatible = "fixed-factor-clock"; ++ clocks = <&iproc_axi_clk>; ++ clock-div = <4>; ++ clock-mult = <1>; ++ }; ++ }; ++ ++ axi { ++ compatible = "simple-bus"; ++ ranges; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ ++ uart0: serial@18020000 { ++ compatible = "snps,dw-apb-uart"; ++ reg = <0x18020000 0x100>; ++ interrupts = ; ++ clocks = <&iproc_apb_clk>; ++ reg-io-width = <4>; ++ reg-shift = <2>; ++ status = "disabled"; ++ }; ++ ++ uart1: serial@18021000 { ++ compatible = "snps,dw-apb-uart"; ++ reg = <0x18021000 0x100>; ++ interrupts = ; ++ clocks = <&iproc_apb_clk>; ++ reg-io-width = <4>; ++ reg-shift = <2>; ++ status = "disabled"; ++ }; ++ ++ gmac0: ethernet@18042000 { ++ compatible = "brcm,xgs-iproc-amac"; ++ reg = <0x18042000 0x1000>, ++ <0x18110000 0x1000>; ++ reg-names = "amac_base", "idm_base"; ++ interrupts = ; ++ status = "disabled"; ++ }; ++ ++ gpio_ccg: gpio@1800a000 { ++ compatible = "brcm,iproc-gpio-ccg"; ++ #gpio-cells = <2>; ++ reg = gpio: <0x1800a000 0x50>; ++ ngpios = <12>; ++ pin-reg-bit-shift = <4>; ++ pin-base = <4>; ++ gpio-controller; ++ interrupt-controller; ++ #interrupt-cells = <2>; ++ interrupts = ; ++ status = "disabled"; ++ }; ++ ++ usbphy0: usbphy0 { ++ #phy-cells = <0>; ++ compatible = "brcm,usb-phy-gh"; ++ reg = idm_usb2h: <0x18115000 0x1000>, ++ idm_usb2d: <0x18111000 0x1000>; ++ vbus-gpios = <&gpio_ccg 6 GPIO_ACTIVE_HIGH>; ++ status = "disabled"; ++ }; ++ ++ ehci0: usb@18048000 { ++ compatible = "generic-ehci"; ++ reg = <0x18048000 0x800>; ++ interrupts = ; ++ usb-phy = <&usbphy0>; ++ status = "disabled"; ++ }; ++ ++ ohci0: usb@18048800 { ++ compatible = "generic-ohci"; ++ reg = <0x18048800 0x800>; ++ interrupts = ; ++ usb-phy = <&usbphy0>; ++ /* Over Current Protect Mode fix */ ++ iproc-ocpm-fix; ++ status = "disabled"; ++ }; ++ ++ usbd: usbd@1804c000 { ++ compatible = "brcm,usbd-xgs-iproc"; ++ reg = <0x1804c000 0x2000>; ++ interrupts = ; ++ usb-phy = <&usbphy0>; ++ status = "disabled"; ++ }; ++ ++ nand: nand@18046000 { ++ compatible = "brcm,nand-iproc", "brcm,brcmnand-v6.1"; ++ reg = <0x18046000 0x600>, ++ <0xf8105408 0x10>, ++ <0x18046f00 0x20>; ++ reg-names = "nand", "iproc-idm", "iproc-ext"; ++ interrupts = ; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ brcm,nand-has-wp; ++ status = "disabled"; ++ }; ++ ++ qspi: spi@18047000 { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ compatible = "brcm,spi-bcm-qspi", "brcm,spi-xgs-iproc-qspi"; ++ reg = <0x18047200 0x188>, ++ <0x18047000 0x124>, ++ <0xf8106408 0x004>, ++ <0x180473a0 0x01c>, ++ <0x1800e000 0x004>; ++ reg-names = "mspi", "bspi", "intr_regs", "intr_status_reg", "cru_ctrl"; ++ interrupts = ; ++ num-cs = <2>; ++ clocks = <&iproc_apb_clk>; ++ status = "disabled"; ++ }; ++ ++ i2c0: i2c@18008000 { ++ compatible = "brcm,iproc-i2c"; ++ reg = <0x18008000 0x100>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ interrupts = ; ++ clock-frequency = <100000>; ++ status = "disabled"; ++ }; ++ ++ mdio_int: mdio_int@18002000 { ++ compatible = "brcm,iproc-ccg-mdio"; ++ reg = <0x18002000 0x1000>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ bus-type = "internal"; ++ clocks = <&iproc_apb_clk>; ++ status = "disabled"; ++ }; ++ ++ /* cmicd cmic_common mdio */ ++ mdio_ext: mdio_ext@03210000 { ++ compatible = "brcm,iproc-cmicd-mdio"; ++ reg = <0x03210000 0x1000>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ #bus-id = <2>; ++ bus-type = "external"; ++ clocks = <&iproc_apb_clk>; ++ status = "disabled"; ++ }; ++ ++ pnor_flash: pnor_flash@18045000 { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ compatible = "brcm,iproc-nor"; ++ reg = nor_regs: <0x18045000 0x1000>, ++ nor_mem: <0xE8000000 0x8000000>, ++ nor_strap: <0x18000a5c 0x4>; ++ status = "disabled"; ++ }; ++ ++ hwrng: hwrng@18032000 { ++ compatible = "brcm,iproc-rng200"; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ reg = <0x18032000 0x1000>; ++ status = "disabled"; ++ }; ++ ++ iproc_wdt: iproc_wdt@18009000 { ++ compatible = "arm,sp805", "arm,primecell"; ++ reg = iproc_wdt_base: <0x18009000 0x1000>, ++ iproc_reset_reg: <0x1800f014 0x4>; ++ wdt_boot_status_bit = <0x0>; ++ clocks = <&iproc_apb_clk>; ++ clock-names = "apb_pclk"; ++ status = "disabled"; ++ }; ++ ++ dmac0: dma@18040000 { ++ compatible = "arm,pl330", "arm,primecell"; ++ reg = pl330_base: <0x18040000 0x1000>; ++ interrupts = , ++ , ++ , ++ , ++ , ++ , ++ , ++ ; ++ clocks = <&iproc_apb_clk>; ++ clock-names = "apb_pclk"; ++ #dma-cells = <1>; ++ #dma-channels = <8>; ++ #dma-requests = <16>; ++ status = "disabled"; ++ }; ++ ++ /* cmicd */ ++ iproc_cmicd: iproc_cmicd@03200000 { ++ compatible = "brcm,iproc-cmicd"; ++ reg = <0x03200000 0x100000>; ++ interrupts = ; ++ status = "disabled"; ++ }; ++ }; ++ ++ pcie0: pcie@18012000 { ++ compatible = "brcm,iproc-pcie"; ++ reg = <0x18012000 0x1000>; ++ linux,pci-domain = <0>; ++ ++ #interrupt-cells = <1>; ++ interrupt-map-mask = <0 0 0 0>; ++ interrupt-map = <0 0 0 0 &gic GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>; ++ ++ #address-cells = <3>; ++ #size-cells = <2>; ++ device_type = "pci"; ++ ++ /* ++ * non-prefetchable mem space, pcie addr 0x0 0x20000000, ++ * cpu addr 0x20000000, size 0x0 0x20000000 ++ */ ++ ranges = <0x82000000 0 0x20000000 0x20000000 0 0x20000000>; ++ wa-list = "pcie_rc", "pcie_perst"; ++ status = "disabled"; ++ ++ msi-parent = <&msi0>; ++ msi0: msi@18012000 { ++ compatible = "brcm,iproc-msi"; ++ msi-controller; ++ interrupt-parent = <&gic>; ++ interrupts = , ++ , ++ , ++ ; ++ }; ++ }; ++ ++ dmu_pcu: dmu_pcu@1800f000 { ++ compatible = "brcm,iproc-dmu-pcu"; ++ reg = <0x1800f000 0xc00>; ++ }; ++ ++ iproc_wrap_ctrl: iproc_wrap_ctrl@1800fc00 { ++ compatible = "brcm,iproc-wrap-ctrl"; ++ reg = <0x1800fc00 0x100>; ++ }; ++ ++ iproc_idm: iproc_idm@18100000 { ++ compatible = "brcm,iproc-idm"; ++ reg = idm0: <0x18100000 0x100000>, ++ idm1: <0xf8100000 0x100000>; ++ interrupts = , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ ; ++ }; ++}; +diff --git a/arch/arm/boot/dts/broadcom/bcm-greyhound2.dtsi b/arch/arm/boot/dts/broadcom/bcm-greyhound2.dtsi +new file mode 100644 +index 000000000000..ae8655c66961 +--- /dev/null ++++ b/arch/arm/boot/dts/broadcom/bcm-greyhound2.dtsi +@@ -0,0 +1,429 @@ ++/* ++ * BSD LICENSE ++ * ++ * Copyright(c) 2016 Broadcom Corporation. All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * ++ * * Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * * Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in ++ * the documentation and/or other materials provided with the ++ * distribution. ++ * * Neither the name of Broadcom Corporation nor the names of its ++ * contributors may be used to endorse or promote products derived ++ * from this software without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ */ ++ ++#include ++#include ++ ++/ { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ model = "Broadcom GH2 iProc"; ++ compatible = "brcm,greyhound2"; ++ interrupt-parent = <&gic>; ++ ++ cpus { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ cpu@0 { ++ device_type = "cpu"; ++ compatible = "arm,cortex-a9"; ++ next-level-cache = <&L2>; ++ reg = <0x0>; ++ }; ++ }; ++ ++ core { ++ compatible = "simple-bus"; ++ ranges = <0x00000000 0x19000000 0x00023000>; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ ++ a9pll: arm_clk@00000 { ++ #clock-cells = <0>; ++ compatible = "brcm,xgs-iproc-armpll"; ++ clocks = <&osc>; ++ reg = <0x0 0x1000>; ++ }; ++ ++ gic: interrupt-controller@21000 { ++ compatible = "arm,cortex-a9-gic"; ++ #interrupt-cells = <3>; ++ interrupt-controller; ++ reg = <0x21000 0x1000>, <0x20100 0x100>; ++ }; ++ ++ twd-timer@20600 { ++ compatible = "arm,cortex-a9-twd-timer"; ++ reg = <0x20600 0x100>; ++ interrupts = ; ++ clocks = <&periph_clk>; ++ }; ++ ++ timer@20200 { ++ compatible = "arm,cortex-a9-global-timer"; ++ reg = <0x20200 0x100>; ++ interrupts = ; ++ clocks = <&periph_clk>; ++ }; ++ ++ L2: l2-cache { ++ compatible = "arm,pl310-cache"; ++ reg = <0x22000 0x1000>; ++ cache-unified; ++ cache-level = <2>; ++ arm,filter-ranges = <0x60000000 0x80000000>; ++ }; ++ }; ++ ++ clocks { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ ranges; ++ ++ osc: oscillator { ++ #clock-cells = <0>; ++ compatible = "fixed-clock"; ++ clock-frequency = <25000000>; ++ }; ++ ++ periph_clk: periph_clk { ++ #clock-cells = <0>; ++ compatible = "fixed-factor-clock"; ++ clocks = <&a9pll>; ++ clock-div = <2>; ++ clock-mult = <1>; ++ }; ++ ++ iproc_axi_clk: iproc_axi_clk@0x1800fc00 { ++ #clock-cells = <0>; ++ compatible = "brcm,xgs-iproc-axi-clk"; ++ clocks = <&osc>; ++ reg = <0x1800fc00 0x1c>; ++ }; ++ ++ iproc_apb_clk: iproc_apb_clk { ++ #clock-cells = <0>; ++ compatible = "fixed-factor-clock"; ++ clocks = <&iproc_axi_clk>; ++ clock-div = <4>; ++ clock-mult = <1>; ++ }; ++ }; ++ ++ axi { ++ compatible = "simple-bus"; ++ ranges; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ ++ uart0: serial@18020000 { ++ compatible = "snps,dw-apb-uart"; ++ reg = <0x18020000 0x100>; ++ interrupts = ; ++ clocks = <&iproc_apb_clk>; ++ reg-io-width = <4>; ++ reg-shift = <2>; ++ status = "disabled"; ++ }; ++ ++ uart1: serial@18021000 { ++ compatible = "snps,dw-apb-uart"; ++ reg = <0x18021000 0x100>; ++ interrupts = ; ++ clocks = <&iproc_apb_clk>; ++ reg-io-width = <4>; ++ reg-shift = <2>; ++ status = "disabled"; ++ }; ++ ++ gmac0: ethernet@18042000 { ++ compatible = "brcm,xgs-iproc-amac"; ++ reg = <0x18042000 0x1000>, ++ <0x18110000 0x1000>; ++ reg-names = "amac_base", "idm_base"; ++ interrupts = ; ++ status = "disabled"; ++ }; ++ ++ gmac1: ethernet@1804a000 { ++ compatible = "brcm,xgs-iproc-amac"; ++ reg = <0x1804a000 0x1000>, ++ <0x1811f000 0x1000>; ++ reg-names = "amac_base", "idm_base"; ++ interrupts = ; ++ status = "disabled"; ++ }; ++ ++ gpio_ccg: gpio@1800a000 { ++ compatible = "brcm,iproc-gpio-ccg"; ++ #gpio-cells = <2>; ++ reg = gpio: <0x1800a000 0x50>; ++ ngpios = <12>; ++ pin-reg-bit-shift = <4>; ++ pin-base = <4>; ++ gpio-controller; ++ interrupt-controller; ++ #interrupt-cells = <2>; ++ interrupts = ; ++ status = "disabled"; ++ }; ++ ++ usbphy0: usbphy0 { ++ #phy-cells = <0>; ++ compatible = "brcm,usb-phy-gh2"; ++ reg = idm_usb2h: <0x18115000 0x1000>, ++ idm_usb2d: <0x18111000 0x1000>, ++ idm_utmih: <0x18049500 0x100>; ++ vbus-gpios = <&gpio_ccg 6 GPIO_ACTIVE_HIGH>; ++ status = "disabled"; ++ }; ++ ++ ehci0: usb@18048000 { ++ compatible = "generic-ehci"; ++ reg = <0x18048000 0x800>; ++ interrupts = ; ++ usb-phy = <&usbphy0>; ++ status = "disabled"; ++ }; ++ ++ ohci0: usb@18048800 { ++ compatible = "generic-ohci"; ++ reg = <0x18048800 0x800>; ++ interrupts = ; ++ usb-phy = <&usbphy0>; ++ /* Over Current Protect Mode fix */ ++ iproc-ocpm-fix; ++ status = "disabled"; ++ }; ++ ++ usbd: usbd@1804c000 { ++ compatible = "brcm,usbd-xgs-iproc"; ++ reg = <0x1804c000 0x2000>; ++ interrupts = ; ++ usb-phy = <&usbphy0>; ++ status = "disabled"; ++ }; ++ ++ nand: nand@18046000 { ++ compatible = "brcm,nand-iproc", "brcm,brcmnand-v6.1"; ++ reg = <0x18046000 0x600>, ++ <0xf8105408 0x10>, ++ <0x18046f00 0x20>; ++ reg-names = "nand", "iproc-idm", "iproc-ext"; ++ interrupts = ; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ brcm,nand-has-wp; ++ status = "disabled"; ++ }; ++ ++ qspi: spi@18047000 { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ compatible = "brcm,spi-bcm-qspi", "brcm,spi-xgs-iproc-qspi"; ++ reg = <0x18047200 0x188>, ++ <0x18047000 0x124>, ++ <0xf8106408 0x004>, ++ <0x180473a0 0x01c>, ++ <0x1800e000 0x004>; ++ reg-names = "mspi", "bspi", "intr_regs", "intr_status_reg", "cru_ctrl"; ++ interrupts = ; ++ num-cs = <2>; ++ clocks = <&iproc_apb_clk>; ++ status = "disabled"; ++ }; ++ ++ i2c0: i2c@18008000 { ++ compatible = "brcm,iproc-i2c"; ++ reg = <0x18008000 0x100>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ interrupts = ; ++ clock-frequency = <100000>; ++ status = "disabled"; ++ }; ++ ++ ccg_mdio_int: ccg_mdio_int@18002000 { ++ compatible = "brcm,iproc-ccg-mdio"; ++ reg = <0x18002000 0x1000>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ bus-type = "internal"; ++ clocks = <&iproc_apb_clk>; ++ status = "disabled"; ++ }; ++ ++ /* cmicd cmic_common mdio */ ++ mdio_int: mdio_int@03210000 { ++ compatible = "brcm,iproc-cmicd-mdio"; ++ reg = <0x03210000 0x1000>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ #bus-id = <0>; ++ bus-type = "internal"; ++ clocks = <&iproc_apb_clk>; ++ status = "disabled"; ++ }; ++ ++ /* cmicd cmic_common mdio */ ++ mdio_ext: mdio_ext@03210000 { ++ compatible = "brcm,iproc-cmicd-mdio"; ++ reg = <0x03210000 0x1000>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ #bus-id = <2>; ++ bus-type = "external"; ++ clocks = <&iproc_apb_clk>; ++ status = "disabled"; ++ }; ++ ++ pnor_flash: pnor_flash@18045000 { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ compatible = "brcm,iproc-nor"; ++ reg = nor_regs: <0x18045000 0x1000>, ++ nor_mem: <0xE8000000 0x8000000>, ++ nor_strap: <0x18000a5c 0x4>; ++ status = "disabled"; ++ }; ++ ++ hwrng: hwrng@18032000 { ++ compatible = "brcm,iproc-rng200"; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ reg = <0x18032000 0x1000>; ++ status = "disabled"; ++ }; ++ ++ iproc_wdt: iproc_wdt@18009000 { ++ compatible = "arm,sp805", "arm,primecell"; ++ reg = iproc_wdt_base: <0x18009000 0x1000>, ++ iproc_reset_reg: <0x1800f014 0x4>; ++ wdt_boot_status_bit = <0x0>; ++ clocks = <&iproc_apb_clk>; ++ clock-names = "apb_pclk"; ++ status = "disabled"; ++ }; ++ ++ dmac0: dma@18018000 { ++ compatible = "arm,pl330", "arm,primecell"; ++ reg = pl330_base: <0x18018000 0x1000>; ++ interrupts = , ++ , ++ , ++ , ++ , ++ , ++ , ++ ; ++ clocks = <&iproc_apb_clk>; ++ clock-names = "apb_pclk"; ++ #dma-cells = <1>; ++ #dma-channels = <8>; ++ #dma-requests = <16>; ++ status = "disabled"; ++ }; ++ ++ crypto: crypto@03100000 { ++ compatible = "brcm,iproc-crypto"; ++ reg = axi: <0x03100000 0x100>, /* SPUM AXI registers */ ++ apb: <0x18037000 0x100>, /* SPUM control registers */ ++ idm: <0x1811a000 0x1000>; /* Crypto control registers */ ++ brcm,max-pkt-size = <65536>; ++ status = "disabled"; ++ }; ++ ++ /* cmicd */ ++ iproc_cmicd: iproc_cmicd@03200000 { ++ compatible = "brcm,iproc-cmicd"; ++ reg = <0x03200000 0x100000>; ++ interrupts = ; ++ status = "disabled"; ++ }; ++ }; ++ ++ pcie0: pcie@18012000 { ++ compatible = "brcm,iproc-pcie"; ++ reg = <0x18012000 0x1000>; ++ linux,pci-domain = <0>; ++ ++ #interrupt-cells = <1>; ++ interrupt-map-mask = <0 0 0 0>; ++ interrupt-map = <0 0 0 0 &gic GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>; ++ ++ #address-cells = <3>; ++ #size-cells = <2>; ++ device_type = "pci"; ++ ++ /* ++ * non-prefetchable mem space, pcie addr 0x0 0x20000000, ++ * cpu addr 0x20000000, size 0x0 0x20000000 ++ */ ++ ranges = <0x82000000 0 0x20000000 0x20000000 0 0x20000000>; ++ wa-list = "pcie_rc", "pcie_perst"; ++ status = "disabled"; ++ ++ msi-parent = <&msi0>; ++ msi0: msi@18012000 { ++ compatible = "brcm,iproc-msi"; ++ msi-controller; ++ interrupt-parent = <&gic>; ++ interrupts = , ++ , ++ , ++ ; ++ }; ++ }; ++ ++ dmu_pcu: dmu_pcu@1800f000 { ++ compatible = "brcm,iproc-dmu-pcu"; ++ reg = <0x1800f000 0xc00>; ++ }; ++ ++ iproc_wrap_ctrl: iproc_wrap_ctrl@1800fc00 { ++ compatible = "brcm,iproc-wrap-ctrl"; ++ reg = <0x1800fc00 0x100>; ++ }; ++ ++ iproc_idm: iproc_idm@18100000 { ++ compatible = "brcm,iproc-idm"; ++ reg = idm0: <0x18100000 0x100000>, ++ idm1: <0xf8100000 0x100000>; ++ interrupts = , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ ; ++ }; ++}; +diff --git a/arch/arm/boot/dts/broadcom/bcm-helix4.dtsi b/arch/arm/boot/dts/broadcom/bcm-helix4.dtsi +new file mode 100644 +index 000000000000..4426cd36d7f2 +--- /dev/null ++++ b/arch/arm/boot/dts/broadcom/bcm-helix4.dtsi +@@ -0,0 +1,512 @@ ++/* ++ * BSD LICENSE ++ * ++ * Copyright(c) 2016 Broadcom Corporation. All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * ++ * * Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * * Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in ++ * the documentation and/or other materials provided with the ++ * distribution. ++ * * Neither the name of Broadcom Corporation nor the names of its ++ * contributors may be used to endorse or promote products derived ++ * from this software without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ */ ++ ++#include ++#include ++ ++/ { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ model = "Broadcom HX4 iProc"; ++ compatible = "brcm,helix4"; ++ interrupt-parent = <&gic>; ++ ++ cpus { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ cpu0: cpu@0 { ++ device_type = "cpu"; ++ compatible = "arm,cortex-a9"; ++ next-level-cache = <&L2>; ++ reg = <0x0>; ++ }; ++ ++ cpu1: cpu@1 { ++ device_type = "cpu"; ++ compatible = "arm,cortex-a9"; ++ next-level-cache = <&L2>; ++ enable-method = "brcm,bcm-nsp-smp"; ++ secondary-boot-reg = <0xffff042c>; ++ reg = <0x1>; ++ }; ++ }; ++ ++ mpcore { ++ compatible = "simple-bus"; ++ ranges = <0x00000000 0x19000000 0x00023000>; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ ++ a9pll: arm_clk@00000 { ++ #clock-cells = <0>; ++ compatible = "brcm,xgs-iproc-armpll"; ++ clocks = <&osc>; ++ reg = <0x0 0x1000>; ++ }; ++ ++ gic: interrupt-controller@21000 { ++ compatible = "arm,cortex-a9-gic"; ++ #interrupt-cells = <3>; ++ interrupt-controller; ++ reg = <0x21000 0x1000>, <0x20100 0x100>; ++ }; ++ ++ twd-timer@20600 { ++ compatible = "arm,cortex-a9-twd-timer"; ++ reg = <0x20600 0x100>; ++ interrupts = ; ++ clocks = <&periph_clk>; ++ }; ++ ++ timer@20200 { ++ compatible = "arm,cortex-a9-global-timer"; ++ reg = <0x20200 0x100>; ++ interrupts = ; ++ clocks = <&periph_clk>; ++ }; ++ ++ L2: l2-cache { ++ compatible = "arm,pl310-cache"; ++ reg = <0x22000 0x1000>; ++ cache-unified; ++ cache-level = <2>; ++ arm,filter-ranges = <0x60000000 0x80000000>; ++ /*arm,parity-enable; ++ interrupts = ;*/ ++ }; ++ }; ++ ++ clocks { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ ranges; ++ ++ osc: oscillator { ++ #clock-cells = <0>; ++ compatible = "fixed-clock"; ++ clock-frequency = <25000000>; ++ }; ++ ++ periph_clk: periph_clk { ++ #clock-cells = <0>; ++ compatible = "fixed-factor-clock"; ++ clocks = <&a9pll>; ++ clock-div = <2>; ++ clock-mult = <1>; ++ }; ++ ++ iproc_axi_clk: iproc_axi_clk@0x1803fc00 { ++ #clock-cells = <0>; ++ compatible = "brcm,xgs-iproc-axi-clk", "axi-clk-hx4"; ++ clocks = <&osc>; ++ reg = <0x1803fc00 0x1c>; ++ }; ++ ++ iproc_apb_clk: iproc_apb_clk { ++ #clock-cells = <0>; ++ compatible = "fixed-factor-clock"; ++ clocks = <&iproc_axi_clk>; ++ clock-div = <4>; ++ clock-mult = <1>; ++ }; ++ }; ++ ++ axi { ++ compatible = "simple-bus"; ++ ranges; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ ++ uart0: serial@18000300 { ++ compatible = "ns16550a"; ++ reg = <0x18000300 0x100>; ++ interrupts = ; ++ clock-frequency = <62500000>; ++ status = "disabled"; ++ }; ++ ++ uart1: serial@18000400 { ++ compatible = "ns16550a"; ++ reg = <0x18000400 0x100>; ++ interrupts = ; ++ clock-frequency = <62500000>; ++ status = "disabled"; ++ }; ++ ++ uart2: serial@18037000 { ++ compatible = "ns16550a"; ++ reg = <0x18037000 0x100>; ++ interrupts = ; ++ clocks = <&iproc_apb_clk>; ++ reg-io-width = <4>; ++ reg-shift = <2>; ++ status = "disabled"; ++ }; ++ ++ gpio_cca: gpio@18000060 { ++ compatible = "brcm,iproc-gpio-cca"; ++ #gpio-cells = <2>; ++ reg = gpio: <0x18000060 0x50>, ++ intr: <0x18000000 0x50>; ++ ngpios = <8>; ++ pin-reg-bit-shift = <0>; ++ pin-base = <4>; ++ gpio-controller; ++ interrupt-controller; ++ #interrupt-cells = <2>; ++ interrupts = ; ++ status = "disabled"; ++ }; ++ ++ gmac0: ethernet@18022000 { ++ compatible = "brcm,xgs-iproc-amac"; ++ reg = <0x18022000 0x1000>, ++ <0x18110000 0x1000>; ++ reg-names = "amac_base", "idm_base"; ++ interrupts = ; ++ status = "disabled"; ++ }; ++ ++ gmac1: ethernet@18023000 { ++ compatible = "brcm,xgs-iproc-amac"; ++ reg = <0x18023000 0x1000>, ++ <0x18111000 0x1000>; ++ reg-names = "amac_base", "idm_base"; ++ interrupts = ; ++ status = "disabled"; ++ }; ++ ++ nand: nand@18026000 { ++ compatible = "brcm,nand-iproc", "brcm,brcmnand-v6.1"; ++ reg = <0x18026000 0x600>, ++ <0x1811b408 0x10>, ++ <0x18026f00 0x20>; ++ reg-names = "nand", "iproc-idm", "iproc-ext"; ++ interrupts = ; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ brcm,nand-has-wp; ++ }; ++ ++ qspi: spi@18027000 { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ compatible = "brcm,spi-bcm-qspi", "brcm,spi-xgs-iproc-qspi"; ++ reg = <0x18027200 0x188>, ++ <0x18027000 0x124>, ++ <0x1811c408 0x004>, ++ <0x180273a0 0x01c>, ++ <0x1803e000 0x004>; ++ reg-names = "mspi", "bspi", "intr_regs", "intr_status_reg", "cru_ctrl"; ++ interrupts = ++ , ++ , ++ , ++ , ++ , ++ , ++ ; ++ interrupt-names = ++ "spi_lr_fullness_reached", ++ "spi_lr_session_aborted", ++ "spi_lr_impatient", ++ "spi_lr_session_done", ++ "spi_lr_overread", ++ "mspi_done", ++ "mspi_halted"; ++ num-cs = <2>; ++ clocks = <&iproc_apb_clk>; ++ status = "disabled"; ++ }; ++ ++ usbphy0: usbphy0 { ++ #phy-cells = <0>; ++ compatible = "brcm,usb-phy-hx4"; ++ reg = idm_usb2h: <0x18115000 0x1000>, ++ idm_usb2d: <0x18116000 0x1000>; ++ vbus-gpios = <&gpio_cca 1 GPIO_ACTIVE_LOW>; ++ usbdev-gpios = <&gpio_cca 0 GPIO_ACTIVE_HIGH>; ++ status = "disabled"; ++ }; ++ ++ ehci0: usb@1802a000 { ++ compatible = "brcm,xgs-iproc-ehci", "generic-ehci"; ++ reg = <0x1802a000 0x1000>; ++ interrupts = ; ++ usb-phy = <&usbphy0>; ++ status = "disabled"; ++ }; ++ ++ usbd: usbd@18042000 { ++ compatible = "brcm,usbd-xgs-hx4"; ++ reg = <0x18042000 0x2000>; ++ interrupts = ; ++ usb-phy = <&usbphy0>; ++ status = "disabled"; ++ }; ++ ++ i2c0: i2c@18038000 { ++ compatible = "brcm,iproc-i2c"; ++ reg = <0x18038000 0x100>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ interrupts = ; ++ clock-frequency = <100000>; ++ status = "disabled"; ++ }; ++ ++ i2c1: i2c@1803b000 { ++ compatible = "brcm,iproc-i2c"; ++ reg = <0x1803b000 0x100>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ interrupts = ; ++ clock-frequency = <100000>; ++ status = "disabled"; ++ }; ++ ++ mdio: mdio@18032000 { ++ compatible = "brcm,iproc-mdio"; ++ reg = <0x18032000 0x8>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ clocks = <&iproc_apb_clk>; ++ }; ++ ++ mdio-mux@18032000 { ++ compatible = "mdio-mux-mmioreg", "mdio-mux"; ++ reg = <0x18032000 0x4>; ++ mux-mask = <0x200>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ mdio-parent-bus = <&mdio>; ++ ++ pinctrl-names = "default"; ++ pinctrl-0 = <&iproc_mdio_sel_pins>; ++ ++ mdio_int: mdio@0 { ++ reg = <0x0>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ }; ++ ++ mdio_ext: mdio@200 { ++ reg = <0x200>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ }; ++ }; ++ ++ hwrng: hwrng@18033000 { ++ compatible = "brcm,iproc-rng100"; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ reg = <0x18033000 0x1000>; ++ status = "disabled"; ++ }; ++ ++ iproc_wdt: iproc_wdt@0x18039000 { ++ compatible = "arm,sp805", "arm,primecell"; ++ reg = iproc_wdt_base: <0x18039000 0x1000>, ++ iproc_reset_reg: <0x1803f014 0x4>; ++ wdt_boot_status_bit = <0x0>; ++ clocks = <&iproc_apb_clk>; ++ clock-names = "apb_pclk"; ++ status = "disabled"; ++ }; ++ ++ dmac0: dma@18020000 { ++ compatible = "arm,pl330", "arm,primecell"; ++ reg = pl330_base: <0x18020000 0x1000>; ++ interrupts = , ++ , ++ , ++ , ++ , ++ , ++ , ++ ; ++ /*arm,primecell-periphid = <0x00041330>;*/ ++ clocks = <&iproc_apb_clk>; ++ clock-names = "apb_pclk"; ++ #dma-cells = <1>; ++ #dma-channels = <8>; ++ #dma-requests = <16>; ++ status = "disabled"; ++ }; ++ ++ /* cmicd */ ++ iproc_cmicd: iproc_cmicd@48000000 { ++ compatible = "brcm,iproc-cmicd"; ++ reg = <0x48000000 0x40000>; ++ interrupts = ; ++ status = "disabled"; ++ }; ++ }; ++ ++ pcie0: pcie@18012000 { ++ compatible = "brcm,iproc-pcie"; ++ reg = <0x18012000 0x1000>; ++ linux,pci-domain = <0>; ++ ++ #interrupt-cells = <1>; ++ interrupt-map-mask = <0 0 0 0>; ++ interrupt-map = <0 0 0 0 &gic GIC_SPI 186 IRQ_TYPE_LEVEL_HIGH>; ++ ++ #address-cells = <3>; ++ #size-cells = <2>; ++ device_type = "pci"; ++ ++ /* ++ * non-prefetchable mem space, pcie addr 0x0 0x08000000, ++ * cpu addr 0x08000000, size 0x0 0x08000000 ++ */ ++ ranges = <0x82000000 0 0x08000000 0x08000000 0 0x08000000>; ++ wa-list = "pcie_wrong_gen2"; ++ status = "disabled"; ++ ++ msi-parent = <&msi0>; ++ msi0: msi@18012000 { ++ compatible = "brcm,iproc-msi"; ++ msi-controller; ++ interrupt-parent = <&gic>; ++ interrupts = , ++ , ++ , ++ ; ++ brcm,pcie-msi-inten; ++ }; ++ }; ++ ++ pcie1: pcie@18013000 { ++ compatible = "brcm,iproc-pcie"; ++ reg = <0x18013000 0x1000>; ++ linux,pci-domain = <1>; ++ ++ #interrupt-cells = <1>; ++ interrupt-map-mask = <0 0 0 0>; ++ interrupt-map = <0 0 0 0 &gic GIC_SPI 192 IRQ_TYPE_LEVEL_HIGH>; ++ ++ #address-cells = <3>; ++ #size-cells = <2>; ++ device_type = "pci"; ++ ++ /* ++ * non-prefetchable mem space, pcie addr 0x0 0x40000000, ++ * cpu addr 0x40000000, size 0x0 0x08000000 ++ */ ++ ranges = <0x82000000 0 0x40000000 0x40000000 0 0x08000000>; ++ wa-list = "pcie_wrong_gen2"; ++ status = "disabled"; ++ ++ msi-parent = <&msi1>; ++ msi1: msi@18013000 { ++ compatible = "brcm,iproc-msi"; ++ msi-controller; ++ interrupt-parent = <&gic>; ++ interrupts = , ++ , ++ , ++ ; ++ brcm,pcie-msi-inten; ++ }; ++ }; ++ ++ dmu_pcu: dmu_pcu@1803f000 { ++ compatible = "brcm,iproc-dmu-pcu"; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ reg = <0x1803f000 0xc00>; ++ }; ++ ++ iproc_wrap_ctrl: iproc_wrap_ctrl@1803fc00 { ++ compatible = "brcm,iproc-wrap-ctrl"; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ reg = <0x1803fc00 0x38>; ++ }; ++ ++ wrap_misc_control: pinmux@1803fc3c { ++ compatible = "pinctrl-single"; ++ reg = <0x1803fc3c 4>; /* Single register */ ++ #address-cells = <1>; ++ #size-cells = <0>; ++ pinctrl-single,bit-per-mux; ++ pinctrl-single,register-width = <32>; ++ pinctrl-single,function-mask = <0x1c>; ++ ++ pinctrl-names = "default"; ++ pinctrl-0 = <&quad_serdes_ctrl_sel_pins>, <&quad_serdes_mdio_sel_pins>; ++ ++ quad_serdes_ctrl_sel_pins: pinmux_quad_serdes_ctrl_sel_pins { ++ pinctrl-single,bits = <0x00 0x04 0x04>; ++ }; ++ ++ quad_serdes_mdio_sel_pins: pinmux_quad_serdes_mdio_sel_pins { ++ pinctrl-single,bits = <0x00 0x08 0x08>; ++ }; ++ ++ iproc_mdio_sel_pins: pinmux_iproc_mdio_sel_pins { ++ pinctrl-single,bits = <0x00 0x10 0x10>; ++ }; ++ }; ++ ++ iproc_idm: iproc_idm@18100000 { ++ compatible = "brcm,iproc-idm"; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ reg = <0x18100000 0x100000>; ++ interrupts = , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ ; ++ }; ++}; +diff --git a/arch/arm/boot/dts/broadcom/bcm-hr2.dtsi b/arch/arm/boot/dts/broadcom/bcm-hr2.dtsi +index 75545b10ef2f..877cd90e1297 100644 +--- a/arch/arm/boot/dts/broadcom/bcm-hr2.dtsi ++++ b/arch/arm/boot/dts/broadcom/bcm-hr2.dtsi +@@ -34,6 +34,8 @@ + #include + + / { ++ #address-cells = <1>; ++ #size-cells = <1>; + compatible = "brcm,hr2"; + model = "Broadcom Hurricane 2 SoC"; + interrupt-parent = <&gic>; +diff --git a/arch/arm/boot/dts/broadcom/bcm-hurricane3.dtsi b/arch/arm/boot/dts/broadcom/bcm-hurricane3.dtsi +new file mode 100644 +index 000000000000..752eb2d5a97d +--- /dev/null ++++ b/arch/arm/boot/dts/broadcom/bcm-hurricane3.dtsi +@@ -0,0 +1,416 @@ ++/* ++ * BSD LICENSE ++ * ++ * Copyright(c) 2016 Broadcom Corporation. All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * ++ * * Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * * Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in ++ * the documentation and/or other materials provided with the ++ * distribution. ++ * * Neither the name of Broadcom Corporation nor the names of its ++ * contributors may be used to endorse or promote products derived ++ * from this software without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ */ ++ ++#include ++#include ++ ++/ { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ model = "Broadcom HR3 iProc"; ++ compatible = "brcm,hurricane3"; ++ interrupt-parent = <&gic>; ++ ++ cpus { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ cpu@0 { ++ device_type = "cpu"; ++ compatible = "arm,cortex-a9"; ++ next-level-cache = <&L2>; ++ reg = <0x0>; ++ }; ++ }; ++ ++ core { ++ compatible = "simple-bus"; ++ ranges = <0x00000000 0x19000000 0x00023000>; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ ++ a9pll: arm_clk@00000 { ++ #clock-cells = <0>; ++ compatible = "brcm,xgs-iproc-armpll"; ++ clocks = <&osc>; ++ /*clocks = <&osc_50M>;*/ /* 50MHZ crystal/oscillator */ ++ reg = <0x0 0x1000>; ++ }; ++ ++ gic: interrupt-controller@21000 { ++ compatible = "arm,cortex-a9-gic"; ++ #interrupt-cells = <3>; ++ interrupt-controller; ++ reg = <0x21000 0x1000>, <0x20100 0x100>; ++ }; ++ ++ twd-timer@20600 { ++ compatible = "arm,cortex-a9-twd-timer"; ++ reg = <0x20600 0x100>; ++ interrupts = ; ++ clocks = <&periph_clk>; ++ }; ++ ++ timer@20200 { ++ compatible = "arm,cortex-a9-global-timer"; ++ reg = <0x20200 0x100>; ++ interrupts = ; ++ clocks = <&periph_clk>; ++ }; ++ ++ L2: l2-cache { ++ compatible = "arm,pl310-cache"; ++ reg = <0x22000 0x1000>; ++ cache-unified; ++ cache-level = <2>; ++ arm,filter-ranges = <0x60000000 0x80000000>; ++ }; ++ }; ++ ++ clocks { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ ranges; ++ ++ osc: oscillator { ++ #clock-cells = <0>; ++ compatible = "fixed-clock"; ++ clock-frequency = <25000000>; ++ }; ++ ++ /* 50MHZ crystal/oscillator clock source */ ++ /* ++ osc_50M: oscillator_50M { ++ #clock-cells = <0>; ++ compatible = "fixed-clock"; ++ clock-frequency = <50000000>; ++ }; ++ */ ++ ++ periph_clk: periph_clk { ++ #clock-cells = <0>; ++ compatible = "fixed-factor-clock"; ++ clocks = <&a9pll>; ++ clock-div = <2>; ++ clock-mult = <1>; ++ }; ++ ++ iproc_axi_clk: iproc_axi_clk@1800fc00 { ++ #clock-cells = <0>; ++ compatible = "brcm,xgs-iproc-axi-clk"; ++ clocks = <&osc>; ++ reg = <0x1800fc00 0x1c>; ++ }; ++ ++ iproc_apb_clk: iproc_apb_clk { ++ #clock-cells = <0>; ++ compatible = "fixed-factor-clock"; ++ clocks = <&iproc_axi_clk>; ++ clock-div = <4>; ++ clock-mult = <1>; ++ }; ++ }; ++ ++ axi { ++ compatible = "simple-bus"; ++ ranges; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ ++ uart0: serial@18020000 { ++ compatible = "snps,dw-apb-uart"; ++ reg = <0x18020000 0x100>; ++ interrupts = ; ++ clocks = <&iproc_apb_clk>; ++ reg-io-width = <4>; ++ reg-shift = <2>; ++ status = "disabled"; ++ }; ++ ++ uart1: serial@18021000 { ++ compatible = "snps,dw-apb-uart"; ++ reg = <0x18021000 0x100>; ++ interrupts = ; ++ clocks = <&iproc_apb_clk>; ++ reg-io-width = <4>; ++ reg-shift = <2>; ++ status = "disabled"; ++ }; ++ ++ gmac0: ethernet@18042000 { ++ compatible = "brcm,xgs-iproc-amac"; ++ reg = <0x18042000 0x1000>, ++ <0x18110000 0x1000>; ++ reg-names = "amac_base", "idm_base"; ++ interrupts = ; ++ status = "disabled"; ++ }; ++ ++ gpio_ccg: gpio@1800a000 { ++ compatible = "brcm,iproc-gpio-ccg"; ++ #gpio-cells = <2>; ++ reg = gpio: <0x1800a000 0x50>; ++ ngpios = <12>; ++ pin-reg-bit-shift = <4>; ++ pin-base = <4>; ++ gpio-controller; ++ interrupt-controller; ++ #interrupt-cells = <2>; ++ interrupts = ; ++ status = "disabled"; ++ }; ++ ++ usbphy0: usbphy@1800fc40 { ++ #phy-cells = <0>; ++ compatible = "brcm,usb-phy-gh"; ++ reg = idm_usb2h: <0x18115000 0x1000>, ++ idm_usb2d: <0x18111000 0x1000>; ++ vbus-gpios = <&gpio_ccg 3 GPIO_ACTIVE_HIGH>; ++ status = "disabled"; ++ }; ++ ++ ehci0: usb@18048000 { ++ compatible = "generic-ehci"; ++ reg = <0x18048000 0x800>; ++ interrupts = ; ++ usb-phy = <&usbphy0>; ++ status = "disabled"; ++ }; ++ ++ ohci0: usb@18048800 { ++ compatible = "generic-ohci"; ++ reg = <0x18048800 0x800>; ++ interrupts = ; ++ usb-phy = <&usbphy0>; ++ /* Over Current Protect Mode fix */ ++ iproc-ocpm-fix; ++ status = "disabled"; ++ }; ++ ++ usbd: usbd@1804c000 { ++ compatible = "brcm,usbd-xgs-iproc"; ++ reg = <0x1804c000 0x2000>; ++ interrupts = ; ++ usb-phy = <&usbphy0>; ++ status = "disabled"; ++ }; ++ ++ sdio: sdio@18041000 { ++ compatible = "brcm,iproc-hr3-sdio"; ++ reg = <0x18041000 0x1000>, ++ <0x18116408 0x1000>; ++ reg-names = "sdio", "iproc-idm"; ++ interrupts = ; ++ bus-width = <8>; ++ status = "disabled"; ++ }; ++ ++ nand: nand@18046000 { ++ compatible = "brcm,nand-iproc", "brcm,brcmnand-v6.1"; ++ reg = <0x18046000 0x600>, ++ <0x1811d408 0x10>, ++ <0x18046f00 0x20>; ++ reg-names = "nand", "iproc-idm", "iproc-ext"; ++ interrupts = ; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ brcm,nand-has-wp; ++ status = "disabled"; ++ }; ++ ++ qspi: spi@18047000 { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ compatible = "brcm,spi-bcm-qspi", "brcm,spi-xgs-iproc-qspi"; ++ reg = <0x18047200 0x188>, ++ <0x18047000 0x124>, ++ <0x1811f408 0x004>, ++ <0x180473a0 0x01c>, ++ <0x1800e000 0x004>; ++ reg-names = "mspi", "bspi", "intr_regs", "intr_status_reg", "cru_ctrl"; ++ interrupts = ; ++ num-cs = <2>; ++ clocks = <&iproc_apb_clk>; ++ status = "disabled"; ++ }; ++ ++ i2c0: i2c@18008000 { ++ compatible = "brcm,iproc-i2c"; ++ reg = <0x18008000 0x100>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ interrupts = ; ++ clock-frequency = <100000>; ++ status = "disabled"; ++ }; ++ ++ mdio_int: mdio_int@18002000 { ++ compatible = "brcm,iproc-ccg-mdio"; ++ reg = <0x18002000 0x1000>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ bus-type = "internal"; ++ clocks = <&iproc_apb_clk>; ++ status = "disabled"; ++ }; ++ ++ /* cmicd cmic_common mdio */ ++ mdio_ext: mdio_ext { ++ compatible = "brcm,iproc-cmicd-mdio"; ++ reg = <0x03210000 0x1000>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ #bus-id = <2>; ++ bus-type = "external"; ++ /* Currently clocks is not used by driver */ ++ clocks = <&iproc_apb_clk>; ++ status = "disabled"; ++ }; ++ ++ pnor_flash: pnor_flash@18045000 { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ compatible = "brcm,iproc-nor"; ++ reg = nor_regs: <0x18045000 0x1000>, ++ nor_mem: <0xE8000000 0x8000000>, ++ nor_strap: <0x18000a5c 0x4>; ++ status = "disabled"; ++ }; ++ ++ hwrng: hwrng@18032000 { ++ compatible = "brcm,iproc-rng200"; ++ reg = <0x18032000 0x1000>; ++ status = "disabled"; ++ }; ++ ++ iproc_wdt: iproc_wdt@18009000 { ++ compatible = "arm,sp805", "arm,primecell"; ++ reg = iproc_wdt_base: <0x18009000 0x1000>, ++ iproc_reset_reg: <0x1800f014 0x4>; ++ wdt_boot_status_bit = <0x0>; ++ clocks = <&iproc_apb_clk>; ++ clock-names = "apb_pclk"; ++ status = "disabled"; ++ }; ++ ++ dmac0: dma@18018000 { ++ compatible = "arm,pl330", "arm,primecell"; ++ reg = pl330_base: <0x18018000 0x1000>; ++ interrupts = , ++ , ++ , ++ , ++ , ++ , ++ , ++ ; ++ /*arm,primecell-periphid = <0x00041330>;*/ ++ clocks = <&iproc_apb_clk>; ++ clock-names = "apb_pclk"; ++ #dma-cells = <1>; ++ #dma-channels = <8>; ++ #dma-requests = <16>; ++ status = "disabled"; ++ }; ++ ++ /* cmicd */ ++ iproc_cmicd: iproc_cmicd@03200000 { ++ compatible = "brcm,iproc-cmicd"; ++ reg = <0x03200000 0x100000>; ++ interrupts = ; ++ status = "disabled"; ++ }; ++ }; ++ ++ pcie0: pcie@18012000 { ++ compatible = "brcm,iproc-pcie"; ++ reg = <0x18012000 0x1000>; ++ linux,pci-domain = <0>; ++ ++ #interrupt-cells = <1>; ++ interrupt-map-mask = <0 0 0 0>; ++ interrupt-map = <0 0 0 0 &gic GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>; ++ ++ #address-cells = <3>; ++ #size-cells = <2>; ++ device_type = "pci"; ++ ++ /* ++ * non-prefetchable mem space, pcie addr 0x0 0x20000000, ++ * cpu addr 0x20000000, size 0x0 0x20000000 ++ */ ++ ranges = <0x82000000 0 0x20000000 0x20000000 0 0x20000000>; ++ wa-list = "pcie_rc", "pcie_perst"; ++ status = "disabled"; ++ ++ msi-parent = <&msi0>; ++ msi0: msi@18012000 { ++ compatible = "brcm,iproc-msi"; ++ msi-controller; ++ interrupt-parent = <&gic>; ++ interrupts = , ++ , ++ , ++ ; ++ }; ++ }; ++ ++ dmu_pcu: dmu_pcu@1800f000 { ++ compatible = "brcm,iproc-dmu-pcu"; ++ reg = <0x1800f000 0xc00>; ++ }; ++ ++ iproc_wrap_ctrl: iproc_wrap_ctrl@1800fc00 { ++ compatible = "brcm,iproc-wrap-ctrl"; ++ reg = <0x1800fc00 0x100>; ++ }; ++ ++ iproc_idm: iproc_idm@18100000 { ++ compatible = "brcm,iproc-idm"; ++ reg = <0x18100000 0x100000>; ++ interrupts = , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ ; ++ }; ++}; +diff --git a/arch/arm/boot/dts/broadcom/bcm-katana2.dtsi b/arch/arm/boot/dts/broadcom/bcm-katana2.dtsi +new file mode 100644 +index 000000000000..c0756ea72958 +--- /dev/null ++++ b/arch/arm/boot/dts/broadcom/bcm-katana2.dtsi +@@ -0,0 +1,480 @@ ++/* ++ * BSD LICENSE ++ * ++ * Copyright(c) 2016 Broadcom Corporation. All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * ++ * * Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * * Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in ++ * the documentation and/or other materials provided with the ++ * distribution. ++ * * Neither the name of Broadcom Corporation nor the names of its ++ * contributors may be used to endorse or promote products derived ++ * from this software without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ */ ++ ++#include ++#include ++ ++/ { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ model = "Broadcom KT2 iProc"; ++ compatible = "brcm,katana2"; ++ interrupt-parent = <&gic>; ++ ++ cpus { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ cpu0: cpu@0 { ++ device_type = "cpu"; ++ compatible = "arm,cortex-a9"; ++ next-level-cache = <&L2>; ++ reg = <0x0>; ++ }; ++ ++ cpu1: cpu@1 { ++ device_type = "cpu"; ++ compatible = "arm,cortex-a9"; ++ next-level-cache = <&L2>; ++ enable-method = "brcm,bcm-nsp-smp"; ++ secondary-boot-reg = <0xffff042c>; ++ reg = <0x1>; ++ }; ++ }; ++ ++ mpcore { ++ compatible = "simple-bus"; ++ ranges = <0x00000000 0x19000000 0x00023000>; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ ++ a9pll: arm_clk@00000 { ++ #clock-cells = <0>; ++ compatible = "brcm,xgs-iproc-armpll"; ++ clocks = <&osc>; ++ reg = <0x0 0x1000>; ++ }; ++ ++ gic: interrupt-controller@21000 { ++ compatible = "arm,cortex-a9-gic"; ++ #interrupt-cells = <3>; ++ interrupt-controller; ++ reg = <0x21000 0x1000>, <0x20100 0x100>; ++ }; ++ ++ twd-timer@20600 { ++ compatible = "arm,cortex-a9-twd-timer"; ++ reg = <0x20600 0x100>; ++ interrupts = ; ++ clocks = <&periph_clk>; ++ }; ++ ++ timer@20200 { ++ compatible = "arm,cortex-a9-global-timer"; ++ reg = <0x20200 0x100>; ++ interrupts = ; ++ clocks = <&periph_clk>; ++ }; ++ ++ L2: l2-cache { ++ compatible = "arm,pl310-cache"; ++ reg = <0x22000 0x1000>; ++ cache-unified; ++ cache-level = <2>; ++ arm,filter-ranges = <0x60000000 0x80000000>; ++ }; ++ }; ++ ++ clocks { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ ranges; ++ ++ osc: oscillator { ++ #clock-cells = <0>; ++ compatible = "fixed-clock"; ++ clock-frequency = <25000000>; ++ }; ++ ++ periph_clk: periph_clk { ++ #clock-cells = <0>; ++ compatible = "fixed-factor-clock"; ++ clocks = <&a9pll>; ++ clock-div = <2>; ++ clock-mult = <1>; ++ }; ++ ++ iproc_axi_clk: axi_clk_fixed_495M { ++ #clock-cells = <0>; ++ compatible = "fixed-clock"; ++ clock-frequency = <495000000>; ++ }; ++ ++ iproc_apb_clk: iproc_apb_clk { ++ #clock-cells = <0>; ++ compatible = "fixed-factor-clock"; ++ clocks = <&iproc_axi_clk>; ++ clock-div = <4>; ++ clock-mult = <1>; ++ }; ++ }; ++ ++ axi { ++ compatible = "simple-bus"; ++ ranges; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ ++ uart0: serial@18000300 { ++ compatible = "ns16550a"; ++ reg = <0x18000300 0x100>; ++ interrupts = ; ++ clock-frequency = <61875000>; ++ status = "disabled"; ++ }; ++ ++ uart1: serial@18000400 { ++ compatible = "ns16550a"; ++ reg = <0x18000400 0x100>; ++ interrupts = ; ++ clock-frequency = <61875000>; ++ status = "disabled"; ++ }; ++ ++ uart2: serial@18037000 { ++ compatible = "ns16550a"; ++ reg = <0x18037000 0x100>; ++ interrupts = ; ++ clocks = <&iproc_apb_clk>; ++ reg-io-width = <4>; ++ reg-shift = <2>; ++ status = "disabled"; ++ }; ++ ++ gpio_cca: gpio@18000060 { ++ compatible = "brcm,iproc-gpio-cca"; ++ #gpio-cells = <2>; ++ reg = gpio: <0x18000060 0x50>, ++ intr: <0x18000000 0x50>; ++ ngpios = <8>; ++ pin-reg-bit-shift = <0>; ++ pin-base = <4>; ++ gpio-controller; ++ interrupt-controller; ++ #interrupt-cells = <2>; ++ interrupts = ; ++ status = "disabled"; ++ }; ++ ++ gmac0: ethernet@18022000 { ++ compatible = "brcm,xgs-iproc-amac"; ++ reg = <0x18022000 0x1000>, ++ <0x18110000 0x1000>; ++ reg-names = "amac_base", "idm_base"; ++ interrupts = ; ++ status = "disabled"; ++ }; ++ ++ gmac1: ethernet@18023000 { ++ compatible = "brcm,xgs-iproc-amac"; ++ reg = <0x18023000 0x1000>, ++ <0x18111000 0x1000>; ++ reg-names = "amac_base", "idm_base"; ++ interrupts = ; ++ status = "disabled"; ++ }; ++ ++ nand: nand@18026000 { ++ compatible = "brcm,nand-iproc", "brcm,brcmnand-v6.1"; ++ reg = <0x18026000 0x600>, ++ <0x1811b408 0x10>, ++ <0x18026f00 0x20>; ++ reg-names = "nand", "iproc-idm", "iproc-ext"; ++ interrupts = ; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ brcm,nand-has-wp; ++ }; ++ ++ qspi: spi@18027000 { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ compatible = "brcm,spi-bcm-qspi", "brcm,spi-xgs-iproc-qspi"; ++ reg = <0x18027200 0x188>, ++ <0x18027000 0x124>, ++ <0x1811c408 0x004>, ++ <0x180273a0 0x01c>, ++ <0x1803e000 0x004>; ++ reg-names = "mspi", "bspi", "intr_regs", "intr_status_reg", "cru_ctrl"; ++ interrupts = ++ , ++ , ++ , ++ , ++ , ++ , ++ ; ++ interrupt-names = ++ "spi_lr_fullness_reached", ++ "spi_lr_session_aborted", ++ "spi_lr_impatient", ++ "spi_lr_session_done", ++ "spi_lr_overread", ++ "mspi_done", ++ "mspi_halted"; ++ num-cs = <2>; ++ clocks = <&iproc_apb_clk>; ++ status = "disabled"; ++ }; ++ ++ usbphy0: usbphy0 { ++ #phy-cells = <0>; ++ compatible = "brcm,usb-phy-kt2"; ++ reg = idm_usb2h: <0x18115000 0x1000>, ++ idm_usb2d: <0x18116000 0x1000>; ++ vbus-gpios = <&gpio_cca 1 GPIO_ACTIVE_LOW>; ++ usbdev-gpios = <&gpio_cca 0 GPIO_ACTIVE_HIGH>; ++ status = "disabled"; ++ }; ++ ++ ehci0: usb@1802a000 { ++ compatible = "generic-ehci"; ++ reg = <0x1802a000 0x1000>; ++ interrupts = ; ++ usb-phy = <&usbphy0>; ++ status = "disabled"; ++ }; ++ ++ usbd: usbd@18042000 { ++ compatible = "brcm,usbd-xgs-hx4"; ++ reg = <0x18042000 0x2000>; ++ interrupts = ; ++ usb-phy = <&usbphy0>; ++ status = "disabled"; ++ }; ++ ++ i2c0: i2c@0x18038000 { ++ compatible = "brcm,iproc-i2c"; ++ reg = <0x18038000 0x100>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ interrupts = ; ++ clock-frequency = <100000>; ++ status = "disabled"; ++ }; ++ ++ i2c1: i2c@1803b000 { ++ compatible = "brcm,iproc-i2c"; ++ reg = <0x1803b000 0x100>; ++ interrupts = ; ++ #bus-id = <1>; ++ clock-frequency = <100000>; ++ status = "disabled"; ++ }; ++ ++ mdio_int: mdio_int@18032000 { ++ compatible = "brcm,iproc-ccb-mdio"; ++ reg = <0x18032000 0x1000>, ++ <0x1803fc24 0x4>; ++ reg-names = "mdio-base", "iproc-mdio-enable"; ++ iproc-mdio-sel-bit = <3>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ bus-type = "internal"; ++ clocks = <&iproc_apb_clk>; ++ status = "disabled"; ++ }; ++ ++ mdio_ext: mdio_ext@18032000 { ++ compatible = "brcm,iproc-ccb-mdio"; ++ reg = <0x18032000 0x1000>, ++ <0x1803fc24 0x4>; ++ reg-names = "mdio-base", "iproc-mdio-enable"; ++ iproc-mdio-sel-bit = <3>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ bus-type = "external"; ++ clocks = <&iproc_apb_clk>; ++ status = "disabled"; ++ }; ++ ++ hwrng: hwrng@18033000 { ++ compatible = "brcm,iproc-rng100"; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ reg = <0x18033000 0x1000>; ++ status = "disabled"; ++ }; ++ ++ iproc_wdt: iproc_wdt@18039000 { ++ compatible = "arm,sp805", "arm,primecell"; ++ reg = iproc_wdt_base: <0x18039000 0x1000>, ++ iproc_reset_reg: <0x1803f014 0x4>; ++ wdt_boot_status_bit = <0x0>; ++ clocks = <&iproc_apb_clk>; ++ clock-names = "apb_pclk"; ++ status = "disabled"; ++ }; ++ ++ dmac0: dma@18020000 { ++ compatible = "arm,pl330", "arm,primecell"; ++ reg = pl330_base: <0x18020000 0x1000>; ++ interrupts = , ++ , ++ , ++ , ++ , ++ , ++ , ++ ; ++ /*arm,primecell-periphid = <0x00041330>;*/ ++ clocks = <&iproc_apb_clk>; ++ clock-names = "apb_pclk"; ++ #dma-cells = <1>; ++ #dma-channels = <8>; ++ #dma-requests = <16>; ++ status = "disabled"; ++ }; ++ ++ /* cmicd */ ++ iproc_cmicd: iproc_cmicd@48000000 { ++ compatible = "brcm,iproc-cmicd"; ++ reg = <0x48000000 0x40000>; ++ interrupts = ; ++ status = "disabled"; ++ }; ++ }; ++ ++ pcie0: pcie@18012000 { ++ compatible = "brcm,iproc-pcie"; ++ reg = <0x18012000 0x1000>; ++ linux,pci-domain = <0>; ++ ++ #interrupt-cells = <1>; ++ interrupt-map-mask = <0 0 0 0>; ++ interrupt-map = <0 0 0 0 &gic GIC_SPI 186 IRQ_TYPE_LEVEL_HIGH>; ++ ++ #address-cells = <3>; ++ #size-cells = <2>; ++ device_type = "pci"; ++ ++ /* ++ * non-prefetchable mem space, pcie addr 0x0 0x08000000, ++ * cpu addr 0x08000000, size 0x0 0x08000000 ++ */ ++ ranges = <0x82000000 0 0x08000000 0x08000000 0 0x08000000>; ++ wa-list = "pcie_wrong_gen2"; ++ status = "disabled"; ++ ++ msi-parent = <&msi0>; ++ msi0: msi@18012000 { ++ compatible = "brcm,iproc-msi"; ++ msi-controller; ++ interrupt-parent = <&gic>; ++ interrupts = , ++ , ++ , ++ ; ++ brcm,pcie-msi-inten; ++ }; ++ }; ++ ++ pcie1: pcie@18013000 { ++ compatible = "brcm,iproc-pcie"; ++ reg = <0x18013000 0x1000>; ++ linux,pci-domain = <1>; ++ ++ #interrupt-cells = <1>; ++ interrupt-map-mask = <0 0 0 0>; ++ interrupt-map = <0 0 0 0 &gic GIC_SPI 192 IRQ_TYPE_LEVEL_HIGH>; ++ ++ #address-cells = <3>; ++ #size-cells = <2>; ++ device_type = "pci"; ++ ++ /* ++ * non-prefetchable mem space, pcie addr 0x0 0x40000000, ++ * cpu addr 0x40000000, size 0x0 0x08000000 ++ */ ++ ranges = <0x82000000 0 0x40000000 0x40000000 0 0x08000000>; ++ wa-list = "pcie_wrong_gen2"; ++ status = "disabled"; ++ ++ msi-parent = <&msi1>; ++ msi1: msi@18013000 { ++ compatible = "brcm,iproc-msi"; ++ msi-controller; ++ interrupt-parent = <&gic>; ++ interrupts = , ++ , ++ , ++ ; ++ brcm,pcie-msi-inten; ++ }; ++ }; ++ ++ dmu_pcu: dmu_pcu@1803f000 { ++ compatible = "brcm,iproc-dmu-pcu"; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ reg = <0x1803f000 0xc00>; ++ }; ++ ++ iproc_wrap_ctrl: iproc_wrap_ctrl@1803fc00 { ++ compatible = "brcm,iproc-wrap-ctrl"; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ reg = <0x1803fc00 0x100>; ++ /* offset to 0x1803fc00, ctrl bit, mdio bit */ ++ amac-serdes-mdio-ctrl-sel = <0x24>, <0x1>, <0x2>; ++ }; ++ ++ iproc_idm: iproc_idm@18100000 { ++ compatible = "brcm,iproc-idm"; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ reg = <0x18100000 0x100000>; ++ interrupts = , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ ; ++ }; ++}; ++ +diff --git a/arch/arm/boot/dts/broadcom/bcm-saber2.dtsi b/arch/arm/boot/dts/broadcom/bcm-saber2.dtsi +new file mode 100644 +index 000000000000..af2f9a676619 +--- /dev/null ++++ b/arch/arm/boot/dts/broadcom/bcm-saber2.dtsi +@@ -0,0 +1,397 @@ ++/* ++ * BSD LICENSE ++ * ++ * Copyright(c) 2016 Broadcom Corporation. All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * ++ * * Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * * Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in ++ * the documentation and/or other materials provided with the ++ * distribution. ++ * * Neither the name of Broadcom Corporation nor the names of its ++ * contributors may be used to endorse or promote products derived ++ * from this software without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ */ ++ ++#include ++#include ++ ++/ { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ model = "Broadcom SB2 iProc"; ++ compatible = "brcm,saber2"; ++ interrupt-parent = <&gic>; ++ ++ cpus { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ cpu@0 { ++ device_type = "cpu"; ++ compatible = "arm,cortex-a9"; ++ next-level-cache = <&L2>; ++ reg = <0x0>; ++ }; ++ }; ++ ++ core { ++ compatible = "simple-bus"; ++ ranges = <0x00000000 0x19000000 0x00023000>; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ ++ a9pll: arm_clk@00000 { ++ #clock-cells = <0>; ++ compatible = "brcm,xgs-iproc-armpll"; ++ clocks = <&osc>; ++ reg = <0x0 0x1000>; ++ }; ++ ++ gic: interrupt-controller@21000 { ++ compatible = "arm,cortex-a9-gic"; ++ #interrupt-cells = <3>; ++ interrupt-controller; ++ reg = <0x21000 0x1000>, <0x20100 0x100>; ++ }; ++ ++ twd-timer@20600 { ++ compatible = "arm,cortex-a9-twd-timer"; ++ reg = <0x20600 0x100>; ++ interrupts = ; ++ clocks = <&periph_clk>; ++ }; ++ ++ timer@20200 { ++ compatible = "arm,cortex-a9-global-timer"; ++ reg = <0x20200 0x100>; ++ interrupts = ; ++ clocks = <&periph_clk>; ++ }; ++ ++ L2: l2-cache { ++ compatible = "arm,pl310-cache"; ++ reg = <0x22000 0x1000>; ++ cache-unified; ++ cache-level = <2>; ++ arm,filter-ranges = <0x60000000 0x80000000>; ++ }; ++ }; ++ ++ clocks { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ ranges; ++ ++ osc: oscillator_25M { ++ #clock-cells = <0>; ++ compatible = "fixed-clock"; ++ clock-frequency = <25000000>; ++ }; ++ ++ osc_1: oscillator_50M { ++ #clock-cells = <0>; ++ compatible = "fixed-clock"; ++ clock-frequency = <50000000>; ++ }; ++ ++ periph_clk: periph_clk@19000000 { ++ #clock-cells = <0>; ++ compatible = "fixed-factor-clock"; ++ clocks = <&a9pll>; ++ clock-div = <2>; ++ clock-mult = <1>; ++ }; ++ ++ iproc_axi_clk: iproc_axi_clk@1800fc50 { ++ #clock-cells = <0>; ++ compatible = "brcm,xgs-iproc-axi-clk", "axi-clk-sb2"; ++ clocks = <&osc_1>; ++ reg = <0x1800fc50 0x1c>; ++ }; ++ ++ iproc_apb_clk: iproc_apb_clk { ++ #clock-cells = <0>; ++ compatible = "fixed-factor-clock"; ++ clocks = <&iproc_axi_clk>; ++ clock-div = <4>; ++ clock-mult = <1>; ++ }; ++ }; ++ ++ axi { ++ compatible = "simple-bus"; ++ ranges; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ ++ uart0: serial@18020000 { ++ compatible = "snps,dw-apb-uart"; ++ reg = <0x18020000 0x100>; ++ interrupts = ; ++ clocks = <&iproc_apb_clk>; ++ reg-io-width = <4>; ++ reg-shift = <2>; ++ status = "disabled"; ++ }; ++ ++ uart1: serial@18021000 { ++ compatible = "snps,dw-apb-uart"; ++ reg = <0x18021000 0x1000>; ++ interrupts = ; ++ clocks = <&iproc_apb_clk>; ++ reg-io-width = <4>; ++ reg-shift = <2>; ++ status = "disabled"; ++ }; ++ ++ qspi: spi@18047000 { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ compatible = "brcm,spi-bcm-qspi", "brcm,spi-xgs-iproc-qspi"; ++ reg = <0x18047200 0x188>, ++ <0x18047000 0x124>, ++ <0xf8106408 0x004>, ++ <0x180473a0 0x01c>, ++ <0x1800e000 0x004>; ++ reg-names = "mspi", "bspi", "intr_regs", "intr_status_reg", "cru_ctrl"; ++ interrupts = ; ++ num-cs = <2>; ++ clocks = <&iproc_apb_clk>; ++ status = "disabled"; ++ }; ++ ++ gmac0: ethernet@18042000 { ++ compatible = "brcm,xgs-iproc-amac"; ++ reg = <0x18042000 0x1000>, ++ <0x18110000 0x1000>; ++ reg-names = "amac_base", "idm_base"; ++ interrupts = ; ++ status = "disabled"; ++ }; ++ ++ usbphy0: usbphy0 { ++ #phy-cells = <0>; ++ compatible = "brcm,usb-phy-sb2"; ++ reg = idm_usb2h: <0x18115000 0x1000>, ++ idm_usb2d: <0x18111000 0x1000>; ++ vbus-gpios = <&gpio_ccg 1 GPIO_ACTIVE_LOW>; ++ status = "disabled"; ++ }; ++ ++ ehci0: usb@18048000 { ++ compatible = "generic-ehci"; ++ reg = <0x18048000 0x800>; ++ interrupts = ; ++ usb-phy = <&usbphy0>; ++ status = "disabled"; ++ }; ++ ++ ohci0: usb@18048800 { ++ compatible = "generic-ohci"; ++ reg = <0x18048800 0x800>; ++ interrupts = ; ++ usb-phy = <&usbphy0>; ++ status = "disabled"; ++ }; ++ ++ usbd: usbd@1804c000 { ++ compatible = "brcm,usbd-xgs-iproc"; ++ reg = usb2d: <0x1804c000 0x2000>, ++ idm_usb: <0x18111000 0x1000>; ++ interrupts = ; ++ usb-phy = <&usbphy0>; ++ status = "disabled"; ++ }; ++ ++ gpio_ccg: gpio@1800a000 { ++ compatible = "brcm,iproc-gpio-ccg"; ++ #gpio-cells = <2>; ++ reg = gpio: <0x1800a000 0x50>; ++ ngpios = <16>; ++ pin-reg-bit-shift = <0>; ++ pin-base = <0>; ++ gpio-controller; ++ interrupt-controller; ++ #interrupt-cells = <2>; ++ interrupts = ; ++ status = "disabled"; ++ }; ++ ++ nand: nand@18046000 { ++ compatible = "brcm,nand-iproc", "brcm,brcmnand-v6.1"; ++ reg = <0x18046000 0x600>, ++ <0xf8105408 0x10>, ++ <0x18046f00 0x20>; ++ reg-names = "nand", "iproc-idm", "iproc-ext"; ++ interrupts = ; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ brcm,nand-has-wp; ++ status = "disabled"; ++ }; ++ ++ i2c0: i2c@18008000 { ++ compatible = "brcm,iproc-i2c"; ++ reg = <0x18008000 0x100>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ interrupts = ; ++ clock-frequency = <100000>; ++ status = "disabled"; ++ }; ++ ++ mdio_int: mdio_int@18002000 { ++ compatible = "brcm,iproc-ccg-mdio"; ++ reg = <0x18002000 0x1000>, ++ <0x1800fc40 0x4>; ++ reg-names = "mdio-base", "ipoc-mdio-enable"; ++ iproc-mdio-sel-bit = <1>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ bus-type = "internal"; ++ clocks = <&iproc_apb_clk>; ++ status = "disabled"; ++ }; ++ ++ mdio_ext: mdio_ext@18002000 { ++ compatible = "brcm,iproc-ccg-mdio"; ++ reg = <0x18002000 0x1000>, ++ <0x1800fc40 0x4>; ++ reg-names = "mdio-base", "iproc-mdio-enable"; ++ iproc-mdio-sel-bit = <1>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ bus-type = "external"; ++ clocks = <&iproc_apb_clk>; ++ status = "disabled"; ++ }; ++ ++ hwrng: hwrng@18032000 { ++ compatible = "brcm,iproc-rng200"; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ reg = <0x18032000 0x1000>; ++ status = "disabled"; ++ }; ++ ++ iproc_wdt: iproc_wdt@18009000 { ++ compatible = "arm,sp805", "arm,primecell"; ++ reg = iproc_wdt_base: <0x18009000 0x1000>, ++ iproc_reset_reg: <0x1800f014 0x4>; ++ wdt_boot_status_bit = <0x0>; ++ clocks = <&iproc_apb_clk>; ++ clock-names = "apb_pclk"; ++ status = "disabled"; ++ }; ++ ++ dmac0: dma@18018000 { ++ compatible = "arm,pl330", "arm,primecell"; ++ reg = pl330_base: <0x18018000 0x1000>; ++ interrupts = , ++ , ++ , ++ , ++ , ++ , ++ , ++ ; ++ clocks = <&iproc_apb_clk>; ++ clock-names = "apb_pclk"; ++ #dma-cells = <1>; ++ #dma-channels = <8>; ++ #dma-requests = <16>; ++ status = "disabled"; ++ }; ++ ++ /* cmicd */ ++ iproc_cmicd: iproc_cmicd@03200000 { ++ compatible = "brcm,iproc-cmicd"; ++ reg = <0x03200000 0x100000>; ++ interrupts = ; ++ status = "disabled"; ++ }; ++ }; ++ ++ pcie0: pcie@18012000 { ++ compatible = "brcm,iproc-pcie"; ++ reg = <0x18012000 0x1000>; ++ linux,pci-domain = <0>; ++ ++ #interrupt-cells = <1>; ++ interrupt-map-mask = <0 0 0 0>; ++ interrupt-map = <0 0 0 0 &gic GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>; ++ ++ #address-cells = <3>; ++ #size-cells = <2>; ++ device_type = "pci"; ++ ++ /* ++ * non-prefetchable mem space, pcie addr 0x0 0x20000000, ++ * cpu addr 0x20000000, size 0x0 0x20000000 ++ */ ++ ranges = <0x82000000 0 0x20000000 0x20000000 0 0x20000000>; ++ wa-list = "pcie_rc"; ++ status = "disabled"; ++ ++ msi-parent = <&msi0>; ++ msi0: msi@18012000 { ++ compatible = "brcm,iproc-msi"; ++ msi-controller; ++ interrupt-parent = <&gic>; ++ interrupts = , ++ , ++ , ++ ; ++ }; ++ }; ++ ++ dmu_pcu: dmu_pcu@1800f000 { ++ compatible = "brcm,iproc-dmu-pcu"; ++ reg = <0x1800f000 0xc00>; ++ }; ++ ++ iproc_wrap_ctrl: iproc_wrap_ctrl@1800fc00 { ++ compatible = "brcm,iproc-wrap-ctrl"; ++ reg = <0x1800fc00 0x100>; ++ }; ++ ++ iproc_idm: iproc_idm@18100000 { ++ compatible = "brcm,iproc-idm"; ++ reg = idm0: <0x18100000 0x100000>, ++ idm1: <0xf8100000 0x100000>; ++ interrupts = , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ ; ++ }; ++}; +diff --git a/arch/arm/boot/dts/broadcom/bcm-wolfhound2.dtsi b/arch/arm/boot/dts/broadcom/bcm-wolfhound2.dtsi +new file mode 100644 +index 000000000000..abb7abb03ccc +--- /dev/null ++++ b/arch/arm/boot/dts/broadcom/bcm-wolfhound2.dtsi +@@ -0,0 +1,385 @@ ++/* ++ * BSD LICENSE ++ * ++ * Copyright(c) 2016 Broadcom Corporation. All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * ++ * * Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * * Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in ++ * the documentation and/or other materials provided with the ++ * distribution. ++ * * Neither the name of Broadcom Corporation nor the names of its ++ * contributors may be used to endorse or promote products derived ++ * from this software without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ */ ++ ++#include ++#include ++ ++/ { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ model = "Broadcom HR3 iProc"; ++ compatible = "brcm,hurricane3"; ++ interrupt-parent = <&gic>; ++ ++ cpus { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ cpu@0 { ++ device_type = "cpu"; ++ compatible = "arm,cortex-a9"; ++ next-level-cache = <&L2>; ++ reg = <0x0>; ++ }; ++ }; ++ ++ core { ++ compatible = "simple-bus"; ++ ranges = <0x00000000 0x19000000 0x00023000>; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ ++ a9pll: arm_clk@00000 { ++ #clock-cells = <0>; ++ compatible = "brcm,xgs-iproc-armpll"; ++ clocks = <&osc>; ++ reg = <0x0 0x1000>; ++ }; ++ ++ gic: interrupt-controller@21000 { ++ compatible = "arm,cortex-a9-gic"; ++ #interrupt-cells = <3>; ++ interrupt-controller; ++ reg = <0x21000 0x1000>, <0x20100 0x100>; ++ }; ++ ++ twd-timer@20600 { ++ compatible = "arm,cortex-a9-twd-timer"; ++ reg = <0x20600 0x100>; ++ interrupts = ; ++ clocks = <&periph_clk>; ++ }; ++ ++ timer@20200 { ++ compatible = "arm,cortex-a9-global-timer"; ++ reg = <0x20200 0x100>; ++ interrupts = ; ++ clocks = <&periph_clk>; ++ }; ++ ++ L2: l2-cache { ++ compatible = "arm,pl310-cache"; ++ reg = <0x22000 0x1000>; ++ cache-unified; ++ cache-level = <2>; ++ arm,filter-ranges = <0x60000000 0x80000000>; ++ }; ++ }; ++ ++ clocks { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ ranges; ++ ++ osc: oscillator { ++ #clock-cells = <0>; ++ compatible = "fixed-clock"; ++ clock-frequency = <25000000>; ++ }; ++ ++ periph_clk: periph_clk { ++ #clock-cells = <0>; ++ compatible = "fixed-factor-clock"; ++ clocks = <&a9pll>; ++ clock-div = <2>; ++ clock-mult = <1>; ++ }; ++ ++ iproc_axi_clk: iproc_axi_clk@1800fc00 { ++ #clock-cells = <0>; ++ compatible = "brcm,xgs-iproc-axi-clk"; ++ clocks = <&osc>; ++ reg = <0x1800fc00 0x1c>; ++ }; ++ ++ iproc_apb_clk: iproc_apb_clk { ++ #clock-cells = <0>; ++ compatible = "fixed-factor-clock"; ++ clocks = <&iproc_axi_clk>; ++ clock-div = <4>; ++ clock-mult = <1>; ++ }; ++ }; ++ ++ axi { ++ compatible = "simple-bus"; ++ ranges; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ ++ uart0: serial@18020000 { ++ compatible = "snps,dw-apb-uart"; ++ reg = <0x18020000 0x100>; ++ interrupts = ; ++ clocks = <&iproc_apb_clk>; ++ reg-io-width = <4>; ++ reg-shift = <2>; ++ status = "disabled"; ++ }; ++ ++ uart1: serial@18021000 { ++ compatible = "snps,dw-apb-uart"; ++ reg = <0x18021000 0x100>; ++ interrupts = ; ++ clocks = <&iproc_apb_clk>; ++ reg-io-width = <4>; ++ reg-shift = <2>; ++ status = "disabled"; ++ }; ++ ++ gmac0: ethernet@18042000 { ++ compatible = "brcm,xgs-wh2-amac"; ++ reg = <0x18042000 0x1000>, ++ <0x18110000 0x1000>; ++ reg-names = "amac_base", "idm_base"; ++ interrupts = ; ++ status = "disabled"; ++ }; ++ ++ gpio_ccg: gpio@1800a000 { ++ compatible = "brcm,iproc-gpio-ccg"; ++ #gpio-cells = <2>; ++ reg = gpio: <0x1800a000 0x50>; ++ ngpios = <12>; ++ pin-reg-bit-shift = <4>; ++ pin-base = <4>; ++ gpio-controller; ++ interrupt-controller; ++ #interrupt-cells = <2>; ++ interrupts = ; ++ status = "disabled"; ++ }; ++ ++ usbphy0: usbphy@1800fc40 { ++ #phy-cells = <0>; ++ compatible = "brcm,usb-phy-gh"; ++ reg = idm_usb2h: <0x18115000 0x1000>, ++ idm_usb2d: <0x18111000 0x1000>; ++ vbus-gpios = <&gpio_ccg 3 GPIO_ACTIVE_HIGH>; ++ status = "disabled"; ++ }; ++ ++ ehci0: usb@18048000 { ++ compatible = "generic-ehci"; ++ reg = <0x18048000 0x800>; ++ interrupts = ; ++ usb-phy = <&usbphy0>; ++ status = "disabled"; ++ }; ++ ++ ohci0: usb@18048800 { ++ compatible = "generic-ohci"; ++ reg = <0x18048800 0x800>; ++ interrupts = ; ++ usb-phy = <&usbphy0>; ++ /* Over Current Protect Mode fix */ ++ iproc-ocpm-fix; ++ status = "disabled"; ++ }; ++ ++ usbd: usbd@1804c000 { ++ compatible = "brcm,usbd-xgs-iproc"; ++ reg = <0x1804c000 0x2000>; ++ interrupts = ; ++ usb-phy = <&usbphy0>; ++ status = "disabled"; ++ }; ++ ++ qspi: spi@18047000 { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ compatible = "brcm,spi-bcm-qspi", "brcm,spi-xgs-iproc-qspi"; ++ reg = <0x18047200 0x188>, ++ <0x18047000 0x124>, ++ <0x1811f408 0x004>, ++ <0x180473a0 0x01c>, ++ <0x1800e000 0x004>; ++ reg-names = "mspi", "bspi", "intr_regs", "intr_status_reg", "cru_ctrl"; ++ interrupts = ; ++ num-cs = <2>; ++ clocks = <&iproc_apb_clk>; ++ status = "disabled"; ++ }; ++ ++ i2c0: i2c@18008000 { ++ compatible = "brcm,iproc-i2c"; ++ reg = <0x18008000 0x100>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ interrupts = ; ++ clock-frequency = <100000>; ++ status = "disabled"; ++ }; ++ ++ /* cmicd cmic_common mdio */ ++ mdio_int0: mdio_int0@03210000 { ++ compatible = "brcm,iproc-cmicd-mdio"; ++ reg = <0x03210000 0x1000>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ #bus-id = <0>; ++ bus-type = "internal"; ++ clocks = <&iproc_apb_clk>; ++ status = "disabled"; ++ }; ++ ++ /* cmicd cmic_common mdio */ ++ mdio_int1: mdio_int1@03210000 { ++ compatible = "brcm,iproc-cmicd-mdio"; ++ reg = <0x03210000 0x1000>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ #bus-id = <1>; ++ bus-type = "internal"; ++ clocks = <&iproc_apb_clk>; ++ status = "disabled"; ++ }; ++ ++ /* CCG mdio */ ++ mdio_int2: mdio_int2@18002000 { ++ compatible = "brcm,iproc-ccg-mdio"; ++ reg = <0x18002000 0x1000>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ bus-type = "internal"; ++ clocks = <&iproc_apb_clk>; ++ status = "disabled"; ++ }; ++ ++ hwrng: hwrng@18032000 { ++ compatible = "brcm,iproc-rng200"; ++ reg = <0x18032000 0x1000>; ++ status = "disabled"; ++ }; ++ ++ iproc_wdt: iproc_wdt@18009000 { ++ compatible = "arm,sp805", "arm,primecell"; ++ reg = iproc_wdt_base: <0x18009000 0x1000>, ++ iproc_reset_reg: <0x1800f014 0x4>; ++ wdt_boot_status_bit = <0x0>; ++ clocks = <&iproc_apb_clk>; ++ clock-names = "apb_pclk"; ++ status = "disabled"; ++ }; ++ ++ dmac0: dma@18018000 { ++ compatible = "arm,pl330", "arm,primecell"; ++ reg = pl330_base: <0x18018000 0x1000>; ++ interrupts = , ++ , ++ , ++ , ++ , ++ , ++ , ++ ; ++ /*arm,primecell-periphid = <0x00041330>;*/ ++ clocks = <&iproc_apb_clk>; ++ clock-names = "apb_pclk"; ++ #dma-cells = <1>; ++ #dma-channels = <8>; ++ #dma-requests = <16>; ++ status = "disabled"; ++ }; ++ ++ /* cmicd */ ++ iproc_cmicd: iproc_cmicd@03200000 { ++ compatible = "brcm,iproc-cmicd"; ++ reg = <0x03200000 0x100000>; ++ interrupts = ; ++ status = "disabled"; ++ }; ++ }; ++ ++ pcie0: pcie@18012000 { ++ compatible = "brcm,iproc-pcie"; ++ reg = <0x18012000 0x1000>; ++ linux,pci-domain = <0>; ++ ++ #interrupt-cells = <1>; ++ interrupt-map-mask = <0 0 0 0>; ++ interrupt-map = <0 0 0 0 &gic GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>; ++ ++ #address-cells = <3>; ++ #size-cells = <2>; ++ device_type = "pci"; ++ ++ /* ++ * non-prefetchable mem space, pcie addr 0x0 0x20000000, ++ * cpu addr 0x20000000, size 0x0 0x20000000 ++ */ ++ ranges = <0x82000000 0 0x20000000 0x20000000 0 0x20000000>; ++ wa-list = "pcie_rc", "pcie_perst"; ++ status = "disabled"; ++ ++ msi-parent = <&msi0>; ++ msi0: msi@18012000 { ++ compatible = "brcm,iproc-msi"; ++ msi-controller; ++ interrupt-parent = <&gic>; ++ interrupts = , ++ , ++ , ++ ; ++ }; ++ }; ++ ++ dmu_pcu: dmu_pcu@1800f000 { ++ compatible = "brcm,iproc-dmu-pcu"; ++ reg = <0x1800f000 0xc00>; ++ }; ++ ++ iproc_wrap_ctrl: iproc_wrap_ctrl@1800fc00 { ++ compatible = "brcm,iproc-wrap-ctrl"; ++ reg = <0x1800fc00 0x100>; ++ }; ++ ++ iproc_idm: iproc_idm@18100000 { ++ compatible = "brcm,iproc-idm"; ++ reg = <0x18100000 0x100000>; ++ interrupts = , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ ; ++ }; ++}; +diff --git a/arch/arm/boot/dts/broadcom/bcm95341x.dts b/arch/arm/boot/dts/broadcom/bcm95341x.dts +new file mode 100644 +index 000000000000..94e0fcaa63ae +--- /dev/null ++++ b/arch/arm/boot/dts/broadcom/bcm95341x.dts +@@ -0,0 +1,220 @@ ++/* ++ * BSD LICENSE ++ * ++ * Copyright(c) 2016 Broadcom Corporation. All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * ++ * * Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * * Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in ++ * the documentation and/or other materials provided with the ++ * distribution. ++ * * Neither the name of Broadcom Corporation nor the names of its ++ * contributors may be used to endorse or promote products derived ++ * from this software without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ */ ++ ++/dts-v1/; ++ ++#include "bcm-greyhound.dtsi" ++ ++/ { ++ model = "Broadcom GH SVK (BCM95341x)"; ++ compatible = "brcm,bcm95341x", "brcm,greyhound"; ++ ++ aliases { ++ serial0 = &uart0; ++ serial1 = &uart1; ++ ethernet0 = &gmac0; ++ }; ++ ++ chosen { ++ bootargs = "console=ttyS0,115200n8 maxcpus=1 mem=496M"; ++ }; ++}; ++ ++&uart0 { ++ status = "okay"; ++}; ++ ++&uart1 { ++ status = "okay"; ++}; ++ ++&gmac0 { ++ status = "okay"; ++ phy-handle = <&amac_phy0>; ++ phy-mode = "gmii"; /* "gmii-id", "gmii-rxid" */ ++}; ++ ++&usbphy0 { ++ status = "okay"; ++}; ++ ++&ehci0 { ++ status = "okay"; ++}; ++ ++&ohci0 { ++ status = "okay"; ++}; ++ ++&usbd { ++ status = "okay"; ++}; ++ ++&gpio_ccg { ++ status = "okay"; ++}; ++ ++&pcie0 { ++ status = "okay"; ++ mdio-phy-handle = <&pcie_phy0>; ++}; ++ ++&i2c0 { ++ status = "okay"; ++ eeprom@0x50 { ++ compatible = "atmel,24c01"; ++ reg = <0x50>; ++ pagesize = <8>; ++ }; ++}; ++ ++&nand { ++ status = "okay"; ++ nandcs@1 { ++ compatible = "brcm,nandcs"; ++ reg = <0>; ++ nand-on-flash-bbt; ++ /*nand-bus-width = <8>;*/ ++ nand-ecc-strength = <24>; ++ nand-ecc-step-size = <1024>; ++ brcm,nand-oob-sector-size = <27>; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ ++ partition@0 { ++ label = "nboot"; ++ reg = <0x0 0x200000>; ++ /*read-only;*/ ++ }; ++ partition@1 { ++ label = "nenv"; ++ reg = <0x200000 0x400000>; ++ }; ++ partition@2 { ++ label = "nsystem"; ++ reg = <0x600000 0xa00000>; ++ }; ++ partition@3 { ++ label = "nrootfs"; ++ reg = <0x1000000 0xf000000>; ++ }; ++ partition@4 { ++ label = "ncustfs"; ++ reg = <0x10000000 0x30000000>; ++ }; ++ }; ++}; ++ ++&qspi { ++ status = "okay"; ++ flash: m25p80@0 { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ compatible = "m25p80"; ++ m25p,fast-read = <1>; ++ spi-max-frequency = <62500000>; ++ reg = <0x0>; ++ partition@0 { ++ label = "boot"; ++ reg = <0x00000000 0x000c0000>; ++ /*read-only;*/ ++ }; ++ partition@1 { ++ label = "env"; ++ reg = <0x000c0000 0x00040000>; ++ }; ++ partition@2 { ++ label = "system"; ++ reg = <0x00100000 0x00f00000>; ++ }; ++ partition@3 { ++ label = "rootfs"; ++ reg = <0x01000000 0x03000000>; ++ }; ++ }; ++}; ++ ++&pnor_flash { ++ status = "okay"; ++ ++ partition@0 { ++ label = "pboot"; ++ reg = <0x0 0xc0000>; ++ /*read-only;*/ ++ }; ++ partition@1 { ++ label = "penv"; ++ reg = <0xc0000 0x40000>; ++ }; ++ partition@2 { ++ label = "psystem"; ++ reg = <0x100000 0xf00000>; ++ }; ++ partition@3 { ++ label = "prootfs"; ++ reg = <0x1000000 0x1000000>; ++ }; ++ partition@4 { ++ label = "pcustfs"; ++ reg = <0x2000000 0x2000000>; ++ }; ++}; ++ ++&mdio_int { ++ status = "okay"; ++ pcie_phy0: pcie_phy@0 { ++ reg = <2>; ++ }; ++}; ++ ++&mdio_ext { ++ status = "okay"; ++ amac_phy0: amac_phy@0 { ++ reg = <24>; ++ }; ++}; ++ ++&hwrng { ++ status = "okay"; ++}; ++ ++&iproc_wdt { ++ status = "okay"; ++}; ++ ++&dmac0 { ++ status = "okay"; ++}; ++ ++&iproc_cmicd { ++ status = "okay"; ++}; +diff --git a/arch/arm/boot/dts/broadcom/bcm953444.dts b/arch/arm/boot/dts/broadcom/bcm953444.dts +new file mode 100644 +index 000000000000..f06e975041fc +--- /dev/null ++++ b/arch/arm/boot/dts/broadcom/bcm953444.dts +@@ -0,0 +1,135 @@ ++/* ++ * BSD LICENSE ++ * ++ * Copyright(c) 2016 Broadcom Corporation. All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * ++ * * Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * * Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in ++ * the documentation and/or other materials provided with the ++ * distribution. ++ * * Neither the name of Broadcom Corporation nor the names of its ++ * contributors may be used to endorse or promote products derived ++ * from this software without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ */ ++ ++/dts-v1/; ++ ++#include "bcm-hurricane3.dtsi" ++ ++/ { ++ model = "Broadcom HR3 SVK (BCM953444K)"; ++ compatible = "brcm,bcm953444k", "brcm,hurricane3"; ++ ++ aliases { ++ serial0 = &uart0; ++ serial1 = &uart1; ++ ethernet0 = &gmac0; ++ }; ++ ++ chosen { ++ bootargs = "console=ttyS0,115200n8 maxcpus=1 mem=496M"; ++ }; ++}; ++ ++&uart0 { ++ status = "okay"; ++}; ++ ++&uart1 { ++ status = "okay"; ++}; ++ ++&gmac0 { ++ status = "okay"; ++ phy-handle = <&amac_phy0>; ++ phy-mode = "gmii"; /* "gmii-id", "gmii-rxid" */ ++}; ++ ++&gpio_ccg { ++ status = "okay"; ++}; ++ ++&pcie0 { ++ status = "okay"; ++ mdio-phy-handle = <&pcie_phy0>; ++}; ++ ++&i2c0 { ++ status = "okay"; ++ eeprom@0x50 { ++ compatible = "atmel,24c01"; ++ reg = <0x50>; ++ pagesize = <8>; ++ }; ++}; ++ ++&qspi { ++ status = "okay"; ++ flash: m25p80@0 { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ compatible = "m25p80"; ++ m25p,fast-read = <1>; ++ spi-max-frequency = <62500000>; ++ reg = <0x0>; ++ partition@0 { ++ label = "boot"; ++ reg = <0x00000000 0x000c0000>; ++ /*read-only;*/ ++ }; ++ partition@1 { ++ label = "env"; ++ reg = <0x000c0000 0x00040000>; ++ }; ++ partition@2 { ++ label = "system"; ++ reg = <0x00100000 0x00f00000>; ++ }; ++ partition@3 { ++ label = "rootfs"; ++ reg = <0x01000000 0x03000000>; ++ }; ++ }; ++}; ++ ++&mdio_int { ++ status = "okay"; ++ pcie_phy0: pcie_phy@0 { ++ reg = <2>; ++ }; ++}; ++ ++&mdio_ext { ++ #bus-id = <1>; ++ status = "okay"; ++ amac_phy0: amac_phy@0 { ++ reg = <24>; ++ }; ++}; ++ ++&iproc_wdt { ++ status = "okay"; ++}; ++ ++&iproc_cmicd { ++ status = "okay"; ++}; ++ +diff --git a/arch/arm/boot/dts/broadcom/bcm953547.dts b/arch/arm/boot/dts/broadcom/bcm953547.dts +new file mode 100644 +index 000000000000..c6f459c1e614 +--- /dev/null ++++ b/arch/arm/boot/dts/broadcom/bcm953547.dts +@@ -0,0 +1,167 @@ ++/* ++ * BSD LICENSE ++ * ++ * Copyright(c) 2016 Broadcom Corporation. All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * ++ * * Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * * Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in ++ * the documentation and/or other materials provided with the ++ * distribution. ++ * * Neither the name of Broadcom Corporation nor the names of its ++ * contributors may be used to endorse or promote products derived ++ * from this software without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ */ ++ ++/dts-v1/; ++ ++#include "bcm-wolfhound2.dtsi" ++ ++/ { ++ model = "Broadcom WH2 SVK (BCM953547K)"; ++ compatible = "brcm,bcm953547k", "brcm,wolfhound2"; ++ ++ aliases { ++ serial0 = &uart0; ++ serial1 = &uart1; ++ ethernet0 = &gmac0; ++ }; ++ ++ chosen { ++ bootargs = "console=ttyS0,115200n8 maxcpus=1 mem=496M"; ++ }; ++}; ++ ++&uart0 { ++ status = "okay"; ++}; ++ ++&uart1 { ++ status = "okay"; ++}; ++ ++&gmac0 { ++ status = "okay"; ++ phy-handle = <&amac_phy0>; ++ phy-mode = "gmii"; /* "gmii-id", "gmii-rxid" */ ++ serdes-phy-handle = <&amac_serdes0>; ++}; ++ ++&usbphy0 { ++ status = "okay"; ++}; ++ ++&ehci0 { ++ status = "okay"; ++}; ++ ++&ohci0 { ++ status = "okay"; ++}; ++ ++&usbd { ++ status = "okay"; ++}; ++ ++&gpio_ccg { ++ status = "okay"; ++}; ++ ++&pcie0 { ++ status = "okay"; ++ mdio-phy-handle = <&pcie_phy0>; ++}; ++ ++&i2c0 { ++ status = "okay"; ++ eeprom@0x50 { ++ compatible = "atmel,24c01"; ++ reg = <0x50>; ++ pagesize = <8>; ++ }; ++}; ++ ++&qspi { ++ status = "okay"; ++ flash: m25p80@0 { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ compatible = "m25p80"; ++ m25p,fast-read = <1>; ++ spi-max-frequency = <62500000>; ++ reg = <0x0>; ++ partition@0 { ++ label = "boot"; ++ reg = <0x00000000 0x000c0000>; ++ /*read-only;*/ ++ }; ++ partition@1 { ++ label = "env"; ++ reg = <0x000c0000 0x00040000>; ++ }; ++ partition@2 { ++ label = "system"; ++ reg = <0x00100000 0x00f00000>; ++ }; ++ partition@3 { ++ label = "rootfs"; ++ reg = <0x01000000 0x03000000>; ++ }; ++ }; ++}; ++ ++&mdio_int0 { ++ status = "okay"; ++ amac_phy0: amac_phy@0 { ++ reg = <24>; ++ }; ++}; ++ ++&mdio_int1 { ++ status = "okay"; ++ amac_serdes0: amac_serdes@0 { ++ reg = <20>; ++ lane-num = <3>; ++ }; ++}; ++ ++&mdio_int2 { ++ status = "okay"; ++ pcie_phy0: pcie_phy@0 { ++ reg = <2>; ++ }; ++}; ++ ++&hwrng { ++ status = "okay"; ++}; ++ ++&iproc_wdt { ++ status = "okay"; ++}; ++ ++&dmac0 { ++ status = "okay"; ++}; ++ ++&iproc_cmicd { ++ status = "okay"; ++}; ++ +diff --git a/arch/arm/boot/dts/broadcom/bcm956160.dts b/arch/arm/boot/dts/broadcom/bcm956160.dts +new file mode 100644 +index 000000000000..06d8c9737f40 +--- /dev/null ++++ b/arch/arm/boot/dts/broadcom/bcm956160.dts +@@ -0,0 +1,225 @@ ++/* ++ * BSD LICENSE ++ * ++ * Copyright(c) 2016 Broadcom Corporation. All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * ++ * * Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * * Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in ++ * the documentation and/or other materials provided with the ++ * distribution. ++ * * Neither the name of Broadcom Corporation nor the names of its ++ * contributors may be used to endorse or promote products derived ++ * from this software without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ */ ++ ++/dts-v1/; ++ ++#include "bcm-hurricane3.dtsi" ++ ++/ { ++ model = "Broadcom HR3 SVK (BCM956160K)"; ++ compatible = "brcm,bcm956160k", "brcm,hurricane3"; ++ ++ aliases { ++ serial0 = &uart0; ++ serial1 = &uart1; ++ ethernet0 = &gmac0; ++ }; ++ ++ chosen { ++ bootargs = "console=ttyS0,115200n8 maxcpus=1 mem=496M"; ++ }; ++}; ++ ++&uart0 { ++ status = "okay"; ++}; ++ ++&uart1 { ++ status = "okay"; ++}; ++ ++&gmac0 { ++ status = "okay"; ++ phy-handle = <&amac_phy0>; ++ phy-mode = "gmii"; /* "gmii-id", "gmii-rxid" */ ++}; ++ ++&usbphy0 { ++ status = "okay"; ++}; ++ ++&ehci0 { ++ status = "okay"; ++}; ++ ++&ohci0 { ++ status = "okay"; ++}; ++ ++&usbd { ++ status = "okay"; ++}; ++ ++&sdio { ++ status = "okay"; ++}; ++ ++&gpio_ccg { ++ status = "okay"; ++}; ++ ++&pcie0 { ++ status = "okay"; ++ mdio-phy-handle = <&pcie_phy0>; ++}; ++ ++&i2c0 { ++ status = "okay"; ++ eeprom@0x50 { ++ compatible = "atmel,24c01"; ++ reg = <0x50>; ++ pagesize = <8>; ++ }; ++}; ++ ++&nand { ++ status = "okay"; ++ nandcs@1 { ++ compatible = "brcm,nandcs"; ++ reg = <0>; ++ nand-on-flash-bbt; ++ /*nand-bus-width = <8>;*/ ++ nand-ecc-strength = <24>; ++ nand-ecc-step-size = <1024>; ++ brcm,nand-oob-sector-size = <27>; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ ++ partition@0 { ++ label = "nboot"; ++ reg = <0x0 0x200000>; ++ /*read-only;*/ ++ }; ++ partition@1 { ++ label = "nenv"; ++ reg = <0x200000 0x400000>; ++ }; ++ partition@2 { ++ label = "nsystem"; ++ reg = <0x600000 0xa00000>; ++ }; ++ partition@3 { ++ label = "nrootfs"; ++ reg = <0x1000000 0xf000000>; ++ }; ++ partition@4 { ++ label = "ncustfs"; ++ reg = <0x10000000 0x30000000>; ++ }; ++ }; ++}; ++ ++&qspi { ++ status = "okay"; ++ flash: m25p80@0 { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ compatible = "m25p80"; ++ m25p,fast-read = <1>; ++ spi-max-frequency = <62500000>; ++ reg = <0x0>; ++ partition@0 { ++ label = "boot"; ++ reg = <0x00000000 0x000c0000>; ++ /*read-only;*/ ++ }; ++ partition@1 { ++ label = "env"; ++ reg = <0x000c0000 0x00040000>; ++ }; ++ partition@2 { ++ label = "system"; ++ reg = <0x00100000 0x00f00000>; ++ }; ++ partition@3 { ++ label = "rootfs"; ++ reg = <0x01000000 0x03000000>; ++ }; ++ }; ++}; ++ ++&pnor_flash { ++ status = "okay"; ++ ++ partition@0 { ++ label = "pboot"; ++ reg = <0x0 0xc0000>; ++ /*read-only;*/ ++ }; ++ partition@1 { ++ label = "penv"; ++ reg = <0xc0000 0x40000>; ++ }; ++ partition@2 { ++ label = "psystem"; ++ reg = <0x100000 0xf00000>; ++ }; ++ partition@3 { ++ label = "prootfs"; ++ reg = <0x1000000 0x1000000>; ++ }; ++ partition@4 { ++ label = "pcustfs"; ++ reg = <0x2000000 0x2000000>; ++ }; ++}; ++ ++&mdio_int { ++ status = "okay"; ++ pcie_phy0: pcie_phy@0 { ++ reg = <2>; ++ }; ++}; ++ ++&mdio_ext { ++ status = "okay"; ++ amac_phy0: amac_phy@0 { ++ reg = <24>; ++ }; ++}; ++ ++&hwrng { ++ status = "okay"; ++}; ++ ++&iproc_wdt { ++ status = "okay"; ++}; ++ ++&dmac0 { ++ status = "okay"; ++}; ++ ++&iproc_cmicd { ++ status = "okay"; ++}; ++ +diff --git a/arch/arm/boot/dts/broadcom/bcm956170.dts b/arch/arm/boot/dts/broadcom/bcm956170.dts +new file mode 100644 +index 000000000000..2dcc95ac516f +--- /dev/null ++++ b/arch/arm/boot/dts/broadcom/bcm956170.dts +@@ -0,0 +1,248 @@ ++/* ++ * BSD LICENSE ++ * ++ * Copyright(c) 2016 Broadcom Corporation. All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * ++ * * Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * * Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in ++ * the documentation and/or other materials provided with the ++ * distribution. ++ * * Neither the name of Broadcom Corporation nor the names of its ++ * contributors may be used to endorse or promote products derived ++ * from this software without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ */ ++ ++/dts-v1/; ++ ++#include "bcm-greyhound2.dtsi" ++ ++/ { ++ model = "Broadcom GH2 SVK (BCM956170)"; ++ compatible = "brcm,bcm956170", "brcm,greyhound2"; ++ ++ aliases { ++ serial0 = &uart0; ++ serial1 = &uart1; ++ ethernet0 = &gmac0; ++ ethernet1 = &gmac1; ++ }; ++ ++ chosen { ++ bootargs = "console=ttyS0,115200n8 maxcpus=1 mem=496M"; ++ }; ++}; ++ ++&uart0 { ++ status = "okay"; ++}; ++ ++&uart1 { ++ status = "okay"; ++}; ++ ++&gmac0 { ++ status = "okay"; ++ phy-handle = <&amac_phy0>; ++ phy-mode = "sgmii"; ++ serdes-handle = <&amac_serdes0>; ++}; ++ ++&gmac1 { ++ status = "okay"; ++ phy-handle = <&amac_phy1>; ++ phy-mode = "sgmii"; ++ serdes-handle = <&amac_serdes1>; ++}; ++ ++&usbphy0 { ++ status = "okay"; ++}; ++ ++&ehci0 { ++ status = "okay"; ++}; ++ ++&ohci0 { ++ status = "okay"; ++}; ++ ++&usbd { ++ status = "okay"; ++}; ++ ++&gpio_ccg { ++ status = "okay"; ++}; ++ ++&pcie0 { ++ status = "okay"; ++ mdio-phy-handle = <&pcie_phy0>; ++}; ++ ++&i2c0 { ++ status = "okay"; ++ eeprom@0x50 { ++ compatible = "atmel,24c01"; ++ reg = <0x50>; ++ pagesize = <8>; ++ }; ++}; ++ ++&nand { ++ status = "okay"; ++ nandcs@1 { ++ compatible = "brcm,nandcs"; ++ reg = <0>; ++ nand-on-flash-bbt; ++ /*nand-bus-width = <8>;*/ ++ nand-ecc-strength = <24>; ++ nand-ecc-step-size = <1024>; ++ brcm,nand-oob-sector-size = <27>; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ ++ partition@0 { ++ label = "nboot"; ++ reg = <0x0 0x200000>; ++ /*read-only;*/ ++ }; ++ partition@1 { ++ label = "nenv"; ++ reg = <0x200000 0x400000>; ++ }; ++ partition@2 { ++ label = "nsystem"; ++ reg = <0x600000 0xa00000>; ++ }; ++ partition@3 { ++ label = "nrootfs"; ++ reg = <0x1000000 0xf000000>; ++ }; ++ partition@4 { ++ label = "ncustfs"; ++ reg = <0x10000000 0x30000000>; ++ }; ++ }; ++}; ++ ++&qspi { ++ status = "okay"; ++ flash: m25p80@0 { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ compatible = "m25p80"; ++ m25p,fast-read = <1>; ++ spi-max-frequency = <62500000>; ++ reg = <0x0>; ++ partition@0 { ++ label = "boot"; ++ reg = <0x00000000 0x000c0000>; ++ /*read-only;*/ ++ }; ++ partition@1 { ++ label = "env"; ++ reg = <0x000c0000 0x00040000>; ++ }; ++ partition@2 { ++ label = "system"; ++ reg = <0x00100000 0x00f00000>; ++ }; ++ partition@3 { ++ label = "rootfs"; ++ reg = <0x01000000 0x03000000>; ++ }; ++ }; ++}; ++ ++&pnor_flash { ++ status = "okay"; ++ ++ partition@0 { ++ label = "pboot"; ++ reg = <0x0 0xc0000>; ++ /*read-only;*/ ++ }; ++ partition@1 { ++ label = "penv"; ++ reg = <0xc0000 0x40000>; ++ }; ++ partition@2 { ++ label = "psystem"; ++ reg = <0x100000 0xf00000>; ++ }; ++ partition@3 { ++ label = "prootfs"; ++ reg = <0x1000000 0x1000000>; ++ }; ++ partition@4 { ++ label = "pcustfs"; ++ reg = <0x2000000 0x2000000>; ++ }; ++}; ++ ++&ccg_mdio_int { ++ status = "okay"; ++ pcie_phy0: pcie_phy@0 { ++ reg = <2>; ++ }; ++}; ++ ++&mdio_int { ++ status = "okay"; ++ amac_serdes0: amac_serdes@0 { ++ reg = <25>; ++ lane-num = <0>; ++ }; ++ amac_serdes1: amac_serdes@1 { ++ reg = <26>; ++ lane-num = <1>; ++ }; ++}; ++ ++&mdio_ext { ++ status = "okay"; ++ amac_phy0: amac_phy@0 { ++ reg = <16>; ++ }; ++ amac_phy1: amac_phy@1 { ++ reg = <17>; ++ }; ++}; ++ ++&hwrng { ++ status = "okay"; ++}; ++ ++&iproc_wdt { ++ status = "okay"; ++}; ++ ++&dmac0 { ++ status = "okay"; ++}; ++ ++&crypto { ++ status = "okay"; ++}; ++ ++&iproc_cmicd { ++ status = "okay"; ++}; +diff --git a/arch/arm/boot/dts/broadcom/bcm956260.dts b/arch/arm/boot/dts/broadcom/bcm956260.dts +new file mode 100644 +index 000000000000..d46621401ddf +--- /dev/null ++++ b/arch/arm/boot/dts/broadcom/bcm956260.dts +@@ -0,0 +1,203 @@ ++/* ++ * BSD LICENSE ++ * ++ * Copyright(c) 2016 Broadcom Corporation. All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * ++ * * Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * * Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in ++ * the documentation and/or other materials provided with the ++ * distribution. ++ * * Neither the name of Broadcom Corporation nor the names of its ++ * contributors may be used to endorse or promote products derived ++ * from this software without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ */ ++ ++/dts-v1/; ++ ++#include "bcm-saber2.dtsi" ++ ++/ { ++ model = "Broadcom SB2 SVK (BCM956260K)"; ++ compatible = "brcm,bcm956260k", "brcm,saber2"; ++ ++ aliases { ++ serial0 = &uart0; ++ serial1 = &uart1; ++ ethernet0 = &gmac0; ++ }; ++ ++ chosen { ++ bootargs = "console=ttyS0,115200n8 maxcpus=1 mem=496M"; ++ }; ++}; ++ ++&uart0 { ++ status = "okay"; ++}; ++ ++&uart1 { ++ status = "okay"; ++}; ++ ++&gmac0 { ++ status = "okay"; ++ phy-handle = <&amac_phy0>; ++ phy-mode = "sgmii"; ++ serdes-handle = <&amac_serdes0>; ++}; ++ ++&usbphy0 { ++ status = "okay"; ++ mdio-phy-handle = <&usb_phy>; ++}; ++ ++&ehci0 { ++ status = "okay"; ++}; ++ ++&ohci0 { ++ status = "okay"; ++}; ++ ++&usbd { ++ status = "okay"; ++}; ++ ++&gpio_ccg { ++ status = "okay"; ++}; ++ ++&pcie0 { ++ status = "okay"; ++ mdio-phy-handle = <&pcie_phy0>; ++}; ++ ++&i2c0 { ++ status = "okay"; ++ eeprom@0x50 { ++ compatible = "atmel,24c64"; ++ reg = <0x50>; ++ pagesize = <32>; ++ }; ++}; ++ ++&nand { ++ status = "okay"; ++ nandcs@1 { ++ compatible = "brcm,nandcs"; ++ reg = <0>; ++ nand-on-flash-bbt; ++ /*nand-bus-width = <8>;*/ ++ nand-ecc-strength = <24>; ++ nand-ecc-step-size = <1024>; ++ brcm,nand-oob-sector-size = <27>; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ ++ partition@0 { ++ label = "nboot"; ++ reg = <0x0 0x200000>; ++ /*read-only;*/ ++ }; ++ partition@1 { ++ label = "nenv"; ++ reg = <0x200000 0x400000>; ++ }; ++ partition@2 { ++ label = "nsystem"; ++ reg = <0x600000 0xa00000>; ++ }; ++ partition@3 { ++ label = "nrootfs"; ++ reg = <0x1000000 0xf000000>; ++ }; ++ partition@4 { ++ label = "ncustfs"; ++ reg = <0x10000000 0x70000000>; ++ }; ++ }; ++}; ++ ++&qspi { ++ status = "okay"; ++ flash: m25p80@0 { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ compatible = "m25p80"; ++ m25p,fast-read = <1>; ++ spi-max-frequency = <62500000>; ++ reg = <0x0>; ++ partition@0 { ++ label = "boot"; ++ reg = <0x00000000 0x000c0000>; ++ /*read-only;*/ ++ }; ++ partition@1 { ++ label = "env"; ++ reg = <0x000c0000 0x00040000>; ++ }; ++ partition@2 { ++ label = "system"; ++ reg = <0x00100000 0x00f00000>; ++ }; ++ partition@3 { ++ label = "rootfs"; ++ reg = <0x01000000 0x01000000>; ++ }; ++ }; ++}; ++ ++ ++&mdio_int { ++ status = "okay"; ++ amac_serdes0: amac_serdes@0 { ++ reg = <1>; ++ }; ++ pcie_phy0: pcie_phy@0 { ++ reg = <2>; ++ }; ++ usb_phy: usb_phy@0 { ++ reg = <3>; ++ }; ++}; ++ ++&mdio_ext { ++ status = "okay"; ++ amac_phy0: amac_phy@0 { ++ reg = <1>; ++ }; ++}; ++ ++&hwrng { ++ status = "okay"; ++}; ++ ++&iproc_wdt { ++ status = "okay"; ++}; ++ ++&dmac0 { ++ status = "okay"; ++}; ++ ++&iproc_cmicd { ++ status = "okay"; ++}; +diff --git a/arch/arm/boot/dts/broadcom/bcm956340.dts b/arch/arm/boot/dts/broadcom/bcm956340.dts +new file mode 100644 +index 000000000000..861df802b10c +--- /dev/null ++++ b/arch/arm/boot/dts/broadcom/bcm956340.dts +@@ -0,0 +1,230 @@ ++/* ++ * BSD LICENSE ++ * ++ * Copyright(c) 2016 Broadcom Corporation. All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * ++ * * Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * * Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in ++ * the documentation and/or other materials provided with the ++ * distribution. ++ * * Neither the name of Broadcom Corporation nor the names of its ++ * contributors may be used to endorse or promote products derived ++ * from this software without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ */ ++ ++/dts-v1/; ++ ++#include "bcm-helix4.dtsi" ++ ++/ { ++ model = "Broadcom HX4 SVK (BCM956340K)"; ++ compatible = "brcm,bcm956340k", "brcm,helix4"; ++ ++ aliases { ++ serial0 = &uart0; ++ serial1 = &uart1; ++ ethernet0 = &gmac0; ++ ethernet1 = &gmac1; ++ sdk-serdes-lane2 = &amac_serdes2; ++ }; ++ ++ chosen { ++ bootargs = "console=ttyS0,115200n8 maxcpus=2 mem=496M"; ++ }; ++}; ++ ++&uart0 { ++ status = "okay"; ++}; ++ ++&uart1 { ++ status = "okay"; ++}; ++ ++&gmac0 { ++ status = "okay"; ++ phy-handle = <&amac_phy0>; ++ phy-mode = "sgmii"; /* "gmii-id", "gmii-rxid", "sgmii" */ ++ serdes-handle = <&amac_serdes0>; ++}; ++ ++&gmac1 { ++ status = "okay"; ++ phy-handle = <&amac_phy1>; ++ phy-mode = "sgmii"; /* "gmii-id", "gmii-rxid", "sgmii" */ ++ serdes-handle = <&amac_serdes1>; ++}; ++ ++&usbphy0 { ++ status = "okay"; ++ mdio-phy-handle = <&usb_phy>; ++}; ++ ++&ehci0 { ++ status = "okay"; ++}; ++ ++&usbd { ++ status = "okay"; ++}; ++ ++&gpio_cca { ++ status = "okay"; ++}; ++ ++&pcie0 { ++ status = "okay"; ++ mdio-phy-handle = <&pcie_phy0>; ++}; ++ ++&pcie1 { ++ status = "okay"; ++ mdio-phy-handle = <&pcie_phy1>; ++}; ++ ++&i2c0 { ++ status = "okay"; ++ eeprom@0x50 { ++ compatible = "atmel,24c01"; ++ reg = <0x50>; ++ pagesize = <8>; ++ }; ++}; ++ ++&i2c1 { ++ status = "okay"; ++}; ++ ++&nand { ++ status = "okay"; ++ nandcs@1 { ++ compatible = "brcm,nandcs"; ++ reg = <0>; ++ nand-on-flash-bbt; ++ /*nand-bus-width = <8>;*/ ++ nand-ecc-strength = <24>; ++ nand-ecc-step-size = <1024>; ++ brcm,nand-oob-sector-size = <27>; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ ++ partition@0 { ++ label = "nboot"; ++ reg = <0x0 0x200000>; ++ /*read-only;*/ ++ }; ++ partition@1 { ++ label = "nenv"; ++ reg = <0x200000 0x400000>; ++ }; ++ partition@2 { ++ label = "nsystem"; ++ reg = <0x600000 0xa00000>; ++ }; ++ partition@3 { ++ label = "nrootfs"; ++ reg = <0x1000000 0xf000000>; ++ }; ++ partition@4 { ++ label = "ncustfs"; ++ reg = <0x10000000 0x70000000>; ++ }; ++ }; ++}; ++ ++&qspi { ++ status = "okay"; ++ flash: m25p80@0 { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ compatible = "m25p80"; ++ m25p,fast-read = <1>; ++ spi-max-frequency = <62500000>; ++ reg = <0x0>; ++ partition@0 { ++ label = "boot"; ++ reg = <0x00000000 0x000c0000>; ++ /*read-only;*/ ++ }; ++ partition@1 { ++ label = "env"; ++ reg = <0x000c0000 0x00040000>; ++ }; ++ partition@2 { ++ label = "system"; ++ reg = <0x00100000 0x00f00000>; ++ }; ++ partition@3 { ++ label = "rootfs"; ++ reg = <0x01000000 0x01000000>; ++ }; ++ }; ++}; ++ ++&mdio_int { ++ status = "okay"; ++ /* 3 AMAC serdes, amac_serdes2 is for switch front port */ ++ amac_serdes0: amac_serdes@0 { ++ reg = <1>; ++ }; ++ amac_serdes1: amac_serdes@1 { ++ reg = <2>; ++ }; ++ amac_serdes2: amac_serdes@2 { ++ reg = <3>; ++ }; ++ usb_phy: usb_phy@0 { ++ reg = <6>; ++ }; ++ pcie_phy0: pcie_phy@0 { ++ reg = <7>; ++ }; ++ pcie_phy1: pcie_phy@1 { ++ reg = <8>; ++ }; ++}; ++ ++&mdio_ext { ++ status = "okay"; ++ amac_phy0: amac_phy@0 { ++ reg = <1>; ++ }; ++ amac_phy1: amac_phy@1 { ++ reg = <2>; ++ }; ++}; ++ ++&hwrng { ++ status = "okay"; ++}; ++ ++&iproc_wdt { ++ status = "okay"; ++}; ++ ++&dmac0 { ++ status = "okay"; ++}; ++ ++&iproc_cmicd { ++ status = "okay"; ++}; ++ +diff --git a/arch/arm/boot/dts/broadcom/bcm956450.dts b/arch/arm/boot/dts/broadcom/bcm956450.dts +new file mode 100644 +index 000000000000..07c523f48110 +--- /dev/null ++++ b/arch/arm/boot/dts/broadcom/bcm956450.dts +@@ -0,0 +1,229 @@ ++/* ++ * BSD LICENSE ++ * ++ * Copyright(c) 2016 Broadcom Corporation. All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * ++ * * Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * * Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in ++ * the documentation and/or other materials provided with the ++ * distribution. ++ * * Neither the name of Broadcom Corporation nor the names of its ++ * contributors may be used to endorse or promote products derived ++ * from this software without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ */ ++ ++/dts-v1/; ++ ++#include "bcm-katana2.dtsi" ++ ++/ { ++ model = "Broadcom KT2 SVK (BCM956450K)"; ++ compatible = "brcm,bcm956450k", "brcm,katana2"; ++ ++ aliases { ++ serial0 = &uart0; ++ serial1 = &uart1; ++ ethernet0 = &gmac0; ++ ethernet1 = &gmac1; ++ sdk-serdes-lane2 = &amac_serdes2; ++ }; ++ ++ chosen { ++ bootargs = "console=ttyS0,115200n8 maxcpus=2 mem=496M"; ++ }; ++}; ++ ++&uart0 { ++ status = "okay"; ++}; ++ ++&uart1 { ++ status = "okay"; ++}; ++ ++&gmac0 { ++ status = "okay"; ++ phy-handle = <&amac_phy0>; ++ phy-mode = "sgmii"; /* "gmii-id", "gmii-rxid", "sgmii" */ ++ serdes-handle = <&amac_serdes0>; ++}; ++ ++&gmac1 { ++ status = "okay"; ++ phy-handle = <&amac_phy1>; ++ phy-mode = "sgmii"; /* "gmii-id", "gmii-rxid", "sgmii" */ ++ serdes-handle = <&amac_serdes1>; ++}; ++ ++&usbphy0 { ++ status = "okay"; ++ mdio-phy-handle = <&usb_phy>; ++}; ++ ++&ehci0 { ++ status = "okay"; ++}; ++ ++&usbd { ++ status = "okay"; ++}; ++ ++&gpio_cca { ++ status = "okay"; ++}; ++ ++&pcie0 { ++ status = "okay"; ++ mdio-phy-handle = <&pcie_phy0>; ++}; ++ ++&pcie1 { ++ status = "okay"; ++ mdio-phy-handle = <&pcie_phy1>; ++}; ++ ++&i2c0 { ++ status = "okay"; ++ eeprom@0x50 { ++ compatible = "atmel,24c01"; ++ reg = <0x50>; ++ pagesize = <8>; ++ }; ++}; ++ ++&i2c1 { ++ status = "okay"; ++}; ++ ++&nand { ++ status = "okay"; ++ nandcs@1 { ++ compatible = "brcm,nandcs"; ++ reg = <0>; ++ nand-on-flash-bbt; ++ /*nand-bus-width = <8>;*/ ++ nand-ecc-strength = <24>; ++ nand-ecc-step-size = <1024>; ++ brcm,nand-oob-sector-size = <27>; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ ++ partition@0 { ++ label = "nboot"; ++ reg = <0x0 0x200000>; ++ /*read-only;*/ ++ }; ++ partition@1 { ++ label = "nenv"; ++ reg = <0x200000 0x400000>; ++ }; ++ partition@2 { ++ label = "nsystem"; ++ reg = <0x600000 0xa00000>; ++ }; ++ partition@3 { ++ label = "nrootfs"; ++ reg = <0x1000000 0xf000000>; ++ }; ++ partition@4 { ++ label = "ncustfs"; ++ reg = <0x10000000 0x70000000>; ++ }; ++ }; ++}; ++ ++&qspi { ++ status = "okay"; ++ flash: m25p80@0 { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ compatible = "m25p80"; ++ m25p,fast-read = <1>; ++ spi-max-frequency = <62500000>; ++ reg = <0x0>; ++ partition@0 { ++ label = "boot"; ++ reg = <0x00000000 0x000c0000>; ++ /*read-only;*/ ++ }; ++ partition@1 { ++ label = "env"; ++ reg = <0x000c0000 0x00040000>; ++ }; ++ partition@2 { ++ label = "system"; ++ reg = <0x00100000 0x00f00000>; ++ }; ++ partition@3 { ++ label = "rootfs"; ++ reg = <0x01000000 0x01000000>; ++ }; ++ }; ++}; ++ ++&mdio_int { ++ status = "okay"; ++ /* 3 AMAC serdes, amac_serdes2 is for switch front port */ ++ amac_serdes0: amac_serdes@0 { ++ reg = <1>; ++ }; ++ amac_serdes1: amac_serdes@1 { ++ reg = <2>; ++ }; ++ amac_serdes2: amac_serdes@2 { ++ reg = <3>; ++ }; ++ usb_phy: usb_phy@0 { ++ reg = <6>; ++ }; ++ pcie_phy0: pcie_phy@0 { ++ reg = <7>; ++ }; ++ pcie_phy1: pcie_phy@1 { ++ reg = <8>; ++ }; ++}; ++ ++&mdio_ext { ++ status = "okay"; ++ amac_phy0: amac_phy@0 { ++ reg = <1>; ++ }; ++ amac_phy1: amac_phy@1 { ++ reg = <2>; ++ }; ++}; ++ ++&hwrng { ++ status = "okay"; ++}; ++ ++&iproc_wdt { ++ status = "okay"; ++}; ++ ++&dmac0 { ++ status = "okay"; ++}; ++ ++&iproc_cmicd { ++ status = "okay"; ++}; +diff --git a/arch/arm/boot/dts/broadcom/greyhound.its b/arch/arm/boot/dts/broadcom/greyhound.its +new file mode 100644 +index 000000000000..d312d6d97578 +--- /dev/null ++++ b/arch/arm/boot/dts/broadcom/greyhound.its +@@ -0,0 +1,62 @@ ++/dts-v1/; ++ ++/ { ++ description = "Linux kernel and FDT blob"; ++ #address-cells = <1>; ++ ++ images { ++ kernel@1 { ++ description = "Broadcom iProc Linux"; ++ data = /incbin/("../zImage"); ++ type = "kernel"; ++ arch = "arm"; ++ os = "linux"; ++ compression = "none"; ++ load = <0x61008000>; ++ entry = <0x61008000>; ++ hash@1 { ++ algo = "crc32"; ++ }; ++ }; ++ ++ fdt@1 { ++ description = "Flattened Device Tree blob - bcm95341x.dtb"; ++ data = /incbin/("./bcm95341x.dtb"); ++ type = "flat_dt"; ++ arch = "arm"; ++ compression = "none"; ++ hash@1 { ++ algo = "crc32"; ++ }; ++ }; ++/* ++ fdt@2 { ++ description = "Flattened Device Tree blob - bcm95606x.dtb"; ++ data = /incbin/("./bcm95606x.dtb"); ++ type = "flat_dt"; ++ arch = "arm"; ++ compression = "none"; ++ hash@1 { ++ algo = "md5"; ++ }; ++ }; ++*/ ++ }; ++ ++ configurations { ++ default = "conf@1"; ++ conf@1 { ++ description = "Boot Linux kernel with FDT blob "; ++ kernel = "kernel@1"; ++ fdt = "fdt@1"; ++ }; ++/* ++ conf@2 { ++ description = "Boot Linux kernel with FDT blob"; ++ kernel = "kernel@1"; ++ fdt = "fdt@2"; ++ }; ++*/ ++ }; ++}; ++ +\ No newline at end of file +diff --git a/arch/arm/boot/dts/broadcom/greyhound2.its b/arch/arm/boot/dts/broadcom/greyhound2.its +new file mode 100644 +index 000000000000..1fd2cfe4d777 +--- /dev/null ++++ b/arch/arm/boot/dts/broadcom/greyhound2.its +@@ -0,0 +1,62 @@ ++/dts-v1/; ++ ++/ { ++ description = "Linux kernel and FDT blob"; ++ #address-cells = <1>; ++ ++ images { ++ kernel@1 { ++ description = "Broadcom iProc Linux"; ++ data = /incbin/("../zImage"); ++ type = "kernel"; ++ arch = "arm"; ++ os = "linux"; ++ compression = "none"; ++ load = <0x61008000>; ++ entry = <0x61008000>; ++ hash@1 { ++ algo = "crc32"; ++ }; ++ }; ++ ++ fdt@1 { ++ description = "Flattened Device Tree blob - bcm956170.dtb"; ++ data = /incbin/("./bcm956170.dtb"); ++ type = "flat_dt"; ++ arch = "arm"; ++ compression = "none"; ++ hash@1 { ++ algo = "crc32"; ++ }; ++ }; ++ ++ /*fdt@2 { ++ description = "Flattened Device Tree blob - bcm95357x.dtb"; ++ data = /incbin/("./bcm95357x.dtb"); ++ type = "flat_dt"; ++ arch = "arm"; ++ compression = "none"; ++ hash@1 { ++ algo = "crc32"; ++ }; ++ };*/ ++ ++ }; ++ ++ configurations { ++ default = "conf@1"; ++ conf@1 { ++ description = "Boot Linux kernel with FDT blob "; ++ kernel = "kernel@1"; ++ fdt = "fdt@1"; ++ }; ++/* ++ conf@2 { ++ description = "Boot Linux kernel with FDT blob"; ++ kernel = "kernel@1"; ++ fdt = "fdt@2"; ++ }; ++*/ ++ }; ++}; ++ +diff --git a/arch/arm/boot/dts/broadcom/helix4.its b/arch/arm/boot/dts/broadcom/helix4.its +new file mode 100644 +index 000000000000..6e4d80f34acb +--- /dev/null ++++ b/arch/arm/boot/dts/broadcom/helix4.its +@@ -0,0 +1,42 @@ ++/dts-v1/; ++ ++/ { ++ description = "Linux kernel and FDT blob"; ++ #address-cells = <1>; ++ ++ images { ++ kernel@1 { ++ description = "Broadcom iProc Linux"; ++ data = /incbin/("../zImage"); ++ type = "kernel"; ++ arch = "arm"; ++ os = "linux"; ++ compression = "none"; ++ load = <0x61008000>; ++ entry = <0x61008000>; ++ hash@1 { ++ algo = "crc32"; ++ }; ++ }; ++ ++ fdt@1 { ++ description = "Flattened Device Tree blob - bcm956340.dtb"; ++ data = /incbin/("./bcm956340.dtb"); ++ type = "flat_dt"; ++ arch = "arm"; ++ compression = "none"; ++ hash@1 { ++ algo = "crc32"; ++ }; ++ }; ++ }; ++ ++ configurations { ++ default = "conf@1"; ++ conf@1 { ++ description = "Boot Linux kernel with FDT blob "; ++ kernel = "kernel@1"; ++ fdt = "fdt@1"; ++ }; ++ }; ++}; +diff --git a/arch/arm/boot/dts/broadcom/hurricane3.its b/arch/arm/boot/dts/broadcom/hurricane3.its +new file mode 100644 +index 000000000000..54da684bd794 +--- /dev/null ++++ b/arch/arm/boot/dts/broadcom/hurricane3.its +@@ -0,0 +1,59 @@ ++/dts-v1/; ++ ++/ { ++ description = "Linux kernel and FDT blob"; ++ #address-cells = <1>; ++ ++ images { ++ kernel@1 { ++ description = "Broadcom iProc Linux"; ++ data = /incbin/("../zImage"); ++ type = "kernel"; ++ arch = "arm"; ++ os = "linux"; ++ compression = "none"; ++ load = <0x61008000>; ++ entry = <0x61008000>; ++ hash@1 { ++ algo = "crc32"; ++ }; ++ }; ++ ++ fdt@1 { ++ description = "Flattened Device Tree blob - bcm956160.dtb"; ++ data = /incbin/("./bcm956160.dtb"); ++ type = "flat_dt"; ++ arch = "arm"; ++ compression = "none"; ++ hash@1 { ++ algo = "crc32"; ++ }; ++ }; ++ ++ fdt@2 { ++ description = "Flattened Device Tree blob - bcm953444.dtb"; ++ data = /incbin/("./bcm953444.dtb"); ++ type = "flat_dt"; ++ arch = "arm"; ++ compression = "none"; ++ hash@1 { ++ algo = "crc32"; ++ }; ++ }; ++ }; ++ ++ configurations { ++ default = "conf@1"; ++ conf@1 { ++ description = "Boot Linux kernel with FDT blob 1"; ++ kernel = "kernel@1"; ++ fdt = "fdt@1"; ++ }; ++ ++ conf@2 { ++ description = "Boot Linux kernel with FDT blob 2"; ++ kernel = "kernel@1"; ++ fdt = "fdt@2"; ++ }; ++ }; ++}; +diff --git a/arch/arm/boot/dts/broadcom/katana2.its b/arch/arm/boot/dts/broadcom/katana2.its +new file mode 100644 +index 000000000000..c592df26e3e6 +--- /dev/null ++++ b/arch/arm/boot/dts/broadcom/katana2.its +@@ -0,0 +1,43 @@ ++/dts-v1/; ++ ++/ { ++ description = "Linux kernel and FDT blob"; ++ #address-cells = <1>; ++ ++ images { ++ kernel@1 { ++ description = "Broadcom iProc Linux"; ++ data = /incbin/("../zImage"); ++ type = "kernel"; ++ arch = "arm"; ++ os = "linux"; ++ compression = "none"; ++ load = <0x61008000>; ++ entry = <0x61008000>; ++ hash@1 { ++ algo = "crc32"; ++ }; ++ }; ++ ++ fdt@1 { ++ description = "Flattened Device Tree blob - bcm956450.dtb"; ++ data = /incbin/("./bcm956450.dtb"); ++ type = "flat_dt"; ++ arch = "arm"; ++ compression = "none"; ++ hash@1 { ++ algo = "crc32"; ++ }; ++ }; ++ }; ++ ++ configurations { ++ default = "conf@1"; ++ conf@1 { ++ description = "Boot Linux kernel with FDT blob "; ++ kernel = "kernel@1"; ++ fdt = "fdt@1"; ++ }; ++ }; ++}; ++ +\ No newline at end of file +diff --git a/arch/arm/boot/dts/broadcom/saber2.its b/arch/arm/boot/dts/broadcom/saber2.its +new file mode 100644 +index 000000000000..b833ba7a10a8 +--- /dev/null ++++ b/arch/arm/boot/dts/broadcom/saber2.its +@@ -0,0 +1,42 @@ ++/dts-v1/; ++ ++/ { ++ description = "Linux kernel and FDT blob"; ++ #address-cells = <1>; ++ ++ images { ++ kernel@1 { ++ description = "Broadcom iProc Linux"; ++ data = /incbin/("../zImage"); ++ type = "kernel"; ++ arch = "arm"; ++ os = "linux"; ++ compression = "none"; ++ load = <0x61008000>; ++ entry = <0x61008000>; ++ hash@1 { ++ algo = "crc32"; ++ }; ++ }; ++ ++ fdt@1 { ++ description = "Flattened Device Tree blob - bcm956260.dtb"; ++ data = /incbin/("./bcm956260.dtb"); ++ type = "flat_dt"; ++ arch = "arm"; ++ compression = "none"; ++ hash@1 { ++ algo = "crc32"; ++ }; ++ }; ++ }; ++ ++ configurations { ++ default = "conf@1"; ++ conf@1 { ++ description = "Boot Linux kernel with FDT blob "; ++ kernel = "kernel@1"; ++ fdt = "fdt@1"; ++ }; ++ }; ++}; +diff --git a/arch/arm/boot/dts/broadcom/wolfhound2.its b/arch/arm/boot/dts/broadcom/wolfhound2.its +new file mode 100644 +index 000000000000..125ebb43bc35 +--- /dev/null ++++ b/arch/arm/boot/dts/broadcom/wolfhound2.its +@@ -0,0 +1,60 @@ ++/dts-v1/; ++ ++/ { ++ description = "Linux kernel and FDT blob"; ++ #address-cells = <1>; ++ ++ images { ++ kernel@1 { ++ description = "Broadcom iProc Linux"; ++ data = /incbin/("../zImage"); ++ type = "kernel"; ++ arch = "arm"; ++ os = "linux"; ++ compression = "none"; ++ load = <0x61008000>; ++ entry = <0x61008000>; ++ hash@1 { ++ algo = "crc32"; ++ }; ++ }; ++ ++ fdt@1 { ++ description = "Flattened Device Tree blob - bcm953547.dtb"; ++ data = /incbin/("./bcm953547.dtb"); ++ type = "flat_dt"; ++ arch = "arm"; ++ compression = "none"; ++ hash@1 { ++ algo = "crc32"; ++ }; ++ }; ++ ++ /* fdt@2 { ++ description = "Flattened Device Tree blob - bcm953444.dtb"; ++ data = /incbin/("./bcm953444.dtb"); ++ type = "flat_dt"; ++ arch = "arm"; ++ compression = "none"; ++ hash@1 { ++ algo = "crc32"; ++ }; ++ }; */ ++ }; ++ ++ configurations { ++ default = "conf@1"; ++ conf@1 { ++ description = "Boot Linux kernel with FDT blob 1"; ++ kernel = "kernel@1"; ++ fdt = "fdt@1"; ++ }; ++ ++ /* conf@2 { ++ description = "Boot Linux kernel with FDT blob 2"; ++ kernel = "kernel@1"; ++ fdt = "fdt@2"; ++ }; */ ++ }; ++}; ++ +\ No newline at end of file +diff --git a/arch/arm/boot/dts/broadcom/xgs-iproc-arm32.its b/arch/arm/boot/dts/broadcom/xgs-iproc-arm32.its +new file mode 100644 +index 000000000000..7e971543428d +--- /dev/null ++++ b/arch/arm/boot/dts/broadcom/xgs-iproc-arm32.its +@@ -0,0 +1,163 @@ ++/dts-v1/; ++ ++/ { ++ description = "Linux kernel and FDT blob"; ++ #address-cells = <1>; ++ ++ images { ++ kernel_iproc { ++ description = "Broadcom iProc Linux"; ++ data = /incbin/("../zImage"); ++ type = "kernel"; ++ arch = "arm"; ++ os = "linux"; ++ compression = "none"; ++ load = <0x61008000>; ++ entry = <0x61008000>; ++ hash@1 { ++ algo = "crc32"; ++ }; ++ }; ++ ++ fdt_hx4 { ++ description = "Helix4 Device Tree blob - bcm956340.dtb"; ++ data = /incbin/("./bcm956340.dtb"); ++ type = "flat_dt"; ++ arch = "arm"; ++ compression = "none"; ++ hash@1 { ++ algo = "crc32"; ++ }; ++ }; ++ ++ fdt_kt2 { ++ description = "Katana2 Device Tree blob - bcm956450.dtb"; ++ data = /incbin/("./bcm956450.dtb"); ++ type = "flat_dt"; ++ arch = "arm"; ++ compression = "none"; ++ hash@1 { ++ algo = "crc32"; ++ }; ++ }; ++ ++ fdt_sb2 { ++ description = "Saber2 Device Tree blob - bcm956260.dtb"; ++ data = /incbin/("./bcm956260.dtb"); ++ type = "flat_dt"; ++ arch = "arm"; ++ compression = "none"; ++ hash@1 { ++ algo = "crc32"; ++ }; ++ }; ++ ++ fdt_gh { ++ description = "Greyhound Device Tree blob - bcm95341x.dtb"; ++ data = /incbin/("./bcm95341x.dtb"); ++ type = "flat_dt"; ++ arch = "arm"; ++ compression = "none"; ++ hash@1 { ++ algo = "crc32"; ++ }; ++ }; ++ ++ fdt_hr3 { ++ description = "Hurricane3 Device Tree blob - bcm956160.dtb"; ++ data = /incbin/("./bcm956160.dtb"); ++ type = "flat_dt"; ++ arch = "arm"; ++ compression = "none"; ++ hash@1 { ++ algo = "crc32"; ++ }; ++ }; ++ ++ fdt_hr3_lite { ++ description = "Hurricane3 Lite Device Tree blob - bcm953444.dtb"; ++ data = /incbin/("./bcm953444.dtb"); ++ type = "flat_dt"; ++ arch = "arm"; ++ compression = "none"; ++ hash@1 { ++ algo = "crc32"; ++ }; ++ }; ++ ++ fdt_gh2 { ++ description = "Greyhound2 Device Tree blob - bcm956170.dtb"; ++ data = /incbin/("./bcm956170.dtb"); ++ type = "flat_dt"; ++ arch = "arm"; ++ compression = "none"; ++ hash@1 { ++ algo = "crc32"; ++ }; ++ }; ++ ++ fdt_wh2 { ++ description = "Wolfhound2 Device Tree blob - bcm953547.dtb"; ++ data = /incbin/("./bcm953547.dtb"); ++ type = "flat_dt"; ++ arch = "arm"; ++ compression = "none"; ++ hash@1 { ++ algo = "crc32"; ++ }; ++ }; ++ }; ++ ++ configurations { ++ default = "hx4"; ++ /* use "bootm 0x64000000#katana2" for booting Katana2 */ ++ hx4 { ++ description = "Boot Linux kernel with Helix4 FDT blob "; ++ kernel = "kernel_iproc"; ++ fdt = "fdt_hx4"; ++ }; ++ ++ kt2 { ++ description = "Boot Linux kernel with Katana2 FDT blob "; ++ kernel = "kernel_iproc"; ++ fdt = "fdt_kt2"; ++ }; ++ ++ sb2 { ++ description = "Boot Linux kernel with Saber2 FDT blob "; ++ kernel = "kernel_iproc"; ++ fdt = "fdt_sb2"; ++ }; ++ ++ gh { ++ description = "Boot Linux kernel with Greyhound FDT blob "; ++ kernel = "kernel_iproc"; ++ fdt = "fdt_gh"; ++ }; ++ ++ hr3 { ++ description = "Boot Linux kernel with Hurricane3 FDT blob "; ++ kernel = "kernel_iproc"; ++ fdt = "fdt_hr3"; ++ }; ++ ++ hr3_lite { ++ description = "Boot Linux kernel with Hurricane3 Lite FDT blob "; ++ kernel = "kernel_iproc"; ++ fdt = "fdt_hr3_lite"; ++ }; ++ ++ gh2 { ++ description = "Boot Linux kernel with Greyhound2 FDT blob "; ++ kernel = "kernel_iproc"; ++ fdt = "fdt_gh2"; ++ }; ++ ++ wh2 { ++ description = "Boot Linux kernel with Wolfhound2 FDT blob "; ++ kernel = "kernel_iproc"; ++ fdt = "fdt_wh2"; ++ }; ++ ++ }; ++}; +diff --git a/arch/arm/configs/iproc_arm32_be_defconfig b/arch/arm/configs/iproc_arm32_be_defconfig +new file mode 100644 +index 000000000000..96af58ecc7bf +--- /dev/null ++++ b/arch/arm/configs/iproc_arm32_be_defconfig +@@ -0,0 +1,210 @@ ++# CONFIG_LOCALVERSION_AUTO is not set ++CONFIG_SYSVIPC=y ++CONFIG_USELIB=y ++CONFIG_IRQ_DOMAIN_DEBUG=y ++CONFIG_NO_HZ=y ++CONFIG_IKCONFIG=y ++CONFIG_IKCONFIG_PROC=y ++CONFIG_SYSCTL_SYSCALL=y ++# CONFIG_SHMEM is not set ++CONFIG_EMBEDDED=y ++# CONFIG_SLUB_DEBUG is not set ++# CONFIG_COMPAT_BRK is not set ++CONFIG_MODULES=y ++CONFIG_MODULE_UNLOAD=y ++CONFIG_PARTITION_ADVANCED=y ++CONFIG_ARCH_XGS_IPROC=y ++CONFIG_CPU_BIG_ENDIAN=y ++# CONFIG_ARM_ERRATA_643719 is not set ++CONFIG_PCI=y ++CONFIG_PCI_MSI=y ++CONFIG_PCIE_XGS_IPROC=y ++CONFIG_PCIE_IPROC_MSI=y ++CONFIG_SMP=y ++CONFIG_PREEMPT=y ++CONFIG_ARM_MODULE_PLTS=y ++CONFIG_CMA=y ++CONFIG_CMA_DEBUG=y ++CONFIG_ZBOOT_ROM_TEXT=0x0 ++CONFIG_ZBOOT_ROM_BSS=0x0 ++CONFIG_CMDLINE="console=ttyS0,115200n8 maxcpus=1 mem=240M" ++CONFIG_NET=y ++CONFIG_PACKET=y ++CONFIG_UNIX=y ++CONFIG_INET=y ++CONFIG_IP_MULTICAST=y ++CONFIG_IP_ADVANCED_ROUTER=y ++CONFIG_IP_MULTIPLE_TABLES=y ++CONFIG_IP_PNP=y ++CONFIG_IP_PNP_DHCP=y ++CONFIG_IP_PNP_BOOTP=y ++# CONFIG_INET_XFRM_MODE_TRANSPORT is not set ++# CONFIG_INET_XFRM_MODE_TUNNEL is not set ++# CONFIG_INET_XFRM_MODE_BEET is not set ++# CONFIG_INET_DIAG is not set ++# CONFIG_INET6_XFRM_MODE_TRANSPORT is not set ++# CONFIG_INET6_XFRM_MODE_TUNNEL is not set ++# CONFIG_INET6_XFRM_MODE_BEET is not set ++CONFIG_IPV6_TUNNEL=y ++CONFIG_NETFILTER=y ++CONFIG_BRIDGE_NETFILTER=y ++CONFIG_NETFILTER_NETLINK_QUEUE=y ++CONFIG_NETFILTER_NETLINK_LOG=y ++CONFIG_NF_CONNTRACK=y ++# CONFIG_NF_CT_PROTO_DCCP is not set ++# CONFIG_NF_CT_PROTO_SCTP is not set ++# CONFIG_NF_CT_PROTO_UDPLITE is not set ++CONFIG_NF_CONNTRACK_FTP=y ++CONFIG_NF_CONNTRACK_TFTP=y ++CONFIG_NETFILTER_XT_MARK=y ++CONFIG_NETFILTER_XT_TARGET_CT=y ++CONFIG_NETFILTER_XT_TARGET_TCPMSS=y ++CONFIG_NETFILTER_XT_MATCH_CONNMARK=y ++CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y ++CONFIG_NETFILTER_XT_MATCH_HELPER=y ++CONFIG_NETFILTER_XT_MATCH_STATE=y ++CONFIG_NETFILTER_XT_MATCH_TCPMSS=y ++CONFIG_NF_CONNTRACK_IPV4=y ++CONFIG_IP_NF_IPTABLES=y ++CONFIG_IP_NF_MATCH_AH=y ++CONFIG_IP_NF_MATCH_ECN=y ++CONFIG_IP_NF_MATCH_TTL=y ++CONFIG_IP_NF_FILTER=y ++CONFIG_IP_NF_TARGET_REJECT=y ++CONFIG_IP_NF_MANGLE=y ++CONFIG_IP_NF_TARGET_ECN=y ++CONFIG_IP_NF_TARGET_TTL=y ++CONFIG_IP_NF_RAW=y ++CONFIG_IP_NF_ARPTABLES=y ++CONFIG_IP_NF_ARPFILTER=y ++CONFIG_IP_NF_ARP_MANGLE=y ++CONFIG_NF_CONNTRACK_IPV6=y ++CONFIG_IP6_NF_IPTABLES=y ++CONFIG_IP6_NF_MATCH_RPFILTER=y ++CONFIG_IP6_NF_MATCH_RT=y ++CONFIG_IP6_NF_FILTER=y ++CONFIG_IP6_NF_TARGET_REJECT=y ++CONFIG_IP6_NF_MANGLE=y ++CONFIG_IP6_NF_RAW=y ++CONFIG_BRIDGE=y ++CONFIG_VLAN_8021Q=y ++CONFIG_VLAN_8021Q_GVRP=y ++# CONFIG_WIRELESS is not set ++CONFIG_UEVENT_HELPER_PATH="/sbin/mdev" ++CONFIG_DEVTMPFS=y ++CONFIG_DEVTMPFS_MOUNT=y ++CONFIG_DMA_CMA=y ++CONFIG_CMA_SIZE_MBYTES=32 ++CONFIG_MTD=y ++CONFIG_MTD_TESTS=m ++CONFIG_MTD_CMDLINE_PARTS=y ++CONFIG_MTD_BLOCK=y ++CONFIG_MTD_CFI=y ++CONFIG_MTD_JEDECPROBE=y ++CONFIG_MTD_CFI_ADV_OPTIONS=y ++CONFIG_MTD_CFI_LE_BYTE_SWAP=y ++CONFIG_MTD_CFI_INTELEXT=y ++CONFIG_MTD_CFI_AMDSTD=y ++CONFIG_MTD_CFI_STAA=y ++CONFIG_MTD_NOR_XGS_IPROC=y ++CONFIG_MTD_M25P80=y ++CONFIG_MTD_NAND=y ++CONFIG_MTD_NAND_BRCMNAND=y ++CONFIG_MTD_SPI_NOR=y ++# CONFIG_MTD_SPI_NOR_USE_4K_SECTORS is not set ++CONFIG_MTD_UBI=y ++CONFIG_BLK_DEV_RAM=y ++CONFIG_EEPROM_AT24=y ++CONFIG_SCSI=y ++CONFIG_BLK_DEV_SD=y ++CONFIG_CHR_DEV_ST=y ++CONFIG_CHR_DEV_SG=y ++CONFIG_SCSI_CONSTANTS=y ++CONFIG_SCSI_LOGGING=y ++CONFIG_NETDEVICES=y ++CONFIG_BONDING=y ++CONFIG_TIGON3=y ++CONFIG_MDIO_XGS_IPROC=y ++CONFIG_BROADCOM_PHY=y ++CONFIG_XGS_IPROC_SERDES=y ++# CONFIG_WLAN is not set ++# CONFIG_INPUT is not set ++CONFIG_SERIO_LIBPS2=y ++# CONFIG_VT is not set ++# CONFIG_LEGACY_PTYS is not set ++CONFIG_DEVKMEM=y ++CONFIG_SERIAL_8250=y ++CONFIG_SERIAL_8250_CONSOLE=y ++CONFIG_SERIAL_8250_NR_UARTS=2 ++CONFIG_SERIAL_8250_RUNTIME_UARTS=2 ++CONFIG_SERIAL_8250_EXTENDED=y ++CONFIG_SERIAL_8250_SHARE_IRQ=y ++CONFIG_SERIAL_8250_DETECT_IRQ=y ++CONFIG_SERIAL_8250_RSA=y ++CONFIG_SERIAL_8250_DW=y ++CONFIG_SERIAL_OF_PLATFORM=y ++CONFIG_HW_RANDOM=y ++CONFIG_HW_RANDOM_XGS_IPROC_RNG=y ++CONFIG_I2C=y ++# CONFIG_I2C_COMPAT is not set ++CONFIG_I2C_CHARDEV=y ++# CONFIG_I2C_HELPER_AUTO is not set ++CONFIG_SPI=y ++CONFIG_GPIOLIB=y ++CONFIG_GPIO_SYSFS=y ++CONFIG_WATCHDOG=y ++CONFIG_ARM_SP805_WATCHDOG=y ++# CONFIG_VGA_ARB is not set ++CONFIG_USB=y ++CONFIG_USB_ANNOUNCE_NEW_DEVICES=y ++CONFIG_USB_DYNAMIC_MINORS=y ++CONFIG_USB_EHCI_HCD=y ++CONFIG_USB_EHCI_ROOT_HUB_TT=y ++CONFIG_USB_EHCI_XGS_IPROC=y ++CONFIG_USB_EHCI_HCD_PLATFORM=y ++CONFIG_USB_OHCI_HCD=y ++CONFIG_USB_OHCI_HCD_PLATFORM=y ++CONFIG_USB_OHCI_XGS_IPROC=y ++CONFIG_USB_STORAGE=y ++CONFIG_USBPHY_XGS_IPROC=y ++CONFIG_USB_GADGET=y ++CONFIG_USB_XGS_IPROC_UDC=m ++CONFIG_USB_G_SERIAL=m ++CONFIG_MMC=y ++CONFIG_MMC_SDHCI=y ++CONFIG_MMC_SDHCI_PLTFM=y ++CONFIG_MMC_SDHCI_XGS_IPROC=y ++CONFIG_DMADEVICES=y ++CONFIG_DMADEVICES_DEBUG=y ++CONFIG_DMADEVICES_VDEBUG=y ++CONFIG_PL330_DMA=y ++CONFIG_GENERIC_PHY=y ++CONFIG_EXT2_FS=y ++CONFIG_EXT3_FS=y ++# CONFIG_DNOTIFY is not set ++CONFIG_AUTOFS4_FS=y ++CONFIG_MSDOS_FS=y ++CONFIG_VFAT_FS=y ++CONFIG_NTFS_FS=y ++CONFIG_JFFS2_FS=y ++CONFIG_UBIFS_FS=y ++CONFIG_NFS_FS=y ++CONFIG_NFS_V3_ACL=y ++CONFIG_NFS_V4=y ++CONFIG_NFS_SWAP=y ++CONFIG_ROOT_NFS=y ++CONFIG_NFSD=y ++CONFIG_NLS_CODEPAGE_437=y ++CONFIG_NLS_ASCII=y ++CONFIG_NLS_ISO8859_1=y ++CONFIG_DEBUG_INFO=y ++CONFIG_DEBUG_FS=y ++CONFIG_MAGIC_SYSRQ=y ++# CONFIG_SCHED_DEBUG is not set ++# CONFIG_FTRACE is not set ++CONFIG_DEBUG_USER=y ++CONFIG_CRYPTO_CBC=y ++CONFIG_CRYPTO_MD5=y ++CONFIG_CRYPTO_DES=y ++CONFIG_CRYPTO_ANSI_CPRNG=m ++CONFIG_XZ_DEC=y +diff --git a/arch/arm/configs/iproc_arm32_defconfig b/arch/arm/configs/iproc_arm32_defconfig +new file mode 100644 +index 000000000000..bfabb282df0c +--- /dev/null ++++ b/arch/arm/configs/iproc_arm32_defconfig +@@ -0,0 +1,207 @@ ++# CONFIG_LOCALVERSION_AUTO is not set ++CONFIG_SYSVIPC=y ++CONFIG_USELIB=y ++CONFIG_IRQ_DOMAIN_DEBUG=y ++CONFIG_NO_HZ=y ++CONFIG_IKCONFIG=y ++CONFIG_IKCONFIG_PROC=y ++CONFIG_SYSCTL_SYSCALL=y ++# CONFIG_SHMEM is not set ++CONFIG_EMBEDDED=y ++# CONFIG_SLUB_DEBUG is not set ++# CONFIG_COMPAT_BRK is not set ++CONFIG_MODULES=y ++CONFIG_MODULE_UNLOAD=y ++CONFIG_PARTITION_ADVANCED=y ++CONFIG_ARCH_XGS_IPROC=y ++# CONFIG_ARM_ERRATA_643719 is not set ++CONFIG_PCI=y ++CONFIG_PCI_MSI=y ++CONFIG_PCIE_XGS_IPROC=y ++CONFIG_PCIE_IPROC_MSI=y ++CONFIG_SMP=y ++CONFIG_PREEMPT=y ++CONFIG_ARM_MODULE_PLTS=y ++CONFIG_CMA=y ++CONFIG_CMA_DEBUG=y ++CONFIG_ZBOOT_ROM_TEXT=0x0 ++CONFIG_ZBOOT_ROM_BSS=0x0 ++CONFIG_CMDLINE="console=ttyS0,115200n8 maxcpus=1 mem=240M" ++CONFIG_NET=y ++CONFIG_PACKET=y ++CONFIG_UNIX=y ++CONFIG_INET=y ++CONFIG_IP_MULTICAST=y ++CONFIG_IP_ADVANCED_ROUTER=y ++CONFIG_IP_MULTIPLE_TABLES=y ++CONFIG_IP_PNP=y ++CONFIG_IP_PNP_DHCP=y ++CONFIG_IP_PNP_BOOTP=y ++# CONFIG_INET_XFRM_MODE_TRANSPORT is not set ++# CONFIG_INET_XFRM_MODE_TUNNEL is not set ++# CONFIG_INET_XFRM_MODE_BEET is not set ++# CONFIG_INET_DIAG is not set ++# CONFIG_INET6_XFRM_MODE_TRANSPORT is not set ++# CONFIG_INET6_XFRM_MODE_TUNNEL is not set ++# CONFIG_INET6_XFRM_MODE_BEET is not set ++CONFIG_IPV6_TUNNEL=y ++CONFIG_NETFILTER=y ++CONFIG_BRIDGE_NETFILTER=y ++CONFIG_NETFILTER_NETLINK_QUEUE=y ++CONFIG_NETFILTER_NETLINK_LOG=y ++CONFIG_NF_CONNTRACK=y ++# CONFIG_NF_CT_PROTO_DCCP is not set ++# CONFIG_NF_CT_PROTO_SCTP is not set ++# CONFIG_NF_CT_PROTO_UDPLITE is not set ++CONFIG_NF_CONNTRACK_FTP=y ++CONFIG_NF_CONNTRACK_TFTP=y ++CONFIG_NETFILTER_XT_MARK=y ++CONFIG_NETFILTER_XT_TARGET_CT=y ++CONFIG_NETFILTER_XT_TARGET_TCPMSS=y ++CONFIG_NETFILTER_XT_MATCH_CONNMARK=y ++CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y ++CONFIG_NETFILTER_XT_MATCH_HELPER=y ++CONFIG_NETFILTER_XT_MATCH_STATE=y ++CONFIG_NETFILTER_XT_MATCH_TCPMSS=y ++CONFIG_NF_CONNTRACK_IPV4=y ++CONFIG_IP_NF_IPTABLES=y ++CONFIG_IP_NF_MATCH_AH=y ++CONFIG_IP_NF_MATCH_ECN=y ++CONFIG_IP_NF_MATCH_TTL=y ++CONFIG_IP_NF_FILTER=y ++CONFIG_IP_NF_TARGET_REJECT=y ++CONFIG_IP_NF_MANGLE=y ++CONFIG_IP_NF_TARGET_ECN=y ++CONFIG_IP_NF_TARGET_TTL=y ++CONFIG_IP_NF_RAW=y ++CONFIG_IP_NF_ARPTABLES=y ++CONFIG_IP_NF_ARPFILTER=y ++CONFIG_IP_NF_ARP_MANGLE=y ++CONFIG_NF_CONNTRACK_IPV6=y ++CONFIG_IP6_NF_IPTABLES=y ++CONFIG_IP6_NF_MATCH_RPFILTER=y ++CONFIG_IP6_NF_MATCH_RT=y ++CONFIG_IP6_NF_FILTER=y ++CONFIG_IP6_NF_TARGET_REJECT=y ++CONFIG_IP6_NF_MANGLE=y ++CONFIG_IP6_NF_RAW=y ++CONFIG_BRIDGE=y ++CONFIG_VLAN_8021Q=y ++CONFIG_VLAN_8021Q_GVRP=y ++# CONFIG_WIRELESS is not set ++CONFIG_UEVENT_HELPER_PATH="/sbin/mdev" ++CONFIG_DEVTMPFS=y ++CONFIG_DEVTMPFS_MOUNT=y ++CONFIG_DMA_CMA=y ++CONFIG_CMA_SIZE_MBYTES=32 ++CONFIG_MTD=y ++CONFIG_MTD_TESTS=m ++CONFIG_MTD_CMDLINE_PARTS=y ++CONFIG_MTD_BLOCK=y ++CONFIG_MTD_CFI=y ++CONFIG_MTD_JEDECPROBE=y ++CONFIG_MTD_CFI_INTELEXT=y ++CONFIG_MTD_CFI_AMDSTD=y ++CONFIG_MTD_CFI_STAA=y ++CONFIG_MTD_NOR_XGS_IPROC=y ++CONFIG_MTD_M25P80=y ++CONFIG_MTD_NAND=y ++CONFIG_MTD_NAND_BRCMNAND=y ++CONFIG_MTD_SPI_NOR=y ++# CONFIG_MTD_SPI_NOR_USE_4K_SECTORS is not set ++CONFIG_MTD_UBI=y ++CONFIG_BLK_DEV_RAM=y ++CONFIG_EEPROM_AT24=y ++CONFIG_SCSI=y ++CONFIG_BLK_DEV_SD=y ++CONFIG_CHR_DEV_ST=y ++CONFIG_CHR_DEV_SG=y ++CONFIG_SCSI_CONSTANTS=y ++CONFIG_SCSI_LOGGING=y ++CONFIG_NETDEVICES=y ++CONFIG_BONDING=y ++CONFIG_TIGON3=y ++CONFIG_MDIO_XGS_IPROC=y ++CONFIG_BROADCOM_PHY=y ++CONFIG_XGS_IPROC_SERDES=y ++# CONFIG_WLAN is not set ++# CONFIG_INPUT is not set ++CONFIG_SERIO_LIBPS2=y ++# CONFIG_VT is not set ++# CONFIG_LEGACY_PTYS is not set ++CONFIG_DEVKMEM=y ++CONFIG_SERIAL_8250=y ++CONFIG_SERIAL_8250_CONSOLE=y ++CONFIG_SERIAL_8250_NR_UARTS=2 ++CONFIG_SERIAL_8250_RUNTIME_UARTS=2 ++CONFIG_SERIAL_8250_EXTENDED=y ++CONFIG_SERIAL_8250_SHARE_IRQ=y ++CONFIG_SERIAL_8250_DETECT_IRQ=y ++CONFIG_SERIAL_8250_RSA=y ++CONFIG_SERIAL_8250_DW=y ++CONFIG_SERIAL_OF_PLATFORM=y ++CONFIG_HW_RANDOM=y ++CONFIG_HW_RANDOM_XGS_IPROC_RNG=y ++CONFIG_I2C=y ++# CONFIG_I2C_COMPAT is not set ++CONFIG_I2C_CHARDEV=y ++# CONFIG_I2C_HELPER_AUTO is not set ++CONFIG_SPI=y ++CONFIG_GPIOLIB=y ++CONFIG_GPIO_SYSFS=y ++CONFIG_WATCHDOG=y ++CONFIG_ARM_SP805_WATCHDOG=y ++# CONFIG_VGA_ARB is not set ++CONFIG_USB=y ++CONFIG_USB_ANNOUNCE_NEW_DEVICES=y ++CONFIG_USB_DYNAMIC_MINORS=y ++CONFIG_USB_EHCI_HCD=y ++CONFIG_USB_EHCI_ROOT_HUB_TT=y ++CONFIG_USB_EHCI_XGS_IPROC=y ++CONFIG_USB_EHCI_HCD_PLATFORM=y ++CONFIG_USB_OHCI_HCD=y ++CONFIG_USB_OHCI_HCD_PLATFORM=y ++CONFIG_USB_OHCI_XGS_IPROC=y ++CONFIG_USB_STORAGE=y ++CONFIG_USBPHY_XGS_IPROC=y ++CONFIG_USB_GADGET=y ++CONFIG_USB_XGS_IPROC_UDC=m ++CONFIG_USB_G_SERIAL=m ++CONFIG_MMC=y ++CONFIG_MMC_SDHCI=y ++CONFIG_MMC_SDHCI_PLTFM=y ++CONFIG_MMC_SDHCI_XGS_IPROC=y ++CONFIG_DMADEVICES=y ++CONFIG_DMADEVICES_DEBUG=y ++CONFIG_DMADEVICES_VDEBUG=y ++CONFIG_PL330_DMA=y ++CONFIG_GENERIC_PHY=y ++CONFIG_EXT2_FS=y ++CONFIG_EXT3_FS=y ++# CONFIG_DNOTIFY is not set ++CONFIG_AUTOFS4_FS=y ++CONFIG_MSDOS_FS=y ++CONFIG_VFAT_FS=y ++CONFIG_NTFS_FS=y ++CONFIG_JFFS2_FS=y ++CONFIG_UBIFS_FS=y ++CONFIG_NFS_FS=y ++CONFIG_NFS_V3_ACL=y ++CONFIG_NFS_V4=y ++CONFIG_NFS_SWAP=y ++CONFIG_ROOT_NFS=y ++CONFIG_NFSD=y ++CONFIG_NLS_CODEPAGE_437=y ++CONFIG_NLS_ASCII=y ++CONFIG_NLS_ISO8859_1=y ++CONFIG_DEBUG_INFO=y ++CONFIG_DEBUG_FS=y ++CONFIG_MAGIC_SYSRQ=y ++# CONFIG_SCHED_DEBUG is not set ++# CONFIG_FTRACE is not set ++CONFIG_DEBUG_USER=y ++CONFIG_CRYPTO_CBC=y ++CONFIG_CRYPTO_MD5=y ++CONFIG_CRYPTO_DES=y ++CONFIG_CRYPTO_ANSI_CPRNG=m ++CONFIG_XZ_DEC=y +diff --git a/arch/arm/mach-iproc/Kconfig b/arch/arm/mach-iproc/Kconfig +new file mode 100644 +index 000000000000..8db05990def3 +--- /dev/null ++++ b/arch/arm/mach-iproc/Kconfig +@@ -0,0 +1,77 @@ ++menuconfig ARCH_XGS_IPROC ++ bool "Broadcom XGS iProc Support" if ARCH_MULTI_V7 ++ select HAVE_ARM_TWD if SMP ++ select HAVE_ARM_SCU if SMP ++ select ARM_GLOBAL_TIMER ++ select ARM_GIC ++ select ARCH_REQUIRE_GPIOLIB ++ select CACHE_L2X0 ++ select ARM_AMBA ++ select ARCH_SUPPORTS_BIG_ENDIAN ++ select CPU_ENDIAN_BE8 if CPU_BIG_ENDIAN ++ select ARM_ERRATA_754322 ++ select ARM_ERRATA_764369 if SMP ++ select ARM_ERRATA_775420 ++ help ++ This enables support for Broadcom XGS iProc based SoC chips ++ ++if ARCH_XGS_IPROC ++ ++comment "XGS iProc SoC based Machine types" ++ ++choice ++ prompt "XGS iProc SoC based Machine types" ++ default XGS_IPROC_ARM32_PLATFORM ++ ++config XGS_IPROC_ARM32_PLATFORM ++ bool "Support all XGS iProc ARM32 platforms" ++ help ++ Support for all XGS iProc ARM32 platforms. ++ ++config MACH_HX4 ++ bool "Support Broadcom Helix4 bring-up board" ++ help ++ Support for the Broadcom Helix4 bring-up board. ++ ++config MACH_HR2 ++ bool "Support Broadcom Hurricane2 bring-up board" ++ help ++ Support for the Broadcom Hurricane2 bring-up board. ++ ++config MACH_KT2 ++ bool "Support Broadcom Katana2 bring-up board" ++ help ++ Support for the Broadcom Katana2 bring-up board. ++ ++config MACH_GH ++ bool "Support Broadcom Greyhound bring-up board" ++ help ++ Support for the Broadcom Greyhound bring-up board. ++ ++config MACH_SB2 ++ bool "Support Broadcom Saber2 bring-up board" ++ help ++ Support for the Broadcom Saber2 bring-up board. ++ ++config MACH_HR3 ++ bool "Support Broadcom Hurricane3 bring-up board" ++ help ++ Support for the Broadcom Hurricane3 bring-up board. ++ ++config MACH_GH2 ++ bool "Support Broadcom Greyhound2 bring-up board" ++ help ++ Support for the Broadcom Greyhound2 bring-up board. ++ ++config MACH_WH2 ++ bool "Support Broadcom wolfhound2 bring-up board" ++ help ++ Support for the Broadcom Wolfhound2 bring-up board. ++endchoice ++ ++config MACH_IPROC_EMULATION ++ bool "Support iProc emulation" ++ help ++ Support for the iProc emulation. ++ ++endif +diff --git a/arch/arm/mach-iproc/Makefile b/arch/arm/mach-iproc/Makefile +new file mode 100644 +index 000000000000..627739d6e53a +--- /dev/null ++++ b/arch/arm/mach-iproc/Makefile +@@ -0,0 +1,2 @@ ++obj-y := board_bu.o ++obj-$(CONFIG_SMP) += platsmp.o +diff --git a/arch/arm/mach-iproc/board_bu.c b/arch/arm/mach-iproc/board_bu.c +new file mode 100644 +index 000000000000..8542f741c42a +--- /dev/null ++++ b/arch/arm/mach-iproc/board_bu.c +@@ -0,0 +1,95 @@ ++/* ++ * Copyright (C) 2016 Broadcom Corporation ++ * ++ * This program is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public License as ++ * published by the Free Software Foundation version 2. ++ * ++ * This program is distributed "as is" WITHOUT ANY WARRANTY of any ++ * kind, whether express or implied; without even the implied warranty ++ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#define DMU_CRU_RESET_BASE 0x200 ++ ++enum xgs_iproc_dev_id { ++ XGS_IPROC_HX4=0, ++ XGS_IPROC_KT2, ++ XGS_IPROC_HR2, ++ XGS_IPROC_GH, ++ XGS_IPROC_SB2, ++ XGS_IPROC_HR3, ++ XGS_IPROC_GH2, ++ XGS_IPROC_WH2, ++ XGS_IPROC_GENERIC, ++}; ++ ++const char *const xgs_iproc_dt_compat[] = { ++ "brcm,helix4", ++ "brcm,katana2", ++ "brcm,hurricane2", ++ "brcm,greyhound", ++ "brcm,saber2", ++ "brcm,hurricane3", ++ "brcm,greyhound2", ++ "brcm,wolfhound2", ++ "brcm,xgs-iproc", ++ NULL, ++}; ++ ++static void __init xgs_iproc_init(void) ++{ ++ int ret; ++ ++ ret = xgs_iproc_misc_setup(); ++ if (ret < 0) ++ return; ++ ++ /* Init idm and setup idm timeout handler for debug purpose */ ++ /* xgs_iproc_idm_init should be init before reset dmac */ ++ ret = xgs_iproc_idm_init(); ++ if (ret < 0) ++ return; ++ ++ xgs_iproc_idm_dmac_reset(); ++ ++ /* Populate platform devices */ ++ of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); ++} ++ ++ ++static void xgs_iproc_restart(enum reboot_mode mode, const char *cmd) ++{ ++ void * __iomem reg_addr; ++ u32 reg; ++ ++ /* CRU_RESET register */ ++ reg_addr = (void * __iomem)(get_iproc_dmu_pcu_base() + ++ DMU_CRU_RESET_BASE); ++ /* set iproc_reset_n to 0 */ ++ reg = readl(reg_addr); ++ reg &= ~((u32) 1 << 1); ++ ++ writel(reg, reg_addr); ++ ++ /* Wait for reset */ ++ while (1) ++ cpu_do_idle(); ++} ++ ++DT_MACHINE_START(XGS_iProc_DT, "BRCM XGS iProc") ++ .init_machine = xgs_iproc_init, ++ .dt_compat = xgs_iproc_dt_compat, ++ .restart = xgs_iproc_restart, ++ .l2c_aux_val = 0, ++ .l2c_aux_mask = ~0, ++MACHINE_END +diff --git a/arch/arm/mach-iproc/platsmp.c b/arch/arm/mach-iproc/platsmp.c +new file mode 100644 +index 000000000000..4f1527fe46bd +--- /dev/null ++++ b/arch/arm/mach-iproc/platsmp.c +@@ -0,0 +1,309 @@ ++/* ++ * Copyright (C) 2014-2015 Broadcom Corporation ++ * Copyright 2014 Linaro Limited ++ * ++ * This program is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public License as ++ * published by the Free Software Foundation version 2. ++ * ++ * This program is distributed "as is" WITHOUT ANY WARRANTY of any ++ * kind, whether express or implied; without even the implied warranty ++ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ */ ++#include "../mach-bcm/platsmp.c" ++ ++#if 0 ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include ++ ++/* Size of mapped Cortex A9 SCU address space */ ++#define CORTEX_A9_SCU_SIZE 0x58 ++ ++#define SECONDARY_TIMEOUT_NS NSEC_PER_MSEC /* 1 msec (in nanoseconds) */ ++#define BOOT_ADDR_CPUID_MASK 0x3 ++ ++/* Name of device node property defining secondary boot register location */ ++#define OF_SECONDARY_BOOT "secondary-boot-reg" ++#define MPIDR_CPUID_BITMASK 0x3 ++ ++/* ++ * Enable the Cortex A9 Snoop Control Unit ++ * ++ * By the time this is called we already know there are multiple ++ * cores present. We assume we're running on a Cortex A9 processor, ++ * so any trouble getting the base address register or getting the ++ * SCU base is a problem. ++ * ++ * Return 0 if successful or an error code otherwise. ++ */ ++static int __init scu_a9_enable(void) ++{ ++ unsigned long config_base; ++ void __iomem *scu_base; ++ ++ if (!scu_a9_has_base()) { ++ pr_err("no configuration base address register!\n"); ++ return -ENXIO; ++ } ++ ++ /* Config base address register value is zero for uniprocessor */ ++ config_base = scu_a9_get_base(); ++ if (!config_base) { ++ pr_err("hardware reports only one core\n"); ++ return -ENOENT; ++ } ++ ++ scu_base = ioremap((phys_addr_t)config_base, CORTEX_A9_SCU_SIZE); ++ if (!scu_base) { ++ pr_err("failed to remap config base (%lu/%u) for SCU\n", ++ config_base, CORTEX_A9_SCU_SIZE); ++ return -ENOMEM; ++ } ++ ++ scu_enable(scu_base); ++ ++ iounmap(scu_base); /* That's the last we'll need of this */ ++ ++ return 0; ++} ++ ++static u32 secondary_boot_addr_for(unsigned int cpu) ++{ ++ u32 secondary_boot_addr = 0; ++ struct device_node *cpu_node = of_get_cpu_node(cpu, NULL); ++ ++ if (!cpu_node) { ++ pr_err("Failed to find device tree node for CPU%u\n", cpu); ++ return 0; ++ } ++ ++ if (of_property_read_u32(cpu_node, ++ OF_SECONDARY_BOOT, ++ &secondary_boot_addr)) ++ pr_err("required secondary boot register not specified for CPU%u\n", ++ cpu); ++ ++ of_node_put(cpu_node); ++ ++ return secondary_boot_addr; ++} ++ ++static int nsp_write_lut(unsigned int cpu) ++{ ++ void __iomem *sku_rom_lut; ++ phys_addr_t secondary_startup_phy; ++ const u32 secondary_boot_addr = secondary_boot_addr_for(cpu); ++ ++ if (!secondary_boot_addr) ++ return -EINVAL; ++ ++ sku_rom_lut = ioremap_nocache((phys_addr_t)secondary_boot_addr, ++ sizeof(phys_addr_t)); ++ if (!sku_rom_lut) { ++ pr_warn("unable to ioremap SKU-ROM LUT register for cpu %u\n", cpu); ++ return -ENOMEM; ++ } ++ ++ secondary_startup_phy = virt_to_phys(secondary_startup); ++ BUG_ON(secondary_startup_phy > (phys_addr_t)U32_MAX); ++ ++ writel_relaxed(secondary_startup_phy, sku_rom_lut); ++ ++ /* Ensure the write is visible to the secondary core */ ++ smp_wmb(); ++ ++ iounmap(sku_rom_lut); ++ ++ return 0; ++} ++ ++static void __init bcm_smp_prepare_cpus(unsigned int max_cpus) ++{ ++ const cpumask_t only_cpu_0 = { CPU_BITS_CPU0 }; ++ ++ /* Enable the SCU on Cortex A9 based SoCs */ ++ if (scu_a9_enable()) { ++ /* Update the CPU present map to reflect uniprocessor mode */ ++ pr_warn("failed to enable A9 SCU - disabling SMP\n"); ++ init_cpu_present(&only_cpu_0); ++ } ++} ++ ++/* ++ * The ROM code has the secondary cores looping, waiting for an event. ++ * When an event occurs each core examines the bottom two bits of the ++ * secondary boot register. When a core finds those bits contain its ++ * own core id, it performs initialization, including computing its boot ++ * address by clearing the boot register value's bottom two bits. The ++ * core signals that it is beginning its execution by writing its boot ++ * address back to the secondary boot register, and finally jumps to ++ * that address. ++ * ++ * So to start a core executing we need to: ++ * - Encode the (hardware) CPU id with the bottom bits of the secondary ++ * start address. ++ * - Write that value into the secondary boot register. ++ * - Generate an event to wake up the secondary CPU(s). ++ * - Wait for the secondary boot register to be re-written, which ++ * indicates the secondary core has started. ++ */ ++static int kona_boot_secondary(unsigned int cpu, struct task_struct *idle) ++{ ++ void __iomem *boot_reg; ++ phys_addr_t boot_func; ++ u64 start_clock; ++ u32 cpu_id; ++ u32 boot_val; ++ bool timeout = false; ++ const u32 secondary_boot_addr = secondary_boot_addr_for(cpu); ++ ++ cpu_id = cpu_logical_map(cpu); ++ if (cpu_id & ~BOOT_ADDR_CPUID_MASK) { ++ pr_err("bad cpu id (%u > %u)\n", cpu_id, BOOT_ADDR_CPUID_MASK); ++ return -EINVAL; ++ } ++ ++ if (!secondary_boot_addr) ++ return -EINVAL; ++ ++ boot_reg = ioremap_nocache((phys_addr_t)secondary_boot_addr, ++ sizeof(phys_addr_t)); ++ if (!boot_reg) { ++ pr_err("unable to map boot register for cpu %u\n", cpu_id); ++ return -ENOMEM; ++ } ++ ++ /* ++ * Secondary cores will start in secondary_startup(), ++ * defined in "arch/arm/kernel/head.S" ++ */ ++ boot_func = virt_to_phys(secondary_startup); ++ BUG_ON(boot_func & BOOT_ADDR_CPUID_MASK); ++ BUG_ON(boot_func > (phys_addr_t)U32_MAX); ++ ++ /* The core to start is encoded in the low bits */ ++ boot_val = (u32)boot_func | cpu_id; ++ writel_relaxed(boot_val, boot_reg); ++ ++ sev(); ++ ++ /* The low bits will be cleared once the core has started */ ++ start_clock = local_clock(); ++ while (!timeout && readl_relaxed(boot_reg) == boot_val) ++ timeout = local_clock() - start_clock > SECONDARY_TIMEOUT_NS; ++ ++ iounmap(boot_reg); ++ ++ if (!timeout) ++ return 0; ++ ++ pr_err("timeout waiting for cpu %u to start\n", cpu_id); ++ ++ return -ENXIO; ++} ++ ++/* Cluster Dormant Control command to bring CPU into a running state */ ++#define CDC_CMD 6 ++#define CDC_CMD_OFFSET 0 ++#define CDC_CMD_REG(cpu) (CDC_CMD_OFFSET + 4*(cpu)) ++ ++/* ++ * BCM23550 has a Cluster Dormant Control block that keeps the core in ++ * idle state. A command needs to be sent to the block to bring the CPU ++ * into running state. ++ */ ++static int bcm23550_boot_secondary(unsigned int cpu, struct task_struct *idle) ++{ ++ void __iomem *cdc_base; ++ struct device_node *dn; ++ char *name; ++ int ret; ++ ++ /* Make sure a CDC node exists before booting the ++ * secondary core. ++ */ ++ name = "brcm,bcm23550-cdc"; ++ dn = of_find_compatible_node(NULL, NULL, name); ++ if (!dn) { ++ pr_err("unable to find cdc node\n"); ++ return -ENODEV; ++ } ++ ++ cdc_base = of_iomap(dn, 0); ++ of_node_put(dn); ++ ++ if (!cdc_base) { ++ pr_err("unable to remap cdc base register\n"); ++ return -ENOMEM; ++ } ++ ++ /* Boot the secondary core */ ++ ret = kona_boot_secondary(cpu, idle); ++ if (ret) ++ goto out; ++ ++ /* Bring this CPU to RUN state so that nIRQ nFIQ ++ * signals are unblocked. ++ */ ++ writel_relaxed(CDC_CMD, cdc_base + CDC_CMD_REG(cpu)); ++ ++out: ++ iounmap(cdc_base); ++ ++ return ret; ++} ++ ++static int nsp_boot_secondary(unsigned int cpu, struct task_struct *idle) ++{ ++ int ret; ++ ++ /* ++ * After wake up, secondary core branches to the startup ++ * address programmed at SKU ROM LUT location. ++ */ ++ ret = nsp_write_lut(cpu); ++ if (ret) { ++ pr_err("unable to write startup addr to SKU ROM LUT\n"); ++ goto out; ++ } ++ ++ /* Send a CPU wakeup interrupt to the secondary core */ ++ arch_send_wakeup_ipi_mask(cpumask_of(cpu)); ++ ++out: ++ return ret; ++} ++ ++static const struct smp_operations kona_smp_ops __initconst = { ++ .smp_prepare_cpus = bcm_smp_prepare_cpus, ++ .smp_boot_secondary = kona_boot_secondary, ++}; ++CPU_METHOD_OF_DECLARE(bcm_smp_bcm281xx, "brcm,bcm11351-cpu-method", ++ &kona_smp_ops); ++ ++static const struct smp_operations bcm23550_smp_ops __initconst = { ++ .smp_boot_secondary = bcm23550_boot_secondary, ++}; ++CPU_METHOD_OF_DECLARE(bcm_smp_bcm23550, "brcm,bcm23550", ++ &bcm23550_smp_ops); ++ ++static const struct smp_operations nsp_smp_ops __initconst = { ++ .smp_prepare_cpus = bcm_smp_prepare_cpus, ++ .smp_boot_secondary = nsp_boot_secondary, ++}; ++CPU_METHOD_OF_DECLARE(bcm_smp_nsp, "brcm,bcm-nsp-smp", &nsp_smp_ops); ++#endif +\ No newline at end of file +-- +2.47.1 + diff --git a/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-03-arm-add-iproc-xgs-shim-layer.patch b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-03-arm-add-iproc-xgs-shim-layer.patch new file mode 100644 index 00000000..8e1ba55c --- /dev/null +++ b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-03-arm-add-iproc-xgs-shim-layer.patch @@ -0,0 +1,154 @@ +From ff5c34cdce468491e450380d71e44810e38343c9 Mon Sep 17 00:00:00 2001 +From: Jonas Gorski +Date: Thu, 7 Oct 2021 09:48:32 +0200 +Subject: [PATCH 03/21] arm: add iproc-xgs shim layer + +--- + arch/arm/mach-iproc/Makefile | 1 + + arch/arm/mach-iproc/include/plat/shm.h | 37 ++++++++++++ + arch/arm/mach-iproc/shm.c | 81 ++++++++++++++++++++++++++ + 3 files changed, 119 insertions(+) + create mode 100644 arch/arm/mach-iproc/include/plat/shm.h + create mode 100644 arch/arm/mach-iproc/shm.c + +diff --git a/arch/arm/mach-iproc/Makefile b/arch/arm/mach-iproc/Makefile +index 627739d6e53a..1cfce89e73d9 100644 +--- a/arch/arm/mach-iproc/Makefile ++++ b/arch/arm/mach-iproc/Makefile +@@ -1,2 +1,3 @@ + obj-y := board_bu.o ++obj-y += shm.o + obj-$(CONFIG_SMP) += platsmp.o +diff --git a/arch/arm/mach-iproc/include/plat/shm.h b/arch/arm/mach-iproc/include/plat/shm.h +new file mode 100644 +index 000000000000..9c4af8927619 +--- /dev/null ++++ b/arch/arm/mach-iproc/include/plat/shm.h +@@ -0,0 +1,37 @@ ++/* ++ * Copyright (C) 2013, Broadcom Corporation. All Rights Reserved. ++ * ++ * Permission to use, copy, modify, and/or distribute this software for any ++ * purpose with or without fee is hereby granted, provided that the above ++ * copyright notice and this permission notice appear in all copies. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES ++ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF ++ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ++ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION ++ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN ++ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ */ ++/* ++ * Header for declaring shim layer exports. ++ */ ++ ++#ifndef __SHM_DOT_H_INCLUDED__ ++#define __SHM_DOT_H_INCLUDED__ ++ ++#include ++#include ++#include ++ ++ ++extern struct resource * ++iproc_platform_get_resource(struct platform_device *dev, unsigned int type, ++ unsigned int num); ++ ++extern int iproc_platform_device_register(struct platform_device * pdev); ++extern void iproc_platform_device_unregister(struct platform_device * pdev); ++extern int iproc_platform_driver_register(struct platform_driver *drv); ++extern void iproc_platform_driver_unregister(struct platform_driver *drv); ++ ++#endif /*#ifndef __SHM_DOT_H_INCLUDED__*/ +diff --git a/arch/arm/mach-iproc/shm.c b/arch/arm/mach-iproc/shm.c +new file mode 100644 +index 000000000000..7ae532e1b002 +--- /dev/null ++++ b/arch/arm/mach-iproc/shm.c +@@ -0,0 +1,81 @@ ++/* ++ * Copyright (C) 2013, Broadcom Corporation. All Rights Reserved. ++ * ++ * Permission to use, copy, modify, and/or distribute this software for any ++ * purpose with or without fee is hereby granted, provided that the above ++ * copyright notice and this permission notice appear in all copies. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES ++ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF ++ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ++ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION ++ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN ++ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ */ ++ ++#include "include/plat/shm.h" ++ ++/** ++ * iproc_platform_get_resource - ++ * wrapper function for platform_get_resource ++ * @dev: platform device ++ * @type: resource type ++ * @num: resource index ++ */ ++struct resource * ++iproc_platform_get_resource(struct platform_device *dev, unsigned int type, ++ unsigned int num) ++{ ++ return platform_get_resource(dev, type, num); ++} ++EXPORT_SYMBOL(iproc_platform_get_resource); ++ ++ ++/** ++ * iproc_platform_driver_register - ++ * wrapper function for platform_driver_register ++ * @drv: platform driver structure ++ */ ++int iproc_platform_driver_register(struct platform_driver *drv) ++{ ++ return platform_driver_register(drv); ++} ++EXPORT_SYMBOL(iproc_platform_driver_register); ++ ++ ++/** ++ * iproc_platform_driver_unregister ++ * wrapper function for platform_driver_unregister ++ * @drv: platform driver structure ++ */ ++void iproc_platform_driver_unregister(struct platform_driver *drv) ++{ ++ return platform_driver_unregister(drv); ++} ++EXPORT_SYMBOL(iproc_platform_driver_unregister); ++ ++ ++/** ++ * iproc_platform_device_register - add a platform-level device ++ * wrapper function for platform_device_register ++ * @pdev: platform device we're adding ++ * ++ */ ++int iproc_platform_device_register(struct platform_device * pdev) ++{ ++ return platform_device_register(pdev); ++} ++EXPORT_SYMBOL(iproc_platform_device_register); ++ ++ ++/** ++ * iproc_platform_device_unregister - ++ * wrapper function for platform_device_unregister ++ * @pdev: platform device we're unregistering ++ */ ++void iproc_platform_device_unregister(struct platform_device * pdev) ++{ ++ return platform_device_unregister(pdev); ++} ++EXPORT_SYMBOL(iproc_platform_device_unregister); +-- +2.47.1 + diff --git a/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-04-arm-init-DEBUG_RODATA-fix.patch b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-04-arm-init-DEBUG_RODATA-fix.patch new file mode 100644 index 00000000..d2d756c8 --- /dev/null +++ b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-04-arm-init-DEBUG_RODATA-fix.patch @@ -0,0 +1,33 @@ +From 642075747ee6652c80d4e16144014085fcf65096 Mon Sep 17 00:00:00 2001 +From: Jonas Gorski +Date: Thu, 7 Oct 2021 09:48:32 +0200 +Subject: [PATCH 04/21] arm: init: DEBUG_RODATA fix(?) + +--- + arch/arm/mm/init.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c +index 5345d218899a..8c7e11bd9c20 100644 +--- a/arch/arm/mm/init.c ++++ b/arch/arm/mm/init.c +@@ -431,6 +431,16 @@ static void update_sections_early(struct section_perm perms[], int n) + for_each_process(t) { + if (t->flags & PF_KTHREAD) + continue; ++ ++ /* ++ * A process in getting shut down state (PF_EXITING), with its ++ * task mmu pointer (mm) being NULL, causes hang in ++ * set_section_perms(). ++ * NOTE: update_sections_early() runs if CONFIG_DEBUG_RODATA=y ++ */ ++ if (t->flags & PF_EXITING) ++ continue; ++ + for_each_thread(t, s) + if (s->mm) + set_section_perms(perms, n, true, s->mm); +-- +2.47.1 + diff --git a/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-05-hw_random-xgs-iproc-rng100.patch b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-05-hw_random-xgs-iproc-rng100.patch new file mode 100644 index 00000000..b1542a04 --- /dev/null +++ b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-05-hw_random-xgs-iproc-rng100.patch @@ -0,0 +1,265 @@ +From 6c06d16642e2b1ffacf0fdc514fc5b9f04a98d04 Mon Sep 17 00:00:00 2001 +From: Jonas Gorski +Date: Thu, 7 Oct 2021 09:49:47 +0200 +Subject: [PATCH 05/21] hw_random: xgs-iproc-rng100 + +--- + drivers/char/hw_random/Kconfig | 12 ++ + drivers/char/hw_random/Makefile | 1 + + drivers/char/hw_random/xgs-iproc-rng100.c | 211 ++++++++++++++++++++++ + 3 files changed, 224 insertions(+) + create mode 100644 drivers/char/hw_random/xgs-iproc-rng100.c + +diff --git a/drivers/char/hw_random/Kconfig b/drivers/char/hw_random/Kconfig +index b51d9e243f35..1e0c4ea2d93a 100644 +--- a/drivers/char/hw_random/Kconfig ++++ b/drivers/char/hw_random/Kconfig +@@ -112,6 +112,18 @@ config HW_RANDOM_IPROC_RNG200 + + If unsure, say Y. + ++config HW_RANDOM_XGS_IPROC_RNG ++ tristate "Broadcom iProc RNG support" ++ depends on (ARCH_XGS_IPROC && HW_RANDOM) ++ help ++ This driver provides kernel-side support for the RNG ++ hardware found on the Broadcom iProc SoCs. ++ ++ To compile this driver as a module, choose M here: the ++ module will be called iproc-rng ++ ++ If unsure, say Y. ++ + config HW_RANDOM_GEODE + tristate "AMD Geode HW Random Number Generator support" + depends on (X86_32 || COMPILE_TEST) +diff --git a/drivers/char/hw_random/Makefile b/drivers/char/hw_random/Makefile +index 01f012eab440..6113b5c8decb 100644 +--- a/drivers/char/hw_random/Makefile ++++ b/drivers/char/hw_random/Makefile +@@ -32,6 +32,7 @@ obj-$(CONFIG_HW_RANDOM_HISI) += hisi-rng.o + obj-$(CONFIG_HW_RANDOM_HISTB) += histb-rng.o + obj-$(CONFIG_HW_RANDOM_BCM2835) += bcm2835-rng.o + obj-$(CONFIG_HW_RANDOM_IPROC_RNG200) += iproc-rng200.o ++obj-$(CONFIG_HW_RANDOM_XGS_IPROC_RNG) += xgs-iproc-rng100.o iproc-rng200.o + obj-$(CONFIG_HW_RANDOM_ST) += st-rng.o + obj-$(CONFIG_HW_RANDOM_XGENE) += xgene-rng.o + obj-$(CONFIG_HW_RANDOM_STM32) += stm32-rng.o +diff --git a/drivers/char/hw_random/xgs-iproc-rng100.c b/drivers/char/hw_random/xgs-iproc-rng100.c +new file mode 100644 +index 000000000000..5a37f3285a4c +--- /dev/null ++++ b/drivers/char/hw_random/xgs-iproc-rng100.c +@@ -0,0 +1,209 @@ ++/* ++ * Copyright (C) 2017 Broadcom Corporation ++ * ++ * This program is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public License as ++ * published by the Free Software Foundation version 2. ++ * ++ * This program is distributed "as is" WITHOUT ANY WARRANTY of any ++ * kind, whether express or implied; without even the implied warranty ++ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++/* Registers for RNG */ ++#define RNG_CTRL_OFFSET 0x00000000 ++#define RNG_CTRL_RESERVED_MASK 0xF00000CC ++#define RNG_CTRL_COMBLK2_OSC_DIS_SHIFT 22 ++#define RNG_CTRL_COMBLK2_OSC_DIS_MASK 0x0FC00000 ++#define RNG_CTRL_COMBLK1_OSC_DIS_SHIFT 16 ++#define RNG_CTRL_COMBLK1_OSC_DIS_MASK 0x003F0000 ++#define RNG_CTRL_JCLK_BYP_DIV_CNT_SHIFT 8 ++#define RNG_CTRL_JCLK_BYP_DIV_CNT_MASK 0x0000FF00 ++#define RNG_CTRL_JCLK_BYP_SRC_SHIFT 5 ++#define RNG_CTRL_JCLK_BYP_SRC_MASK 0x00000020 ++#define RNG_CTRL_JCLK_BYP_SEL_SHIFT 4 ++#define RNG_CTRL_JCLK_BYP_SEL_MASK 0x00000010 ++#define RNG_CTRL_RBG2X_SHIFT 1 ++#define RNG_CTRL_RBG2X_MASK 0x00000002 ++#define RNG_CTRL_RBGEN_SHIFT 0 ++#define RNG_CTRL_RBGEN_MASK 0x00000001 ++ ++#define RNG_STATUS_OFFSET 0x00000004 ++#define RNG_STATUS_RESERVED_MASK 0x00F00000 ++#define RNG_STATUS_RND_VAL_SHIFT 24 ++#define RNG_STATUS_RND_VAL_MASK 0xFF000000 ++#define RNG_STATUS_WARM_CNT_SHIFT 0 ++#define RNG_STATUS_WARM_CNT_MASK 0x000FFFFF ++ ++#define RNG_DATA_OFFSET 0x00000008 ++#define RNG_DATA_RESERVED_MASK 0x00000000 ++#define RNG_DATA_RNG_NUM_SHIFT 0 ++#define RNG_DATA_RNG_NUM_MASK 0xFFFFFFFF ++ ++#define RNG_FF_THRES_OFFSET 0x0000000C ++#define RNG_FF_THRES_RESERVED_MASK 0xFFFFFFE0 ++#define RNG_FF_THRES_RNG_FF_THRESH_SHIFT 0 ++#define RNG_FF_THRES_RNG_FF_THRESH_MASK 0x0000001F ++ ++#define RNG_INT_MASK_OFFSET 0x00000010 ++#define RNG_INT_MASK_RESERVED_MASK 0xFFFFFFFE ++#define RNG_INT_MASK_OFF_SHIFT 0 ++#define RNG_INT_MASK_OFF_MASK 0x00000001 ++ ++static int rng100_read(struct hwrng *rng, void *buf, size_t max, bool wait) ++{ ++ u32 num_words = 0; ++ u32 num_remaining = max; ++ ++ #define MAX_IDLE_TIME (1 * HZ) ++ unsigned long idle_endtime = jiffies + MAX_IDLE_TIME; ++ ++ /* Retrieve HW RNG registers base address. */ ++ void __iomem *base_addr = (void __iomem *)rng->priv; ++ ++ while ((num_remaining > 0) && time_before(jiffies, idle_endtime)) { ++ /* Are there any random numbers available? */ ++ num_words = (ioread32(base_addr + RNG_STATUS_OFFSET) & ++ RNG_STATUS_RND_VAL_MASK) >> RNG_STATUS_RND_VAL_SHIFT; ++ if (num_words > 0) { ++ if (num_remaining >= sizeof(u32)) { ++ /* Buffer has room to store entire word */ ++ *(u32 *)buf = ioread32(base_addr + ++ RNG_DATA_OFFSET); ++ buf += sizeof(u32); ++ num_remaining -= sizeof(u32); ++ } else { ++ /* Buffer can only store partial word */ ++ u32 rnd_number = ioread32(base_addr + ++ RNG_DATA_OFFSET); ++ memcpy(buf, &rnd_number, num_remaining); ++ buf += num_remaining; ++ num_remaining = 0; ++ } ++ ++ /* Reset the IDLE timeout */ ++ idle_endtime = jiffies + MAX_IDLE_TIME; ++ } else if (!wait) { ++ /* Cannot wait, return immediately */ ++ break; ++ } else { ++ /* Can wait, give others chance to run */ ++ cpu_relax(); ++ } ++ } ++ ++ return max - num_remaining; ++} ++ ++static struct hwrng rng100_ops = { ++ .name = "iproc-rng100", ++ .read = rng100_read, ++}; ++ ++static int iproc_rng100_probe(struct platform_device *pdev) ++{ ++ int error; ++ u32 val; ++ struct device *dev = &pdev->dev; ++ void __iomem *base_addr; ++ struct device_node *node = pdev->dev.of_node; ++ ++ pr_info("Broadcom IPROC RNG100 Driver\n"); ++ /* We only accept one device, and it must have an id of -1 */ ++ if (pdev->id != -1) ++ return -ENODEV; ++ ++ base_addr = of_iomap(node, 0); ++ if (!base_addr) { ++ dev_err(&pdev->dev, "can't iomap base_addr for rng100\n"); ++ return -EIO; ++ } ++ rng100_ops.priv = (unsigned long)base_addr; ++ ++ /* Start RNG block */ ++ val = ioread32(base_addr + RNG_CTRL_OFFSET); ++ val |= RNG_CTRL_RBGEN_MASK; ++ iowrite32(val, base_addr + RNG_CTRL_OFFSET); ++ ++ /* Enable RNG RBG2X */ ++ val = ioread32(base_addr + RNG_CTRL_OFFSET); ++ val |= RNG_CTRL_RBG2X_MASK; ++ iowrite32(val, base_addr + RNG_CTRL_OFFSET); ++ ++ /* Disable RNG INTERRUPT */ ++ val = ioread32(base_addr + RNG_INT_MASK_OFFSET); ++ val |= RNG_INT_MASK_OFF_MASK; ++ iowrite32(val, base_addr + RNG_INT_MASK_OFFSET); ++ ++ /* set warmup cycle 0xfff */ ++ iowrite32(RNG_STATUS_WARM_CNT_MASK - ++ (0xfff & RNG_STATUS_WARM_CNT_MASK), ++ base_addr + RNG_STATUS_OFFSET); ++ while ((ioread32(base_addr + RNG_STATUS_OFFSET) & ++ RNG_STATUS_WARM_CNT_MASK) != RNG_STATUS_WARM_CNT_MASK) ++ cpu_relax(); ++ ++ /* register to the Linux RNG framework */ ++ error = hwrng_register(&rng100_ops); ++ if (error) { ++ dev_err(dev, "hwrng registration failed\n"); ++ iounmap(base_addr); ++ return error; ++ } ++ dev_dbg(dev, "hwrng registered\n"); ++ ++ return 0; ++} ++ ++static void iproc_rng100_remove(struct platform_device *pdev) ++{ ++ u32 val; ++ void __iomem *base_addr = (void __iomem *)rng100_ops.priv; ++ ++ hwrng_unregister(&rng100_ops); ++ ++ if (base_addr) { ++ /* Disable RNG hardware */ ++ val = ioread32(base_addr + RNG_CTRL_OFFSET); ++ val &= ~RNG_CTRL_RBGEN_MASK; ++ iowrite32(val, base_addr + RNG_CTRL_OFFSET); ++ ++ val = ioread32(base_addr + RNG_CTRL_OFFSET); ++ val &= ~RNG_CTRL_RBG2X_MASK; ++ iowrite32(val, base_addr + RNG_CTRL_OFFSET); ++ ++ iounmap(base_addr); ++ } ++} ++ ++static const struct of_device_id bcm_iproc_dt_ids[] = { ++ { .compatible = "brcm,iproc-rng100"}, ++ { } ++}; ++MODULE_DEVICE_TABLE(of, bcm_iproc_dt_ids); ++ ++static struct platform_driver iproc_rng100_driver = { ++ .driver = { ++ .name = "iproc-rng100", ++ .owner = THIS_MODULE, ++ .of_match_table = bcm_iproc_dt_ids, ++ }, ++ .probe = iproc_rng100_probe, ++ .remove = iproc_rng100_remove, ++}; ++module_platform_driver(iproc_rng100_driver); ++ ++MODULE_AUTHOR("Broadcom"); ++MODULE_DESCRIPTION("iProc RNG100 Random Number Generator driver"); ++MODULE_LICENSE("GPL v2"); +-- +2.47.1 + diff --git a/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-06-clk-clk-iproc-armpll-avoid-overflow.patch b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-06-clk-clk-iproc-armpll-avoid-overflow.patch new file mode 100644 index 00000000..dfce39f4 --- /dev/null +++ b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-06-clk-clk-iproc-armpll-avoid-overflow.patch @@ -0,0 +1,40 @@ +From f1933b6eaf694aae66abcbe782798fd728e2e0c9 Mon Sep 17 00:00:00 2001 +From: Jonas Gorski +Date: Thu, 7 Oct 2021 09:50:55 +0200 +Subject: [PATCH 06/21] clk: clk-iproc-armpll: avoid overflow + +--- + drivers/clk/bcm/clk-iproc-armpll.c | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +diff --git a/drivers/clk/bcm/clk-iproc-armpll.c b/drivers/clk/bcm/clk-iproc-armpll.c +index 9e86c0c10b57..1a05715cfae4 100644 +--- a/drivers/clk/bcm/clk-iproc-armpll.c ++++ b/drivers/clk/bcm/clk-iproc-armpll.c +@@ -187,9 +187,9 @@ static unsigned long iproc_arm_pll_recalc_rate(struct clk_hw *hw, + { + struct iproc_arm_pll *pll = to_iproc_arm_pll(hw); + u32 val; +- int mdiv; ++ u32 mdiv; + u64 ndiv; +- unsigned int pdiv; ++ u32 pdiv; + + /* in bypass mode, use parent rate */ + val = readl(pll->base + IPROC_CLK_PLLARMC_OFFSET); +@@ -216,8 +216,10 @@ static unsigned long iproc_arm_pll_recalc_rate(struct clk_hw *hw, + pll->rate = 0; + return 0; + } ++ ++ /* To avoid pll->rate overflow, do divide before multiply */ ++ parent_rate = (parent_rate / pdiv) / mdiv; + pll->rate = (ndiv * parent_rate) >> 20; +- pll->rate = (pll->rate / pdiv) / mdiv; + + pr_debug("%s: ARM PLL rate: %lu. parent rate: %lu\n", __func__, + pll->rate, parent_rate); +-- +2.47.1 + diff --git a/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-07-clk-clk-xgs-iproc.patch b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-07-clk-clk-xgs-iproc.patch new file mode 100644 index 00000000..6d119806 --- /dev/null +++ b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-07-clk-clk-xgs-iproc.patch @@ -0,0 +1,215 @@ +From ca7ff4e677192a2cda642c01d53444e8509231db Mon Sep 17 00:00:00 2001 +From: Jonas Gorski +Date: Thu, 7 Oct 2021 09:51:43 +0200 +Subject: [PATCH 07/21] clk: clk-xgs-iproc + +--- + drivers/clk/bcm/Kconfig | 8 ++ + drivers/clk/bcm/Makefile | 1 + + drivers/clk/bcm/clk-xgs-iproc.c | 168 ++++++++++++++++++++++++++++++++ + 3 files changed, 177 insertions(+) + create mode 100644 drivers/clk/bcm/clk-xgs-iproc.c + +diff --git a/drivers/clk/bcm/Kconfig b/drivers/clk/bcm/Kconfig +index a972d763eb77..59540945b48f 100644 +--- a/drivers/clk/bcm/Kconfig ++++ b/drivers/clk/bcm/Kconfig +@@ -109,3 +109,11 @@ config CLK_RASPBERRYPI + help + Enable common clock framework support for Raspberry Pi's firmware + dependent clocks ++ ++config CLK_XGS_IPROC ++ bool "BRCM XGS iProc clock support" ++ depends on ARCH_XGS_IPROC || COMPILE_TEST ++ select COMMON_CLK_IPROC ++ default ARCH_XGS_IPROC ++ help ++ Enable clock support for Broadcom XGS iProc SoC +diff --git a/drivers/clk/bcm/Makefile b/drivers/clk/bcm/Makefile +index d0b6f4b1fb08..9413e0f2a2bd 100644 +--- a/drivers/clk/bcm/Makefile ++++ b/drivers/clk/bcm/Makefile +@@ -17,3 +17,4 @@ obj-$(CONFIG_CLK_BCM_HR2) += clk-hr2.o + obj-$(CONFIG_CLK_BCM_NSP) += clk-nsp.o + obj-$(CONFIG_CLK_BCM_NS2) += clk-ns2.o + obj-$(CONFIG_CLK_BCM_SR) += clk-sr.o ++obj-$(CONFIG_CLK_XGS_IPROC) += clk-xgs-iproc.o +diff --git a/drivers/clk/bcm/clk-xgs-iproc.c b/drivers/clk/bcm/clk-xgs-iproc.c +new file mode 100644 +index 000000000000..7aa37cfce6a8 +--- /dev/null ++++ b/drivers/clk/bcm/clk-xgs-iproc.c +@@ -0,0 +1,168 @@ ++/* ++ * Copyright (C) 2016 Broadcom Corporation ++ * ++ * This program is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public License as ++ * published by the Free Software Foundation version 2. ++ * ++ * This program is distributed "as is" WITHOUT ANY WARRANTY of any ++ * kind, whether express or implied; without even the implied warranty ++ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include "clk-iproc.h" ++ ++#define SB2_GEN_PLL_CTRL_1_OFFSET 0x04 ++#define SB2_GEN_PLL_CTRL_3_OFFSET 0x0C ++#define SB2_GEN_PLL_CTRL_5_OFFSET 0x14 ++#define SB2_GEN_PLL_CTRL_1_PDIV_R 27 ++#define SB2_GEN_PLL_CTRL_3_NDIV_INT_R 20 ++#define SB2_GEN_PLL_CTRL_5_CH1_MDIV_R 8 ++#define SB2_GEN_PLL_CTRL_1_PDIV_WIDTH 4 ++#define SB2_GEN_PLL_CTRL_3_NDIV_INT_WIDTH 10 ++#define SB2_GEN_PLL_CTRL_5_CH1_MDIV_WIDTH 8 ++ ++#define GEN_PLL_CTRL1_OFFSET 0x4 ++#define GEN_PLL_CTRL2_OFFSET 0x8 ++#define GEN_PLL_CTRL1_NDIV_INT_R 0 ++#define GEN_PLL_CTRL1_NDIV_INT_WIDTH 10 ++#define GEN_PLL_CTRL1_PDIV_R 10 ++#define GEN_PLL_CTRL2_CH3_MDIV_R 8 ++#define GEN_PLL_CTRL2_CH3_MDIV_WIDTH 8 ++#define GEN_PLL_CTRL1_PDIV_WIDTH_3 3 ++#define GEN_PLL_CTRL1_PDIV_WIDTH_4 4 ++ ++ ++struct iproc_gen_pll { ++ struct clk_hw hw; ++ void __iomem *base; ++ unsigned long rate; ++}; ++ ++#define to_iproc_gen_pll(phw) container_of(phw, struct iproc_gen_pll, hw) ++ ++static u32 genpll_pdiv_width; ++ ++static unsigned long iproc_axi_clk_recalc_rate(struct clk_hw *hw, ++ unsigned long parent_rate) ++{ ++ uint32_t ndiv, mdiv, pdiv; ++ struct iproc_gen_pll *pll = to_iproc_gen_pll(hw); ++ ++ ndiv = readl(pll->base + GEN_PLL_CTRL1_OFFSET) >> ++ GEN_PLL_CTRL1_NDIV_INT_R; ++ ndiv &= (1 << GEN_PLL_CTRL1_NDIV_INT_WIDTH) - 1; ++ if (ndiv == 0) ++ ndiv = 1 << GEN_PLL_CTRL1_NDIV_INT_WIDTH; ++ ++ pdiv = readl(pll->base + GEN_PLL_CTRL1_OFFSET) >> GEN_PLL_CTRL1_PDIV_R; ++ pdiv &= (1 << genpll_pdiv_width) -1; ++ if (pdiv == 0) ++ pdiv = 1 << genpll_pdiv_width; ++ ++ mdiv = readl(pll->base + GEN_PLL_CTRL2_OFFSET) >> ++ GEN_PLL_CTRL2_CH3_MDIV_R; ++ mdiv &= (1 << GEN_PLL_CTRL2_CH3_MDIV_WIDTH) - 1; ++ if (mdiv == 0) ++ mdiv = 1 << GEN_PLL_CTRL2_CH3_MDIV_WIDTH; ++ ++ pll->rate = parent_rate * ndiv / pdiv / mdiv; ++ return pll->rate; ++} ++ ++static unsigned long iproc_sb2_axi_clk_recalc_rate(struct clk_hw *hw, ++ unsigned long parent_rate) ++{ ++ uint32_t ndiv, mdiv, pdiv; ++ struct iproc_gen_pll *pll = to_iproc_gen_pll(hw); ++ ++ ndiv = readl(pll->base + SB2_GEN_PLL_CTRL_3_OFFSET) >> ++ SB2_GEN_PLL_CTRL_3_NDIV_INT_R; ++ ndiv &= (1 << SB2_GEN_PLL_CTRL_3_NDIV_INT_WIDTH) - 1; ++ ++ mdiv = readl(pll->base + SB2_GEN_PLL_CTRL_5_OFFSET) >> ++ SB2_GEN_PLL_CTRL_5_CH1_MDIV_R; ++ mdiv &= (1 << SB2_GEN_PLL_CTRL_5_CH1_MDIV_WIDTH) - 1; ++ ++ pdiv = readl(pll->base + SB2_GEN_PLL_CTRL_1_OFFSET) >> ++ SB2_GEN_PLL_CTRL_1_PDIV_R; ++ pdiv &= (1 << SB2_GEN_PLL_CTRL_1_PDIV_WIDTH) - 1; ++ ++ pll->rate = parent_rate * ndiv / pdiv / mdiv; ++ return pll->rate; ++} ++ ++ ++static struct clk_ops iproc_axi_clk_ops = { ++ .recalc_rate = iproc_axi_clk_recalc_rate, ++}; ++ ++void __init xgs_iproc_axi_clk_setup(struct device_node *node) ++{ ++ int ret; ++ struct clk *clk; ++ struct iproc_gen_pll *pll; ++ struct clk_init_data init; ++ const char *parent_name; ++ ++ pll = kzalloc(sizeof(*pll), GFP_KERNEL); ++ if (WARN_ON(!pll)) ++ return; ++ ++ pll->base = of_iomap(node, 0); ++ if (WARN_ON(!pll->base)) ++ goto err_free_pll; ++ ++ init.name = node->name; ++ if (of_device_is_compatible(node, "axi-clk-sb2")) ++ iproc_axi_clk_ops.recalc_rate = iproc_sb2_axi_clk_recalc_rate; ++ if (of_device_is_compatible(node, "axi-clk-hx4") || ++ of_device_is_compatible(node, "axi-clk-hr2")) ++ genpll_pdiv_width = GEN_PLL_CTRL1_PDIV_WIDTH_3; ++ else ++ genpll_pdiv_width = GEN_PLL_CTRL1_PDIV_WIDTH_4; ++ ++ init.ops = &iproc_axi_clk_ops; ++ init.flags = 0; ++ parent_name = of_clk_get_parent_name(node, 0); ++ init.parent_names = (parent_name ? &parent_name : NULL); ++ init.num_parents = (parent_name ? 1 : 0); ++ pll->hw.init = &init; ++ ++ clk = clk_register(NULL, &pll->hw); ++ if (WARN_ON(IS_ERR(clk))) ++ goto err_iounmap; ++ ++ ret = of_clk_add_provider(node, of_clk_src_simple_get, clk); ++ if (WARN_ON(ret)) ++ goto err_clk_unregister; ++ ++ return; ++ ++err_clk_unregister: ++ clk_unregister(clk); ++err_iounmap: ++ iounmap(pll->base); ++err_free_pll: ++ kfree(pll); ++} ++CLK_OF_DECLARE(xgs_iproc_axi_clk, "brcm,xgs-iproc-axi-clk", ++ xgs_iproc_axi_clk_setup); ++ ++ ++static void __init xgs_iproc_armpll_init(struct device_node *node) ++{ ++ iproc_armpll_setup(node); ++} ++CLK_OF_DECLARE(xgs_iproc_armpll, "brcm,xgs-iproc-armpll", ++ xgs_iproc_armpll_init); +\ No newline at end of file +-- +2.47.1 + diff --git a/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-08-gpio-allow-xgs-iproc-for-ARCH_XGS_IPROC-as-well.patch b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-08-gpio-allow-xgs-iproc-for-ARCH_XGS_IPROC-as-well.patch new file mode 100644 index 00000000..dcf61c86 --- /dev/null +++ b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-08-gpio-allow-xgs-iproc-for-ARCH_XGS_IPROC-as-well.patch @@ -0,0 +1,30 @@ +From 665c72e17591499bf9f5c054b19d4a53087707d2 Mon Sep 17 00:00:00 2001 +From: Jonas Gorski +Date: Wed, 13 Oct 2021 12:30:26 +0200 +Subject: [PATCH 08/21] gpio: allow xgs-iproc for ARCH_XGS_IPROC as well + +Signed-off-by: Jonas Gorski +--- + drivers/gpio/Kconfig | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig +index d93cd4f722b4..6e4e5a4e55a7 100644 +--- a/drivers/gpio/Kconfig ++++ b/drivers/gpio/Kconfig +@@ -209,10 +209,10 @@ config GPIO_BCM_KONA + + config GPIO_BCM_XGS_IPROC + tristate "BRCM XGS iProc GPIO support" +- depends on OF_GPIO && (ARCH_BCM_IPROC || COMPILE_TEST) ++ depends on OF_GPIO && (ARCH_BCM_IPROC || ARCH_XGS_IPROC || COMPILE_TEST) + select GPIO_GENERIC + select GPIOLIB_IRQCHIP +- default ARCH_BCM_IPROC ++ default ARCH_BCM_IPROC || ARCH_XGS_IPROC + help + Say yes here to enable GPIO support for Broadcom XGS iProc SoCs. + +-- +2.47.1 + diff --git a/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-09-i2c-allow-i2c-bcm-iproc-for-ARCH_XGS_IPROC-as-well.patch b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-09-i2c-allow-i2c-bcm-iproc-for-ARCH_XGS_IPROC-as-well.patch new file mode 100644 index 00000000..abe28b1a --- /dev/null +++ b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-09-i2c-allow-i2c-bcm-iproc-for-ARCH_XGS_IPROC-as-well.patch @@ -0,0 +1,28 @@ +From 596e4907229f22e2a7c633c37a6323ab6e969de5 Mon Sep 17 00:00:00 2001 +From: Jonas Gorski +Date: Thu, 21 Jul 2022 13:28:03 +0200 +Subject: [PATCH 09/21] i2c: allow i2c-bcm-iproc for ARCH_XGS_IPROC as well + +Signed-off-by: Jonas Gorski +--- + drivers/i2c/busses/Kconfig | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/drivers/i2c/busses/Kconfig b/drivers/i2c/busses/Kconfig +index 2254abda5c46..75212af0f278 100644 +--- a/drivers/i2c/busses/Kconfig ++++ b/drivers/i2c/busses/Kconfig +@@ -489,8 +489,8 @@ config I2C_BCM2835 + + config I2C_BCM_IPROC + tristate "Broadcom iProc I2C controller" +- depends on ARCH_BCM_IPROC || COMPILE_TEST +- default ARCH_BCM_IPROC ++ depends on ARCH_BCM_IPROC || ARCH_XGS_IPROC || COMPILE_TEST ++ default ARCH_BCM_IPROC || ARCH_XGS_IPROC + select I2C_SLAVE + help + If you say yes to this option, support will be included for the +-- +2.47.1 + diff --git a/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-10-mtd-brcmnand-ignore-warning.patch b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-10-mtd-brcmnand-ignore-warning.patch new file mode 100644 index 00000000..9d3669df --- /dev/null +++ b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-10-mtd-brcmnand-ignore-warning.patch @@ -0,0 +1,34 @@ +From 0b9c80073e88ae050e697b4732146dab5280e006 Mon Sep 17 00:00:00 2001 +From: Jonas Gorski +Date: Thu, 7 Oct 2021 09:54:18 +0200 +Subject: [PATCH 10/21] mtd: brcmnand: ignore warning + +--- + drivers/mtd/nand/raw/brcmnand/brcmnand.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/drivers/mtd/nand/raw/brcmnand/brcmnand.c b/drivers/mtd/nand/raw/brcmnand/brcmnand.c +index 1b2ec0fec60c..0bfb07366041 100644 +--- a/drivers/mtd/nand/raw/brcmnand/brcmnand.c ++++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.c +@@ -1700,6 +1700,8 @@ static void brcmnand_send_cmd(struct brcmnand_host *host, int cmd) + ctrl->cmd_pending = cmd; + + ret = bcmnand_ctrl_poll_status(host, NAND_CTRL_RDY, NAND_CTRL_RDY, 0); ++ /* mark out this warning for XGS iProc */ ++ if (!IS_ENABLED(CONFIG_ARCH_XGS_IPROC)) + WARN_ON(ret); + + mb(); /* flush previous writes */ +@@ -2127,6 +2129,8 @@ static int brcmstb_nand_verify_erased_page(struct mtd_info *mtd, + ecc_bytes, ecc.length, + NULL, 0, + chip->ecc.strength); ++ buf += chip->ecc.size; ++ + if (ret < 0) + return ret; + +-- +2.47.1 + diff --git a/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-11-bgmac-xgs-iproc-changes.patch b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-11-bgmac-xgs-iproc-changes.patch new file mode 100644 index 00000000..d18ffb01 --- /dev/null +++ b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-11-bgmac-xgs-iproc-changes.patch @@ -0,0 +1,497 @@ +From 8c9fb0c8afce922275527456647eeec72787f22d Mon Sep 17 00:00:00 2001 +From: Jonas Gorski +Date: Thu, 7 Oct 2021 10:00:19 +0200 +Subject: [PATCH 11/21] bgmac: xgs-iproc changes + +--- + drivers/net/ethernet/broadcom/Kconfig | 4 +- + .../net/ethernet/broadcom/bgmac-platform.c | 124 +++++++++++++++++- + drivers/net/ethernet/broadcom/bgmac.c | 118 ++++++++++++++++- + drivers/net/ethernet/broadcom/bgmac.h | 80 +++++++++++ + 4 files changed, 320 insertions(+), 6 deletions(-) + +diff --git a/drivers/net/ethernet/broadcom/Kconfig b/drivers/net/ethernet/broadcom/Kconfig +index 75ca3ddda1f5..b3f9ee6c0957 100644 +--- a/drivers/net/ethernet/broadcom/Kconfig ++++ b/drivers/net/ethernet/broadcom/Kconfig +@@ -182,11 +182,11 @@ config BGMAC_BCMA + + config BGMAC_PLATFORM + tristate "Broadcom iProc GBit platform support" +- depends on ARCH_BCM_IPROC || COMPILE_TEST ++ depends on ARCH_BCM_IPROC || ARCH_XGS_IPROC || COMPILE_TEST + select BGMAC + select PHYLIB + select FIXED_PHY +- default ARCH_BCM_IPROC ++ default ARCH_BCM_IPROC || ARCH_XGS_IPROC + help + Say Y here if you want to use the Broadcom iProc Gigabit Ethernet + controller through the generic platform interface +diff --git a/drivers/net/ethernet/broadcom/bgmac-platform.c b/drivers/net/ethernet/broadcom/bgmac-platform.c +index 78f7862ca006..72ae1cfd3494 100644 +--- a/drivers/net/ethernet/broadcom/bgmac-platform.c ++++ b/drivers/net/ethernet/broadcom/bgmac-platform.c +@@ -19,6 +19,12 @@ + #include + #include + #include ++ ++#if IS_ENABLED(CONFIG_ARCH_XGS_IPROC) ++#include ++#include ++#endif ++ + #include "bgmac.h" + + #define NICPM_PADRING_CFG 0x00000004 +@@ -84,9 +90,16 @@ static void platform_bgmac_clk_enable(struct bgmac *bgmac, u32 flags) + } + + val = bgmac_idm_read(bgmac, BCMA_IOCTL); ++#if IS_ENABLED(CONFIG_ARCH_XGS_IPROC) ++ /* To make HX4/KT2 GMAC work */ ++ val |= flags; ++ val &= ~(BGMAC_AWCACHE | BGMAC_ARCACHE | BGMAC_AWUSER | ++ BGMAC_ARUSER); ++#else + /* Some bits of BCMA_IOCTL set by HW/ATF and should not change */ + val |= flags & ~(BGMAC_AWCACHE | BGMAC_ARCACHE | BGMAC_AWUSER | + BGMAC_ARUSER); ++#endif + val |= BGMAC_CLK_EN; + bgmac_idm_write(bgmac, BCMA_IOCTL, val); + bgmac_idm_read(bgmac, BCMA_IOCTL); +@@ -148,18 +161,123 @@ static void bgmac_nicpm_speed_set(struct net_device *net_dev) + bgmac_adjust_link(bgmac->net_dev); + } + ++#if IS_ENABLED(CONFIG_ARCH_XGS_IPROC) ++#define SERDES_CONTROL_OFFSET 0x1a8 ++#define SC_TX1G_FIFO_RST_MASK 0x00f00000 ++#define SC_TX1G_FIFO_RST_VAL 0x00f00000 ++#define SC_FORCE_SPD_STRAP_MASK 0x00060000 ++#define SC_FORCE_SPD_STRAP_VAL 0x00040000 ++#define SC_FORCE_SPD_100M_VAL 0x00020000 ++#define SC_FORCE_SPD_1G_VAL 0x00040000 ++#define SC_REF_TERM_SEL_MASK 0x00001000 ++#define SC_REFSEL_MASK 0x00000c00 ++#define SC_REFSEL_VAL 0x00000400 ++#define SC_REFDIV_MASK 0x00000300 ++#define SC_REFDIV_VAL 0x00000000 ++#define SC_LCREF_EN_MASK 0x00000040 ++#define SC_RSTB_PLL_MASK 0x00000010 ++#define SC_RSTB_MDIOREGS_MASK 0x00000008 ++#define SC_RSTB_HW_MASK 0x00000004 ++#define SC_IDDQ_MASK 0x00000002 ++#define SC_PWR_DOWN_MASK 0x00000001 ++ ++void amac_serdes_init(struct bgmac *info, struct phy_device *phy_dev) ++{ ++ u32 sdctl; ++ void *serdes_ctl_reg; ++ struct phy_device *phydev = phy_dev; ++ ++ serdes_ctl_reg = info->plat.base + SERDES_CONTROL_OFFSET; ++ ++ sdctl = (SC_TX1G_FIFO_RST_VAL | SC_FORCE_SPD_STRAP_VAL); ++ if (xgs_serdes_hx4_amac(phydev)) ++ sdctl |= (SC_REFSEL_VAL | SC_REF_TERM_SEL_MASK); ++ ++ else if (xgs_serdes_kt2_amac(phydev)) ++ sdctl |= SC_REF_TERM_SEL_MASK; ++ ++ writel(sdctl, serdes_ctl_reg); ++ ++ udelay(1000); ++ ++ sdctl = readl(serdes_ctl_reg); ++ sdctl |= (SC_IDDQ_MASK | SC_PWR_DOWN_MASK); ++ writel(sdctl, serdes_ctl_reg); ++ ++ sdctl = readl(serdes_ctl_reg); ++ sdctl &= ~(SC_IDDQ_MASK | SC_PWR_DOWN_MASK); ++ writel(sdctl, serdes_ctl_reg); ++ ++ /* Bring hardware out of reset */ ++ sdctl = readl(serdes_ctl_reg); ++ sdctl |= SC_RSTB_HW_MASK; ++ writel(sdctl, serdes_ctl_reg); ++ ++ /* Bring MDIOREGS out of reset */ ++ sdctl = readl(serdes_ctl_reg); ++ sdctl |= SC_RSTB_MDIOREGS_MASK; ++ writel(sdctl, serdes_ctl_reg); ++ ++ udelay(1000); ++ ++ /* Bring PLL out of reset */ ++ sdctl = readl(serdes_ctl_reg); ++ sdctl |= SC_RSTB_PLL_MASK; ++ writel(sdctl, serdes_ctl_reg); ++ ++ udelay(1000); ++ ++ return; ++} ++#endif /* IS_ENABLED(CONFIG_ARCH_XGS_IPROC) */ ++ + static int platform_phy_connect(struct bgmac *bgmac) + { + struct phy_device *phy_dev; + +- if (bgmac->plat.nicpm_base) ++ if (bgmac->plat.nicpm_base) { + phy_dev = of_phy_get_and_connect(bgmac->net_dev, + bgmac->dev->of_node, + bgmac_nicpm_speed_set); +- else ++ } ++ else { ++ struct device_node *np = bgmac->dev->of_node; ++ u32 lane; ++ ++ /* For WH2 SGMII case, treat SERDES as PHY */ ++ if (of_device_is_compatible(np, "brcm,xgs-wh2-amac") && ++ is_wh2_amac_sgmii()) { ++ struct device_node *phy_np; ++ phy_interface_t iface = PHY_INTERFACE_MODE_SGMII; ++ ++ phy_np = of_parse_phandle(np, "serdes-phy-handle", 0); ++ if (!phy_np) ++ return -ENODEV; ++ ++ phy_dev = of_phy_find_device(phy_np); ++ if (!phy_dev) ++ return -ENODEV; ++ ++ /* Get lane from DT, otherwise set to default 3 */ ++ if (of_property_read_u32(phy_np, "lane-num", &lane)) ++ lane = 3; ++ xgs_serdes_set_lane(phy_dev, lane); ++ ++ amac_serdes_init(bgmac, phy_dev); ++ ++ phy_connect_direct(bgmac->net_dev, phy_dev, ++ bgmac_adjust_link, iface); ++ ++ put_device(&phy_dev->mdio.dev); ++ of_node_put(phy_np); ++ } ++ else { + phy_dev = of_phy_get_and_connect(bgmac->net_dev, + bgmac->dev->of_node, + bgmac_adjust_link); ++ } ++ } ++ + if (!phy_dev) { + dev_err(bgmac->dev, "PHY connection failed\n"); + return -ENODEV; +@@ -284,6 +402,8 @@ static const struct dev_pm_ops bgmac_pm_ops = { + static const struct of_device_id bgmac_of_enet_match[] = { + {.compatible = "brcm,amac",}, + {.compatible = "brcm,nsp-amac",}, ++ {.compatible = "brcm,xgs-iproc-amac",}, ++ {.compatible = "brcm,xgs-wh2-amac",}, + {.compatible = "brcm,ns2-amac",}, + {}, + }; +diff --git a/drivers/net/ethernet/broadcom/bgmac.c b/drivers/net/ethernet/broadcom/bgmac.c +index 6ffdc4229407..2b3333d061aa 100644 +--- a/drivers/net/ethernet/broadcom/bgmac.c ++++ b/drivers/net/ethernet/broadcom/bgmac.c +@@ -18,6 +18,12 @@ + #include + #include "bgmac.h" + ++#if IS_ENABLED(CONFIG_ARCH_XGS_IPROC) ++#include ++#include ++extern void amac_serdes_init(struct bgmac *, struct phy_device *); ++#endif ++ + static bool bgmac_wait_value(struct bgmac *bgmac, u16 reg, u32 mask, + u32 value, int timeout) + { +@@ -1118,6 +1124,7 @@ static void bgmac_chip_init(struct bgmac *bgmac) + + bgmac_umac_write(bgmac, UMAC_MAX_FRAME_LEN, 32 + ETHER_MAX_LEN); + ++ if (!IS_ENABLED(CONFIG_ARCH_XGS_IPROC)) + bgmac_chip_intrs_on(bgmac); + + bgmac_enable(bgmac); +@@ -1195,10 +1202,25 @@ static int bgmac_open(struct net_device *net_dev) + } + napi_enable(&bgmac->napi); + ++ if (IS_ENABLED(CONFIG_ARCH_XGS_IPROC)) { ++ /* Reset emulated MIB statistics to zero */ ++ memset(&bgmac->estats, 0, sizeof(struct bgmac_ethtool_stats)); ++ } ++ + phy_start(net_dev->phydev); + + netif_start_queue(net_dev); + ++ /* ++ * This interrupt enable was originally set in "bgmac_chip_init" which ++ * was run before "napi_enable". If interrupt events come before ++ * napi_enable was run, the NAPI poll routine "bgmac_poll" will not yet ++ * be available for either handling interrupt events or re-enabling the ++ * AMAC interrupt disabled by "bgmac_interrupt". ++ */ ++ if (IS_ENABLED(CONFIG_ARCH_XGS_IPROC)) ++ bgmac_chip_intrs_on(bgmac); ++ + return 0; + } + +@@ -1378,6 +1400,9 @@ static void bgmac_get_ethtool_stats(struct net_device *dev, + const struct bgmac_stat *s; + unsigned int i; + u64 val; ++#if IS_ENABLED(CONFIG_ARCH_XGS_IPROC) ++ u64 *estats = (u64*)&bgmac->estats; ++#endif + + if (!netif_running(dev)) + return; +@@ -1388,18 +1413,70 @@ static void bgmac_get_ethtool_stats(struct net_device *dev, + if (s->size == 8) + val = (u64)bgmac_read(bgmac, s->offset + 4) << 32; + val |= bgmac_read(bgmac, s->offset); ++ if (IS_ENABLED(CONFIG_ARCH_XGS_IPROC)) { ++ estats[i] += val; ++ data[i] = estats[i]; ++ } ++ else { + data[i] = val; + } + } ++} ++ ++static int bgmac_dump_phy_regs(struct bgmac *bgmac, int try_run, char *reg_buf) ++{ ++ struct phy_device *phydev = bgmac->net_dev->phydev; ++ int idx, len = 0; ++ char *buf, tmp[32]; ++ u16 data = 0; ++ ++ if (phydev) { ++ for (idx = 0; idx < 16; idx++) { ++ if (try_run || !reg_buf) { ++ buf = tmp; ++ } else { ++ buf = reg_buf + len; ++ data = phy_read(phydev, idx); ++ } ++ len += sprintf(buf, "PHY REG %d: 0x%.4x\n", idx, data); ++ } ++ } ++ return len; ++} ++ ++static int bgmac_get_regs_len(struct net_device *dev) ++{ ++ struct bgmac *bgmac = netdev_priv(dev); ++ u32 len = 0; ++ ++ len += bgmac_dump_phy_regs(bgmac, 1, NULL); ++ ++ return len; ++} ++ ++static void bgmac_get_regs(struct net_device *dev, ++ struct ethtool_regs *regs, void *_p) ++{ ++ struct bgmac *bgmac = netdev_priv(dev); ++ u32 len = 0; ++ ++ regs->version = 0; ++ ++ /* Dump phy register */ ++ len += bgmac_dump_phy_regs(bgmac, 0, (char *)_p + len); ++} + + static void bgmac_get_drvinfo(struct net_device *net_dev, + struct ethtool_drvinfo *info) + { + strscpy(info->driver, KBUILD_MODNAME, sizeof(info->driver)); + strscpy(info->bus_info, "AXI", sizeof(info->bus_info)); ++ info->regdump_len = bgmac_get_regs_len(net_dev); + } + + static const struct ethtool_ops bgmac_ethtool_ops = { ++ .get_regs = bgmac_get_regs, ++ .get_regs_len = bgmac_get_regs_len, + .get_strings = bgmac_get_strings, + .get_sset_count = bgmac_get_sset_count, + .get_ethtool_stats = bgmac_get_ethtool_stats, +@@ -1430,11 +1507,11 @@ void bgmac_adjust_link(struct net_device *net_dev) + } + } + +- if (update) { ++ if (update) + bgmac_mac_speed(bgmac); ++ + phy_print_status(phy_dev); + } +-} + EXPORT_SYMBOL_GPL(bgmac_adjust_link); + + int bgmac_phy_connect_direct(struct bgmac *bgmac) +@@ -1489,6 +1566,12 @@ int bgmac_enet_probe(struct bgmac *bgmac) + { + struct net_device *net_dev = bgmac->net_dev; + int err; ++#if IS_ENABLED(CONFIG_ARCH_XGS_IPROC) ++ struct device_node *serdes_np; ++ struct device_node *amac_np; ++ struct phy_device *serdes_phy_dev = NULL; ++ static u32 serdes_lane2_init = 0; ++#endif + + bgmac->in_init = true; + +@@ -1537,6 +1620,37 @@ int bgmac_enet_probe(struct bgmac *bgmac) + goto err_dma_free; + } + ++#if IS_ENABLED(CONFIG_ARCH_XGS_IPROC) ++ /* SERDES init required for HX4/KT2/SB2/GH2/WH2 */ ++ amac_np = bgmac->dev->of_node; ++ serdes_np = of_parse_phandle(amac_np, "serdes-handle", 0); ++ if (serdes_np) ++ serdes_phy_dev = of_phy_find_device(serdes_np); ++ ++ if (serdes_phy_dev) { ++ u32 lane; ++ /* If lane available in DT, set lane num */ ++ if (!of_property_read_u32(serdes_np, "lane-num", &lane)) ++ xgs_serdes_set_lane(serdes_phy_dev, lane); ++ ++ amac_serdes_init(bgmac, serdes_phy_dev); ++ phy_init_hw(serdes_phy_dev); ++ } ++ ++ /* Init SERDES lane 2 required by SDK for HX4/KT2 */ ++ if (!serdes_lane2_init) { ++ /* Use alias defined in DTS rather than full path */ ++ serdes_np = of_find_node_by_path("sdk-serdes-lane2"); ++ if (serdes_np) { ++ serdes_phy_dev = of_phy_find_device(serdes_np); ++ if (serdes_phy_dev) { ++ phy_init_hw(serdes_phy_dev); ++ serdes_lane2_init = 1; ++ } ++ } ++ } ++#endif ++ + net_dev->features = NETIF_F_SG | NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM; + net_dev->hw_features = net_dev->features; + net_dev->vlan_features = net_dev->features; +diff --git a/drivers/net/ethernet/broadcom/bgmac.h b/drivers/net/ethernet/broadcom/bgmac.h +index d73ef262991d..11961324b689 100644 +--- a/drivers/net/ethernet/broadcom/bgmac.h ++++ b/drivers/net/ethernet/broadcom/bgmac.h +@@ -437,6 +437,78 @@ struct bgmac_rx_header { + __le16 pad[12]; + }; + ++#if IS_ENABLED(CONFIG_ARCH_XGS_IPROC) ++struct bgmac_ethtool_stats { ++ u64 tx_good_octets; ++ u64 tx_good; ++ u64 tx_octets; ++ u64 tx_pkts; ++ u64 tx_broadcast; ++ u64 tx_multicast; ++ u64 tx_64; ++ u64 tx_65_127; ++ u64 tx_128_255; ++ u64 tx_256_511; ++ u64 tx_512_1023; ++ u64 tx_1024_1522; ++ u64 tx_1523_2047; ++ u64 tx_2048_4095; ++ u64 tx_4096_8191; ++ u64 tx_8192_max; ++ u64 tx_jabber; ++ u64 tx_oversize; ++ u64 tx_fragment; ++ u64 tx_underruns; ++ u64 tx_total_cols; ++ u64 tx_single_cols; ++ u64 tx_multiple_cols; ++ u64 tx_excessive_cols; ++ u64 tx_late_cols; ++ u64 tx_defered; ++ u64 tx_carrier_lost; ++ u64 tx_pause; ++ u64 tx_unicast; ++ u64 tx_q0; ++ u64 tx_q0_octets; ++ u64 tx_q1; ++ u64 tx_q1_octets; ++ u64 tx_q2; ++ u64 tx_q2_octets; ++ u64 tx_q3; ++ u64 tx_q3_octets; ++ ++ u64 rx_good_octets; ++ u64 rx_good; ++ u64 rx_octets; ++ u64 rx_pkts; ++ u64 rx_broadcast; ++ u64 rx_multicast; ++ u64 rx_64; ++ u64 rx_65_127; ++ u64 rx_128_255; ++ u64 rx_256_511; ++ u64 rx_512_1023; ++ u64 rx_1024_1522; ++ u64 rx_1523_2047; ++ u64 rx_2048_4095; ++ u64 rx_4096_8191; ++ u64 rx_8192_max; ++ u64 rx_jabber; ++ u64 rx_oversize; ++ u64 rx_fragment; ++ u64 rx_missed; ++ u64 rx_crc_align; ++ u64 rx_undersize; ++ u64 rx_crc; ++ u64 rx_align; ++ u64 rx_symbol; ++ u64 rx_pause; ++ u64 rx_nonpause; ++ u64 rx_sa_changes; ++ u64 rx_unicast; ++}; ++#endif ++ + struct bgmac { + union { + struct { +@@ -483,6 +555,14 @@ struct bgmac { + + bool loopback; + ++#if IS_ENABLED(CONFIG_ARCH_XGS_IPROC) ++ /* For XGS iProc, SW emulated MIB registers are required as the HW ++ * MIB registers will be cleared to zero after reading. ++ * mib_tx_regs/mib_rx_regs defined above seem for the same purpose, ++ * but not used so far. ++ */ ++ struct bgmac_ethtool_stats estats; ++#endif + u32 (*read)(struct bgmac *bgmac, u16 offset); + void (*write)(struct bgmac *bgmac, u16 offset, u32 value); + u32 (*idm_read)(struct bgmac *bgmac, u16 offset); +-- +2.47.1 + diff --git a/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-12-mdio-allow-mdio-bcm-iproc-for-ARCH_XGS_IPROC-as-well.patch b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-12-mdio-allow-mdio-bcm-iproc-for-ARCH_XGS_IPROC-as-well.patch new file mode 100644 index 00000000..dae4fc68 --- /dev/null +++ b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-12-mdio-allow-mdio-bcm-iproc-for-ARCH_XGS_IPROC-as-well.patch @@ -0,0 +1,29 @@ +From 5435061c646dc4dea480deeb59836cfc571bd12b Mon Sep 17 00:00:00 2001 +From: Jonas Gorski +Date: Thu, 21 Jul 2022 11:03:32 +0200 +Subject: [PATCH 12/21] mdio: allow mdio-bcm-iproc for ARCH_XGS_IPROC as well + +Signed-off-by: Jonas Gorski +--- + drivers/net/mdio/Kconfig | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/drivers/net/mdio/Kconfig b/drivers/net/mdio/Kconfig +index 4a7a303be2f7..0630ead94f18 100644 +--- a/drivers/net/mdio/Kconfig ++++ b/drivers/net/mdio/Kconfig +@@ -86,9 +86,9 @@ config MDIO_BITBANG + + config MDIO_BCM_IPROC + tristate "Broadcom iProc MDIO bus controller" +- depends on ARCH_BCM_IPROC || COMPILE_TEST ++ depends on ARCH_BCM_IPROC || ARCH_XGS_IPROC || COMPILE_TEST + depends on HAS_IOMEM && OF_MDIO +- default ARCH_BCM_IPROC ++ default ARCH_BCM_IPROC || ARCH_XGS_IPROC + help + This module provides a driver for the MDIO busses found in the + Broadcom iProc SoC's. +-- +2.47.1 + diff --git a/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-13-phy-xgs-iproc-serdes.patch b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-13-phy-xgs-iproc-serdes.patch new file mode 100644 index 00000000..690a7b4d --- /dev/null +++ b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-13-phy-xgs-iproc-serdes.patch @@ -0,0 +1,1076 @@ +From 731f8be080320bd5fe1302f2d9041abe2c1334af Mon Sep 17 00:00:00 2001 +From: Jonas Gorski +Date: Thu, 7 Oct 2021 10:03:01 +0200 +Subject: [PATCH 13/21] phy: xgs-iproc-serdes + +--- + drivers/net/phy/Kconfig | 6 + + drivers/net/phy/Makefile | 1 + + drivers/net/phy/xgs-iproc-serdes.c | 644 +++++++++++++++++++++++++ + drivers/net/phy/xgs_iproc_serdes_def.h | 339 +++++++++++++ + include/linux/phy/xgs_iproc_serdes.h | 27 ++ + 5 files changed, 1017 insertions(+) + create mode 100644 drivers/net/phy/xgs-iproc-serdes.c + create mode 100644 drivers/net/phy/xgs_iproc_serdes_def.h + create mode 100644 include/linux/phy/xgs_iproc_serdes.h + +diff --git a/drivers/net/phy/Kconfig b/drivers/net/phy/Kconfig +index 01b235b3bb7e..070417ebdc97 100644 +--- a/drivers/net/phy/Kconfig ++++ b/drivers/net/phy/Kconfig +@@ -197,6 +197,12 @@ config BCM_NET_PHYLIB + config BCM_NET_PHYPTP + tristate + ++config XGS_IPROC_SERDES ++ tristate "Broadcom XGS iProc SERDES" ++ depends on MDIO_BCM_IPROC ++ help ++ Supports HX4/KT2/GH2 SERDES. ++ + config CICADA_PHY + tristate "Cicada PHYs" + help +diff --git a/drivers/net/phy/Makefile b/drivers/net/phy/Makefile +index 90f886844381..8e4d2b33a50a 100644 +--- a/drivers/net/phy/Makefile ++++ b/drivers/net/phy/Makefile +@@ -53,6 +53,7 @@ obj-$(CONFIG_BCM_CYGNUS_PHY) += bcm-cygnus.o + obj-$(CONFIG_BCM_NET_PHYLIB) += bcm-phy-lib.o + obj-$(CONFIG_BCM_NET_PHYPTP) += bcm-phy-ptp.o + obj-$(CONFIG_BROADCOM_PHY) += broadcom.o ++obj-$(CONFIG_XGS_IPROC_SERDES) += xgs-iproc-serdes.o + obj-$(CONFIG_CICADA_PHY) += cicada.o + obj-$(CONFIG_CORTINA_PHY) += cortina.o + obj-$(CONFIG_DAVICOM_PHY) += davicom.o +diff --git a/drivers/net/phy/xgs-iproc-serdes.c b/drivers/net/phy/xgs-iproc-serdes.c +new file mode 100644 +index 000000000000..6404304658ed +--- /dev/null ++++ b/drivers/net/phy/xgs-iproc-serdes.c +@@ -0,0 +1,644 @@ ++/* ++ * Copyright (C) 2016 Broadcom Corporation ++ * ++ * This program is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public License as ++ * published by the Free Software Foundation version 2. ++ * ++ * This program is distributed "as is" WITHOUT ANY WARRANTY of any ++ * kind, whether express or implied; without even the implied warranty ++ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include "xgs_iproc_serdes_def.h" ++ ++/* the SERDES PHY ID for HX4/KT2/SB2/GH2/WH2 is the same */ ++#define PHY_ID_XGS_AMAC_SERDES 0x0143bff0 ++ ++#define SERDES_ID_HX4_AMAC 0x828f4e00 ++#define SERDES_ID_KT2_AMAC 0x42814fc0 ++/* The amac serdes id (id0,id1) of SB2/GH2/WH2 is the same */ ++#define SERDES_ID_SB2_AMAC 0x02cf1a00 ++#define SERDES_ID_GH2_AMAC 0x02cf1a00 /* apply to WH2 */ ++/* When ID is the same, use id2 for further identification */ ++#define SERDES_ID2_HX4_AMAC 0x000f ++#define SERDES_ID2_KT2_AMAC 0x03ff ++#define SERDES_ID2_SB2_AMAC 0x8007 ++#define SERDES_ID2_GH2_AMAC 0x800f /* apply to WH2 */ ++ ++#define PHY_REG_BLK_ADDR 0x001f ++#define PHY_REG_AER_BLK 0xffd0 ++#define PHY_REG_AER_OFFSET 0x001e ++#define PHY_REG_BLK_ADDR_MASK 0x7ff0 ++#define PHY_REG_ADDR_MASK 0xf ++#define PHY_REG_ADDR_32_MASK 0x8000 ++ ++#define PHY_AER_REG_ADDR_AER(_addr) (((_addr) >> XGXS16G_SERDES_LANE_SHIFT) \ ++ & 0xFFFF) ++#define PHY_REG_ADDR_BLK(_addr) ((_addr) & PHY_REG_BLK_ADDR_MASK) ++#define PHY_REG_ADDR_REGAD(_addr) (((_addr & PHY_REG_ADDR_32_MASK) >> 11) \ ++ | (_addr & PHY_REG_ADDR_MASK)) ++ ++//#define BCMDBG ++//#define BCMDBG_ERR ++#ifdef BCMDBG ++#define SERDES_ERROR(args) pr_err args ++#define SERDES_TRACE(args) pr_info args ++#elif defined(BCMDBG_ERR) ++#define SERDES_ERROR(args) pr_err args ++#define SERDES_TRACE(args) ++#else ++#define SERDES_ERROR(args) ++#define SERDES_TRACE(args) ++#endif /* BCMDBG */ ++ ++/* For pcie/usb serdes and phy write */ ++void xgs_phy_wr_reg(struct phy_device *phydev, u32 regnum, u16 data) ++{ ++ u16 phy_reg_blk=0; ++ u32 phy_reg_addr=0; ++ ++ phy_reg_blk = regnum & PHY_REG_BLK_ADDR_MASK; ++ phy_reg_addr = regnum & PHY_REG_ADDR_MASK; ++ phy_reg_addr |= (regnum & PHY_REG_ADDR_32_MASK) ? 0x10 : 0x0; ++ ++ phy_write(phydev, PHY_REG_BLK_ADDR, phy_reg_blk); ++ phy_write(phydev, phy_reg_addr, data); ++} ++ ++/* For pcie/usb serdes and phy read */ ++u16 xgs_phy_rd_reg(struct phy_device *phydev, u32 regnum) ++{ ++ u16 phy_reg_blk=0; ++ u32 phy_reg_addr=0; ++ int data; ++ ++ phy_reg_blk = regnum & PHY_REG_BLK_ADDR_MASK; ++ phy_reg_addr = regnum & PHY_REG_ADDR_MASK; ++ phy_reg_addr |= (regnum & PHY_REG_ADDR_32_MASK) ? 0x10 : 0x0; ++ ++ phy_write(phydev, PHY_REG_BLK_ADDR, phy_reg_blk); ++ data = phy_read(phydev, phy_reg_addr); ++ ++ return (u16)data; ++} ++ ++/* for SB2 USB PHY write */ ++void xgs_sb2_usb_phy_wr_reg(struct phy_device *phydev, u32 regnum, u16 data) ++{ ++ u16 phy_reg_blk=0; ++ u32 phy_reg_addr=0; ++ ++ phy_reg_blk = regnum & 0xfff0; ++ phy_reg_addr = regnum & 0xf; ++ ++ phy_write(phydev, PHY_REG_BLK_ADDR, phy_reg_blk); ++ phy_write(phydev, phy_reg_addr, data); ++} ++ ++/* for SB2 USB PHY read */ ++u16 xgs_sb2_usb_phy_rd_reg(struct phy_device *phydev, u32 regnum) ++{ ++ u16 phy_reg_blk=0; ++ u32 phy_reg_addr=0; ++ int data; ++ ++ phy_reg_blk = regnum & 0xfff0; ++ phy_reg_addr = regnum & 0xf; ++ ++ phy_write(phydev, PHY_REG_BLK_ADDR, phy_reg_blk); ++ data = phy_read(phydev, phy_reg_addr); ++ ++ return (u16)data; ++} ++ ++/* SB2/GH2/WH2 amac serdes supports AER */ ++static u16 xgs_serdes_rd_reg(struct phy_device *phydev, u32 regnum) ++{ ++ int data; ++ u16 phy_reg_blk=0; ++ u32 phy_reg_addr=0; ++ u32 phy_reg_aer=0; ++ ++ phy_reg_aer = PHY_AER_REG_ADDR_AER(regnum); ++ phy_reg_blk = PHY_REG_ADDR_BLK(regnum); ++ phy_reg_addr = PHY_REG_ADDR_REGAD(regnum); ++ ++ if (phy_reg_aer) { ++ phy_write(phydev, PHY_REG_BLK_ADDR, PHY_REG_AER_BLK); ++ phy_write(phydev, PHY_REG_AER_OFFSET, phy_reg_aer); ++ } ++ ++ phy_write(phydev, PHY_REG_BLK_ADDR, phy_reg_blk); ++ data = phy_read(phydev, phy_reg_addr); ++ ++ if (phy_reg_aer) { ++ phy_write(phydev, PHY_REG_BLK_ADDR, PHY_REG_AER_BLK); ++ phy_write(phydev, PHY_REG_AER_OFFSET, 0x0); ++ } ++ ++ return (u16)data; ++} ++ ++static void xgs_serdes_wr_reg(struct phy_device *phydev, u32 regnum, u16 data) ++{ ++ u16 phy_reg_blk=0; ++ u32 phy_reg_addr=0; ++ u32 phy_reg_aer=0; ++ ++ phy_reg_aer = PHY_AER_REG_ADDR_AER(regnum); ++ phy_reg_blk = PHY_REG_ADDR_BLK(regnum); ++ phy_reg_addr = PHY_REG_ADDR_REGAD(regnum); ++ ++ if (phy_reg_aer) { ++ phy_write(phydev, PHY_REG_BLK_ADDR, PHY_REG_AER_BLK); ++ phy_write(phydev, PHY_REG_AER_OFFSET, phy_reg_aer); ++ } ++ ++ phy_write(phydev, PHY_REG_BLK_ADDR, phy_reg_blk); ++ phy_write(phydev, phy_reg_addr, data); ++ ++ if (phy_reg_aer) { ++ phy_write(phydev, PHY_REG_BLK_ADDR, PHY_REG_AER_BLK); ++ phy_write(phydev, PHY_REG_AER_OFFSET, 0x0); ++ } ++} ++ ++static u32 serdes_get_id(struct phy_device *phy_dev) ++{ ++ u16 serdes_id0, serdes_id1; ++ u32 serdes_id; ++ struct phy_device *phydev = phy_dev; ++ ++ serdes_id0 = xgs_serdes_rd_reg(phydev, XGXS16G_SERDESID_SERDESID0r); ++ serdes_id1 = xgs_serdes_rd_reg(phydev, XGXS16G_SERDESID_SERDESID1r); ++ serdes_id = (serdes_id0 << 16) | serdes_id1; ++ ++ return serdes_id; ++} ++ ++void xgs_serdes_set_lane(struct phy_device *phy_dev, u32 lane) ++{ ++ xgs_serdes_info_t *serdes_info; ++ ++ serdes_info = devm_kzalloc(&phy_dev->mdio.dev, sizeof(*serdes_info), ++ GFP_KERNEL); ++ if (!serdes_info) { ++ dev_err(&phy_dev->mdio.dev, "Fail to allocate xgs_serdes_info\n"); ++ return; ++ } ++ ++ serdes_info->lane = lane; ++ phy_dev->priv = serdes_info; ++} ++ ++static inline u32 xgs_serdes_get_lane(struct phy_device *phy_dev) ++{ ++ xgs_serdes_info_t *lane_info = (xgs_serdes_info_t *) phy_dev->priv; ++ ++ return lane_info->lane; ++} ++ ++bool xgs_serdes_hx4_amac(struct phy_device *phy_dev) ++{ ++ return (serdes_get_id(phy_dev) == SERDES_ID_HX4_AMAC); ++} ++ ++bool xgs_serdes_kt2_amac(struct phy_device *phy_dev) ++{ ++ return (serdes_get_id(phy_dev) == SERDES_ID_KT2_AMAC); ++} ++ ++/* Needed for HX4/KT2/GH2/WH2, WH2 has the same ID as GH2 */ ++static void xgs_serdes_reset_core(struct phy_device *phy_dev) ++{ ++ u16 data16; ++ u32 serdes_id; ++ u16 serdes_id2; ++ static u32 serdes_core_reset = 0; ++ struct phy_device *phydev = phy_dev; ++ ++ if (phydev->phy_id != PHY_ID_XGS_AMAC_SERDES) ++ return; ++ ++ /* Only reset once */ ++ if (serdes_core_reset) ++ return; ++ ++ serdes_id = serdes_get_id(phydev); ++ serdes_id2 = xgs_serdes_rd_reg(phydev, XGXS16G_SERDESID_SERDESID2r); ++ SERDES_TRACE(("-----SERDESID2: 0x%x\n", serdes_id2)); ++ ++ if (!((serdes_id == SERDES_ID_HX4_AMAC) || ++ (serdes_id == SERDES_ID_KT2_AMAC) || ++ (serdes_id == SERDES_ID_GH2_AMAC))) ++ return; ++ ++ /* GH2/WH2 specific code */ ++ if (serdes_id == SERDES_ID_GH2_AMAC) { ++ if (serdes_id2 != SERDES_ID2_GH2_AMAC) ++ return; ++ ++ /* Disable pll start sequencer */ ++ data16 = xgs_serdes_rd_reg(phydev, XGXS16G_XGXSBLK0_XGXSCONTROLr); ++ data16 &= ~XGXSBLK0_CONTROL_PLL_SEQUENCER_MASK; ++ xgs_serdes_wr_reg(phydev, XGXS16G_XGXSBLK0_XGXSCONTROLr, data16); ++ serdes_core_reset = 1; ++ return; ++ } ++ ++ /* The following is HX4/KT2 related */ ++ /* unlock lane */ ++ data16 = xgs_serdes_rd_reg(phydev, XGXS16G_WC40_DIGITAL4_MISC3r); ++ data16 &= ~(DIGITAL4_MISC3_LANEDISABLE_MASK); ++ xgs_serdes_wr_reg(phydev, XGXS16G_WC40_DIGITAL4_MISC3r, data16); ++ ++ /* Reset the core */ ++ /* Stop PLL Sequencer and configure the core into correct mode */ ++ data16 = (XGXSBLK0_XGXSCONTROL_MODE_10G_IndLane << ++ XGXSBLK0_XGXSCONTROL_MODE_10G_SHIFT) | ++ XGXSBLK0_XGXSCONTROL_HSTL_MASK | ++ XGXSBLK0_XGXSCONTROL_CDET_EN_MASK | ++ XGXSBLK0_XGXSCONTROL_EDEN_MASK | ++ XGXSBLK0_XGXSCONTROL_AFRST_EN_MASK | ++ XGXSBLK0_XGXSCONTROL_TXCKO_DIV_MASK; ++ xgs_serdes_wr_reg(phydev, XGXS16G_XGXSBLK0_XGXSCONTROLr, data16); ++ ++ /* ++ * Disable IEEE block select auto-detect. ++ * The driver will select desired block as necessary. ++ * By default, the driver keeps the XAUI block in IEEE address space. ++ */ ++ data16 = xgs_serdes_rd_reg(phydev, XGXS16G_XGXSBLK0_MISCCONTROL1r); ++ data16 &= ~(XGXSBLK0_MISCCONTROL1_IEEE_BLKSEL_AUTODET_MASK | ++ XGXSBLK0_MISCCONTROL1_IEEE_BLKSEL_VAL_MASK); ++ if (!XGXS16G_2p5G_ID(serdes_id2) && (serdes_id == SERDES_ID_HX4_AMAC)) ++ data16 |= XGXSBLK0_MISCCONTROL1_IEEE_BLKSEL_VAL_MASK; ++ xgs_serdes_wr_reg(phydev, XGXS16G_XGXSBLK0_MISCCONTROL1r, data16); ++ ++ /* disable in-band MDIO. PHY-443 */ ++ data16 = xgs_serdes_rd_reg(phydev, 0x8111); ++ /* rx_inBandMdio_rst */ ++ data16 |= 1 << 3; ++ xgs_serdes_wr_reg(phydev, 0x8111, data16); ++ ++ serdes_core_reset = 1; ++} ++ ++static void xgs_serdes_reset(struct phy_device *phy_dev) ++{ ++ u16 ctrl; ++ struct phy_device *phydev = phy_dev; ++ u32 serdes_id; ++ u16 serdes_id2; ++ u32 aer = 0; ++ u32 aer_blk_reg = 0; ++ ++ if (phydev->phy_id != PHY_ID_XGS_AMAC_SERDES) ++ return; ++ ++ serdes_id = serdes_get_id(phydev); ++ serdes_id2 = xgs_serdes_rd_reg(phydev, XGXS16G_SERDESID_SERDESID2r); ++ ++ /* AER required for GH2/WH2 serdes */ ++ if ((serdes_id == SERDES_ID_GH2_AMAC) && ++ (serdes_id2 == SERDES_ID2_GH2_AMAC)) ++ aer = xgs_serdes_get_lane(phy_dev) << XGXS16G_SERDES_LANE_SHIFT; ++ ++ /* de-assert reset */ ++ aer_blk_reg = aer | XGXS16G_IEEE0BLK_IEEECONTROL0r; ++ ctrl = xgs_serdes_rd_reg(phydev, aer_blk_reg); ++ ctrl |= IEEE0BLK_IEEECONTROL0_RST_HW_MASK; ++ xgs_serdes_wr_reg(phydev, aer_blk_reg, ctrl); ++ udelay(100); ++ ++ /* check if out of reset */ ++ if (xgs_serdes_rd_reg(phydev, aer_blk_reg) & ++ IEEE0BLK_IEEECONTROL0_RST_HW_MASK) ++ SERDES_ERROR(("amac serdes reset not completed.\n")); ++} ++ ++static void xgs_serdes_init(struct phy_device *phy_dev) ++{ ++ u16 data16; ++ u32 serdes_id; ++ u16 serdes_id2; ++ u32 __maybe_unused aer_blk_reg, aer; ++ struct phy_device *phydev = phy_dev; ++ ++#ifdef BCMDBG ++ u16 tmp0, tmp1; ++ tmp0 = xgs_serdes_rd_reg(phydev, XGXS16G_SERDESID_SERDESID0r); ++ tmp1 = xgs_serdes_rd_reg(phydev, XGXS16G_SERDESID_SERDESID1r); ++ SERDES_TRACE(("-----SERDESID0: 0x%x; SERDESID1: 0x%x\n", tmp0, tmp1)); ++ ++ tmp0 = xgs_serdes_rd_reg(phydev, XGXS16G_SERDESID_SERDESID2r); ++ tmp1 = xgs_serdes_rd_reg(phydev, XGXS16G_SERDESID_SERDESID3r); ++ SERDES_TRACE(("-----SERDESID2: 0x%x;SERDESID3: 0x%x\n", tmp0, tmp1)); ++#endif /* BCMDBG */ ++ ++ SERDES_TRACE(("%s: phyaddr %d\n",__FUNCTION__, phydev->mdio.addr)); ++ ++ if (phydev->phy_id != PHY_ID_XGS_AMAC_SERDES) ++ return; ++ ++ serdes_id = serdes_get_id(phydev); ++ serdes_id2 = xgs_serdes_rd_reg(phydev, XGXS16G_SERDESID_SERDESID2r); ++ ++ if ((serdes_id == SERDES_ID_SB2_AMAC) && ++ (serdes_id2 == SERDES_ID2_SB2_AMAC)) { ++ /* Auto Negotiation 10M/100M/1G ¡V SGMII Slave */ ++ /* Disable pll start sequencer */ ++ data16 = xgs_serdes_rd_reg(phydev, XGXS16G_XGXSBLK0_XGXSCONTROLr); ++ data16 &= ~XGXSBLK0_CONTROL_PLL_SEQUENCER_MASK; ++ xgs_serdes_wr_reg(phydev, XGXS16G_XGXSBLK0_XGXSCONTROLr, data16); ++ ++ /* Set SGMII slave mode */ ++ xgs_serdes_wr_reg(phydev, XGXS16G_SERDESDIGITAL_CONTROL1000X1r, ++ SERDESDIGITAL_CONTROL1000X1_SLAVE_MODE); ++ ++ /* Enable AN 10M/100M/1G */ ++ data16 = xgs_serdes_rd_reg(phydev, XGXS16G_IEEE0BLK_IEEECONTROL0r); ++ data16 |= IEEE0BLK_IEEECONTROL0_ENABLE_AN_MASK; ++ xgs_serdes_wr_reg(phydev, XGXS16G_IEEE0BLK_IEEECONTROL0r, data16); ++ ++ /* Enable pll start sequencer */ ++ data16 = xgs_serdes_rd_reg(phydev, XGXS16G_XGXSBLK0_XGXSCONTROLr); ++ data16 |= XGXSBLK0_CONTROL_PLL_SEQUENCER_MASK; ++ xgs_serdes_wr_reg(phydev, XGXS16G_XGXSBLK0_XGXSCONTROLr, data16); ++ } else if ((serdes_id == SERDES_ID_GH2_AMAC) && ++ (serdes_id2 == SERDES_ID2_GH2_AMAC)) { ++ aer = xgs_serdes_get_lane(phydev) << XGXS16G_SERDES_LANE_SHIFT; ++ ++ /* Disable IEEE block select auto-detect */ ++ data16 = 0; ++ aer_blk_reg = (aer | XGXS16G_XGXSBLK0_MISCCONTROL1r); ++ xgs_serdes_wr_reg(phydev, aer_blk_reg, data16); ++ ++ /* Disable lmtcal (broadcast to all lanes) */ ++ data16 = 0x83f8; ++ aer_blk_reg = (aer | XGXS16G_RX3_CONTROL2r); ++ xgs_serdes_wr_reg(phydev, aer_blk_reg, data16); ++ ++ /* Set SGMII slave mode */ ++ aer_blk_reg = (aer | XGXS16G_SERDESDIGITAL_CONTROL1000X1r); ++ xgs_serdes_wr_reg(phydev, aer_blk_reg, ++ SERDESDIGITAL_CONTROL1000X1_SLAVE_MODE); ++ ++ /* Enable AN 10M/100M/1G */ ++ aer_blk_reg = (aer | XGXS16G_IEEE0BLK_IEEECONTROL0r); ++ data16 = xgs_serdes_rd_reg(phydev, aer_blk_reg); ++ data16 |= IEEE0BLK_IEEECONTROL0_ENABLE_AN_MASK; ++ xgs_serdes_wr_reg(phydev, aer_blk_reg, data16); ++ } else if ((serdes_id == SERDES_ID_HX4_AMAC) || ++ (serdes_id == SERDES_ID_KT2_AMAC)) { ++ /* unlock lane */ ++ data16 = xgs_serdes_rd_reg(phydev, XGXS16G_WC40_DIGITAL4_MISC3r); ++ data16 &= ~(DIGITAL4_MISC3_LANEDISABLE_MASK); ++ xgs_serdes_wr_reg(phydev, XGXS16G_WC40_DIGITAL4_MISC3r, data16); ++ ++ /* disable CL73 BAM */ ++ data16 = xgs_serdes_rd_reg(phydev, ++ XGXS16G_CL73_USERB0_CL73_BAMCTRL1r); ++ data16 &= ~(CL73_USERB0_CL73_BAMCTRL1_CL73_BAMEN_MASK); ++ xgs_serdes_wr_reg(phydev, XGXS16G_CL73_USERB0_CL73_BAMCTRL1r, ++ data16); ++ ++ /* Set Local Advertising Configuration */ ++ data16 = MII_ANA_C37_FD | MII_ANA_C37_PAUSE | ++ MII_ANA_C37_ASYM_PAUSE; ++ xgs_serdes_wr_reg(phydev, XGXS16G_COMBO_IEEE0_AUTONEGADVr, data16); ++ ++ /* Disable BAM in Independent Lane mode. Over 1G AN not supported */ ++ data16 = 0; ++ xgs_serdes_wr_reg(phydev, XGXS16G_BAM_NEXTPAGE_MP5_NEXTPAGECTRLr, ++ data16); ++ xgs_serdes_wr_reg(phydev, XGXS16G_BAM_NEXTPAGE_UD_FIELDr, data16); ++ ++ data16 = SERDESDIGITAL_CONTROL1000X1_CRC_CHECKER_DISABLE_MASK | ++ SERDESDIGITAL_CONTROL1000X1_DISABLE_PLL_PWRDWN_MASK; ++ /* Set SGMII mode */ ++ xgs_serdes_wr_reg(phydev, XGXS16G_SERDESDIGITAL_CONTROL1000X1r, ++ data16); ++ ++ /* Set autoneg */ ++ data16 = IEEE0BLK_IEEECONTROL0_ENABLE_AN_MASK | ++ IEEE0BLK_IEEECONTROL0_RESTART_AN_MASK; ++ xgs_serdes_wr_reg(phydev, XGXS16G_COMBO_IEEE0_MIICNTLr, data16); ++ ++ /* Disable 10G parallel detect */ ++ data16 = 0; ++ xgs_serdes_wr_reg(phydev, XGXS16G_AN73_PDET_PARDET10GCONTROLr, ++ data16); ++ ++ /* Disable BAM mode and Teton mode */ ++ xgs_serdes_wr_reg(phydev, XGXS16G_BAM_NEXTPAGE_MP5_NEXTPAGECTRLr, ++ data16); ++ ++ /* Enable lanes */ ++ data16 = xgs_serdes_rd_reg(phydev, XGXS16G_XGXSBLK1_LANECTRL0r); ++ data16 |= XGXSBLK1_LANECTRL0_CL36_PCS_EN_RX_MASK | ++ XGXSBLK1_LANECTRL0_CL36_PCS_EN_TX_MASK; ++ xgs_serdes_wr_reg(phydev, XGXS16G_XGXSBLK1_LANECTRL0r, data16); ++ ++ /* Set elasticity fifo size to 13.5k to support 12k jumbo pkt size*/ ++ data16 = xgs_serdes_rd_reg(phydev, ++ XGXS16G_SERDESDIGITAL_CONTROL1000X3r); ++ data16 &= SERDESDIGITAL_CONTROL1000X3_FIFO_ELASICITY_TX_RX_MASK; ++ data16 |= (1 << 2); ++ xgs_serdes_wr_reg(phydev, XGXS16G_SERDESDIGITAL_CONTROL1000X3r, ++ data16); ++ ++ /* Enable LPI passthru' for native mode EEE */ ++ data16 = xgs_serdes_rd_reg(phydev, XGXS16G_REMOTEPHY_MISC5r); ++ data16 |= XGXS16G_REMOTEPHY_MISC5_LPI_MASK; ++ xgs_serdes_wr_reg(phydev, XGXS16G_REMOTEPHY_MISC5r, data16); ++ data16 = xgs_serdes_rd_reg(phydev, XGXS16G_XGXSBLK7_EEECONTROLr); ++ data16 |= 0x0007; ++ xgs_serdes_wr_reg(phydev, XGXS16G_XGXSBLK7_EEECONTROLr, data16); ++ } ++} ++ ++/* Needed for HX4/KT2/GH2/WH2 */ ++static void xgs_serdes_start_pll(struct phy_device *phy_dev) ++{ ++ u16 data16; ++ u32 serdes_id; ++ u16 serdes_id2; ++ u32 count = 100; ++ struct phy_device *phydev = phy_dev; ++ static u32 serdes_pll_started = 0; ++ ++ if (phydev->phy_id != PHY_ID_XGS_AMAC_SERDES) ++ return; ++ ++ /* PLL started or not */ ++ if (serdes_pll_started) ++ return; ++ ++ serdes_id = serdes_get_id(phydev); ++ serdes_id2 = xgs_serdes_rd_reg(phydev, XGXS16G_SERDESID_SERDESID2r); ++ ++ if (!((serdes_id == SERDES_ID_HX4_AMAC) || ++ (serdes_id == SERDES_ID_KT2_AMAC) || ++ (serdes_id == SERDES_ID_GH2_AMAC))) ++ return; ++ ++ /* Change PLL calibration threshold to 0xc for GH2/WH2*/ ++ if ((serdes_id == SERDES_ID_GH2_AMAC) && ++ (serdes_id2 == SERDES_ID2_GH2_AMAC)) { ++ data16 = 0xc << XGXS16G_PLL2_CTRL_CAL_TH_SHIFT; ++ xgs_serdes_wr_reg(phydev, XGXS16G_PLL2_CTRL1r, data16); ++ } ++ ++ /* Start PLL Sequencer and wait for PLL to lock */ ++ data16 = xgs_serdes_rd_reg(phydev, XGXS16G_XGXSBLK0_XGXSCONTROLr); ++ data16 |= XGXSBLK0_XGXSCONTROL_START_SEQUENCER_MASK; ++ xgs_serdes_wr_reg(phydev, XGXS16G_XGXSBLK0_XGXSCONTROLr, data16); ++ ++ /* wait for PLL to lock */ ++ while (count--) { ++ data16 = xgs_serdes_rd_reg(phydev, XGXS16G_XGXSBLK0_XGXSSTATUSr); ++ if (data16 & XGXSBLK0_XGXSSTATUS_TXPLL_LOCK_MASK) ++ break; ++ udelay(10); ++ } ++ if (!count) ++ SERDES_ERROR(("amac serdes TXPLL did not lock\n")); ++ else ++ serdes_pll_started = 1; ++} ++ ++static int xgs_serdes_config_init(struct phy_device *phydev) ++{ ++ xgs_serdes_reset_core(phydev); ++ xgs_serdes_reset(phydev); ++ xgs_serdes_init(phydev); ++ xgs_serdes_start_pll(phydev); ++ ++ return 0; ++} ++ ++/* ++ * REGADDR: 0x8304 ++ * DESC: 1000X status 1 register ++ * SGMII_MODE 1 = sgmii mode0 = fiber mode (1000-X) ++ * LINK_STATUS 1 = link is up0 = link is down ++ * DUPLEX_STATUS 1 = full-duplex0 = half-duplex ++ * SPEED_STATUS 11 = 2.5G10 = gigabit01 = 100 mbps00 = 10 mbps ++ */ ++static int xgs_serdes_read_status(struct phy_device *phydev) ++{ ++ u16 link_stat; ++ u32 serdes_lane; ++ u32 reg; ++ ++ serdes_lane = xgs_serdes_get_lane(phydev); ++ reg = (serdes_lane << XGXS16G_SERDES_LANE_SHIFT) | ++ XGXS16G_SERDESDIGITAL_STATUS1000X1r; ++ link_stat = xgs_serdes_rd_reg(phydev, reg); ++ ++ if (link_stat & 0x2) ++ phydev->link = 1; ++ else ++ phydev->link = 0; ++ ++ if (link_stat & 0x4) ++ phydev->duplex = 1; ++ else ++ phydev->duplex = 0; ++ ++ phydev->pause = 0; ++ phydev->asym_pause = 0; ++/* ++ link_stat >>= 3; ++ link_stat &= 0x3; ++*/ ++ link_stat >>= SERDESDIGITAL_STATUS1000X1_SPEED_STATUS_SHIFT; ++ link_stat &= ((1 << SERDESDIGITAL_STATUS1000X1_SPEED_STATUS_BITS) - 1); ++ switch(link_stat) { ++ case 0: ++ phydev->speed = SPEED_10; ++ break; ++ case 1: ++ phydev->speed = SPEED_100; ++ break; ++ case 2: ++ phydev->speed = SPEED_1000; ++ break; ++ case 3: ++ phydev->speed = SPEED_2500; ++ break; ++ }; ++ ++ return 0; ++} ++ ++static int xgs_serdes_config_aneg(struct phy_device *phydev) ++{ ++ u32 serdes_lane; ++ u32 reg; ++ u16 data16; ++ ++ if (AUTONEG_ENABLE != phydev->autoneg) ++ return 0; ++ ++ serdes_lane = xgs_serdes_get_lane(phydev); ++ ++ /* Enable AN 10M/100M/1G */ ++ reg = (serdes_lane << XGXS16G_SERDES_LANE_SHIFT) | ++ XGXS16G_IEEE0BLK_IEEECONTROL0r; ++ data16 = xgs_serdes_rd_reg(phydev, reg); ++ //data16 |= IEEE0BLK_IEEECONTROL0_ENABLE_AN_MASK; ++ data16 |= IEEE0BLK_IEEECONTROL0_RESTART_AN_MASK; ++ xgs_serdes_wr_reg(phydev, reg, data16); ++ ++ return 0; ++} ++ ++static int xgs_serdes_aneg_done(struct phy_device *phydev) ++{ ++ u16 link_stat; ++ u32 serdes_lane; ++ u32 reg; ++ ++ serdes_lane = xgs_serdes_get_lane(phydev); ++ reg = (serdes_lane << XGXS16G_SERDES_LANE_SHIFT) | ++ XGXS16G_SERDESDIGITAL_STATUS1000X2r; ++ link_stat = xgs_serdes_rd_reg(phydev, reg); ++ if (link_stat & XGXS16G_SERDES_ANEG_MASK) ++ return 1; ++ ++ return 0; ++} ++ ++static struct mdio_device_id __maybe_unused xgs_serdes_tbl[] = { ++ { PHY_ID_XGS_AMAC_SERDES, 0xfffffff0 }, ++ { } ++}; ++MODULE_DEVICE_TABLE(mdio, xgs_serdes_tbl); ++ ++static struct phy_driver xgs_serdes_drivers[] = { ++ { ++ .phy_id = PHY_ID_XGS_AMAC_SERDES, ++ .phy_id_mask = 0xfffffff0, ++ .name = "Broadcom XGS AMAC SERDES", ++ .config_init = xgs_serdes_config_init, ++ .read_status = xgs_serdes_read_status, ++ .config_aneg = xgs_serdes_config_aneg, ++ .aneg_done = xgs_serdes_aneg_done, ++ } ++}; ++ ++module_phy_driver(xgs_serdes_drivers); ++ ++MODULE_AUTHOR("Broadcom Corporation"); ++MODULE_DESCRIPTION("XGS iProc AMAC serdes driver"); ++MODULE_LICENSE("GPL"); +diff --git a/drivers/net/phy/xgs_iproc_serdes_def.h b/drivers/net/phy/xgs_iproc_serdes_def.h +new file mode 100644 +index 000000000000..cbc7ca3cedf0 +--- /dev/null ++++ b/drivers/net/phy/xgs_iproc_serdes_def.h +@@ -0,0 +1,339 @@ ++/* ++ * Copyright (C) 2013, Broadcom Corporation. All Rights Reserved. ++ * ++ * Permission to use, copy, modify, and/or distribute this software for any ++ * purpose with or without fee is hereby granted, provided that the above ++ * copyright notice and this permission notice appear in all copies. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES ++ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF ++ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ++ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION ++ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN ++ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ * ++ * These are serdes defines ++ * ++ */ ++ ++#ifndef _PHY_XGXS16G_H_ ++#define _PHY_XGXS16G_H_ ++ ++/* macros */ ++ ++/* Macros ONLY used after initialization */ ++#define XGXS16G_2p5G_ID(id2) ((id2 & 0xff) == 0xf) ++ ++/****************************************************************************/ ++/***** Starting below is auto-generated register macros from RDB files *****/ ++/****************************************************************************/ ++ ++/**************************************************************************** ++ * Core Enums. ++ ***************************************************************************/ ++ ++#define XGXS16G_IEEE0BLK_IEEECONTROL0r 0x00000000 ++#define XGXS16G_XGXSBLK0_XGXSCONTROLr 0x00008000 ++#define XGXS16G_XGXSBLK0_XGXSSTATUSr 0x00008001 ++#define XGXS16G_XGXSBLK0_MMDSELECTr 0x0000800d ++#define XGXS16G_XGXSBLK0_MISCCONTROL1r 0x0000800e ++#define XGXS16G_XGXSBLK1_LANECTRL0r 0x00008015 ++#define XGXS16G_XGXSBLK1_LANECTRL1r 0x00008016 ++#define XGXS16G_XGXSBLK1_LANECTRL3r 0x00008018 ++#define XGXS16G_TX0_TX_ACONTROL0r 0x00008061 ++#define XGXS16G_RX0_RX_CONTROLr 0x000080b1 ++#define XGXS16G_AN73_PDET_PARDET10GCONTROLr 0x00008131 ++#define XGXS16G_XGXSBLK7_EEECONTROLr 0x00008150 ++#define XGXS16G_TX_LN_SWAP1r 0x00008169 ++#define XGXS16G_SERDESDIGITAL_CONTROL1000X1r 0x00008300 ++#define XGXS16G_SERDESDIGITAL_CONTROL1000X2r 0x00008301 ++#define XGXS16G_SERDESDIGITAL_CONTROL1000X3r 0x00008302 ++#define XGXS16G_SERDESDIGITAL_STATUS1000X1r 0x00008304 ++#define XGXS16G_SERDESDIGITAL_MISC1r 0x00008308 ++#define XGXS16G_SERDESID_SERDESID0r 0x00008310 ++#define XGXS16G_SERDESID_SERDESID1r 0x00008311 ++#define XGXS16G_SERDESID_SERDESID2r 0x00008312 ++#define XGXS16G_SERDESID_SERDESID3r 0x00008313 ++#define XGXS16G_REMOTEPHY_MISC3r 0x0000833c ++#define XGXS16G_REMOTEPHY_MISC5r 0x0000833e ++#define XGXS16G_BAM_NEXTPAGE_MP5_NEXTPAGECTRLr 0x00008350 ++#define XGXS16G_BAM_NEXTPAGE_UD_FIELDr 0x00008357 ++#define XGXS16G_COMBO_IEEE0_MIICNTLr 0x0000ffe0 ++#define XGXS16G_COMBO_IEEE0_AUTONEGADVr 0x0000ffe4 ++#define XGXS16G_WC40_DIGITAL4_MISC3r 0x0000833c ++ ++/* Digital4 :: Misc3 :: laneDisable [06:06] */ ++#define DIGITAL4_MISC3_LANEDISABLE_MASK 0x0040 ++#define DIGITAL4_MISC3_LANEDISABLE_ALIGN 0 ++#define DIGITAL4_MISC3_LANEDISABLE_BITS 1 ++#define DIGITAL4_MISC3_LANEDISABLE_SHIFT 6 ++ ++ ++/**************************************************************************** ++ * XGXS16G_IEEE_ieee0Blk ++ ***************************************************************************/ ++/**************************************************************************** ++ * ieee0Blk :: ieeeControl0 ++ ***************************************************************************/ ++/* ieee0Blk :: ieeeControl0 :: rst_hw [15:15] */ ++#define IEEE0BLK_IEEECONTROL0_RST_HW_MASK 0x8000 ++#define IEEE0BLK_IEEECONTROL0_RST_HW_ALIGN 0 ++#define IEEE0BLK_IEEECONTROL0_RST_HW_BITS 1 ++#define IEEE0BLK_IEEECONTROL0_RST_HW_SHIFT 15 ++ ++/* ieee0Blk :: ieeeControl0 :: gloopback [14:14] */ ++#define IEEE0BLK_IEEECONTROL0_GLOOPBACK_MASK 0x4000 ++#define IEEE0BLK_IEEECONTROL0_GLOOPBACK_ALIGN 0 ++#define IEEE0BLK_IEEECONTROL0_GLOOPBACK_BITS 1 ++#define IEEE0BLK_IEEECONTROL0_GLOOPBACK_SHIFT 14 ++ ++ ++/**************************************************************************** ++ * XGXS16G_USER_XgxsBlk0 ++ ***************************************************************************/ ++/**************************************************************************** ++ * XgxsBlk0 :: xgxsControl ++ ***************************************************************************/ ++/* XgxsBlk0 :: xgxsControl :: start_sequencer [13:13] */ ++#define XGXSBLK0_XGXSCONTROL_START_SEQUENCER_MASK 0x2000 ++#define XGXSBLK0_XGXSCONTROL_START_SEQUENCER_ALIGN 0 ++#define XGXSBLK0_XGXSCONTROL_START_SEQUENCER_BITS 1 ++#define XGXSBLK0_XGXSCONTROL_START_SEQUENCER_SHIFT 13 ++ ++/* XgxsBlk0 :: xgxsControl :: mode_10g [11:08] */ ++#define XGXSBLK0_XGXSCONTROL_MODE_10G_MASK 0x0f00 ++#define XGXSBLK0_XGXSCONTROL_MODE_10G_ALIGN 0 ++#define XGXSBLK0_XGXSCONTROL_MODE_10G_BITS 4 ++#define XGXSBLK0_XGXSCONTROL_MODE_10G_SHIFT 8 ++#define XGXSBLK0_XGXSCONTROL_MODE_10G_XGXS 0 ++#define XGXSBLK0_XGXSCONTROL_MODE_10G_XGXS_noCC 1 ++#define XGXSBLK0_XGXSCONTROL_MODE_10G_IndLane 6 ++#define XGXSBLK0_XGXSCONTROL_MODE_10G_XGXS_noLss 8 ++#define XGXSBLK0_XGXSCONTROL_MODE_10G_XGXS_noLss_noCC 9 ++#define XGXSBLK0_XGXSCONTROL_MODE_10G_protBypass 10 ++#define XGXSBLK0_XGXSCONTROL_MODE_10G_protBypass_noDsk 11 ++#define XGXSBLK0_XGXSCONTROL_MODE_10G_ComboCoreMode 12 ++#define XGXSBLK0_XGXSCONTROL_MODE_10G_ClocksOff 15 ++ ++/* XgxsBlk0 :: xgxsControl :: hstl [05:05] */ ++#define XGXSBLK0_XGXSCONTROL_HSTL_MASK 0x0020 ++#define XGXSBLK0_XGXSCONTROL_HSTL_ALIGN 0 ++#define XGXSBLK0_XGXSCONTROL_HSTL_BITS 1 ++#define XGXSBLK0_XGXSCONTROL_HSTL_SHIFT 5 ++ ++/* XgxsBlk0 :: xgxsControl :: cdet_en [03:03] */ ++#define XGXSBLK0_XGXSCONTROL_CDET_EN_MASK 0x0008 ++#define XGXSBLK0_XGXSCONTROL_CDET_EN_ALIGN 0 ++#define XGXSBLK0_XGXSCONTROL_CDET_EN_BITS 1 ++#define XGXSBLK0_XGXSCONTROL_CDET_EN_SHIFT 3 ++ ++/* XgxsBlk0 :: xgxsControl :: eden [02:02] */ ++#define XGXSBLK0_XGXSCONTROL_EDEN_MASK 0x0004 ++#define XGXSBLK0_XGXSCONTROL_EDEN_ALIGN 0 ++#define XGXSBLK0_XGXSCONTROL_EDEN_BITS 1 ++#define XGXSBLK0_XGXSCONTROL_EDEN_SHIFT 2 ++ ++/* XgxsBlk0 :: xgxsControl :: afrst_en [01:01] */ ++#define XGXSBLK0_XGXSCONTROL_AFRST_EN_MASK 0x0002 ++#define XGXSBLK0_XGXSCONTROL_AFRST_EN_ALIGN 0 ++#define XGXSBLK0_XGXSCONTROL_AFRST_EN_BITS 1 ++#define XGXSBLK0_XGXSCONTROL_AFRST_EN_SHIFT 1 ++ ++/* XgxsBlk0 :: xgxsControl :: txcko_div [00:00] */ ++#define XGXSBLK0_XGXSCONTROL_TXCKO_DIV_MASK 0x0001 ++#define XGXSBLK0_XGXSCONTROL_TXCKO_DIV_ALIGN 0 ++#define XGXSBLK0_XGXSCONTROL_TXCKO_DIV_BITS 1 ++#define XGXSBLK0_XGXSCONTROL_TXCKO_DIV_SHIFT 0 ++ ++ ++/**************************************************************************** ++ * XgxsBlk0 :: xgxsStatus ++ ***************************************************************************/ ++/* XgxsBlk0 :: xgxsStatus :: txpll_lock [11:11] */ ++#define XGXSBLK0_XGXSSTATUS_TXPLL_LOCK_MASK 0x0800 ++#define XGXSBLK0_XGXSSTATUS_TXPLL_LOCK_ALIGN 0 ++#define XGXSBLK0_XGXSSTATUS_TXPLL_LOCK_BITS 1 ++#define XGXSBLK0_XGXSSTATUS_TXPLL_LOCK_SHIFT 11 ++ ++ ++/**************************************************************************** ++ * XgxsBlk0 :: miscControl1 ++ ***************************************************************************/ ++/* XgxsBlk0 :: miscControl1 :: PCS_dev_en_override [10:10] */ ++#define XGXSBLK0_MISCCONTROL1_PCS_DEV_EN_OVERRIDE_MASK 0x0400 ++#define XGXSBLK0_MISCCONTROL1_PCS_DEV_EN_OVERRIDE_ALIGN 0 ++#define XGXSBLK0_MISCCONTROL1_PCS_DEV_EN_OVERRIDE_BITS 1 ++#define XGXSBLK0_MISCCONTROL1_PCS_DEV_EN_OVERRIDE_SHIFT 10 ++ ++/* XgxsBlk0 :: miscControl1 :: PMD_dev_en_override [09:09] */ ++#define XGXSBLK0_MISCCONTROL1_PMD_DEV_EN_OVERRIDE_MASK 0x0200 ++#define XGXSBLK0_MISCCONTROL1_PMD_DEV_EN_OVERRIDE_ALIGN 0 ++#define XGXSBLK0_MISCCONTROL1_PMD_DEV_EN_OVERRIDE_BITS 1 ++#define XGXSBLK0_MISCCONTROL1_PMD_DEV_EN_OVERRIDE_SHIFT 9 ++ ++/* XgxsBlk0 :: miscControl1 :: ieee_blksel_autodet [01:01] */ ++#define XGXSBLK0_MISCCONTROL1_IEEE_BLKSEL_AUTODET_MASK 0x0002 ++#define XGXSBLK0_MISCCONTROL1_IEEE_BLKSEL_AUTODET_ALIGN 0 ++#define XGXSBLK0_MISCCONTROL1_IEEE_BLKSEL_AUTODET_BITS 1 ++#define XGXSBLK0_MISCCONTROL1_IEEE_BLKSEL_AUTODET_SHIFT 1 ++ ++/* XgxsBlk0 :: miscControl1 :: ieee_blksel_val [00:00] */ ++#define XGXSBLK0_MISCCONTROL1_IEEE_BLKSEL_VAL_MASK 0x0001 ++#define XGXSBLK0_MISCCONTROL1_IEEE_BLKSEL_VAL_ALIGN 0 ++#define XGXSBLK0_MISCCONTROL1_IEEE_BLKSEL_VAL_BITS 1 ++#define XGXSBLK0_MISCCONTROL1_IEEE_BLKSEL_VAL_SHIFT 0 ++ ++ ++/**************************************************************************** ++ * XGXS16G_USER_XgxsBlk1 ++ ***************************************************************************/ ++/**************************************************************************** ++ * XgxsBlk1 :: laneCtrl0 ++ ***************************************************************************/ ++/* XgxsBlk1 :: laneCtrl0 :: cl36_pcs_en_rx [07:04] */ ++#define XGXSBLK1_LANECTRL0_CL36_PCS_EN_RX_MASK 0x00f0 ++#define XGXSBLK1_LANECTRL0_CL36_PCS_EN_RX_ALIGN 0 ++#define XGXSBLK1_LANECTRL0_CL36_PCS_EN_RX_BITS 4 ++#define XGXSBLK1_LANECTRL0_CL36_PCS_EN_RX_SHIFT 4 ++ ++/* XgxsBlk1 :: laneCtrl0 :: cl36_pcs_en_tx [03:00] */ ++#define XGXSBLK1_LANECTRL0_CL36_PCS_EN_TX_MASK 0x000f ++#define XGXSBLK1_LANECTRL0_CL36_PCS_EN_TX_ALIGN 0 ++#define XGXSBLK1_LANECTRL0_CL36_PCS_EN_TX_BITS 4 ++#define XGXSBLK1_LANECTRL0_CL36_PCS_EN_TX_SHIFT 0 ++ ++ ++/**************************************************************************** ++ * XGXS16G_USER_TX0 ++ ***************************************************************************/ ++/**************************************************************************** ++ * TX0 :: Tx_AControl0 ++ ***************************************************************************/ ++/* TX0 :: Tx_AControl0 :: txpol_flip [05:05] */ ++#define TX0_TX_ACONTROL0_TXPOL_FLIP_MASK 0x0020 ++#define TX0_TX_ACONTROL0_TXPOL_FLIP_ALIGN 0 ++#define TX0_TX_ACONTROL0_TXPOL_FLIP_BITS 1 ++#define TX0_TX_ACONTROL0_TXPOL_FLIP_SHIFT 5 ++ ++ ++/**************************************************************************** ++ * XGXS16G_USER_dsc_2_0 ++ ***************************************************************************/ ++/**************************************************************************** ++ * dsc_2_0 :: dsc_ctrl0 ++ ***************************************************************************/ ++/* dsc_2_0 :: dsc_ctrl0 :: rxSeqStart [15:15] */ ++#define DSC_2_0_DSC_CTRL0_RXSEQSTART_MASK 0x8000 ++#define DSC_2_0_DSC_CTRL0_RXSEQSTART_ALIGN 0 ++#define DSC_2_0_DSC_CTRL0_RXSEQSTART_BITS 1 ++#define DSC_2_0_DSC_CTRL0_RXSEQSTART_SHIFT 15 ++ ++ ++/**************************************************************************** ++ * XGXS16G_USER_SerdesDigital ++ ***************************************************************************/ ++/**************************************************************************** ++ * SerdesDigital :: Control1000X1 ++ ***************************************************************************/ ++/* SerdesDigital :: Control1000X1 :: crc_checker_disable [07:07] */ ++#define SERDESDIGITAL_CONTROL1000X1_CRC_CHECKER_DISABLE_MASK 0x0080 ++#define SERDESDIGITAL_CONTROL1000X1_CRC_CHECKER_DISABLE_ALIGN 0 ++#define SERDESDIGITAL_CONTROL1000X1_CRC_CHECKER_DISABLE_BITS 1 ++#define SERDESDIGITAL_CONTROL1000X1_CRC_CHECKER_DISABLE_SHIFT 7 ++ ++/* SerdesDigital :: Control1000X1 :: disable_pll_pwrdwn [06:06] */ ++#define SERDESDIGITAL_CONTROL1000X1_DISABLE_PLL_PWRDWN_MASK 0x0040 ++#define SERDESDIGITAL_CONTROL1000X1_DISABLE_PLL_PWRDWN_ALIGN 0 ++#define SERDESDIGITAL_CONTROL1000X1_DISABLE_PLL_PWRDWN_BITS 1 ++#define SERDESDIGITAL_CONTROL1000X1_DISABLE_PLL_PWRDWN_SHIFT 6 ++ ++/* SerdesDigital :: Control1000X1 :: fiber_mode_1000X [00:00] */ ++#define SERDESDIGITAL_CONTROL1000X1_FIBER_MODE_1000X_MASK 0x0001 ++#define SERDESDIGITAL_CONTROL1000X1_FIBER_MODE_1000X_ALIGN 0 ++#define SERDESDIGITAL_CONTROL1000X1_FIBER_MODE_1000X_BITS 1 ++#define SERDESDIGITAL_CONTROL1000X1_FIBER_MODE_1000X_SHIFT 0 ++ ++/**************************************************************************** ++ * SerdesDigital :: Control1000X3 ++ ***************************************************************************/ ++/* SerdesDigital :: Control1000X3 :: fifo_elasicity_tx_rx [02:01] */ ++#define SERDESDIGITAL_CONTROL1000X3_FIFO_ELASICITY_TX_RX_MASK 0x0006 ++#define SERDESDIGITAL_CONTROL1000X3_FIFO_ELASICITY_TX_RX_ALIGN 0 ++#define SERDESDIGITAL_CONTROL1000X3_FIFO_ELASICITY_TX_RX_BITS 2 ++#define SERDESDIGITAL_CONTROL1000X3_FIFO_ELASICITY_TX_RX_SHIFT 1 ++ ++/* SerdesDigital :: Control1000X3 :: tx_fifo_rst [00:00] */ ++#define SERDESDIGITAL_CONTROL1000X3_TX_FIFO_RST_MASK 0x0001 ++#define SERDESDIGITAL_CONTROL1000X3_TX_FIFO_RST_ALIGN 0 ++#define SERDESDIGITAL_CONTROL1000X3_TX_FIFO_RST_BITS 1 ++#define SERDESDIGITAL_CONTROL1000X3_TX_FIFO_RST_SHIFT 0 ++ ++/**************************************************************************** ++ * SerdesDigital :: Status1000X1 ++ ***************************************************************************/ ++/* SerdesDigital :: Status1000X1 :: speed_status [04:03] */ ++#define SERDESDIGITAL_STATUS1000X1_SPEED_STATUS_MASK 0x0018 ++#define SERDESDIGITAL_STATUS1000X1_SPEED_STATUS_ALIGN 0 ++#define SERDESDIGITAL_STATUS1000X1_SPEED_STATUS_BITS 2 ++#define SERDESDIGITAL_STATUS1000X1_SPEED_STATUS_SHIFT 3 ++ ++/**************************************************************************** ++ * SerdesDigital :: Misc1 ++ ***************************************************************************/ ++/* SerdesDigital :: Misc1 :: refclk_sel [15:13] */ ++#define SERDESDIGITAL_MISC1_REFCLK_SEL_MASK 0xe000 ++#define SERDESDIGITAL_MISC1_REFCLK_SEL_ALIGN 0 ++#define SERDESDIGITAL_MISC1_REFCLK_SEL_BITS 3 ++#define SERDESDIGITAL_MISC1_REFCLK_SEL_SHIFT 13 ++#define SERDESDIGITAL_MISC1_REFCLK_SEL_clk_25MHz 0 ++#define SERDESDIGITAL_MISC1_REFCLK_SEL_clk_100MHz 1 ++#define SERDESDIGITAL_MISC1_REFCLK_SEL_clk_125MHz 2 ++#define SERDESDIGITAL_MISC1_REFCLK_SEL_clk_156p25MHz 3 ++#define SERDESDIGITAL_MISC1_REFCLK_SEL_clk_187p5MHz 4 ++#define SERDESDIGITAL_MISC1_REFCLK_SEL_clk_161p25Mhz 5 ++#define SERDESDIGITAL_MISC1_REFCLK_SEL_clk_50Mhz 6 ++#define SERDESDIGITAL_MISC1_REFCLK_SEL_clk_106p25Mhz 7 ++ ++/* SerdesDigital :: Misc1 :: force_speed_sel [04:04] */ ++#define SERDESDIGITAL_MISC1_FORCE_SPEED_SEL_MASK 0x0010 ++#define SERDESDIGITAL_MISC1_FORCE_SPEED_SEL_ALIGN 0 ++#define SERDESDIGITAL_MISC1_FORCE_SPEED_SEL_BITS 1 ++#define SERDESDIGITAL_MISC1_FORCE_SPEED_SEL_SHIFT 4 ++ ++/* SerdesDigital :: Misc1 :: force_speed [03:00] */ ++#define SERDESDIGITAL_MISC1_FORCE_SPEED_MASK 0x000f ++#define SERDESDIGITAL_MISC1_FORCE_SPEED_ALIGN 0 ++#define SERDESDIGITAL_MISC1_FORCE_SPEED_BITS 4 ++#define SERDESDIGITAL_MISC1_FORCE_SPEED_SHIFT 0 ++ ++ ++/**************************************************************************** ++ * CL73_UserB0 :: CL73_BAMCtrl1 ++ ***************************************************************************/ ++/* CL73_UserB0 :: CL73_BAMCtrl1 :: CL73_bamEn [15:15] */ ++#define CL73_USERB0_CL73_BAMCTRL1_CL73_BAMEN_MASK 0x8000 ++#define CL73_USERB0_CL73_BAMCTRL1_CL73_BAMEN_ALIGN 0 ++#define CL73_USERB0_CL73_BAMCTRL1_CL73_BAMEN_BITS 1 ++#define CL73_USERB0_CL73_BAMCTRL1_CL73_BAMEN_SHIFT 15 ++ ++/* Definitions required in addition to the above auto-generated */ ++#define XGXS16G_REMOTEPHY_MISC5_LPI_MASK 0xc000 ++#define IEEE0BLK_IEEECONTROL0_ENABLE_AN_MASK BIT(12) ++#define IEEE0BLK_IEEECONTROL0_RESTART_AN_MASK BIT(9) ++#define XGXSBLK0_CONTROL_PLL_SEQUENCER_MASK BIT(13) ++#define SERDESDIGITAL_CONTROL1000X1_SLAVE_MODE BIT(8) ++#define XGXS16G_PLL2_CTRL1r 0x00008081 ++#define XGXS16G_SERDESDIGITAL_STATUS1000X2r 0x00008305 ++#define XGXS16G_CL73_USERB0_CL73_BAMCTRL1r 0x00008372 ++#define XGXS16G_RX3_CONTROL2r 0x00008482 ++#define XGXS16G_PLL2_CTRL_CAL_TH_SHIFT 7 ++#define XGXS16G_SERDES_LANE_SHIFT 16 ++#define XGXS16G_SERDES_ANEG_MASK BIT(4) ++#define MII_ANA_C37_PAUSE BIT(7) ++#define MII_ANA_C37_ASYM_PAUSE BIT(8) ++#define MII_ANA_C37_FD BIT(5) ++ ++#endif /* _PHY_XGXS16G_H_ */ ++ ++/* End of File */ +diff --git a/include/linux/phy/xgs_iproc_serdes.h b/include/linux/phy/xgs_iproc_serdes.h +new file mode 100644 +index 000000000000..e7258ee107fd +--- /dev/null ++++ b/include/linux/phy/xgs_iproc_serdes.h +@@ -0,0 +1,27 @@ ++/* ++ * Copyright (C) 2017 Broadcom Corporation ++ * ++ * This program is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public License as ++ * published by the Free Software Foundation version 2. ++ * ++ * This program is distributed "as is" WITHOUT ANY WARRANTY of any ++ * kind, whether express or implied; without even the implied warranty ++ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ */ ++ ++#ifndef _XGS_IPROC_SERDES_H_ ++#define _XGS_IPROC_SERDES_H_ ++ ++/* Specify the used lane number of SERDES */ ++typedef struct xgs_serdes_info_s { ++ u32 lane; ++} xgs_serdes_info_t; ++ ++extern bool xgs_serdes_hx4_amac(struct phy_device *); ++extern bool xgs_serdes_kt2_amac(struct phy_device *); ++extern void xgs_serdes_set_lane(struct phy_device *phy_dev, u32 lane); ++ ++#endif /* _XGS_IPROC_SERDES_H_ */ ++ +-- +2.47.1 + diff --git a/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-14-pci-pcie-xgs-iproc.patch b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-14-pci-pcie-xgs-iproc.patch new file mode 100644 index 00000000..8b53069d --- /dev/null +++ b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-14-pci-pcie-xgs-iproc.patch @@ -0,0 +1,588 @@ +From a785d577dfb7f3f7161be0935a356d743ad6e8e3 Mon Sep 17 00:00:00 2001 +From: Jonas Gorski +Date: Thu, 7 Oct 2021 10:03:46 +0200 +Subject: [PATCH 14/21] pci: pcie-xgs-iproc + +--- + drivers/pci/controller/Kconfig | 11 +- + drivers/pci/controller/Makefile | 1 + + drivers/pci/controller/pcie-iproc.h | 5 + + drivers/pci/controller/pcie-xgs-iproc.c | 501 ++++++++++++++++++++++++ + 4 files changed, 517 insertions(+), 1 deletion(-) + create mode 100644 drivers/pci/controller/pcie-xgs-iproc.c + +diff --git a/drivers/pci/controller/Kconfig b/drivers/pci/controller/Kconfig +index 9800b7681054..1db641341abc 100644 +--- a/drivers/pci/controller/Kconfig ++++ b/drivers/pci/controller/Kconfig +@@ -62,6 +62,15 @@ config PCIE_BRCMSTB + Say Y here to enable PCIe host controller support for + Broadcom STB based SoCs, like the Raspberry Pi 4. + ++config PCIE_XGS_IPROC ++ bool "Broadcom XGS iProc PCIe controller" ++ select PCI_DOMAINS ++ depends on ARCH_XGS_IPROC ++ default n ++ help ++ This enables the XGS iProc PCIe core controller support for Broadcom's ++ iProc family of SoCs. ++ + config PCIE_IPROC + tristate + help +@@ -91,7 +100,7 @@ config PCIE_IPROC_BCMA + + config PCIE_IPROC_MSI + bool "Broadcom iProc PCIe MSI support" +- depends on PCIE_IPROC_PLATFORM || PCIE_IPROC_BCMA ++ depends on PCIE_IPROC_PLATFORM || PCIE_IPROC_BCMA || PCIE_XGS_IPROC + depends on PCI_MSI + default ARCH_BCM_IPROC + help +diff --git a/drivers/pci/controller/Makefile b/drivers/pci/controller/Makefile +index 038ccbd9e3ba..746232041e31 100644 +--- a/drivers/pci/controller/Makefile ++++ b/drivers/pci/controller/Makefile +@@ -26,6 +26,7 @@ obj-$(CONFIG_PCIE_IPROC) += pcie-iproc.o + obj-$(CONFIG_PCIE_IPROC_MSI) += pcie-iproc-msi.o + obj-$(CONFIG_PCIE_IPROC_PLATFORM) += pcie-iproc-platform.o + obj-$(CONFIG_PCIE_IPROC_BCMA) += pcie-iproc-bcma.o ++obj-$(CONFIG_PCIE_XGS_IPROC) += pcie-xgs-iproc.o + obj-$(CONFIG_PCIE_ALTERA) += pcie-altera.o + obj-$(CONFIG_PCIE_ALTERA_MSI) += pcie-altera-msi.o + obj-$(CONFIG_PCIE_ROCKCHIP) += pcie-rockchip.o +diff --git a/drivers/pci/controller/pcie-iproc.h b/drivers/pci/controller/pcie-iproc.h +index 969ded03b8c2..c6eef4e61a19 100644 +--- a/drivers/pci/controller/pcie-iproc.h ++++ b/drivers/pci/controller/pcie-iproc.h +@@ -91,6 +91,9 @@ struct iproc_pcie { + phys_addr_t base_addr; + struct resource mem; + struct phy *phy; ++#ifdef CONFIG_PCIE_XGS_IPROC ++ struct phy_device *mdio_phy; ++#endif + int (*map_irq)(const struct pci_dev *, u8, u8); + bool ep_is_internal; + bool iproc_cfg_read; +@@ -110,9 +113,11 @@ struct iproc_pcie { + struct iproc_msi *msi; + }; + ++#ifndef CONFIG_PCIE_XGS_IPROC + int iproc_pcie_setup(struct iproc_pcie *pcie, struct list_head *res); + void iproc_pcie_remove(struct iproc_pcie *pcie); + int iproc_pcie_shutdown(struct iproc_pcie *pcie); ++#endif + + #ifdef CONFIG_PCIE_IPROC_MSI + int iproc_msi_init(struct iproc_pcie *pcie, struct device_node *node); +diff --git a/drivers/pci/controller/pcie-xgs-iproc.c b/drivers/pci/controller/pcie-xgs-iproc.c +new file mode 100644 +index 000000000000..0168f24fbb19 +--- /dev/null ++++ b/drivers/pci/controller/pcie-xgs-iproc.c +@@ -0,0 +1,499 @@ ++/* ++ * Copyright (C) 2014 Hauke Mehrtens ++ * Copyright (C) 2015 Broadcom Corporation ++ * ++ * This program is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public License as ++ * published by the Free Software Foundation version 2. ++ * ++ * This program is distributed "as is" WITHOUT ANY WARRANTY of any ++ * kind, whether express or implied; without even the implied warranty ++ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include "../pci.h" ++#include "pcie-iproc.h" ++ ++#define CLK_CONTROL_OFFSET 0x000 ++ ++#define CFG_IND_ADDR_OFFSET 0x120 ++#define CFG_IND_ADDR_MASK 0x00001ffc ++#define CFG_IND_DATA_OFFSET 0x124 ++ ++#define CFG_ADDR_OFFSET 0x1f8 ++#define CFG_ADDR_BUS_NUM_SHIFT 20 ++#define CFG_ADDR_BUS_NUM_MASK 0x0ff00000 ++#define CFG_ADDR_DEV_NUM_SHIFT 15 ++#define CFG_ADDR_DEV_NUM_MASK 0x000f8000 ++#define CFG_ADDR_FUNC_NUM_SHIFT 12 ++#define CFG_ADDR_FUNC_NUM_MASK 0x00007000 ++#define CFG_ADDR_REG_NUM_SHIFT 2 ++#define CFG_ADDR_REG_NUM_MASK 0x00000ffc ++#define CFG_ADDR_CFG_TYPE_SHIFT 0 ++#define CFG_ADDR_CFG_TYPE_MASK 0x00000003 ++ ++#define CFG_DATA_OFFSET 0x1fc ++ ++#define SYS_RC_INTX_EN 0x330 ++#define SYS_RC_INTX_MASK 0xf ++ ++#define IPROC_PCI_EXP_CAP 0xac ++ ++struct pcie_sw_wa { ++ const char *wa_name; ++ void (*wa_func)(struct iproc_pcie *pcie); ++}; ++ ++extern void xgs_phy_wr_reg(struct phy_device *phydev, u32 regnum, u16 data); ++ ++/** ++ * Note access to the configuration registers are protected at the higher layer ++ * by 'pci_lock' in drivers/pci/access.c ++ */ ++static void __iomem *iproc_pcie_map_cfg_bus(struct iproc_pcie *pcie, ++ int busno, unsigned int devfn, ++ int where) ++{ ++ u32 slot = PCI_SLOT(devfn); ++ u32 fn = PCI_FUNC(devfn); ++ u32 val; ++ ++ /* root complex access */ ++ if (busno == 0) { ++ if (slot >= 1) ++ return NULL; ++ writel(where & CFG_IND_ADDR_MASK, ++ pcie->base + CFG_IND_ADDR_OFFSET); ++ return (pcie->base + CFG_IND_DATA_OFFSET); ++ } ++ ++ if (fn > 1) ++ return NULL; ++ ++ /* EP device access */ ++ val = (busno << CFG_ADDR_BUS_NUM_SHIFT) | ++ (slot << CFG_ADDR_DEV_NUM_SHIFT) | ++ (fn << CFG_ADDR_FUNC_NUM_SHIFT) | ++ (where & CFG_ADDR_REG_NUM_MASK) | ++ (1 & CFG_ADDR_CFG_TYPE_MASK); ++ writel(val, pcie->base + CFG_ADDR_OFFSET); ++ ++ return (pcie->base + CFG_DATA_OFFSET); ++} ++ ++static void __iomem *iproc_pcie_bus_map_cfg_bus(struct pci_bus *bus, ++ unsigned int devfn, ++ int where) ++{ ++ return iproc_pcie_map_cfg_bus(bus->sysdata, bus->number, devfn, ++ where); ++} ++ ++static int iproc_pci_raw_config_read32(struct iproc_pcie *pcie, ++ unsigned int devfn, int where, ++ int size, u32 *val) ++{ ++ void __iomem *addr; ++ ++ addr = iproc_pcie_map_cfg_bus(pcie, 0, devfn, where & ~0x3); ++ if (!addr) { ++ *val = ~0; ++ return PCIBIOS_DEVICE_NOT_FOUND; ++ } ++ ++ *val = readl(addr); ++ ++ if (size <= 2) ++ *val = (*val >> (8 * (where & 3))) & ((1 << (size * 8)) - 1); ++ ++ return PCIBIOS_SUCCESSFUL; ++} ++ ++static int iproc_pci_raw_config_write32(struct iproc_pcie *pcie, ++ unsigned int devfn, int where, ++ int size, u32 val) ++{ ++ void __iomem *addr; ++ u32 mask, tmp; ++ ++ addr = iproc_pcie_map_cfg_bus(pcie, 0, devfn, where & ~0x3); ++ if (!addr) ++ return PCIBIOS_DEVICE_NOT_FOUND; ++ ++ if (size == 4) { ++ writel(val, addr); ++ return PCIBIOS_SUCCESSFUL; ++ } ++ ++ mask = ~(((1 << (size * 8)) - 1) << ((where & 0x3) * 8)); ++ tmp = readl(addr) & mask; ++ tmp |= val << ((where & 0x3) * 8); ++ writel(tmp, addr); ++ ++ return PCIBIOS_SUCCESSFUL; ++} ++ ++ ++static struct pci_ops iproc_pcie_ops = { ++ .map_bus = iproc_pcie_bus_map_cfg_bus, ++ .read = pci_generic_config_read32, ++ .write = pci_generic_config_write32, ++}; ++ ++static inline void pcie_wrong_gen2_wa(struct iproc_pcie * pcie) ++{ ++ xgs_phy_wr_reg(pcie->mdio_phy, 0x8633, 0x190); ++ xgs_phy_wr_reg(pcie->mdio_phy, 0x8639, 0x191); ++} ++ ++static void iproc_pcie_reset(struct iproc_pcie *pcie) ++{ ++ /* configured as RC and send a downstream reset */ ++ writel(0, pcie->base + CLK_CONTROL_OFFSET); ++ mdelay(1); ++ writel(1, pcie->base + CLK_CONTROL_OFFSET); ++ msleep(100); ++} ++ ++static void pcie_rc_wa(struct iproc_pcie * pcie) ++{ ++ /* Setting for PCIe Serdes PLL output */ ++ xgs_phy_wr_reg(pcie->mdio_phy, 0x2103, 0x2b1c); ++ xgs_phy_wr_reg(pcie->mdio_phy, 0x1300, 0x000b); ++ msleep(100); ++} ++ ++/* currently for Greyhound */ ++static void pcie_tx_de_emp_wa(struct iproc_pcie * pcie) ++{ ++ u32 tmp32; ++ ++ iproc_pci_raw_config_read32(pcie, 0, 0xdc, 4, &tmp32); ++ tmp32 |= (0x1 << 6); ++ iproc_pci_raw_config_write32(pcie, 0, 0xdc, 4, tmp32); ++ iproc_pci_raw_config_read32(pcie, 0, 0xdc, 4, &tmp32); ++} ++ ++static const struct pcie_sw_wa pcie_wa_tab[] = { ++ { ++ .wa_name = "pcie_wrong_gen2", ++ .wa_func = pcie_wrong_gen2_wa, ++ }, ++ { ++ .wa_name = "pcie_rc", ++ .wa_func = pcie_rc_wa, ++ }, ++ { ++ .wa_name = "pcie_perst", ++ .wa_func = iproc_pcie_reset, ++ }, ++ { ++ .wa_name = "pcie_tx_de_emp", ++ .wa_func = pcie_tx_de_emp_wa, ++ }, ++}; ++ ++/* ++ * Run the specific pcie workaround function specified in "pcie_wa_tab", ++ * if "wa_name" is found on the "wa-list" property of pcie node. ++ */ ++static void pcie_sw_wa_func(const char *wa_name, struct iproc_pcie *pcie) ++{ ++ struct device_node *np = pcie->dev->of_node; ++ int wa_num_max = ARRAY_SIZE(pcie_wa_tab); ++ int wa_num = of_property_count_strings(np, "wa-list"); ++ const char *wa_name_dts; ++ int i; ++ ++ /* workaround required? */ ++ if (wa_num <= 0) ++ return; ++ ++ for (i = 0; i < wa_num; i++) { ++ of_property_read_string_index(np, "wa-list", i, &wa_name_dts); ++ if (!strcmp(wa_name, wa_name_dts)) ++ break; ++ } ++ ++ /* The wa_name is found on wa-list of pcie node? */ ++ if (i == wa_num) ++ return; ++ ++ for (i = 0; i < wa_num_max; i++) ++ if (!strcmp(pcie_wa_tab[i].wa_name, wa_name)) { ++ pcie_wa_tab[i].wa_func(pcie); ++ break; ++ } ++} ++ ++static int iproc_pcie_check_link(struct iproc_pcie *pcie) ++{ ++ struct device *dev = pcie->dev; ++ u32 hdr_type, link_ctrl, link_status, class; ++ bool link_is_active = false; ++ ++ /* make sure we are not in EP mode */ ++ iproc_pci_raw_config_read32(pcie, 0, PCI_HEADER_TYPE, 1, &hdr_type); ++ if ((hdr_type & 0x7f) != PCI_HEADER_TYPE_BRIDGE) { ++ dev_err(dev, "in EP mode, hdr=%#02x\n", hdr_type); ++ return -EFAULT; ++ } ++ ++ /* SB2/GH/HR3/GH2 */ ++ pcie_sw_wa_func("pcie_rc", pcie); ++ ++ /* GH/HR3/GH2 */ ++ pcie_sw_wa_func("pcie_perst", pcie); ++ ++ /* Not enabled in DT file currently */ ++ pcie_sw_wa_func("pcie_tx_de_emp", pcie); ++ ++ /* Force class to PCI_CLASS_BRIDGE_PCI (0x0604) */ ++#define PCI_BRIDGE_CTRL_REG_OFFSET 0x43c ++#define PCI_CLASS_BRIDGE_MASK 0xffff00 ++#define PCI_CLASS_BRIDGE_SHIFT 8 ++ iproc_pci_raw_config_read32(pcie, 0, PCI_BRIDGE_CTRL_REG_OFFSET, ++ 4, &class); ++ class &= ~PCI_CLASS_BRIDGE_MASK; ++ class |= (PCI_CLASS_BRIDGE_PCI << PCI_CLASS_BRIDGE_SHIFT); ++ iproc_pci_raw_config_write32(pcie, 0, PCI_BRIDGE_CTRL_REG_OFFSET, ++ 4, class); ++ ++ /* check link status to see if link is active */ ++ iproc_pci_raw_config_read32(pcie, 0, IPROC_PCI_EXP_CAP + PCI_EXP_LNKSTA, ++ 2, &link_status); ++ if (link_status & PCI_EXP_LNKSTA_NLW) ++ link_is_active = true; ++ ++ if (!link_is_active) { ++ /* try GEN 1 link speed */ ++#define PCI_TARGET_LINK_SPEED_MASK 0xf ++#define PCI_TARGET_LINK_SPEED_GEN2 0x2 ++#define PCI_TARGET_LINK_SPEED_GEN1 0x1 ++ iproc_pci_raw_config_read32(pcie, 0, ++ IPROC_PCI_EXP_CAP + PCI_EXP_LNKCTL2, ++ 4, &link_ctrl); ++ if ((link_ctrl & PCI_TARGET_LINK_SPEED_MASK) == ++ PCI_TARGET_LINK_SPEED_GEN2) { ++ link_ctrl &= ~PCI_TARGET_LINK_SPEED_MASK; ++ link_ctrl |= PCI_TARGET_LINK_SPEED_GEN1; ++ iproc_pci_raw_config_write32(pcie, 0, ++ IPROC_PCI_EXP_CAP + PCI_EXP_LNKCTL2, ++ 4, link_ctrl); ++ msleep(100); ++ ++ iproc_pci_raw_config_read32(pcie, 0, ++ IPROC_PCI_EXP_CAP + PCI_EXP_LNKSTA, ++ 2, &link_status); ++ if (link_status & PCI_EXP_LNKSTA_NLW) ++ link_is_active = true; ++ } ++ } ++ ++ dev_info(pcie->dev, "link: %s\n", link_is_active ? "UP" : "DOWN"); ++ ++ return link_is_active ? 0 : -ENODEV; ++} ++ ++static void iproc_pcie_enable(struct iproc_pcie *pcie) ++{ ++ writel(SYS_RC_INTX_MASK, pcie->base + SYS_RC_INTX_EN); ++} ++ ++static int iproc_pcie_msi_enable(struct iproc_pcie *pcie) ++{ ++ struct device_node *msi_node; ++ ++ msi_node = of_parse_phandle(pcie->dev->of_node, "msi-parent", 0); ++ if (!msi_node) ++ return -ENODEV; ++ ++ /* ++ * If another MSI controller is being used, the call below should fail ++ * but that is okay ++ */ ++ return iproc_msi_init(pcie, msi_node); ++} ++ ++static void iproc_pcie_msi_disable(struct iproc_pcie *pcie) ++{ ++ iproc_msi_exit(pcie); ++} ++ ++static int iproc_pcie_setup(struct iproc_pcie *pcie, struct list_head *res) ++{ ++ struct device *dev; ++ int ret; ++ struct pci_host_bridge *host = pci_host_bridge_from_priv(pcie); ++ ++ if (!pcie || !pcie->dev || !pcie->base) ++ return -EINVAL; ++ ++ dev = pcie->dev; ++ ++ ret = devm_request_pci_bus_resources(dev, res); ++ if (ret) ++ return ret; ++ ++ ret = phy_init(pcie->phy); ++ if (ret) { ++ dev_err(pcie->dev, "unable to initialize PCIe PHY\n"); ++ return ret; ++ } ++ ++ ret = phy_power_on(pcie->phy); ++ if (ret) { ++ dev_err(pcie->dev, "unable to power on PCIe PHY\n"); ++ goto err_exit_phy; ++ } ++ ++ iproc_pcie_reset(pcie); ++ ++ ret = iproc_pcie_check_link(pcie); ++ if (ret) { ++ dev_err(pcie->dev, "no PCIe EP device detected\n"); ++ goto err_power_off_phy; ++ } ++ ++ iproc_pcie_enable(pcie); ++ ++ if (IS_ENABLED(CONFIG_PCI_MSI)) ++ if (iproc_pcie_msi_enable(pcie)) ++ dev_info(pcie->dev, "not using iProc MSI\n"); ++ ++ list_splice_init(res, &host->windows); ++ host->busnr = 0; ++ host->dev.parent = dev; ++ host->ops = &iproc_pcie_ops; ++ host->sysdata = pcie; ++ host->map_irq = pcie->map_irq; ++ host->swizzle_irq = pci_common_swizzle; ++ ++ ret = pci_host_probe(host); ++ if (ret < 0) { ++ dev_err(dev, "failed to scan host: %d\n", ret); ++ goto err_power_off_phy; ++ } ++ ++ return 0; ++ ++err_power_off_phy: ++ phy_power_off(pcie->phy); ++err_exit_phy: ++ phy_exit(pcie->phy); ++ ++ return ret; ++} ++ ++static int iproc_pcie_probe(struct platform_device *pdev) ++{ ++ struct iproc_pcie *pcie; ++ struct device_node *np = pdev->dev.of_node; ++ struct device_node *mdio_phy_np = NULL; ++ struct resource reg; ++ struct pci_host_bridge *bridge; ++ int ret; ++ ++ bridge = devm_pci_alloc_host_bridge(&pdev->dev, sizeof(*pcie)); ++ if (!bridge) ++ return -ENOMEM; ++ ++ pcie = pci_host_bridge_priv(bridge); ++ ++ pcie->dev = &pdev->dev; ++ platform_set_drvdata(pdev, pcie); ++ ++ pcie->type = (enum iproc_pcie_type)np->data; ++ ++ ret = of_address_to_resource(np, 0, ®); ++ if (ret < 0) { ++ dev_err(pcie->dev, "unable to obtain controller resources\n"); ++ return ret; ++ } ++ ++ pcie->base = devm_ioremap_resource(pcie->dev, ®); ++ if (IS_ERR(pcie->base)) ++ return PTR_ERR(pcie->base); ++ ++ /* MSI message base addr*/ ++ pcie->base_addr = reg.start; ++ ++ /* PHY use is optional */ ++ pcie->phy = devm_phy_get(&pdev->dev, "pcie-phy"); ++ if (IS_ERR(pcie->phy)) { ++ if (PTR_ERR(pcie->phy) == -EPROBE_DEFER) ++ return -EPROBE_DEFER; ++ pcie->phy = NULL; ++ } ++ ++ /* PHY controlled through MDIO for HX4/KT2 */ ++ mdio_phy_np = of_parse_phandle(np, "mdio-phy-handle", 0); ++ if (mdio_phy_np) ++ pcie->mdio_phy = of_phy_find_device(mdio_phy_np); ++ ++ /* HX4/KT2/HR2 */ ++ pcie_sw_wa_func("pcie_wrong_gen2", pcie); ++ ++ pcie->map_irq = of_irq_parse_and_map_pci; ++ ++ ret = iproc_pcie_setup(pcie, &bridge->windows); ++ if (ret) ++ dev_err(pcie->dev, "PCIe controller setup failed\n"); ++ ++ return ret; ++} ++ ++static void iproc_pcie_remove(struct platform_device *pdev) ++{ ++ struct iproc_pcie *pcie = platform_get_drvdata(pdev); ++ struct pci_host_bridge *host = pci_host_bridge_from_priv(pcie); ++ ++ pci_stop_root_bus(host->bus); ++ pci_remove_root_bus(host->bus); ++ ++ iproc_pcie_msi_disable(pcie); ++ ++ phy_power_off(pcie->phy); ++ phy_exit(pcie->phy); ++} ++ ++static const struct of_device_id iproc_pcie_of_match_table[] = { ++ { ++ .compatible = "brcm,iproc-pcie", ++ .data = (int *)IPROC_PCIE_PAXB, ++ }, ++ { /* sentinel */ } ++}; ++MODULE_DEVICE_TABLE(of, iproc_pcie_of_match_table); ++ ++static struct platform_driver iproc_pcie_pltfm_driver = { ++ .driver = { ++ .name = "iproc-pcie", ++ .of_match_table = of_match_ptr(iproc_pcie_of_match_table), ++ }, ++ .probe = iproc_pcie_probe, ++ .remove = iproc_pcie_remove, ++}; ++ ++module_platform_driver(iproc_pcie_pltfm_driver); ++ ++MODULE_DESCRIPTION("Broadcom XGS iProc PCIe driver"); ++MODULE_LICENSE("GPL v2"); +-- +2.47.1 + diff --git a/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-15-spi-spi-iproc-qspi-xgs-iproc-support.patch b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-15-spi-spi-iproc-qspi-xgs-iproc-support.patch new file mode 100644 index 00000000..c944e69a --- /dev/null +++ b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-15-spi-spi-iproc-qspi-xgs-iproc-support.patch @@ -0,0 +1,405 @@ +From a468e224825b50dfff7aa2b31ecd5eeecc7eca34 Mon Sep 17 00:00:00 2001 +From: Jonas Gorski +Date: Thu, 7 Oct 2021 10:04:16 +0200 +Subject: [PATCH 15/21] spi: spi-iproc-qspi: xgs-iproc support + +--- + drivers/spi/Kconfig | 4 +- + drivers/spi/spi-bcm-qspi.c | 172 +++++++++++++++++++++++------------ + drivers/spi/spi-bcm-qspi.h | 5 +- + drivers/spi/spi-iproc-qspi.c | 1 + + 4 files changed, 119 insertions(+), 63 deletions(-) + +diff --git a/drivers/spi/Kconfig b/drivers/spi/Kconfig +index 823797217404..1eef41ab2d58 100644 +--- a/drivers/spi/Kconfig ++++ b/drivers/spi/Kconfig +@@ -208,8 +208,8 @@ config SPI_BCM63XX_HSSPI + config SPI_BCM_QSPI + tristate "Broadcom BSPI and MSPI controller support" + depends on ARCH_BRCMSTB || ARCH_BCM || ARCH_BCM_IPROC || \ +- BMIPS_GENERIC || COMPILE_TEST +- default ARCH_BCM_IPROC ++ ARCH_XGS_IPROC || BMIPS_GENERIC || COMPILE_TEST ++ default ARCH_BCM_IPROC || ARCH_XGS_IPROC + help + Enables support for the Broadcom SPI flash and MSPI controller. + Select this option for any one of BRCMSTB, iProc NSP and NS2 SoCs +diff --git a/drivers/spi/spi-bcm-qspi.c b/drivers/spi/spi-bcm-qspi.c +index cfdaa5eaec76..453aafd2634d 100644 +--- a/drivers/spi/spi-bcm-qspi.c ++++ b/drivers/spi/spi-bcm-qspi.c +@@ -78,7 +78,7 @@ + #define BSPI_BPP_MODE_SELECT_MASK BIT(8) + #define BSPI_BPP_ADDR_SELECT_MASK BIT(16) + +-#define BSPI_READ_LENGTH 256 ++//#define BSPI_READ_LENGTH 512 + + /* MSPI register offsets */ + #define MSPI_SPCR0_LSB 0x000 +@@ -130,6 +130,8 @@ + + #define MSPI_MSPI_STATUS_SPIF BIT(0) + ++#define CRU_CTRL_REG 0x0 ++ + #define INTR_BASE_BIT_SHIFT 0x02 + #define INTR_COUNT 0x07 + +@@ -191,6 +193,7 @@ enum base_type { + MSPI, + BSPI, + CHIP_SELECT, ++ CRU_CTRL, + BASEMAX, + }; + +@@ -215,12 +218,14 @@ struct bcm_qspi_dev_id { + struct qspi_trans { + struct spi_transfer *trans; + int byte; ++ int slots; + bool mspi_last_trans; + }; + + struct bcm_qspi { + struct platform_device *pdev; + struct spi_controller *host; ++ struct spi_device *spi_dev; + struct clk *clk; + u32 base_clk; + u32 max_speed_hz; +@@ -516,11 +521,12 @@ static int bcm_qspi_bspi_set_mode(struct bcm_qspi *qspi, + qspi->xfer_mode.flex_mode = true; + + if (!bcm_qspi_bspi_ver_three(qspi)) { +- u32 val, mask; ++ u32 val, mask, endian; + +- val = bcm_qspi_read(qspi, BSPI, BSPI_STRAP_OVERRIDE_CTRL); ++ val = qspi->s3_strap_override_ctrl; + mask = BSPI_STRAP_OVERRIDE_CTRL_OVERRIDE; +- if (val & mask || qspi->s3_strap_override_ctrl & mask) { ++ endian = BSPI_STRAP_OVERRIDE_CTRL_ENDAIN_MODE; ++ if ((val & mask) && (val & ~(mask | endian))) { + qspi->xfer_mode.flex_mode = false; + bcm_qspi_write(qspi, BSPI, BSPI_FLEX_MODE_ENABLE, 0); + error = bcm_qspi_bspi_set_override(qspi, op, hp); +@@ -706,6 +712,8 @@ static void bcm_qspi_update_parms(struct bcm_qspi *qspi, + static int bcm_qspi_setup(struct spi_device *spi) + { + struct bcm_qspi_parms *xp; ++ struct bcm_qspi *qspi = spi_controller_get_devdata(spi->controller); ++ u32 tmp; + + if (spi->bits_per_word > 64) + return -EINVAL; +@@ -717,8 +725,20 @@ static int bcm_qspi_setup(struct spi_device *spi) + return -ENOMEM; + spi_set_ctldata(spi, xp); + } +- xp->speed_hz = spi->max_speed_hz; ++ + xp->mode = spi->mode; ++ xp->speed_hz = spi->max_speed_hz; ++ ++ /* Set BSPI clock rate */ ++ tmp = bcm_qspi_read(qspi, CRU_CTRL, CRU_CTRL_REG); ++ tmp &= ~0x6; ++ if (spi->max_speed_hz >= 62500000) ++ tmp |= 0x6; ++ else if (spi->max_speed_hz >= 50000000) ++ tmp |= 0x2; ++ else if (spi->max_speed_hz >= 31250000) ++ tmp |= 0x4; ++ bcm_qspi_write(qspi, CRU_CTRL, CRU_CTRL_REG, tmp); + + if (spi->bits_per_word) + xp->bits_per_word = spi->bits_per_word; +@@ -837,19 +857,21 @@ static void read_from_hw(struct bcm_qspi *qspi, int slots) + tp = qspi->trans_pos; + + for (slot = 0; slot < slots; slot++) { ++ if (tp.trans->rx_buf) { + if (tp.trans->bits_per_word <= 8) { + u8 *buf = tp.trans->rx_buf; + + if (buf) +- buf[tp.byte] = read_rxram_slot_u8(qspi, slot); ++ buf[tp.byte] = ++ read_rxram_slot_u8(qspi, slot); + dev_dbg(&qspi->pdev->dev, "RD %02x\n", + buf ? buf[tp.byte] : 0x0); + } else if (tp.trans->bits_per_word <= 16) { + u16 *buf = tp.trans->rx_buf; + + if (buf) +- buf[tp.byte / 2] = read_rxram_slot_u16(qspi, +- slot); ++ buf[tp.byte / 2] = ++ read_rxram_slot_u16(qspi, slot); + dev_dbg(&qspi->pdev->dev, "RD %04x\n", + buf ? buf[tp.byte / 2] : 0x0); + } else if (tp.trans->bits_per_word <= 32) { +@@ -871,6 +893,7 @@ static void read_from_hw(struct bcm_qspi *qspi, int slots) + buf ? buf[tp.byte / 8] : 0x0); + + ++ } + } + + update_qspi_trans_byte_count(qspi, &tp, +@@ -996,6 +1019,9 @@ static int write_to_hw(struct bcm_qspi *qspi, struct spi_device *spi) + slot++; + } + ++ /* save slot number for read_from_hw() */ ++ qspi->trans_pos.slots = slot; ++ + if (!slot) { + dev_err(&qspi->pdev->dev, "%s: no data to send?", __func__); + goto done; +@@ -1036,9 +1062,9 @@ static int bcm_qspi_bspi_exec_mem_op(struct spi_device *spi, + const struct spi_mem_op *op) + { + struct bcm_qspi *qspi = spi_controller_get_devdata(spi->controller); +- u32 addr = 0, len, rdlen, len_words, from = 0; ++ u32 addr = 0, len, len_words, from = 0; + int ret = 0; +- unsigned long timeo = msecs_to_jiffies(100); ++ unsigned long timeo = msecs_to_jiffies(1000); + struct bcm_qspi_soc_intc *soc_intc = qspi->soc_intc; + + if (bcm_qspi_bspi_ver_three(qspi)) +@@ -1073,47 +1099,37 @@ static int bcm_qspi_bspi_exec_mem_op(struct spi_device *spi, + * into RAF buffer read lengths + */ + len = op->data.nbytes; +- qspi->bspi_rf_op_idx = 0; + +- do { +- if (len > BSPI_READ_LENGTH) +- rdlen = BSPI_READ_LENGTH; +- else +- rdlen = len; +- +- reinit_completion(&qspi->bspi_done); +- bcm_qspi_enable_bspi(qspi); +- len_words = (rdlen + 3) >> 2; +- qspi->bspi_rf_op = op; +- qspi->bspi_rf_op_status = 0; +- qspi->bspi_rf_op_len = rdlen; +- dev_dbg(&qspi->pdev->dev, +- "bspi xfr addr 0x%x len 0x%x", addr, rdlen); +- bcm_qspi_write(qspi, BSPI, BSPI_RAF_START_ADDR, addr); +- bcm_qspi_write(qspi, BSPI, BSPI_RAF_NUM_WORDS, len_words); +- bcm_qspi_write(qspi, BSPI, BSPI_RAF_WATERMARK, 0); +- if (qspi->soc_intc) { +- /* +- * clear soc MSPI and BSPI interrupts and enable +- * BSPI interrupts. +- */ +- soc_intc->bcm_qspi_int_ack(soc_intc, MSPI_BSPI_DONE); +- soc_intc->bcm_qspi_int_set(soc_intc, BSPI_DONE, true); +- } ++ if (bcm_qspi_bspi_ver_three(qspi) == true) ++ addr = (addr + 0xc00000) & 0xffffff; + +- /* Must flush previous writes before starting BSPI operation */ +- mb(); +- bcm_qspi_bspi_lr_start(qspi); +- if (!wait_for_completion_timeout(&qspi->bspi_done, timeo)) { +- dev_err(&qspi->pdev->dev, "timeout waiting for BSPI\n"); +- ret = -ETIMEDOUT; +- break; +- } ++ reinit_completion(&qspi->bspi_done); ++ bcm_qspi_enable_bspi(qspi); ++ len_words = (len + 3) >> 2; ++ qspi->bspi_rf_op = op; ++ qspi->bspi_rf_op_status = 0; ++ qspi->bspi_rf_op_idx = 0; ++ qspi->bspi_rf_op_len = len; ++ dev_dbg(&qspi->pdev->dev, "bspi xfr addr 0x%x len 0x%x", addr, len); ++ bcm_qspi_write(qspi, BSPI, BSPI_RAF_START_ADDR, addr); ++ bcm_qspi_write(qspi, BSPI, BSPI_RAF_NUM_WORDS, len_words); ++ bcm_qspi_write(qspi, BSPI, BSPI_RAF_WATERMARK, 0); ++ if (qspi->soc_intc) { ++ /* ++ * clear soc MSPI and BSPI interrupts and enable ++ * BSPI interrupts. ++ */ ++ soc_intc->bcm_qspi_int_ack(soc_intc, MSPI_BSPI_DONE); ++ soc_intc->bcm_qspi_int_set(soc_intc, BSPI_DONE, true); ++ } + +- /* set msg return length */ +- addr += rdlen; +- len -= rdlen; +- } while (len); ++ /* Must flush previous writes before starting BSPI operation */ ++ mb(); ++ bcm_qspi_bspi_lr_start(qspi); ++ if (!wait_for_completion_timeout(&qspi->bspi_done, timeo)) { ++ dev_err(&qspi->pdev->dev, "timeout waiting for BSPI\n"); ++ ret = -ETIMEDOUT; ++ } + + return ret; + } +@@ -1123,25 +1139,23 @@ static int bcm_qspi_transfer_one(struct spi_controller *host, + struct spi_transfer *trans) + { + struct bcm_qspi *qspi = spi_controller_get_devdata(host); +- int slots; +- unsigned long timeo = msecs_to_jiffies(100); ++ unsigned long timeo = msecs_to_jiffies(1000); + + if (!spi_get_csgpiod(spi, 0)) + bcm_qspi_chip_select(qspi, spi_get_chipselect(spi, 0)); + qspi->trans_pos.trans = trans; + qspi->trans_pos.byte = 0; ++ qspi->spi_dev = spi; + +- while (qspi->trans_pos.byte < trans->len) { + reinit_completion(&qspi->mspi_done); + +- slots = write_to_hw(qspi, spi); ++ write_to_hw(qspi, spi); ++ + if (!wait_for_completion_timeout(&qspi->mspi_done, timeo)) { + dev_err(&qspi->pdev->dev, "timeout waiting for MSPI\n"); + return -ETIMEDOUT; + } + +- read_from_hw(qspi, slots); +- } + bcm_qspi_enable_bspi(qspi); + + return 0; +@@ -1255,7 +1269,24 @@ static irqreturn_t bcm_qspi_mspi_l2_isr(int irq, void *dev_id) + bcm_qspi_write(qspi, MSPI, MSPI_MSPI_STATUS, status); + if (qspi->soc_intc) + soc_intc->bcm_qspi_int_ack(soc_intc, MSPI_DONE); ++ ++ if (qspi->trans_pos.trans->tx_buf && ++ (qspi->trans_pos.trans->len <= MSPI_NUM_CDRAM)) { + complete(&qspi->mspi_done); ++ spi_finalize_current_transfer(qspi->host); ++ return IRQ_HANDLED; ++ } ++ ++ read_from_hw(qspi, qspi->trans_pos.slots); ++ ++ if (qspi->trans_pos.trans) { ++ write_to_hw(qspi, qspi->spi_dev); ++ } ++ else { ++ complete(&qspi->mspi_done); ++ spi_finalize_current_transfer(qspi->host); ++ } ++ + return IRQ_HANDLED; + } + +@@ -1274,6 +1305,8 @@ static irqreturn_t bcm_qspi_bspi_lr_l2_isr(int irq, void *dev_id) + if (qspi->bspi_rf_op_len == 0) { + qspi->bspi_rf_op = NULL; + if (qspi->soc_intc) { ++ /* Ack BSPI done interrupt */ ++ soc_intc->bcm_qspi_int_ack(soc_intc, BSPI_DONE); + /* disable soc BSPI interrupt */ + soc_intc->bcm_qspi_int_set(soc_intc, BSPI_DONE, + false); +@@ -1285,11 +1318,12 @@ static irqreturn_t bcm_qspi_bspi_lr_l2_isr(int irq, void *dev_id) + bcm_qspi_bspi_lr_clear(qspi); + else + bcm_qspi_bspi_flush_prefetch_buffers(qspi); +- } +- ++ } else { + if (qspi->soc_intc) +- /* clear soc BSPI interrupt */ +- soc_intc->bcm_qspi_int_ack(soc_intc, BSPI_DONE); ++ /* Ack FIFO full interrupt */ ++ soc_intc->bcm_qspi_int_ack(soc_intc, ++ BSPI_FIFO_FULL); ++ } + } + + status &= INTR_BSPI_LR_SESSION_DONE_MASK; +@@ -1533,8 +1567,6 @@ int bcm_qspi_probe(struct platform_device *pdev, + host->num_chipselect = NUM_CHIPSELECT; + host->use_gpio_descriptors = true; + +- qspi->big_endian = of_device_is_big_endian(dev->of_node); +- + if (!of_property_read_u32(dev->of_node, "num-cs", &val)) + host->num_chipselect = val; + +@@ -1566,6 +1598,26 @@ int bcm_qspi_probe(struct platform_device *pdev, + return PTR_ERR(qspi->base[CHIP_SELECT]); + } + ++ /* iProc BSPI clock is set through CRU control */ ++ res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "cru_ctrl"); ++ if (res) { ++ qspi->base[CRU_CTRL] = devm_ioremap_resource(dev, res); ++ if (IS_ERR(qspi->base[CRU_CTRL])) { ++ ret = PTR_ERR(qspi->base[CRU_CTRL]); ++ goto qspi_probe_err; ++ } ++ } ++ ++ qspi->big_endian = of_device_is_big_endian(dev->of_node); ++ ++ val = bcm_qspi_read(qspi, BSPI, BSPI_STRAP_OVERRIDE_CTRL); ++ if (qspi->big_endian == 0 && IS_ENABLED(CONFIG_CPU_BIG_ENDIAN)) { ++ val |= BSPI_STRAP_OVERRIDE_CTRL_ENDAIN_MODE; ++ val |= BSPI_STRAP_OVERRIDE_CTRL_OVERRIDE; ++ bcm_qspi_write(qspi, BSPI, BSPI_STRAP_OVERRIDE_CTRL, val); ++ } ++ qspi->s3_strap_override_ctrl = val; ++ + qspi->dev_ids = kcalloc(num_irqs, sizeof(struct bcm_qspi_dev_id), + GFP_KERNEL); + if (!qspi->dev_ids) +diff --git a/drivers/spi/spi-bcm-qspi.h b/drivers/spi/spi-bcm-qspi.h +index 3d7c359c0239..4e8e6e3df0c5 100644 +--- a/drivers/spi/spi-bcm-qspi.h ++++ b/drivers/spi/spi-bcm-qspi.h +@@ -48,7 +48,8 @@ enum { + MSPI_DONE = 0x1, + BSPI_DONE = 0x2, + BSPI_ERR = 0x4, +- MSPI_BSPI_DONE = 0x7 ++ MSPI_BSPI_DONE = 0x7, ++ BSPI_FIFO_FULL = 0x8 + }; + + struct bcm_qspi_soc_intc { +@@ -84,6 +85,8 @@ static inline u32 get_qspi_mask(int type) + return INTR_MSPI_DONE_MASK; + case BSPI_DONE: + return BSPI_LR_INTERRUPTS_ALL; ++ case BSPI_FIFO_FULL: ++ return INTR_BSPI_LR_FULLNESS_REACHED_MASK; + case MSPI_BSPI_DONE: + return QSPI_INTERRUPTS_ALL; + case BSPI_ERR: +diff --git a/drivers/spi/spi-iproc-qspi.c b/drivers/spi/spi-iproc-qspi.c +index 39ee2b43a516..4efd5e3c658b 100644 +--- a/drivers/spi/spi-iproc-qspi.c ++++ b/drivers/spi/spi-iproc-qspi.c +@@ -132,6 +132,7 @@ static void bcm_iproc_remove(struct platform_device *pdev) + static const struct of_device_id bcm_iproc_of_match[] = { + { .compatible = "brcm,spi-nsp-qspi" }, + { .compatible = "brcm,spi-ns2-qspi" }, ++ { .compatible = "brcm,spi-xgs-iproc-qspi" }, + {}, + }; + MODULE_DEVICE_TABLE(of, bcm_iproc_of_match); +-- +2.47.1 + diff --git a/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-16-usb-ipproc-xgs-hack.patch b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-16-usb-ipproc-xgs-hack.patch new file mode 100644 index 00000000..37af6a19 --- /dev/null +++ b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-16-usb-ipproc-xgs-hack.patch @@ -0,0 +1,185 @@ +From 8abfdd7ae7037125b7bb98112c2e824e5478091a Mon Sep 17 00:00:00 2001 +From: Jonas Gorski +Date: Thu, 7 Oct 2021 10:05:17 +0200 +Subject: [PATCH 16/21] usb: ipproc-xgs hack + +--- + drivers/usb/host/Kconfig | 14 ++++++++++++++ + drivers/usb/host/ehci-platform.c | 22 ++++++++++++++++++++++ + drivers/usb/host/ohci-platform.c | 28 ++++++++++++++++++++++++++++ + include/linux/usb/iproc_usb.h | 23 +++++++++++++++++++++++ + 4 files changed, 87 insertions(+) + create mode 100644 include/linux/usb/iproc_usb.h + +diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig +index d011d6c753ed..6f4dc18df568 100644 +--- a/drivers/usb/host/Kconfig ++++ b/drivers/usb/host/Kconfig +@@ -258,6 +258,13 @@ config USB_EHCI_HCD_STI + Enable support for the on-chip EHCI controller found on + STMicroelectronics consumer electronics SoC's. + ++config USB_EHCI_XGS_IPROC ++ bool "BRCM XGS iProc EHCI patch" ++ depends on (ARCH_XGS_IPROC && USB_EHCI_HCD_PLATFORM) ++ default n ++ help ++ This option is for BRCM XGS iProc EHCI patch ++ + config USB_EHCI_HCD_AT91 + tristate "Support for Atmel on-chip EHCI USB controller" + depends on USB_EHCI_HCD && (ARCH_AT91 || COMPILE_TEST) +@@ -559,6 +566,13 @@ config USB_OHCI_HCD_PLATFORM + + If unsure, say N. + ++config USB_OHCI_XGS_IPROC ++ bool "BRCM XGS iProc OHCI patch" ++ depends on (ARCH_XGS_IPROC && USB_OHCI_HCD_PLATFORM) ++ default n ++ help ++ This option is for BRCM XGS iProc OHCI patch ++ + config USB_OCTEON_OHCI + bool "Octeon on-chip OHCI support (DEPRECATED)" + depends on CAVIUM_OCTEON_SOC +diff --git a/drivers/usb/host/ehci-platform.c b/drivers/usb/host/ehci-platform.c +index 98b073185e1c..2acc4c5a9917 100644 +--- a/drivers/usb/host/ehci-platform.c ++++ b/drivers/usb/host/ehci-platform.c +@@ -44,6 +44,11 @@ + + #define BCM_USB_FIFO_THRESHOLD 0x00800040 + ++#if IS_ENABLED(CONFIG_USB_EHCI_XGS_IPROC) ++#include ++#include ++#endif ++ + struct ehci_platform_priv { + struct clk *clks[EHCI_MAX_CLKS]; + struct reset_control *rsts; +@@ -241,10 +246,24 @@ static int ehci_platform_probe(struct platform_device *dev) + struct ehci_platform_priv *priv; + struct ehci_hcd *ehci; + int err, irq, clk = 0; ++ struct usb_phy __maybe_unused *phy; + + if (usb_disabled()) + return -ENODEV; + ++#if CONFIG_USB_EHCI_XGS_IPROC ++ phy = devm_usb_get_phy_by_phandle(&dev->dev, "usb-phy", 0); ++ if (IS_ERR(phy)) { ++ dev_err(&dev->dev, "unable to find transceiver\n"); ++ return PTR_ERR(phy); ++ } ++ ++ if (phy->flags != IPROC_USB_MODE_HOST) ++ return -ENODEV; ++ ++ usb_phy_init(phy); ++#endif ++ + /* + * Use reasonable defaults so platforms don't have to provide these + * with DT probing on ARM. +@@ -369,6 +388,9 @@ static int ehci_platform_probe(struct platform_device *dev) + + hcd->tpl_support = of_usb_host_tpl_support(dev->dev.of_node); + ++#if CONFIG_USB_EHCI_XGS_IPROC ++ hcd->usb_phy = phy; ++#endif + err = usb_add_hcd(hcd, irq, IRQF_SHARED); + if (err) + goto err_power; +diff --git a/drivers/usb/host/ohci-platform.c b/drivers/usb/host/ohci-platform.c +index 4a75507325dd..535b89bcd6d1 100644 +--- a/drivers/usb/host/ohci-platform.c ++++ b/drivers/usb/host/ohci-platform.c +@@ -36,6 +36,13 @@ + #define OHCI_MAX_CLKS 4 + #define hcd_to_ohci_priv(h) ((struct ohci_platform_priv *)hcd_to_ohci(h)->priv) + ++#if IS_ENABLED(CONFIG_USB_OHCI_XGS_IPROC) ++#include ++#include ++#define UHCRHDA_REG_OFFSET 0x48 ++#define UHCRHDA_OCPM BIT(11) ++#endif ++ + struct ohci_platform_priv { + struct clk *clks[OHCI_MAX_CLKS]; + struct reset_control *resets; +@@ -94,10 +101,24 @@ static int ohci_platform_probe(struct platform_device *dev) + struct ohci_platform_priv *priv; + struct ohci_hcd *ohci; + int err, irq, clk = 0; ++ struct usb_phy __maybe_unused *phy; + + if (usb_disabled()) + return -ENODEV; + ++ if (IS_ENABLED(CONFIG_USB_OHCI_XGS_IPROC)) { ++ phy = devm_usb_get_phy_by_phandle(&dev->dev, "usb-phy", 0); ++ if (IS_ERR(phy)) { ++ dev_err(&dev->dev, "unable to find transceiver\n"); ++ return PTR_ERR(phy); ++ } ++ ++ if (phy->flags != IPROC_USB_MODE_HOST) ++ return -ENODEV; ++ ++ usb_phy_init(phy); ++ } ++ + /* + * Use reasonable defaults so platforms don't have to provide these + * with DT probing on ARM. +@@ -210,6 +231,13 @@ static int ohci_platform_probe(struct platform_device *dev) + + hcd->tpl_support = of_usb_host_tpl_support(dev->dev.of_node); + ++ if (IS_ENABLED(CONFIG_USB_OHCI_XGS_IPROC)) { ++ if (of_find_property(dev->dev.of_node, "iproc-ocpm-fix", NULL)) ++ writel(readl(hcd->regs + UHCRHDA_REG_OFFSET) | ++ UHCRHDA_OCPM, hcd->regs + UHCRHDA_REG_OFFSET); ++ hcd->usb_phy = phy; ++ } ++ + err = usb_add_hcd(hcd, irq, IRQF_SHARED); + if (err) + goto err_power; +diff --git a/include/linux/usb/iproc_usb.h b/include/linux/usb/iproc_usb.h +new file mode 100644 +index 000000000000..16ed0c924056 +--- /dev/null ++++ b/include/linux/usb/iproc_usb.h +@@ -0,0 +1,23 @@ ++/* ++ * Copyright 2017 Broadcom Limited ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ */ ++ ++#ifndef __LINUX_USB_IPROC_USB_H ++#define __LINUX_USB_IPROC_USB_H ++ ++/* USB Flags */ ++ ++#define IPROC_USB_MODE_HOST (0) ++#define IPROC_USB_MODE_DEVICE (1) ++ ++#endif /* __LINUX_USB_IPROC_USB_H */ ++ +-- +2.47.1 + diff --git a/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-17-usb-udc-xgs-iproc-udc.patch b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-17-usb-udc-xgs-iproc-udc.patch new file mode 100644 index 00000000..7b7b7d75 --- /dev/null +++ b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-17-usb-udc-xgs-iproc-udc.patch @@ -0,0 +1,3234 @@ +From a9c74c4308ad1ccc25be69f73b3a0df1623ecb0d Mon Sep 17 00:00:00 2001 +From: Jonas Gorski +Date: Thu, 7 Oct 2021 10:07:45 +0200 +Subject: [PATCH 17/21] usb: udc: xgs-iproc-udc + +--- + drivers/usb/gadget/udc/Kconfig | 11 + + drivers/usb/gadget/udc/Makefile | 1 + + drivers/usb/gadget/udc/xgs_iproc_udc.c | 2039 ++++++++++++++++++ + drivers/usb/gadget/udc/xgs_iproc_udc.h | 157 ++ + drivers/usb/gadget/udc/xgs_iproc_usbd_regs.h | 969 +++++++++ + 5 files changed, 3177 insertions(+) + create mode 100644 drivers/usb/gadget/udc/xgs_iproc_udc.c + create mode 100644 drivers/usb/gadget/udc/xgs_iproc_udc.h + create mode 100644 drivers/usb/gadget/udc/xgs_iproc_usbd_regs.h + +diff --git a/drivers/usb/gadget/udc/Kconfig b/drivers/usb/gadget/udc/Kconfig +index aae1787320d4..2cc9cf6b1496 100644 +--- a/drivers/usb/gadget/udc/Kconfig ++++ b/drivers/usb/gadget/udc/Kconfig +@@ -461,6 +461,17 @@ config USB_ASPEED_UDC + dynamically linked module called "aspeed_udc" and force all + gadget drivers to also be dynamically linked. + ++config USB_XGS_IPROC_UDC ++ tristate "Broadcom XGS IPROC USB Device driver" ++ depends on ARCH_XGS_IPROC && USB_GADGET ++ default n ++ help ++ USB peripheral controller driver for Broadcom XGS IPROC USB 2 device. ++ ++ Say "y" to link the driver statically, or "m" to build a dynamically ++ linked module called "xgs_iproc_udc" and force all gadget drivers to ++ also be dynamically linked. ++ + source "drivers/usb/gadget/udc/aspeed-vhub/Kconfig" + + source "drivers/usb/gadget/udc/cdns2/Kconfig" +diff --git a/drivers/usb/gadget/udc/Makefile b/drivers/usb/gadget/udc/Makefile +index b52f93e9c61d..47f201a83ab9 100644 +--- a/drivers/usb/gadget/udc/Makefile ++++ b/drivers/usb/gadget/udc/Makefile +@@ -37,6 +37,7 @@ obj-$(CONFIG_USB_FUSB300) += fusb300_udc.o + obj-$(CONFIG_USB_MV_U3D) += mv_u3d_core.o + obj-$(CONFIG_USB_GR_UDC) += gr_udc.o + obj-$(CONFIG_USB_GADGET_XILINX) += udc-xilinx.o ++obj-$(CONFIG_USB_XGS_IPROC_UDC) += xgs_iproc_udc.o + obj-$(CONFIG_USB_SNP_UDC_PLAT) += snps_udc_plat.o + obj-$(CONFIG_USB_ASPEED_VHUB) += aspeed-vhub/ + obj-$(CONFIG_USB_ASPEED_UDC) += aspeed_udc.o +diff --git a/drivers/usb/gadget/udc/xgs_iproc_udc.c b/drivers/usb/gadget/udc/xgs_iproc_udc.c +new file mode 100644 +index 000000000000..5ef417d3ab3b +--- /dev/null ++++ b/drivers/usb/gadget/udc/xgs_iproc_udc.c +@@ -0,0 +1,2037 @@ ++/* ++ * Copyright 2017 Broadcom Limited ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ */ ++ ++/****************************************************************************/ ++/** ++* @file bcm_dwc_udc.c ++* ++* @brief Broadcom Linux driver for DWC USB 2.0 Device Controller (UDC) ++* ++* This driver implements the Linux Gadget driver API as defined in usb_gadget.h ++* ++* @note ++* ++* This driver was written with the intent of being able to support any ++* variations on how this block is integrated into different Broadcom chips. ++* ++* There is a requirement on how the DWC UDC is configured. In particular, this ++* driver requires that the following options be defined and enabled in the ++* UDC core. ++* ++* UDC20AHB_CNAK_CLR_ENH_CC ++* UDC20AHB_STALL_SET_ENH_CC ++* UDC20AHB_SNAK_ENH_CC ++* ++* Some other UDC attributes can be supported by setting compile time options ++* or with some minor modifications to the source code. Ideally these would ++* be run-time info that is provided by the device instance to the driver. ++* These attributes include the following. ++* ++* IPROC_UDC_EP_CNT ++* IPROC_UDC_EP_MAX_PKG_SIZE ++* Type of each endpoint: Control, IN, OUT, or Bidirectional ++*/ ++/****************************************************************************/ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include "xgs_iproc_udc.h" ++ ++#define XGS_IPROC_UDC_NAME "xgs-iproc-udc" ++ ++#define DMA_ADDR_INVALID (~(dma_addr_t)0) ++/* ++ * FRAME_NUM_INVALID is used for ISOC IN transfers for frame alignment. ++ * The device specifies the interval at which it wants to do transfers, ++ * but the host initiates all transfers. If the interval is some multiple ++ * number of frames, the device has no idea which frame in an interval ++ * window the host is going to start transfers. This could even be at a ++ * point many frames beyond the current window, as the starting point ++ * can be very application dependant and subject to an indeterminate ++ * amount of latency. ++ */ ++#define FRAME_NUM_INVALID (~(u32)0) ++#define ENOERROR 0 ++ ++/* ---- Private Function Prototypes -------------------------------------- */ ++#ifdef IPROC_UDC_DEBUG ++static void iproc_dbg_dma_dump(struct iproc_udc *udc); ++static void iproc_dbg_dma_dump_desc(char *label, struct iproc_udc_dma_desc *virt, ++ struct iproc_udc_dma_desc *phys); ++static void iproc_dbg_dma_dump_ep(struct iproc_ep *ep); ++#endif /* IPROC_UDC_DEBUG */ ++ ++/* ---- Private Variables ------------------------------------------------ */ ++static const struct { ++ const char *name; ++ const int type; ++ const int msize; ++ const struct usb_ep_caps caps; ++} xgs_iproc_ep_info[] = { ++#define EP_INFO(_name, _type, _size, _caps) \ ++ { \ ++ .name = _name, \ ++ .type = _type, \ ++ .msize = _size, \ ++ .caps = _caps, \ ++ } ++ ++ EP_INFO("ep0", USB_ENDPOINT_XFER_CONTROL, IPROC_UDC_CTRL_MAX_PKG_SIZE, ++ USB_EP_CAPS(USB_EP_CAPS_TYPE_CONTROL, USB_EP_CAPS_DIR_ALL)), ++ EP_INFO("ep1in", USB_ENDPOINT_XFER_ISOC, IPROC_UDC_EP_MAX_PKG_SIZE, ++ USB_EP_CAPS(USB_EP_CAPS_TYPE_ISO, USB_EP_CAPS_DIR_IN)), ++ EP_INFO("ep2out", USB_ENDPOINT_XFER_ISOC, IPROC_UDC_EP_MAX_PKG_SIZE, ++ USB_EP_CAPS(USB_EP_CAPS_TYPE_ISO, USB_EP_CAPS_DIR_OUT)), ++ EP_INFO("ep3in", USB_ENDPOINT_XFER_BULK, IPROC_UDC_EP_MAX_PKG_SIZE, ++ USB_EP_CAPS(USB_EP_CAPS_TYPE_BULK, USB_EP_CAPS_DIR_IN)), ++ EP_INFO("ep4out", USB_ENDPOINT_XFER_BULK, IPROC_UDC_EP_MAX_PKG_SIZE, ++ USB_EP_CAPS(USB_EP_CAPS_TYPE_BULK, USB_EP_CAPS_DIR_OUT)), ++ EP_INFO("ep5in", USB_ENDPOINT_XFER_INT, IPROC_UDC_EP_MAX_PKG_SIZE, ++ USB_EP_CAPS(USB_EP_CAPS_TYPE_INT, USB_EP_CAPS_DIR_IN)), ++ EP_INFO("ep6out", USB_ENDPOINT_XFER_INT, IPROC_UDC_EP_MAX_PKG_SIZE, ++ USB_EP_CAPS(USB_EP_CAPS_TYPE_INT, USB_EP_CAPS_DIR_OUT)), ++#undef EP_INFO ++}; ++ ++/*********************************************************************** ++ * Convenience functions ++ ***********************************************************************/ ++static inline struct iproc_udc *gadget_to_udc(struct usb_gadget *g) ++{ ++ return container_of(g, struct iproc_udc, gadget); ++} ++ ++static inline struct iproc_ep *our_ep(struct usb_ep *ep) ++{ ++ return container_of(ep, struct iproc_ep, usb_ep); ++} ++ ++static inline struct iproc_ep_req *our_req(struct usb_request *req) ++{ ++ return container_of(req, struct iproc_ep_req, usb_req); ++} ++ ++/**************************************************************************** ++ * DMA descriptor chain routines. ++ * ++ * dma_desc_chain_reset - Initialize chain in preparation for transfer ++ * dma_desc_chain_full - Indicates if no descriptors in chain for available for use. ++ * dma_desc_chain_alloc - Get next free descriptor for use. Have to check if chain not full first. ++ * dma_desc_chain_empty - Indicates if no descriptors in the chain are being used. ++ * dma_desc_chain_head - Pointer to 1st entry in chain. Have to check if chain not empty first. ++ * dma_desc_chain_free - Frees up 1st entry for use. Only do this if DMA for this descriptor has completed. ++ * ++ ***************************************************************************/ ++static inline struct iproc_udc_dma_desc *dma_desc_chain_alloc(struct iproc_ep *ep) ++{ ++ u32 idx; ++ ++ idx = ep->dma.add_idx++; ++ ++ return &ep->dma.vir_addr->desc[IPROC_EP_DMA_DESC_IDX(idx)]; ++} ++ ++static inline int dma_desc_chain_empty(struct iproc_ep *ep) ++{ ++ return ep->dma.add_idx == ep->dma.rm_idx; ++} ++ ++static inline void dma_desc_chain_free(struct iproc_ep *ep) ++{ ++ ep->dma.rm_idx++; ++} ++ ++static inline int dma_desc_chain_full(struct iproc_ep *ep) ++{ ++ return (!dma_desc_chain_empty(ep) && (IPROC_EP_DMA_DESC_IDX(ep->dma.add_idx) == IPROC_EP_DMA_DESC_IDX(ep->dma.rm_idx))); ++} ++ ++static inline struct iproc_udc_dma_desc *dma_desc_chain_head(struct iproc_ep *ep) ++{ ++ return (&ep->dma.vir_addr->desc[IPROC_EP_DMA_DESC_IDX(ep->dma.rm_idx)]); ++} ++ ++static inline void dma_desc_chain_reset(struct iproc_ep *ep) ++{ ++ ep->dma.add_idx = 0; ++ ep->dma.rm_idx = 0; ++} ++ ++/**************************************************************************** ++ * ++ * Platform device level alloc / free of memory used for DMA descriptors. ++ * A single block of memory static in size is used for DMA descriptors. ++ * Each endpoint has a small number of descriptors for its exclusive use. ++ * These are chained in a loop. See bcm_udc_dwc.h and iproc_dma_ep_init() ++ * for more details. ++ * ++ ***************************************************************************/ ++static int iproc_platform_dma_alloc(struct platform_device *platformDevP, ++ struct iproc_udc *udc) ++{ ++ udc->dma.vir_addr = dma_alloc_coherent(&platformDevP->dev, ++ sizeof(struct iproc_udc_dma), ++ (dma_addr_t *)&udc->dma.phy_addr, GFP_KERNEL); ++ ++ if (!udc->dma.vir_addr) { ++ dev_err(udc->dev, "dma_alloc_coherent() failed\n"); ++ return -ENOMEM; ++ } ++ ++ return ENOERROR; ++} ++ ++static void iproc_platform_dma_free(struct platform_device *platformDevP, ++ struct iproc_udc *udc) ++{ ++ int idx; ++ ++ dma_free_coherent(&platformDevP->dev, sizeof(struct iproc_udc_dma), ++ udc->dma.vir_addr, (dma_addr_t)udc->dma.phy_addr); ++ ++ for (idx = 0; idx < IPROC_UDC_EP_CNT; idx ++) { ++ if (udc->ep[idx].dma.align_buff) { ++ dma_free_coherent(NULL, udc->ep[idx].dma.align_len, ++ udc->ep[idx].dma.align_buff, ++ udc->ep[idx].dma.align_addr); ++ udc->ep[idx].dma.align_buff = NULL; ++ } ++ } ++} ++ ++/*************************************************************************** ++ * Routines for debug dump of DMA descriptors ++ **************************************************************************/ ++#ifdef IPROC_UDC_DEBUG ++static void iproc_dbg_dma_dump(struct iproc_udc *udc) ++{ ++ int idx; ++ ++ for (idx = 0; idx < IPROC_UDC_EP_CNT; idx++) ++ iproc_dbg_dma_dump_ep(&udc->ep[idx]); ++} ++ ++static void iproc_dbg_dma_dump_desc(char *label, struct iproc_udc_dma_desc *virt, ++ struct iproc_udc_dma_desc *phys) ++{ ++ printk("%s virt=0x%p phys=0x%p: 0x%08x 0x%08x 0x%08x", ++ label, virt, phys, virt->status, virt->reserved, virt->buf_addr); ++} ++ ++static void iproc_dbg_dma_dump_ep(struct iproc_ep *ep) ++{ ++ int idx; ++ ++ printk("EP %d DMA\n", ep->num); ++ printk(" setup\n"); ++ iproc_dbg_dma_dump_desc(" ", ++ (struct iproc_udc_dma_desc *)&ep->dma.vir_addr->setup, ++ (struct iproc_udc_dma_desc *)&ep->dma.phy_addr->setup); ++ printk(" desc\n"); ++ ++ for (idx = 0; idx < IPROC_EP_DMA_DESC_CNT; idx++) { ++ iproc_dbg_dma_dump_desc(" ", &ep->dma.vir_addr->desc[idx], ++ &ep->dma.phy_addr->desc[idx]); ++ ++ /* Don't bother displaying entries beyond the last. */ ++ if (IPROC_USBD_READ(ep->dma.vir_addr->desc[idx].status) & ++ REG_DMA_STAT_LAST_DESC) ++ break; ++ } ++} ++#endif /* IPROC_UDC_DEBUG */ ++ ++/**************************************************************************** ++ * Initialization of DMA descriptors at the endpoint level. ++ ***************************************************************************/ ++static void iproc_dma_ep_init(struct iproc_ep *ep) ++{ ++ struct iproc_udc *udc = ep->udc; ++ int idx; ++ ++ /** @todo shorten names to virtAddr physAddr?? */ ++ ep->dma.vir_addr = &udc->dma.vir_addr->ep[ep->num]; ++ ep->dma.phy_addr = &udc->dma.phy_addr->ep[ep->num]; ++ ++ /* ++ * Control endpoints only do setup in the OUT direction, so only need to set the ++ * buffer address for that direction. The buffer is set, even if not a control ++ * endpoint, just to simplify things. There's no harm with this. ++ */ ++ ep->dma.vir_addr->setup.status = cpu_to_le32(REG_DMA_STAT_BUF_HOST_BUSY); ++ wmb(); ++ iproc_usbd_ep_dma_buf_addr_set(udc->usbd_regs, ep->num, USB_DIR_OUT, &ep->dma.phy_addr->setup); ++ ++ /* ++ * Take ownership of the DMA descriptors, and chain them in a loop. This allows a small number ++ * descriptors to be used for requests. Need to have the DWC DMA Descriptor Update option enabled ++ * in the device control register in order to do this. When a transfer for a descriptor completes, ++ * the descriptor will get re-used if there's still data left in a request to transfer. See the ++ * iproc_dma_data_rm_done() and iproc_dma_data_add_ready() routines. ++ */ ++ /** @todo Put these in endpoint context?? */ ++ for (idx = 0; idx < IPROC_EP_DMA_DESC_CNT; idx++) { ++ ep->dma.vir_addr->desc[idx].status = ++ cpu_to_le32(REG_DMA_STAT_BUF_HOST_BUSY); ++ wmb(); ++ ep->dma.vir_addr->desc[idx].next_addr = ++ cpu_to_le32((u32)&ep->dma.phy_addr->desc[idx+1]); ++ } ++ ep->dma.vir_addr->desc[(IPROC_EP_DMA_DESC_CNT - 1)].next_addr = ++ cpu_to_le32((u32)&ep->dma.phy_addr->desc[0]); ++ ++ /* ++ * To simplify things, register the descriptor chain in both directions. Control endpoints are the ++ * only type that will be transferring in both directions, but they will only be transferring in one ++ * direction at a time, so should not be any issues with using the same descriptor set for both directions. ++ * For single direction endpoints, the other direction will not be used. ++ */ ++ ++ iproc_usbd_ep_dma_desc_addr_set(udc->usbd_regs, ep->num, USB_DIR_OUT, ++ &ep->dma.phy_addr->desc[0]); ++ iproc_usbd_ep_dma_desc_addr_set(udc->usbd_regs, ep->num, USB_DIR_IN, ++ &ep->dma.phy_addr->desc[0]); ++} ++ ++/**************************************************************************** ++ * DMA data routines. ++ * ++ * A gadget usb_request buf is used for the data. The entire buf contents may ++ * or may not fit into the descriptor chain at once. When the DMA transfer ++ * associated with a descriptor completes, the descriptor is re-used to add ++ * more segments of the usb_request to the chain as necessary. ++ * ++ * iproc_dma_data_init - Initialization in preparation for DMA of usb_request. ++ * iproc_dma_data_add_ready - Adds usb_request segments into DMA chain until full or no segments left ++ * iproc_dma_data_rm_done - Removes usb_request segments from DMA chain that have completed transfer ++ * iproc_dma_data_finish - Final stage of DMA of the usb_request ++ * ++ ***************************************************************************/ ++static void iproc_dma_data_init(struct iproc_ep *ep) ++{ ++ struct iproc_ep_req *req; ++ struct iproc_udc *udc = ep->udc; ++ ++ req = list_first_entry(&ep->list_queue, struct iproc_ep_req, list_node); ++ ++ if (req->dma_aligned) { ++ /* ++ * This buffer needs to be aligned in order to DMA. We do this by copying into a special buffer we ++ * have for this purpose. Save the original DMA physical address so it can be restored later. ++ * This may not be used, but we'll do it anyways. Then set the DMA address to the aligned buffer ++ * address. Only the DMA physical address is used for the transfers, so the original buffer virtual ++ * address does not need to be changed. Then copy the data into the aligned buffer. ++ */ ++ /** @todo Really only need to do the memcpy for IN data */ ++ ++ req->orig_dma_addr = req->usb_req.dma; ++ req->usb_req.dma = ep->dma.align_addr; ++ memcpy(ep->dma.align_buff, req->usb_req.buf, req->usb_req.length); ++ } ++ ++ ep->dma.done = 0; ++ ep->dma.done_len = 0; ++ ep->dma.todo_len = ep->dma.usb_req->length; ++ ep->dma.buf_addr = ep->dma.usb_req->dma; ++ ep->dma.status = REG_DMA_STAT_RX_SUCCESS; ++ ++ if ((ep->dir == USB_DIR_IN) && (ep->type != USB_ENDPOINT_XFER_ISOC)) { ++ /* ++ * For IN transfers, do not need to segment the buffer into max packet portions ++ * for the DMA descriptors. The hardware will automatically segment into max ++ * packet sizes as necessary. ++ */ ++ ep->dma.max_buf_len = ep->usb_ep.maxpacket; ++ ++ /* ++ * If the request is of zero length, then force the zero flag so iproc_dma_data_add_ready() ++ * will queue the request. Conversely, if the gadget has set the zero flag, leave ++ * it set only if it is needed (request length is a multiple of maxpacket) ++ */ ++ if (ep->dma.usb_req->length == 0) ++ ep->dma.usb_req->zero = 1; ++ else if (ep->dma.usb_req->zero) ++ ep->dma.usb_req->zero = ++ (ep->dma.usb_req->length % ep->usb_ep.maxpacket)? 0 : 1; ++ } else { ++ ep->dma.max_buf_len = ep->usb_ep.maxpacket; ++ } ++ ++ dma_desc_chain_reset(ep); ++ ++ iproc_usbd_ep_irq_en(udc->usbd_regs, ep->num, ep->dir); ++} ++ ++static void iproc_dma_data_finish(struct iproc_ep *ep) ++{ ++ struct iproc_ep_req *req; ++ struct iproc_udc *udc = ep->udc; ++ ++ iproc_usbd_ep_irq_dis(udc->usbd_regs, ep->num, ep->dir); ++ iproc_usbd_ep_dma_dis(udc->usbd_regs, ep->num, ep->dir); ++ ++ req = list_first_entry(&ep->list_queue, struct iproc_ep_req, list_node); ++ ++ if (req->dma_aligned) { ++ /* ++ * The original request buffer was not aligned properly, so a special buffer was used ++ * for the transfer. Copy the aligned buffer contents into the original. Also restore ++ * the original dma physical address. ++ */ ++ /** @todo Really only need to do the memcpy for OUT setup/data */ ++ memcpy(req->usb_req.buf, ep->dma.align_buff, req->usb_req.length); ++ req->usb_req.dma = req->orig_dma_addr; ++ } ++} ++ ++static void iproc_dma_data_add_ready(struct iproc_ep *ep) ++{ ++ struct iproc_udc *udc = ep->udc; ++ volatile struct iproc_udc_dma_desc *dma_desc = NULL; ++ u32 status; ++ u32 len; ++ int enable_dma = 0; ++ ++ /* ++ * DMA must be disabled while this loop is running, as multi-descriptor transfers ++ * will have the descriptor chain in an intermediate state until the last descriptor ++ * is written and the chain terminated. ++ */ ++ if (iproc_usbd_dma_status(udc->usbd_regs)) { ++ enable_dma = 1; ++ iproc_usbd_dma_dis(udc->usbd_regs); ++ } ++ ++ if (!ep->dma.todo_len) ++ ep->dma.usb_req->zero = 1; ++ ++ /* ++ * Will only have one request in the chain at a time. Add request segments to the ++ * chain until all parts of the request have been put in the chain or the chain ++ * has no more room. ++ */ ++ while (!dma_desc_chain_full(ep) && (ep->dma.todo_len || ep->dma.usb_req->zero)) { ++ /* ++ * Get the next descriptor in the chain, and then fill the descriptor contents as needed. ++ * Do not set the descriptor buffer status to ready until last to ensure there's no ++ * contention with the hardware. ++ */ ++ dma_desc = dma_desc_chain_alloc(ep); ++ ++ len = ep->dma.todo_len < ep->dma.max_buf_len ? ep->dma.todo_len : ep->dma.max_buf_len; ++ ep->dma.todo_len -= len; ++ ++ status = 0; ++ ++ if (len < ep->dma.max_buf_len) { ++ /* ++ * If this segment is less than the max, then it is the last segment. There's no need to ++ * send a closing ZLP, although this segment might be a ZLP. Regardless, clear the ZLP flag ++ * to ensure that the processing of this request finishes. Also set the end of the descriptor ++ * chain. ++ */ ++ ep->dma.usb_req->zero = 0; ++ status |= REG_DMA_STAT_LAST_DESC; ++ } else if ((ep->dma.todo_len == 0) && !ep->dma.usb_req->zero) { ++ /* ++ * Segment is of the max packet length. Since there's nothing left, it has to also be the last ++ * last segment. No closing ZLP segment requested, just set the end of the descriptor chain. ++ */ ++ status |= REG_DMA_STAT_LAST_DESC; ++ } ++ ++ if ((ep->dir == USB_DIR_IN) && (ep->type == USB_ENDPOINT_XFER_ISOC)) { ++ /* ++ * Increment the frame number for transmit, then use it for the next packet. The frame number ++ * may get larger than its 13-bit size, but the mask will handle the wrap-around so we don't ++ * need to add checks for this condition. E.g. 0x7ff + 1 = 0x800. 0x800 & 0x7ff = 0 which ++ * is the next number in the sequence. ++ */ ++ /** @todo Handle ISOC PIDs and frame numbers used with HS high bandwidth transfers */ ++ /** @todo Might not need to set the last descriptor status. Currently restricting ++ * IN ISOC transfers to the max packet size. ++ */ ++ status |= REG_DMA_STAT_LAST_DESC; ++ ++ ep->dma.frame_num += ep->dma.frame_incr; ++ status |= ((ep->dma.frame_num << REG_DMA_STAT_FRAME_NUM_SHIFT) & ++ REG_DMA_STAT_FRAME_NUM_MASK); ++ } ++ ++ IPROC_USBD_WRITE(dma_desc->buf_addr, ep->dma.buf_addr); ++ status |= (len << REG_DMA_STAT_BYTE_CNT_SHIFT); ++ IPROC_USBD_WRITE(dma_desc->status, status | REG_DMA_STAT_BUF_HOST_READY); ++ wmb(); ++ ep->dma.buf_addr += len; ++ ++ if ((ep->dir == USB_DIR_IN) && (ep->type == USB_ENDPOINT_XFER_ISOC)) { ++ /* With ISOC transfers, only enable one DMA descriptors at a time. ++ */ ++ /** @todo Determine if FIFO will overflow. If it does not, then can remove this check. ++ * This may not even be an issue if the buffer size is restricted to the max packet size ++ * when a request is submitted to the endpoint. ++ */ ++ break; ++ } ++ } /* while */ ++ ++ /* Set LAST bit on last descriptor we've configured */ ++ if (dma_desc) ++ IPROC_USBD_BITS_SET(dma_desc->status, REG_DMA_STAT_LAST_DESC); ++ ++ if (enable_dma) ++ iproc_usbd_dma_en(udc->usbd_regs); ++} ++ ++static void iproc_dma_data_rm_done(struct iproc_ep *ep) ++{ ++ struct iproc_udc *udc = ep->udc; ++ volatile struct iproc_udc_dma_desc *dma_desc; ++ u32 status; ++ u32 len; ++ ++ /* ++ * Will only have one request in the chain at a time. Remove any completed ++ * request segments from the chain so any segments awaiting transfer can ++ * be put in the chain. ++ */ ++ while (!dma_desc_chain_empty(ep)) { ++ /* ++ * Examine the first entry in the chain. If its status is not done, then there's ++ * nothing to remove. ++ */ ++ dma_desc = dma_desc_chain_head(ep); ++ ++ if ((IPROC_USBD_READ(dma_desc->status) & REG_DMA_STAT_BUF_MASK) != ++ REG_DMA_STAT_BUF_DMA_DONE) ++ break; ++ ++ /* ++ * The transfer of this request segment has completed. Save the status info and then ++ * take ownership of the descriptor. It is simpler to do this than modifying parts of ++ * the descriptor in order to take ownership. Don't put the descriptor back in the chain ++ * until all info affected by the status has been updated, just to be safe. ++ */ ++ status = IPROC_USBD_READ(dma_desc->status); ++ IPROC_USBD_WRITE(dma_desc->status, REG_DMA_STAT_BUF_HOST_BUSY); ++ wmb(); ++ ++ len = (status & REG_DMA_STAT_NON_ISO_BYTE_CNT_MASK) >> ++ REG_DMA_STAT_NON_ISO_BYTE_CNT_SHIFT; ++ ++ /* RX: For multiple descriptors, len is cumulative, not absolute. ++ * RX: So only adjust the dma fields when we get to the last descriptor ++ * TX: Each descriptor entry is absolute, count them all ++ */ ++ if ((ep->dir == USB_DIR_IN) || (status & REG_DMA_STAT_LAST_DESC)) { ++ ep->dma.done_len += len; ++ ep->dma.usb_req->actual += len; ++ } ++ ++ if ((status & REG_DMA_STAT_RX_MASK) != REG_DMA_STAT_RX_SUCCESS) { ++ ep->dma.status = status & REG_DMA_STAT_RX_MASK; ++ ep->dma.usb_req->status = -EIO; ++ dev_warn(udc->dev, "%s: DMA error: desc=0x%p status=0x%x len=%d add=0x%x remove=0x%x\n", ++ ep->usb_ep.name, dma_desc, status, len, ep->dma.add_idx, ep->dma.rm_idx); ++ } ++ ++ if ((ep->dir == USB_DIR_IN) && (ep->type == USB_ENDPOINT_XFER_ISOC)){ ++ /** @todo Determine if this special processing needs to be done. May not to do this if the ++ * buffer size is restricted to the max packet size when a request is submitted to the endpoint. ++ */ ++ if (ep->dma.usb_req->actual == ep->dma.usb_req->length) ++ ep->dma.usb_req->status = ENOERROR; ++ dma_desc_chain_reset(ep); ++ } else { ++ dma_desc_chain_free(ep); ++ } ++ } ++ ++ /* When last segment processed, update status if there has not been an error */ ++ if (!ep->dma.todo_len && (ep->dma.usb_req->status == -EINPROGRESS)) ++ ep->dma.usb_req->status = ENOERROR; ++} ++ ++/**************************************************************************** ++ * Control Endpoint SETUP related routines. ++ * ++ * iproc_ep_setup_init - Prepares for next SETUP Rx. Status indicates if STALL req'd. ++ * iproc_ep_setup_process - Handle Rx of a SETUP. ++ ***************************************************************************/ ++static void iproc_ep_setup_init(struct iproc_ep *ep, int status) ++{ ++ struct iproc_udc *udc = ep->udc; ++ ++ /* Re-enable transfers to the SETUP buffer, clear IN and OUT NAKs, and re-enable OUT interrupts. */ ++ ep->dma.vir_addr->setup.status = cpu_to_le32(REG_DMA_STAT_BUF_HOST_READY); ++ ep->dir = USB_DIR_OUT; ++ ep->stopped = 0; ++ ++ if (status == ENOERROR) { ++ /* Handling of previous SETUP was OK. Just clear any NAKs. */ ++ iproc_usbd_ep_nak_clear(udc->usbd_regs, ep->num, USB_DIR_OUT); ++ iproc_usbd_ep_nak_clear(udc->usbd_regs, ep->num, USB_DIR_IN); ++ } else { ++ /* ++ * Handling of previous SETUP failed. Set the STALL. This will get cleared ++ * when the next SETUP is rx'd. ++ */ ++ iproc_usbd_ep_stall_en(udc->usbd_regs, ep->num, USB_DIR_IN); ++ iproc_usbd_ep_stall_en(udc->usbd_regs, ep->num, USB_DIR_OUT); ++ } ++ ++ iproc_usbd_ep_irq_en(udc->usbd_regs, ep->num, USB_DIR_OUT); ++ iproc_usbd_ep_dma_en(udc->usbd_regs, ep->num, USB_DIR_OUT); ++} ++ ++void iproc_ep_setup_process(struct iproc_ep *ep, struct usb_ctrlrequest *setup) ++{ ++ struct iproc_udc *udc = ep->udc; ++ u32 value; ++ u32 index; ++ u32 length; ++ int status; ++ ++ value = le16_to_cpu(setup->wValue); ++ index = le16_to_cpu(setup->wIndex); ++ length = le16_to_cpu(setup->wLength); ++ ++ /* ++ * Any SETUP packets appearing here need to be handled by the gadget driver. Some SETUPs may have ++ * already been silently handled and acknowledged by the DWC UDC. The exceptions to this rule are the ++ * USB_REQ_SET_CONFIGURATION and USB_REQ_SET_INTERFACE, which have been only partially handled with ++ * the expectation that some additional software processing is required in order to complete these requests. ++ * Thus, they have not been acknowledged by the DWC UDC. There is no DATA stage for these requests. ++ */ ++ ++ /* ++ * Set the direction of the subsequent DATA stage of a control transfer. This is an ++ * optional stage. It may not exist for all control transfers. If there is a DATA ++ * stage, this info is used for DMA operations for any requests received from the ++ * Gadget driver. ++ */ ++ ++ ep->dir = setup->bRequestType & USB_ENDPOINT_DIR_MASK; ++ ++ if (ep->num != 0) { ++ /** @todo Make changes here if the Linux USB gadget ever supports a control endpoint other ++ * than endpoint 0. The DWC UDC supports multiple control endpoints, and this driver has ++ * been written with this in mind. To make things work, really need to change the Gadget ++ * setup() callback parameters to provide an endpoint context, or add something similar ++ * to the usb_ep structure, or possibly use a usb_request to hold a setup data packet. ++ */ ++ dev_err(udc->dev, "%s: control transfer not supported\n", ep->usb_ep.name); ++ status = -EOPNOTSUPP; ++ } else { ++ /* ++ * Forward the SETUP to the gadget driver for processing. The appropriate directional ++ * interrupt and NAK clear will happen when the DATA stage request is queued. ++ */ ++ spin_unlock(&udc->lock); ++ status = udc->gadget_driver->setup(&udc->gadget, setup); ++ spin_lock(&udc->lock); ++ } ++ ++ if (status < 0) { ++ /* ++ * Error occurred during the processing of the SETUP, so enable STALL. This condition ++ * can only be cleared with the RX of another SETUP, so prepare for that event. ++ */ ++ dev_err(udc->dev, "%s: SETUP %02x.%02x STALL; status=%d\n", ++ ep->usb_ep.name, setup->bRequestType, setup->bRequest, status); ++ ++ iproc_ep_setup_init(ep, status); ++ } else if (length == 0) { ++ /* No DATA stage. Just need to prepare for the next SETUP. */ ++ iproc_ep_setup_init(ep, ENOERROR); ++ } else { ++ /* ++ * The SETUP stage processing has completed OK, and there may or may not be a request queued ++ * for the DATA stage. When the DATA stage completes, preparation for the RX of the next ++ * SETUP will be done. ++ */ ++ } ++} ++ ++static void iproc_udc_req_xfer_done(struct iproc_ep *ep, struct iproc_ep_req *req, int status) ++{ ++ struct iproc_udc *udc = ep->udc; ++ u32 stopped; ++ ++ list_del_init(&req->list_node); ++ ++ if (req->usb_req.status == -EINPROGRESS) ++ req->usb_req.status = status; ++ ++ if (req->dma_aligned) { ++ req->dma_aligned = 0; ++ } else if (req->dma_mapped) { ++ /* ++ * A physical address was not provided for the DMA buffer. Release any resources ++ * that were requested by the driver. ++ */ ++ dma_unmap_single(udc->gadget.dev.parent, req->usb_req.dma, req->usb_req.length, ++ (ep->dir == USB_DIR_IN ? DMA_TO_DEVICE : DMA_FROM_DEVICE)); ++ ++ req->dma_mapped = 0; ++ req->usb_req.dma = DMA_ADDR_INVALID; ++ } ++ ++ /* ++ * Disable DMA operations during completion callback. The callback may cause requests to be ++ * added to the queue, but we don't want to change the state of the queue head. ++ */ ++ stopped = ep->stopped; ++ ep->stopped = 1; ++ spin_unlock(&udc->lock); ++ req->usb_req.complete(&ep->usb_ep, &req->usb_req); ++ spin_lock(&udc->lock); ++ ep->stopped = stopped; ++} ++ ++static void iproc_udc_req_xfer_process(struct iproc_ep *ep) ++{ ++ struct iproc_udc *udc = ep->udc; ++ struct iproc_ep_req *req; ++ ++ /* @todo Current transfer is always the queue head. ++ * Do we need a separate pointer? Maybe just a pointer to usb_request ++ */ ++ if (!ep->dma.usb_req) { ++ dev_err(udc->dev, "%s: No request being transferred\n", ep->usb_ep.name); ++ return; ++ } ++ ++ iproc_usbd_ep_dma_dis(udc->usbd_regs, ep->num, ep->dir); ++ iproc_dma_data_rm_done(ep); ++ ++ if (ep->dma.usb_req->status != -EINPROGRESS) { ++ /* ++ * Current transfer stage has finished. This may or may not be with error. ++ * Complete the transfer as needed before starting the next one, if any. ++ */ ++ iproc_dma_data_finish(ep); ++ ++ if ((ep->type == USB_ENDPOINT_XFER_CONTROL) && (ep->dir == USB_DIR_IN) ++ && (ep->dma.usb_req->status == ENOERROR)) { ++ /* ++ * For the status phase of control IN transfers, the hardware requires that an OUT DMA transfer ++ * actually takes place. This should be just an OUT ZLP, and we will re-use the IN buffer that ++ * just completed transfer for this purpose. There should be no harm in doing this, even if the ++ * OUT status is more than a ZLP. ++ */ ++ ep->dir = USB_DIR_OUT; ++ iproc_dma_data_init(ep); ++ } else { ++ /* ++ * All transfer stages have completed. Return the request to the gadget driver, and then ++ * setup for the next transfer. ++ */ ++ iproc_udc_req_xfer_done(ep, list_first_entry(&ep->list_queue, struct iproc_ep_req, list_node), ENOERROR); ++ ++ if (ep->type == USB_ENDPOINT_XFER_CONTROL) ++ iproc_ep_setup_init(ep, ENOERROR); ++ ++ if (list_empty(&ep->list_queue)) { ++ /** @todo Probably should more closely bind this to iproc_dma_data_finish. */ ++ ep->dma.usb_req = NULL; ++ } else { ++ req = list_first_entry(&ep->list_queue, struct iproc_ep_req, list_node); ++ ep->dma.usb_req = &req->usb_req; ++ iproc_dma_data_init(ep); ++ } ++ } ++ } ++ ++ if (ep->dma.usb_req != NULL) { ++ iproc_dma_data_add_ready(ep); ++ iproc_usbd_ep_dma_en(udc->usbd_regs, ep->num, ep->dir); ++ iproc_usbd_ep_nak_clear(udc->usbd_regs, ep->num, ep->dir); ++ } ++} ++ ++static void iproc_udc_req_xfer_error(struct iproc_ep *ep, int status) ++{ ++ struct iproc_udc *udc = ep->udc; ++ ++ if (!ep->dma.usb_req) { ++ dev_err(udc->dev, "%s: No request being transferred\n", ep->usb_ep.name); ++ return; ++ } ++ ++ /** @todo abort current DMA, start next transfer if there is one. */ ++ ep->dma.usb_req->status = status; ++ iproc_udc_req_xfer_process(ep); ++} ++ ++static void iproc_udc_ops_disconnect(struct iproc_udc *udc) ++{ ++ struct iproc_ep *ep; ++ int idx; ++ ++ for (idx = 0; idx < IPROC_UDC_EP_CNT; idx++) { ++ ep = &udc->ep[idx]; ++ ++ if (ep->dma.usb_req) { ++ /* Flush DMA, reqeust still pending */ ++ iproc_usbd_ep_fifo_flush_en(udc->usbd_regs, 0, USB_DIR_IN); ++ iproc_usbd_ep_fifo_flush_dis(udc->usbd_regs, 0, USB_DIR_IN); ++ ++ iproc_udc_req_xfer_process(ep); ++ } ++ } ++} ++ ++static void iproc_udc_ops_shutdown(struct iproc_udc *udc) ++{ ++ struct iproc_ep *ep; ++ ++ udc->ep[0].desc = NULL; ++ list_for_each_entry(ep, &udc->gadget.ep_list, usb_ep.ep_list) ++ ep->desc = NULL; ++ ++ udc->gadget.dev.driver = NULL; ++ udc->gadget_driver = NULL; ++} ++ ++/**************************************************************************** ++ * IRQ routines. ++ * ++ * xgs_iproc_udc_isr - top level entry point. ++ * iproc_cfg_isr - device (endpoint 0) set config interrupt handler ++ * iproc_inf_isr - device (endpoint 0) set interface interrupt handler ++ * iproc_speed_isr - device speed enumeration done interrupt handler ++ * iproc_ep_in_isr - top level IN endpoint related interrupt handler ++ * iproc_ep_out_isr - top level OUT endpoint related interrupt handler ++ * iproc_ep_out_setup_isr - Control endpoint SETUP Rx handler. This may get ++ * called directly as the result of an endpoint OUT interrupt, or ++ * indirectly as the result of device SET_CFG or SET_INTF. ++ ***************************************************************************/ ++static void iproc_cfg_isr(struct iproc_udc *udc) ++{ ++ struct usb_ctrlrequest setup; ++ int idx; ++ u16 cfg; ++ ++ /* ++ * Device Configuration SETUP has been received. This is not placed in the SETUP ++ * DMA buffer. The packet has to be re-created here so it can be forwarded to the ++ * gadget driver to act upon. ++ */ ++ ++ cfg = (u16) iproc_usbd_cfg_num(udc->usbd_regs); ++ ++ setup.bRequestType = USB_DIR_OUT | USB_TYPE_STANDARD | USB_RECIP_DEVICE; ++ setup.bRequest = USB_REQ_SET_CONFIGURATION; ++ setup.wValue = cpu_to_le16(cfg); ++ setup.wIndex = 0; ++ setup.wLength = 0; ++ ++ /* ++ * Setting the configuration number before the gadget responds is a bit presumptious, but should ++ * not be fatal. ++ */ ++ /** @todo Do not set endpoint 0? Or is it a don't care? */ ++ for (idx = 0; idx < IPROC_UDC_EP_CNT; idx++) ++ iproc_usbd_ep_cfg_set(udc->usbd_regs, idx, cfg); ++ ++ printk(KERN_INFO "SET CFG=%d\n", cfg); ++ ++ iproc_ep_setup_process(&udc->ep[0], &setup); ++ iproc_usbd_setup_done(udc->usbd_regs); ++} ++ ++static void iproc_inf_isr(struct iproc_udc *udc) ++{ ++ struct usb_ctrlrequest setup; ++ u32 idx; ++ u16 intf; ++ u16 alt; ++ ++ /* ++ * Device Interface SETUP has been received. This is not placed in the SETUP ++ * DMA buffer. The packet has to be re-created here so it can be forwarded to the ++ * gadget driver to act upon. ++ */ ++ intf = (u16)iproc_usbd_intf_num(udc->usbd_regs); ++ alt = (u16)iproc_usbd_alt_num(udc->usbd_regs); ++ ++ setup.bRequestType = USB_DIR_OUT | USB_TYPE_STANDARD | USB_RECIP_INTERFACE; ++ setup.bRequest = USB_REQ_SET_INTERFACE; ++ setup.wValue = cpu_to_le16(alt); ++ setup.wIndex = cpu_to_le16(intf); ++ setup.wLength = 0; ++ ++ /* ++ * Setting the interface numbers before the gadget responds is a bit ++ * presumptious, but should not be fatal. ++ */ ++ for (idx = 0; idx < IPROC_UDC_EP_CNT; idx++) { ++ iproc_usbd_ep_alt_set(udc->usbd_regs, idx, alt); ++ iproc_usbd_ep_intf_set(udc->usbd_regs, idx, intf); ++ } ++ ++ iproc_ep_setup_process(&udc->ep[0], &setup); ++ iproc_usbd_setup_done(udc->usbd_regs); ++} ++ ++static void iproc_speed_isr(struct iproc_udc *udc) ++{ ++ u32 speed; ++ ++ speed = udc->gadget.speed; ++ ++ switch(iproc_usbd_speed_get(udc->usbd_regs)) { ++ case USB_SPEED_HIGH: ++ printk(KERN_INFO "HIGH SPEED\n"); ++ udc->gadget.speed = USB_SPEED_HIGH; ++ break; ++ case USB_SPEED_FULL: ++ printk(KERN_INFO "FULL SPEED\n"); ++ udc->gadget.speed = USB_SPEED_FULL; ++ break; ++ case USB_SPEED_LOW: ++ dev_warn(udc->dev, "low speed not supported\n"); ++ udc->gadget.speed = USB_SPEED_LOW; ++ break; ++ default: ++ dev_err(udc->dev, "unknown speed=0x%x\n", iproc_usbd_speed_get(udc->usbd_regs)); ++ break; ++ } ++ ++ if ((speed == USB_SPEED_UNKNOWN) && (udc->gadget.speed != USB_SPEED_UNKNOWN)) { ++ /* ++ * Speed has not been enumerated before, so now we can initialize transfers on endpoint 0. ++ * Also have to disable the NAKs at a global level, which has been in place while waiting ++ * for enumeration to complete. ++ */ ++ iproc_ep_setup_init(&udc->ep[0], ENOERROR); ++ iproc_usbd_nak_response_dis(udc->usbd_regs); ++ } ++} ++ ++static void iproc_ep_in_isr(struct iproc_ep *ep) ++{ ++ struct iproc_udc *udc = ep->udc; ++ u32 status; ++ ++ status = iproc_usbd_ep_stat_active(udc->usbd_regs, ep->num, USB_DIR_IN); ++ iproc_usbd_ep_stat_clear(udc->usbd_regs, ep->num, USB_DIR_IN, status); ++ ++ if (!status) ++ return; ++ ++ /** @todo check might only be for direction... */ ++ if ((ep->dir != USB_DIR_IN) && (ep->type != USB_ENDPOINT_XFER_CONTROL)) { ++ dev_err(udc->dev, "%s: unexpected IN interrupt\n", ep->usb_ep.name); ++ return; ++ } ++ ++ if (ep->dir != USB_DIR_IN) ++ /* This probably should not be happening */ ++ dev_warn(udc->dev, "%s: CTRL dir OUT\n", ep->usb_ep.name); ++ ++ if ((ep->type == USB_ENDPOINT_XFER_ISOC) && ++ (status & (USBD_EP_STAT_IN_XFER_DONE | USBD_EP_STAT_DMA_BUF_UNAVAIL))) ++ dev_warn(udc->dev, "%s: ISOC IN unexpected status=0x%x\n", ep->usb_ep.name, status); ++ ++ if (status & USBD_EP_STAT_IN_TOKEN_RX) { ++ /* ++ * If there's any IN requests, the DMA should be setup and ready to go if ++ * the endpoint is not an ISOC. Nothing to do in this case. However, if ++ * this is an ISOC endpoint, then this interrupt implies there was no ++ * data available for this frame number. This will happen if the gadget ++ * does not have any data queued to send in this frame, or we have been ++ * waiting for this event to occur so we can get alignment with the host ++ * for the interval. This alignment is necessary when the interval is ++ * greater than one frame / uframe. E.g. for an audio stream sending ++ * samples @ 5ms intervals on a FS link, this corresponds to a period ++ * of 5 frames. Samples with be queued for every 5th frame number after ++ * the frame number in which this interrupt occurred. ++ */ ++ status &= ~USBD_EP_STAT_IN_TOKEN_RX; ++ iproc_usbd_ep_nak_clear(udc->usbd_regs, ep->num, USB_DIR_IN); ++ ++ if ((ep->type == USB_ENDPOINT_XFER_ISOC)) { ++ /* Always align to the current frame number for subsequent transfers. */ ++ ep->dma.frame_num = iproc_usbd_last_rx_frame_num(udc->usbd_regs); ++ if (ep->dma.usb_req != NULL) { ++ /* ++ * Might have something queued when waiting for alignment. If something is queued, ++ * it is already too late for the current transfer point. It will also have been ++ * placed in the queue at some point before this interrupt, and it will be stale ++ * if we try to transmit at the next transfer point. ++ */ ++ ep->dma.usb_req->status = -EREMOTEIO; ++ iproc_udc_req_xfer_process(ep); ++ } ++ } ++ } ++ ++ if (status & USBD_EP_STAT_IN_DMA_DONE) { ++ /* ++ * DMA has completed, but cannot start next transfer until USBD_EP_STAT_IN_XFER_DONE. ++ * To avoid race conditions and other issues, do not release the current transfer until both ++ * interrupts have arrived. Normally this interrupt will arrive at or before the IN_XFER_DONE, ++ * but there have been situations when the system is under load that this interrupt might ++ * arrive after the IN_XFER_DONE, in which case we will need to do the processing now. ++ * The exception to this rule is for ISOC endpoints. They will only get this interrupt to ++ * indicate that DMA has completed. ++ */ ++ status &= ~USBD_EP_STAT_IN_DMA_DONE; ++ ++ if ((ep->type == USB_ENDPOINT_XFER_ISOC)) { ++ iproc_udc_req_xfer_process(ep); ++ } else if (ep->dma.done & USBD_EP_STAT_IN_XFER_DONE) { ++ /* ++ * Did not receive the IN_DMA_DONE interrupt for this request before or ++ * at the same time as the IN_XFER_DONE interrupt, so the request ++ * processing was postponed until the IN_DMA_DONE interrupt arrived. ++ * See handling of IN_XFER_DONE status below. ++ */ ++ iproc_udc_req_xfer_process(ep); ++ } else { ++ /* ++ * IN_DMA_DONE received. Save this info so request processing will be ++ * done when the IN_XFER_DONE interrupt is received. This may happen ++ * immediately, idx.e. both IN_DMA_DONE and IN_XFER_DONE status are ++ * set when the interrupt processing takes place. ++ */ ++ ep->dma.done = USBD_EP_STAT_IN_DMA_DONE; ++ } ++ } ++ ++ if (status & USBD_EP_STAT_IN_XFER_DONE) { ++ status &= ~(USBD_EP_STAT_IN_XFER_DONE); ++ status &= ~(USBD_EP_STAT_IN_FIFO_EMPTY); ++ ++ if (ep->dma.done & USBD_EP_STAT_IN_DMA_DONE) { ++ /* ++ * Have received both the IN_DMA_DONE and IN_XFER_DONE interrupts ++ * for this request. OK to process the request (remove the request ++ * and start the next one). ++ */ ++ iproc_udc_req_xfer_process(ep); ++ } else { ++ /* ++ * Have not received the IN_DMA_DONE interrupt for this request. ++ * Need to postpone processing of the request until the IN_DMA_DONE ++ * interrupt occurs. See handling of IN_DMA_DONE status above. ++ */ ++ ep->dma.done = USBD_EP_STAT_IN_XFER_DONE; ++ } ++ } ++ ++ /* Clear the FIFO EMPTY bit, not to print error message */ ++ status &= ~(USBD_EP_STAT_IN_FIFO_EMPTY); ++ ++ if (status & USBD_EP_STAT_DMA_BUF_UNAVAIL) { ++ dev_err(udc->dev, "%s: DMA BUF NOT AVAIL\n", ep->usb_ep.name); ++ status &= ~(USBD_EP_STAT_DMA_BUF_UNAVAIL); ++ iproc_udc_req_xfer_process(ep); ++ } ++ ++ if (status & USBD_EP_STAT_DMA_ERROR) { ++ status &= ~USBD_EP_STAT_DMA_ERROR; ++ dev_err(udc->dev, "%s: DMA ERROR\n", ep->usb_ep.name); ++ iproc_udc_req_xfer_error(ep, -EIO); ++ } ++ ++ if (status) ++ dev_err(udc->dev, "exit: %s %s: unknown status=0x%x\n", ++ __func__, ep->usb_ep.name, status); ++} ++ ++static void iproc_ep_out_setup_isr(struct iproc_ep *ep) ++{ ++ struct iproc_udc *udc = ep->udc; ++ struct iproc_udc_dma_setup *dma; ++ ++ dma = &ep->dma.vir_addr->setup; ++ if ((IPROC_USBD_READ(dma->status) & REG_DMA_STAT_BUF_MASK) != ++ REG_DMA_STAT_BUF_DMA_DONE) { ++ dev_err(udc->dev, "%s: unexpected DMA buf status=0x%x\n", ep->usb_ep.name, ++ (IPROC_USBD_READ(dma->status) & REG_DMA_STAT_BUF_MASK)); ++ iproc_ep_setup_init(ep, ENOERROR); ++ } else if ((IPROC_USBD_READ(dma->status) & REG_DMA_STAT_RX_MASK) ++ != REG_DMA_STAT_RX_SUCCESS) { ++ dev_err(udc->dev, "%s: unexpected DMA rx status=0x%x\n", ep->usb_ep.name, ++ (IPROC_USBD_READ(dma->status) & REG_DMA_STAT_RX_MASK)); ++ iproc_ep_setup_init(ep, ENOERROR); ++ } else { ++ if (ep->num != 0) { ++ /** @todo Handle the cfg / intf / alt fields of the DMA status. This will only be any issue ++ * once the Linux Gadget driver framework supports control transfers on an endpoint other ++ * than 0. ++ */ ++ dev_warn(udc->dev, "%s: CTRL xfr support not complete\n", ep->usb_ep.name); ++ } ++ /* ++ * Take ownership of the descriptor while processing the request. Ownership will be released ++ * when ready to Rx SETUP again. ++ */ ++ IPROC_USBD_BITS_MODIFY(dma->status, REG_DMA_STAT_BUF_MASK, ++ REG_DMA_STAT_BUF_HOST_BUSY); ++ iproc_ep_setup_process(ep, (struct usb_ctrlrequest *)&dma->data1); ++ } ++} ++ ++static void iproc_ep_out_isr(struct iproc_ep *ep) ++{ ++ struct iproc_udc *udc = ep->udc; ++ u32 status; ++ ++ status = iproc_usbd_ep_stat_active(udc->usbd_regs, ep->num, USB_DIR_OUT); ++ iproc_usbd_ep_stat_clear(udc->usbd_regs, ep->num, USB_DIR_OUT, status); ++ ++ /* ++ * Remove the Rx packet size field from the status. The datasheet states this field is not used ++ * in DMA mode, but that is not true. ++ */ ++ status &= USBD_EP_STAT_ALL; ++ ++ if (!status) ++ return; ++ ++ if ((ep->dir != USB_DIR_OUT) && (ep->type != USB_ENDPOINT_XFER_CONTROL)) { ++ dev_err(udc->dev, "%s: unexpected OUT interrupt\n", ep->usb_ep.name); ++ return; ++ } ++ ++ if (ep->dir != USB_DIR_OUT) ++ /* This probably should not be happening */ ++ dev_err(udc->dev, "%s: CTRL dir IN\n", ep->usb_ep.name); ++ ++ if (status & USBD_EP_STAT_OUT_DMA_DATA_DONE) { ++ status &= ~USBD_EP_STAT_OUT_DMA_DATA_DONE; ++ iproc_udc_req_xfer_process(ep); ++ } ++ ++ if (status & USBD_EP_STAT_OUT_DMA_SETUP_DONE) { ++ status &= ~USBD_EP_STAT_OUT_DMA_SETUP_DONE; ++ iproc_ep_out_setup_isr(ep); ++ } ++ ++ if (status & USBD_EP_STAT_DMA_BUF_UNAVAIL) { ++ /** @todo Verify under what situations this can happen. Should be when chain has emptied but last desc not reached */ ++ /** @todo status for desc updates */ ++ ++ status &= ~USBD_EP_STAT_DMA_BUF_UNAVAIL; ++ dev_err(udc->dev, "%s: DMA BUF NOT AVAIL\n", ep->usb_ep.name); ++ iproc_udc_req_xfer_process(ep); ++ } ++ ++ if (status & USBD_EP_STAT_DMA_ERROR) { ++ status &= ~USBD_EP_STAT_DMA_ERROR; ++ dev_err(udc->dev, "%s: DMA ERROR\n", ep->usb_ep.name); ++ /** @todo merge XferError and XferProcess?? */ ++ iproc_udc_req_xfer_error(ep, -EIO); ++ } ++ ++ if (status) ++ dev_err(udc->dev, "%s: unknown status=0x%x\n", ep->usb_ep.name, status); ++} ++ ++irqreturn_t xgs_iproc_udc_isr(int irq, void *context) ++{ ++ struct iproc_udc *udc = NULL; ++ unsigned long flags; ++ u32 stat, epin_stat, epout_stat; ++ int idx; ++ ++ udc = (struct iproc_udc *)context; ++ ++ spin_lock_irqsave(&udc->lock, flags); ++ ++ if (!udc || !udc->gadget_driver) { ++ dev_err(udc->dev, "Invalid context or no driver registered: irq dev=0x%x\n", ++ iproc_usbd_irq_active(udc->usbd_regs)); ++ ++ iproc_usbd_irq_clear(udc->usbd_regs, USBD_IRQ_ALL); ++ iproc_usbd_ep_irq_list_clear(udc->usbd_regs, USB_DIR_IN, ~0); ++ iproc_usbd_ep_irq_list_clear(udc->usbd_regs, USB_DIR_OUT, ~0); ++ ++ spin_unlock_irqrestore(&udc->lock, flags); ++ return IRQ_HANDLED; ++ } ++ ++ stat = iproc_usbd_irq_active(udc->usbd_regs); ++ epin_stat = iproc_usbd_ep_irq_list_active(udc->usbd_regs, USB_DIR_IN); ++ epout_stat = iproc_usbd_ep_irq_list_active(udc->usbd_regs, USB_DIR_OUT); ++ ++ if (!(stat || epin_stat || epout_stat)) ++ return IRQ_NONE; ++ ++ iproc_usbd_irq_clear(udc->usbd_regs, stat); ++ iproc_usbd_ep_irq_list_clear(udc->usbd_regs, USB_DIR_IN, epin_stat); ++ iproc_usbd_ep_irq_list_clear(udc->usbd_regs, USB_DIR_OUT, epout_stat); ++ ++ /* ++ * Handle the SET_CFG and SET_INTF interrupts after the endpoint and other device interrupts. ++ * There can be some race conditions where we have an endpoint 0 interrupt pending for the ++ * completion of a previous endpoint 0 transfer (e.g. a GET config) when a SETUP arrives ++ * corresponding to the SET_CFG and SET_INTF. Need to complete the processing of the previous ++ * transfer before handling the next one, idx.e. the SET_CFG or SET_INTF. ++ */ ++ if (stat & USBD_IRQ_BUS_RESET) ++ dev_info(udc->dev, "BUS reset\n"); ++ ++ if (stat & USBD_IRQ_BUS_SUSPEND) ++ dev_dbg(udc->dev, "BUS suspend\n"); ++ ++ if (stat & USBD_IRQ_BUS_IDLE) { ++ dev_dbg(udc->dev, "BUS idle\n"); ++ iproc_udc_ops_disconnect(udc); ++ } ++ ++ if (stat & USBD_IRQ_SPEED_ENUM_DONE) { ++ dev_dbg(udc->dev, "BUS speed enum done\n"); ++ iproc_speed_isr(udc); ++ } ++ ++ /* endpoint interrupts handler */ ++ for (idx = 0; idx < IPROC_UDC_EP_CNT; idx++) { ++ if (epin_stat & (1 << idx)) ++ iproc_ep_in_isr(&udc->ep[idx]); ++ if (epout_stat & (1 << idx)) ++ iproc_ep_out_isr(&udc->ep[idx]); ++ } ++ ++ /* SET_CFG and SET_INTF interrupts handler */ ++ if (stat & USBD_IRQ_SET_CFG) ++ iproc_cfg_isr(udc); ++ if (stat & USBD_IRQ_SET_INTF) ++ iproc_inf_isr(udc); ++ ++ spin_unlock_irqrestore(&udc->lock, flags); ++ ++ return IRQ_HANDLED; ++} ++ ++/*************************************************************************** ++* Endpoint request operations ++***************************************************************************/ ++static void iproc_udc_req_queue_flush(struct iproc_ep *ep, int status) ++{ ++ struct iproc_udc *udc = ep->udc; ++ struct iproc_ep_req *req; ++ ++ ep->stopped = 1; ++ iproc_usbd_ep_ops_finish(udc->usbd_regs, ep->num); ++ ++ while (!list_empty(&ep->list_queue)) { ++ req = list_first_entry(&ep->list_queue, struct iproc_ep_req, list_node); ++ iproc_udc_req_xfer_done(ep, req, status); ++ } ++ ++ ep->dma.usb_req = NULL; ++} ++ ++ ++static void iproc_udc_req_xfer_add(struct iproc_ep *ep, struct iproc_ep_req *req) ++{ ++ struct iproc_udc *udc = ep->udc; ++ list_add_tail(&req->list_node, &ep->list_queue); ++ ++ /** @todo Is this necessary?? Stopped happens as a result of a halt, complete(), dequeue(), nuke(). ++ * nuke() is called when ep disabled, during setup processing, and by udc_queisce(). The latter is ++ * called during vbus state change (cable insert/remove), USB reset interrupt, and gadget deregister. ++ */ ++ if (ep->stopped) ++ return; ++ ++ if ((ep->dir == USB_DIR_IN) && (ep->type == USB_ENDPOINT_XFER_ISOC) && ++ ep->dma.usb_req && (ep->dma.frame_num == FRAME_NUM_INVALID)) { ++ /* ++ * Gadget has a request already queued, but still have not received an IN token from the host ++ * and the interval window is not aligned. Queued packet is now very stale, so remove it. ++ */ ++ ++ iproc_dma_data_finish(ep); ++ /** @todo Move set of ep->dma.usb_req to iproc_dma_data_init() and iproc_dma_data_finish() routines. */ ++ ep->dma.usb_req = NULL; ++ iproc_udc_req_xfer_done(ep, list_first_entry(&ep->list_queue, struct iproc_ep_req, list_node), -EREMOTEIO); ++ } ++ ++ /** @todo Current transfer is always the queue head. Do we need a separate pointer? Maybe just a pointer to usb_request ++ * need to know if the queue head has already been loaded. Maybe that's the point of the "stopped". ++ */ ++ if (!ep->dma.usb_req) { ++ if ((ep->dir == USB_DIR_IN) && (ep->type == USB_ENDPOINT_XFER_ISOC) && ++ (ep->dma.frame_num == FRAME_NUM_INVALID)) { ++ /* ++ * Delay any ISOC IN DMA operations until it is known what frame number the host ++ * is going to start transfers with. Normally might just return requests until ++ * this event occurs. However, the zero gadget does not submit requests based on ++ * its own timer or similar, so if the request is returned right away things are ++ * going to thrash, as another request will be immediately submitted. ++ */ ++ ep->dma.usb_req = &(list_first_entry(&ep->list_queue, ++ struct iproc_ep_req, list_node))->usb_req; ++ iproc_dma_data_init(ep); ++ iproc_usbd_ep_nak_clear(udc->usbd_regs, ep->num, ep->dir); ++ iproc_usbd_ep_irq_en(udc->usbd_regs, ep->num, ep->dir); ++ } else { ++ req = list_first_entry(&ep->list_queue, ++ struct iproc_ep_req, list_node); ++ ep->dma.usb_req = &req->usb_req; ++ iproc_dma_data_init(ep); ++ iproc_dma_data_add_ready(ep); ++ iproc_usbd_ep_nak_clear(udc->usbd_regs, ep->num, ep->dir); ++ iproc_usbd_ep_dma_en(udc->usbd_regs, ep->num, ep->dir); ++ ++ /* needed for gadget commands to complete correctly - possible locking issue */ ++ mdelay(3); ++ } ++ } ++} ++ ++/* ++ * UDC Operations routines. ++ * iproc_udc_ops_finish - Finish / terminate all UDC operations ++ * iproc_udc_ops_start - Start UDC operations. Happens after a Gadget driver attaches. ++ * iproc_udc_ops_stop - Stop UDC operations. Happens after a Gadget driver detaches. ++ */ ++static void iproc_udc_ops_finish(struct iproc_udc *udc) ++{ ++ /* do nothing */ ++ return; ++} ++ ++static void iproc_udc_ops_start(struct iproc_udc *udc) ++{ ++ int idx; ++ ++ /* ++ * Just enable interrupts for now. Endpoint 0 will get enabled once the speed enumeration ++ * has completed. The Device DMA enable is global in scope. There's endpoint specific ++ * DMA enables that will happen later. ++ */ ++ iproc_usbd_irq_en(udc->usbd_regs, (USBD_IRQ_SPEED_ENUM_DONE | ++ USBD_IRQ_BUS_SUSPEND | ++ USBD_IRQ_BUS_IDLE | ++ USBD_IRQ_BUS_RESET | ++ USBD_IRQ_SET_INTF | ++ USBD_IRQ_SET_CFG)); ++ iproc_usbd_dma_en(udc->usbd_regs); ++ ++ /* Enable interrupts for all configured endpoints */ ++ for (idx = 0; idx < IPROC_UDC_EP_CNT; ++idx) { ++ if (udc->ep[idx].usb_ep.name) { ++ iproc_usbd_ep_irq_en(udc->usbd_regs, udc->ep[idx].num, USB_DIR_OUT); ++ iproc_usbd_ep_irq_en(udc->usbd_regs, udc->ep[idx].num, USB_DIR_IN); ++ } ++ } ++ iproc_usbd_nak_response_dis(udc->usbd_regs); ++} ++ ++static void iproc_udc_ops_stop(struct iproc_udc *udc) ++{ ++ struct iproc_ep *ep; ++ ++ iproc_usbd_dma_dis(udc->usbd_regs); ++ iproc_usbd_irq_dis(udc->usbd_regs, USBD_IRQ_ALL); ++ iproc_usbd_irq_clear(udc->usbd_regs, USBD_IRQ_ALL); ++ ++ udc->gadget.speed = USB_SPEED_UNKNOWN; ++ ++ iproc_udc_req_queue_flush(&udc->ep[0], -ESHUTDOWN); ++ ++ list_for_each_entry(ep, &udc->gadget.ep_list, usb_ep.ep_list) ++ iproc_udc_req_queue_flush(ep, -ESHUTDOWN); ++} ++ ++/* ++ * APIs used by a Gadget driver to attach / detach from the UDC driver. ++ */ ++static int xgs_iproc_udc_start(struct usb_gadget *gadget, ++ struct usb_gadget_driver *gadget_driver) ++{ ++ struct iproc_udc *udc = gadget_to_udc(gadget); ++ unsigned long flags; ++ ++ if (!udc) { ++ dev_err(udc->dev, "UDC driver not initialized\n"); ++ return -ENODEV; ++ } ++ ++ if (!gadget_driver || !gadget_driver->setup || ++ gadget_driver->max_speed < USB_SPEED_FULL) { ++ dev_err(udc->dev, "invalid gadget driver\n" ); ++ return -EINVAL; ++ } ++ ++ spin_lock_irqsave(&udc->lock, flags); ++ ++ if (udc->gadget_driver) { ++ spin_unlock_irqrestore(&udc->lock, flags); ++ dev_err(udc->dev, "UDC driver busy\n"); ++ return -EBUSY; ++ } ++ ++ /* Hook up the gadget driver to the UDC controller driver */ ++ gadget_driver->driver.bus = NULL; ++ udc->gadget_driver = gadget_driver; ++ udc->gadget.dev.driver = &gadget_driver->driver; ++ udc->pullup_on = 1; ++ ++ iproc_udc_ops_start(udc); ++ /* un-stop the control endpoint */ ++ udc->ep[0].stopped = 0; ++ iproc_usbd_bus_conn(udc->usbd_regs); ++ ++ iproc_usbd_setup_done(udc->usbd_regs); ++ iproc_usbd_dma_en(udc->usbd_regs); ++ ++ spin_unlock_irqrestore(&udc->lock, flags); ++ ++ return ENOERROR; ++} ++ ++static int xgs_iproc_udc_stop(struct usb_gadget *gadget) ++{ ++ unsigned long flags; ++ struct iproc_udc *udc = gadget_to_udc(gadget); ++ ++ if (!udc) { ++ dev_err(udc->dev, "UDC driver not initialized\n"); ++ return -ENODEV; ++ } ++ ++ spin_lock_irqsave(&udc->lock, flags); ++ ++ udc->ep[0].stopped = 1; ++ iproc_udc_ops_stop(udc); ++ udelay(20); ++ udc->pullup_on = 0; ++ iproc_usbd_bus_disconn(udc->usbd_regs); ++ iproc_udc_ops_shutdown(udc); ++ spin_unlock_irqrestore(&udc->lock, flags); ++ ++ return ENOERROR; ++} ++ ++/* ++ * Linux Gadget endpoint operations. See usb_ep_ops in usb_gadget.h. ++ */ ++static int xgs_iproc_ep_enable(struct usb_ep *usb_ep, const struct usb_endpoint_descriptor *desc) ++{ ++ struct iproc_ep *ep = our_ep(usb_ep); ++ struct iproc_udc *udc = ep->udc; ++ unsigned long flags; ++ u32 xferType; ++ int ret = ENOERROR; ++ ++ if (!usb_ep || (ep->beq_addr != desc->bEndpointAddress)) { ++ dev_err(udc->dev, "invalid endpoint (%p)\n", usb_ep); ++ return -EINVAL; ++ } ++ ++ if (!desc || (desc->bDescriptorType != USB_DT_ENDPOINT)) { ++ dev_err(udc->dev, "ep%d: invalid descriptor=%p type=%d\n", ep->num, desc, desc ? desc->bDescriptorType : -1); ++ return -EINVAL; ++ } ++ ++ if (desc == ep->desc) { ++ dev_warn(udc->dev, "ep%d: already enabled with same descriptor\n", ep->num); ++ return -EEXIST; ++ } ++ ++ if (ep->desc) { ++ dev_warn(udc->dev, "ep%d: already enabled with another descriptor\n", ep->num); ++ return -EBUSY; ++ } ++ ++ if (!udc->gadget_driver || (udc->gadget.speed == USB_SPEED_UNKNOWN)) { ++ dev_warn(udc->dev, "%s: invalid device state\n", ep->usb_ep.name); ++ return -ESHUTDOWN; ++ } ++ ++ xferType = desc->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK; ++ if ((ep->dir == USB_DIR_IN) && (xferType == USB_ENDPOINT_XFER_ISOC)) { ++ if ((desc->bInterval < 1) || (desc->bInterval > 16)) { ++ dev_err(udc->dev, "%s: invalid ISOC bInterval=%u\n", ep->usb_ep.name, desc->bInterval); ++ return -ERANGE; ++ } ++ ++ /* ++ * We don't know when the host will send the first ISO IN request, so we need to set up ++ * to capture that event so we can align subsequent transfers to that particular frame ++ * number. Also set the frame number increment. The endpoint descriptor specifies this ++ * as a power of 2 (2**(n-1)). Translate this into a specific number of frames. ++ */ ++ ep->dma.frame_num = FRAME_NUM_INVALID; ++ ep->dma.frame_incr = 1 << (desc->bInterval - 1); ++ } ++ ++ spin_lock_irqsave(&udc->lock, flags); ++ ++ ep->desc = desc; ++ ep->stopped = 0; ++ ++ /** @todo Rework the UdcEpCfg() so it includes iproc_usbd_ep_cfg_set() ... */ ++ iproc_usbd_ep_cfg_set(udc->usbd_regs, ep->num, iproc_usbd_cfg_num(udc->usbd_regs)); ++ ++ spin_unlock_irqrestore(&udc->lock, flags); ++ ++ return ret; ++} ++ ++static int xgs_iproc_ep_disable(struct usb_ep *usb_ep) ++{ ++ struct iproc_ep *ep = our_ep(usb_ep); ++ struct iproc_udc *udc = ep->udc; ++ unsigned long flags; ++ int ret = ENOERROR; ++ ++ if (!usb_ep) { ++ dev_err(udc->dev, "invalid endpoint\n"); ++ return -EINVAL; ++ } ++ ++ if (!ep->desc) { ++ dev_warn(udc->dev, "%s: already disabled\n", ep->usb_ep.name); ++ return ENOERROR; ++ } ++ ++ spin_lock_irqsave(&udc->lock, flags); ++ ++ iproc_udc_req_queue_flush(ep, -ESHUTDOWN); ++ iproc_usbd_ep_irq_dis(udc->usbd_regs, ep->num, ep->dir); ++ ep->desc = NULL; ++ ++ spin_unlock_irqrestore(&udc->lock, flags); ++ ++ return ret; ++} ++ ++struct usb_request * xgs_iproc_ep_alloc_request(struct usb_ep *usb_ep, gfp_t gfp_flags) ++{ ++ struct iproc_ep_req *req; ++ ++ if (!usb_ep) ++ return NULL; ++ ++ if ((req = kzalloc(sizeof(*req), gfp_flags)) != NULL) { ++ /* ++ * Set the usb_req.dma to DMA_ADDR_INVALID so it can be determined if the usb_req.buf needs ++ * to be mapped when the request is subsequently queued. ++ */ ++ INIT_LIST_HEAD(&req->list_node); ++ req->usb_req.dma = DMA_ADDR_INVALID; ++ ++ return &req->usb_req; ++ } ++ ++ return NULL; ++} ++ ++static void xgs_iproc_ep_free_request(struct usb_ep *usb_ep, struct usb_request *usb_req) ++{ ++ struct iproc_ep_req *req = our_req(usb_req); ++ ++ if (usb_req) ++ kfree(req); ++} ++ ++static int xgs_iproc_ep_queue(struct usb_ep *usb_ep, struct usb_request *usb_req, gfp_t gfp_flags) ++{ ++ struct iproc_ep *ep = our_ep(usb_ep); ++ struct iproc_udc *udc = ep->udc; ++ struct iproc_ep_req *req = our_req(usb_req); ++ unsigned long flags; ++ int ret = ENOERROR; ++ ++ if (!usb_ep || !usb_req || !req->usb_req.complete || !req->usb_req.buf || !list_empty(&req->list_node)) { ++ dev_err(udc->dev, "invalid request\n"); ++ return -EINVAL; ++ } ++ ++ if (!ep->desc && (ep->num != 0)) { ++ dev_err(udc->dev, "%s: invalid EP state\n", ep->usb_ep.name); ++ return -EFAULT; ++ } ++ ++ if ((ep->type == USB_ENDPOINT_XFER_CONTROL) && !list_empty(&ep->list_queue)) { ++ dev_err(udc->dev, "%s: CTRL EP queue not empty\n", ep->usb_ep.name); ++ return -EPERM; ++ } ++ ++ if (usb_req->length > 16384 /* FSG_BUFLEN */) { ++ dev_err(udc->dev, "%s: request too big, length=%u\n", ep->usb_ep.name, usb_req->length); ++ return -E2BIG; ++ } ++ ++ /* ++ * Restrict ISOC IN requests to the max packet size. Assumption is that it does not make ++ * much sense to have more than one interval's (scheduled bandwidth's) worth of data. ++ */ ++ if ((ep->type == USB_ENDPOINT_XFER_ISOC) && (ep->dir == USB_DIR_IN) && (usb_req->length > ep->usb_ep.maxpacket)) { ++ dev_err(udc->dev, "%s: request > scheduled bandwidth, length=%u\n", ep->usb_ep.name, usb_req->length); ++ return -EFBIG; ++ } ++ ++ if (!udc->gadget_driver || (udc->gadget.speed == USB_SPEED_UNKNOWN)) { ++ dev_warn(udc->dev, "%s: invalid device state\n", ep->usb_ep.name); ++ return -ESHUTDOWN; ++ } ++ ++ if (((u32)req->usb_req.buf) & 0x3UL) { ++ /* ++ * The DMA buffer does not have the alignment required by the hardware. We keep an endpoint level ++ * buffer available to handle this situation if it arises. If we don't currently have one available ++ * for this purpose, or if the current one is not large enough, then allocate a new one. Since ++ * we only have one buffer, we won't copy into the buffer until we are ready to do the DMA transfer. ++ * Mark the request as needing this alignment (copy). ++ */ ++ if ((ep->dma.align_buff != NULL) && (ep->dma.align_len < req->usb_req.length)) { ++ dma_free_coherent(NULL, ep->dma.align_len, ep->dma.align_buff, ep->dma.align_addr); ++ ep->dma.align_buff = NULL; ++ } ++ ++ if (ep->dma.align_buff == NULL) { ++ ep->dma.align_len = req->usb_req.length; ++ ep->dma.align_buff = dma_alloc_coherent(NULL, ep->dma.align_len, &(ep->dma.align_addr), GFP_KERNEL); ++ } ++ ++ if (ep->dma.align_buff == NULL) { ++ dev_err(udc->dev, "%s: dma_alloc_coherent() failed, length=%u\n", ep->usb_ep.name, usb_req->length); ++ return -ENOMEM; ++ } ++ req->dma_aligned = 1; ++ } else if ((req->usb_req.dma == DMA_ADDR_INVALID) || (req->usb_req.dma == 0)) { ++ /* A physical address was not provided for the DMA buffer, so request it. */ ++ req->dma_mapped = 1; ++ req->usb_req.dma = dma_map_single(udc->gadget.dev.parent, ++ req->usb_req.buf, ++ req->usb_req.length, ++ ep->dir == USB_DIR_IN ? ++ DMA_TO_DEVICE : DMA_FROM_DEVICE); ++ } ++ ++ spin_lock_irqsave(&udc->lock, flags); ++ ++ req->usb_req.status = -EINPROGRESS; ++ req->usb_req.actual = 0; ++ ++ if ((ep->type == USB_ENDPOINT_XFER_CONTROL) && (ep->dir == USB_DIR_OUT) && (req->usb_req.length == 0)) { ++ /* ++ * This might happen if gadget driver decides to send zero length packet (ZLP) during STATUS phase ++ * of a control transfer. This may happen for the cases where there is not a DATA phase. Just consider ++ * things complete. ZLP will be issued by hardware. See the handling of SETUP packets for more details ++ * on control transfer processing. ++ */ ++ iproc_udc_req_xfer_done(ep, req, ENOERROR); ++ } else { ++ if (req->usb_req.length == 0) ++ req->usb_req.zero = 1; ++ iproc_udc_req_xfer_add(ep, req); ++ } ++ ++ spin_unlock_irqrestore(&udc->lock, flags); ++ ++ return ret; ++} ++ ++static int xgs_iproc_ep_dequeue(struct usb_ep *usb_ep, struct usb_request *usb_req) ++{ ++ struct iproc_ep *ep = our_ep(usb_ep); ++ struct iproc_udc *udc = ep->udc; ++ struct iproc_ep_req *req = our_req(usb_req); ++ unsigned long flags; ++ int ret = ENOERROR; ++ ++ if (!usb_ep || !usb_req) { ++ dev_err(udc->dev, "invalid request\n"); ++ return -EINVAL; ++ } ++ ++ spin_lock_irqsave(&udc->lock, flags); ++ ++ /* Make sure it's actually queued on this endpoint */ ++ list_for_each_entry(req, &ep->list_queue, list_node) { ++ if (&req->usb_req == usb_req) ++ break; ++ } ++ ++ if (&req->usb_req != usb_req) { ++ spin_unlock_irqrestore(&udc->lock, flags); ++ dev_err(udc->dev, "%s: request not queued\n", ep->usb_ep.name); ++ return -ENOLINK; ++ } ++ ++ /** @todo Handle case where the request is in progress, or completed but not dequeued */ ++ ++ iproc_udc_req_xfer_done(ep, req, -ECONNRESET); ++ spin_unlock_irqrestore(&udc->lock, flags); ++ ++ return ret; ++} ++ ++static int xgs_iproc_ep_set_halt(struct usb_ep *usb_ep, int enable) ++{ ++ struct iproc_ep *ep = our_ep(usb_ep); ++ struct iproc_udc *udc = ep->udc; ++ unsigned long flags; ++ int ret = ENOERROR; ++ ++ if (!usb_ep) { ++ dev_err(udc->dev, "invalid request\n"); ++ return -EINVAL; ++ } ++ ++ if (ep->type == USB_ENDPOINT_XFER_ISOC) { ++ dev_warn(udc->dev, "%s: ISO HALT operations not supported\n", ep->usb_ep.name); ++ return -EOPNOTSUPP; ++ } ++ ++ if (enable && (ep->dir == USB_DIR_IN) && !list_empty(&ep->list_queue)) { ++ /* Only allow halt on an IN EP if its queue is empty */ ++ dev_err(udc->dev, "%s: IN queue not empty\n", ep->usb_ep.name); ++ return -EAGAIN; ++ } ++ ++ if (!enable && (ep->type == USB_ENDPOINT_XFER_CONTROL)) { ++ /* ++ * Halt clear for a control EP should only be handled as part of the subsequent SETUP ++ * exchange that occurs after the Halt was set. ++ */ ++ dev_warn(udc->dev, "%s: CTRL HALT clear\n", ep->usb_ep.name); ++ return -EPROTO; ++ } ++ ++ spin_lock_irqsave(&udc->lock, flags); ++ ++ if (!enable) { ++ iproc_usbd_ep_stall_dis(udc->usbd_regs, ep->num, ep->dir); ++ } else if (ep->type != USB_ENDPOINT_XFER_CONTROL) { ++ iproc_usbd_ep_stall_en(udc->usbd_regs, ep->num, ep->dir); ++ } else { ++ iproc_usbd_ep_stall_en(udc->usbd_regs, ep->num, USB_DIR_IN); ++ iproc_usbd_ep_stall_en(udc->usbd_regs, ep->num, USB_DIR_OUT); ++ } ++ ++ spin_unlock_irqrestore(&udc->lock, flags); ++ mdelay(2); ++ ++ return ret; ++} ++ ++static int xgs_iproc_ep_fifo_status(struct usb_ep *usb_ep) ++{ ++ /* ++ * The DWC UDC core doesn't have a mechanism for determining the number of bytes ++ * currently in a FIFO. The best that can be done is determine whether or not a ++ * FIFO is empty. However, for the situation where a single Rx FIFO is being ++ * used for all endpoints, if cannot be determined which OUT and CTRL EP's are ++ * affected if the Rx FIFO is not empty. ++ */ ++ return -EOPNOTSUPP; ++} ++ ++static void xgs_iproc_ep_fifo_flush(struct usb_ep *usb_ep) ++{ ++ struct iproc_ep *ep = our_ep(usb_ep); ++ struct iproc_udc *udc = ep->udc; ++ unsigned long flags; ++ ++ if (!usb_ep) { ++ dev_err(udc->dev, "invalid request\n"); ++ return; ++ } ++ ++ /* ++ * FIFO flush for a control EP does not make any sense. The SETUP protocol ++ * should eliminate the need to flush. ++ */ ++ if (ep->type == USB_ENDPOINT_XFER_CONTROL) { ++ dev_warn(udc->dev, "%s: CTRL FIFO flush\n", ep->usb_ep.name); ++ return; ++ } ++ ++ if (iproc_usbd_ep_fifo_empty(udc->usbd_regs, ep->num, ep->dir)) { ++ dev_warn(udc->dev, "%s: FIFO empty\n", ep->usb_ep.name); ++ return; ++ } ++ ++ spin_lock_irqsave(&udc->lock, flags); ++ ++ iproc_usbd_ep_fifo_flush_en(udc->usbd_regs, ep->num, ep->dir); ++ ++ spin_unlock_irqrestore(&udc->lock, flags); ++} ++ ++ ++/*************************************************************************** ++ * Linux proc file system functions ++ ***************************************************************************/ ++#ifdef CONFIG_USB_GADGET_DEBUG_FILES ++#include ++ ++static const char udc_proc_file_name[] = "driver/" XGS_IPROC_UDC_NAME; ++ ++static int proc_file_show(struct seq_file *s, void *_) ++{ ++ return 0; ++} ++ ++static int proc_file_open(struct inode *inode, struct file *file) ++{ ++ return(single_open(file, proc_file_show, NULL)); ++} ++ ++static struct file_operations udc_proc_file_ops = ++{ ++ .open = proc_file_open, ++ .read = seq_read, ++ .llseek = seq_lseek, ++ .release = single_release, ++}; ++ ++static void xgs_iproc_udc_proc_create(void) ++{ ++ proc_create(udc_proc_file_name, 0, NULL, &udc_proc_file_ops); ++} ++ ++static void xgs_iproc_udc_proc_remove(void) ++{ ++ remove_proc_entry(udc_proc_file_name, NULL); ++} ++ ++#else ++ ++static void xgs_iproc_udc_proc_create(void) {} ++static void xgs_iproc_udc_proc_remove(void) {} ++ ++#endif ++ ++static struct usb_gadget_ops xgs_iproc_udc_ops = { ++ .udc_start = xgs_iproc_udc_start, ++ .udc_stop = xgs_iproc_udc_stop, ++}; ++ ++static struct usb_ep_ops xgs_iproc_udc_ep_ops = { ++ .enable = xgs_iproc_ep_enable, ++ .disable = xgs_iproc_ep_disable, ++ .alloc_request = xgs_iproc_ep_alloc_request, ++ .free_request = xgs_iproc_ep_free_request, ++ .queue = xgs_iproc_ep_queue, ++ .dequeue = xgs_iproc_ep_dequeue, ++ .set_halt = xgs_iproc_ep_set_halt, ++ .fifo_status = xgs_iproc_ep_fifo_status, ++ .fifo_flush = xgs_iproc_ep_fifo_flush, ++}; ++ ++static const struct of_device_id xgs_iproc_udc_ids[] = { ++ { .compatible = "brcm,usbd-xgs-iproc", }, ++ { .compatible = "brcm,usbd-xgs-hx4", }, ++ { } ++}; ++MODULE_DEVICE_TABLE(of, xgs_iproc_udc_ids); ++ ++static void iproc_udc_ops_init(struct iproc_udc *udc) ++{ ++ int idx; ++ struct iproc_ep *ep; ++ ++ iproc_usbd_ops_init(udc->usbd_regs); ++ ++ /* ++ * See usb/gadget/epautoconf.c for endpoint naming conventions. ++ * Control endpoints are bi-directional, but initial transfer (SETUP stage) is always OUT. ++ */ ++ /** @todo Really should make the non endpoint 0 init attributes configurable by the chip specific part ++ * of the driver, idx.e. the device instantiation. The settings below are for a chip specific DWG UDC ++ * core configuration. Also should incorporate the DWG UDC endpoint type attribute as part of this, ++ * which can be control, IN, OUT, or bidirectional. ++ */ ++ INIT_LIST_HEAD(&udc->gadget.ep_list); ++ for (idx = 0; idx < IPROC_UDC_EP_CNT; idx++) { ++ ep = &udc->ep[idx]; ++ ++ ep->udc = udc; ++ ep->num = idx; ++ ++ ep->dir = (xgs_iproc_ep_info[idx].caps.dir_in) ? USB_DIR_IN : USB_DIR_OUT;; ++ ep->beq_addr = idx | ep->dir; ++ ep->stopped = 0; ++ ep->type = xgs_iproc_ep_info[idx].type; ++ ++ ep->usb_ep.name = xgs_iproc_ep_info[idx].name; ++ ep->usb_ep.caps = xgs_iproc_ep_info[idx].caps; ++ ep->usb_ep.ops = &xgs_iproc_udc_ep_ops; ++ list_add_tail(&ep->usb_ep.ep_list, &udc->gadget.ep_list); ++ usb_ep_set_maxpacket_limit(&ep->usb_ep, xgs_iproc_ep_info[idx].msize); ++ ep->usb_ep.desc = NULL; ++ INIT_LIST_HEAD(&ep->list_queue); ++ ++ iproc_usbd_ep_ops_init(udc->usbd_regs, ep->num, ep->type, ++ ep->dir, xgs_iproc_ep_info[idx].msize); ++ ++ iproc_dma_ep_init(ep); ++ } ++ ++ udc->gadget.ep0 = &udc->ep[0].usb_ep; ++ list_del(&udc->ep[0].usb_ep.ep_list); ++ ++ iproc_usbd_self_pwr_en(udc->usbd_regs); ++} ++ ++ ++/**************************************************************************** ++ ***************************************************************************/ ++static int xgs_iproc_udc_probe(struct platform_device *pdev) ++{ ++ int ret = ENOERROR; ++ struct device *dev = &pdev->dev; ++ struct device_node *dn = dev->of_node; ++ struct iproc_udc *udc = NULL; ++ struct usb_phy *phy; ++ struct resource *res; ++ void __iomem *usbd_base; ++ int irq; ++ ++ phy = devm_usb_get_phy_by_phandle(dev, "usb-phy", 0); ++ if (IS_ERR(phy)) { ++ dev_err(dev, "unable to find transceiver\n"); ++ return PTR_ERR(phy); ++ } ++ ++ /* HX4 SVK always is identified as HOST, because GPIO pin 0 is always low, ++ * even the strap setting of JP1803 is device mode. ++ */ ++ if (!of_device_is_compatible(dn, "brcm,usbd-xgs-hx4")) ++ if (phy->flags != IPROC_USB_MODE_DEVICE) ++ return -ENODEV; ++ ++ irq = platform_get_irq(pdev, 0); ++ ++ udc = devm_kzalloc(dev, sizeof(*udc), GFP_KERNEL); ++ if (!udc) { ++ dev_err(dev, "devm_kzalloc() failed\n" ); ++ return -ENOMEM; ++ } ++ ++ platform_set_drvdata(pdev, udc); ++ udc->dev = dev; ++ spin_lock_init(&udc->lock); ++ ++ res = platform_get_resource(pdev, IORESOURCE_MEM, 0); ++ usbd_base = devm_ioremap_resource(dev, res); ++ if (IS_ERR(usbd_base)) { ++ dev_err(dev, "can't ioremap USB2D base addr\n"); ++ return PTR_ERR(usbd_base); ++ } ++ ++ udc->usbd_regs = (struct iproc_usbd_regs *)usbd_base; ++ ++ ret = usb_phy_init(phy); ++ if (ret < 0) { ++ dev_err(dev, "initial usb transceiver failed.\n"); ++ return ret; ++ } ++ ++ ret = iproc_platform_dma_alloc(pdev, udc); ++ if (ret < 0) { ++ dev_err(dev, "iproc_platform_dma_alloc() failed\n"); ++ return ret; ++ } ++ ++ /* gadget init */ ++ udc->gadget.name = XGS_IPROC_UDC_NAME; ++ udc->gadget.speed = USB_SPEED_UNKNOWN; ++ udc->gadget.max_speed = USB_SPEED_HIGH; ++ udc->gadget.ops = &xgs_iproc_udc_ops; ++ ++ iproc_udc_ops_init(udc); ++ ++ iproc_usbd_irq_dis(udc->usbd_regs, USBD_IRQ_ALL); ++ iproc_usbd_irq_clear(udc->usbd_regs, USBD_IRQ_ALL); ++ ++ ret = devm_request_irq(dev, irq, xgs_iproc_udc_isr, 0, ++ XGS_IPROC_UDC_NAME, (void *)udc); ++ if (ret < 0) { ++ dev_err(dev, "error requesting IRQ #%d\n", irq); ++ goto err1; ++ } ++ ++ ret = usb_add_gadget_udc(dev, &udc->gadget); ++ if (ret < 0) { ++ dev_err(dev, "usb_add_gadget_udc() failed\n"); ++ goto err1; ++ } ++ ++ xgs_iproc_udc_proc_create(); ++ ++ return ENOERROR; ++ ++err1: ++ iproc_platform_dma_free(pdev, udc); ++ ++ return ret; ++} ++ ++static void xgs_iproc_udc_remove(struct platform_device *pdev) ++{ ++ struct iproc_udc *udc = platform_get_drvdata(pdev); ++ ++ if (udc) { ++ xgs_iproc_udc_proc_remove(); ++ ++ usb_del_gadget_udc(&udc->gadget); ++ iproc_udc_ops_finish(udc); ++ ++ platform_set_drvdata(pdev, NULL); ++ iproc_platform_dma_free(pdev, udc); ++ } ++} ++ ++/* ++ * Generic platform device driver definition. ++ */ ++static struct platform_driver xgs_iproc_udc_driver = ++{ ++ .probe = xgs_iproc_udc_probe, ++ .remove = xgs_iproc_udc_remove, ++ .driver = { ++ .name = XGS_IPROC_UDC_NAME, ++ .owner = THIS_MODULE, ++ .of_match_table = xgs_iproc_udc_ids, ++ }, ++}; ++ ++module_platform_driver(xgs_iproc_udc_driver); ++ ++MODULE_AUTHOR("Broadcom"); ++MODULE_DESCRIPTION("Broadcom USB Device Controller(UDC) driver"); ++MODULE_LICENSE("GPL"); +diff --git a/drivers/usb/gadget/udc/xgs_iproc_udc.h b/drivers/usb/gadget/udc/xgs_iproc_udc.h +new file mode 100644 +index 000000000000..853cd81874b5 +--- /dev/null ++++ b/drivers/usb/gadget/udc/xgs_iproc_udc.h +@@ -0,0 +1,157 @@ ++/* ++ * Copyright 2017 Broadcom Limited ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ */ ++ ++#ifndef _XGS_IPROC_UDC_H_ ++#define _XGS_IPROC_UDC_H_ ++ ++#include ++#include "xgs_iproc_usbd_regs.h" ++ ++#define IPROC_UDC_EP_CNT 7 ++#define IPROC_UDC_CTRL_MAX_PKG_SIZE 64 ++#define IPROC_UDC_EP_MAX_PKG_SIZE 512 ++ ++/* ++ * Some unsigned number trickery for indexing into DMA descriptor chain. If the ++ * decriptor count is some power of 2, then we can use the mask to extract ++ * an index and not worry about wrap around as the unsigned variables are ++ * incremented. E.g. in following, IDX(0), IDX(4), IDX(8), ..., IDX(0xffffc) ++ * all produce the same result, i.e. 0. ++ */ ++#define IPROC_EP_DMA_DESC_CNT 1 ++#define IPROC_EP_DMA_DESC_IDX_MASK (IPROC_EP_DMA_DESC_CNT - 1) ++#define IPROC_EP_DMA_DESC_IDX(_idx) ((_idx) & IPROC_EP_DMA_DESC_IDX_MASK) ++ ++/* Some DWC UDC DMA descriptor layout definitions. See datasheet for details. */ ++ ++struct iproc_udc_dma_setup { ++ unsigned int status; ++ unsigned int reserved; ++ unsigned int data1; ++ unsigned int data2; ++}; ++ ++struct iproc_udc_dma_desc { ++ unsigned int status; ++ unsigned int reserved; ++ unsigned int buf_addr; ++ unsigned int next_addr; ++}; ++ ++/* ++ * Common DMA descriptor layout used for all endpoints. Only control endpoints ++ * need the setup descriptor, but in order to simply things it is defined for ++ * all. It may be possible to omit this altogether, and just use one of data ++ * descriptors for setup instead. The control transfer protocol should allow ++ * this to be done. ++ */ ++struct iproc_ep_dma { ++ struct iproc_udc_dma_setup setup; ++ struct iproc_udc_dma_desc desc[IPROC_EP_DMA_DESC_CNT]; ++}; ++ ++/* Structure used for DMA descriptor allocation. Not really necessary but convenient. */ ++struct iproc_udc_dma { ++ struct iproc_ep_dma ep[IPROC_UDC_EP_CNT]; ++}; ++ ++/* ++ * Structure used to hold endpoint specific information. There's one of these for ++ * each endpoint. ++ * ++ * The Rx/Tx FIFO sizes are used for RAM allocation purposes. Each transfer ++ * direction has its own RAM that is used for all the FIFOs in that direction. ++ * The RAM gets segmented (allocated) as each endpoint gets enabled. This dynamic ++ * allocation FIFO sizes gives flexibility, and does not require that an ++ * endpoint's size be fixed at run-time or during compilation. If there's not ++ * enough FIFO RAM as required by a gadget's endpoint definitions, then an ++ * error will occur for the enabling of any endpoints after the FIFO RAM has ++ * become exhausted. ++ * ++ * The DMA virtual address is used for all descriptor operations. The DMA ++ * physical address is for convenience (setting hardware registers, obtaining ++ * addresses for descriptor chaining, etc.). The DMA descriptors are not ++ * allocated on a per-endpoint basis. These are just pointers into the ++ * large block that was allocated for all endpoints. ++ */ ++struct iproc_ep { ++ struct usb_ep usb_ep; /* usb_gadget.h */ ++ const struct usb_endpoint_descriptor *desc; /* usb/ch9.h */ ++ struct list_head list_queue; /* active BCM_UDC_EP_REQ's for the endpoint */ ++ struct iproc_udc *udc; /* endpoint owner (UDC controller) */ ++ unsigned int num; ++ unsigned int dir; /* USB_DIR_xxx (direction) */ ++ unsigned int type; /* USB_ENDPOINT_XFER_xxx */ ++ unsigned int beq_addr; /* dirn | type */ ++ unsigned int stopped : 1; ++ struct { ++ struct iproc_ep_dma *vir_addr; ++ struct iproc_ep_dma *phy_addr; ++ struct usb_request *usb_req; /* Current request being DMA'd */ ++ ++ /** @todo Some of the below are duplicates of usb_request elements. Use usb_request instead. */ ++ unsigned int max_buf_len; /* Max buffer length to use with a descriptor */ ++ unsigned int done_len; /* Length of request DMA'd so far */ ++ unsigned int todo_len; /* Length of request left to DMA */ ++ unsigned int add_idx; /* descriptor chain index */ ++ unsigned int rm_idx; /* descriptor chain index */ ++ unsigned int buf_addr; /* Location in request to DMA */ ++ unsigned int frame_num; /* Frame number for ISOC transfers */ ++ unsigned int frame_incr; /* Frame number increment (period) */ ++ unsigned int status; ++ unsigned int done; /* DMA and USB transfer completion indication (IN_DMA_DONE and IN_XFER_DONE) */ ++ void *align_buff; /* Aligned buffer. Only used if usb_req buffer not aligned properly. */ ++ dma_addr_t align_addr; /* Aligned buffer physical address */ ++ unsigned int align_len; /* Aligned buffer length */ ++ } dma; ++}; ++ ++/* ++ * Structure used to hold controller information. There should be one of these ++ * for each controller. Most likely there's only one. ++ * ++ * The Rx/Tx FIFO space are used for RAM allocation purposes. These track how ++ * much RAM is available for use as a FIFO. When an endpoint is enabled, these ++ * are check to see if there's enough RAM for a FIFO of the desired length as ++ * implied by the max packet size. ++ */ ++struct iproc_udc { ++ struct usb_gadget gadget; /* usb_gadget.h */ ++ struct usb_gadget_driver *gadget_driver; /* usb_gadget.h */ ++ struct completion *dev_release; /* Used for coordination during device removal */ ++ spinlock_t lock; ++ struct device *dev; ++ unsigned int irq_num; ++ struct iproc_ep ep[IPROC_UDC_EP_CNT]; ++ struct iproc_usbd_regs *usbd_regs; ++ struct { ++ struct iproc_udc_dma *vir_addr; ++ struct iproc_udc_dma *phy_addr; ++ } dma; ++ unsigned int vbus_active : 1; /* Indicates if VBUS is present */ ++ unsigned int pullup_on : 1; /* Indicates if pull up is on */ ++}; ++ ++/* ++ * Structure used to hold an endpoint transfer request. Can be any number of ++ * these for an endpoint. ++ */ ++struct iproc_ep_req { ++ struct usb_request usb_req; /* usb_gadget.h */ ++ struct list_head list_node; /* For linking in the BCM_UDC_EP request queue */ ++ dma_addr_t orig_dma_addr; /* Original buffer DMA address (physical). */ ++ unsigned dma_mapped : 1; /* Indicates if address mapping req'd. See usb_gadget.h */ ++ unsigned dma_aligned : 1; /* Indicates if buffer duplication done for alignment. */ ++}; ++ ++#endif /* _XGS_IPROC_UDC_H_ */ +diff --git a/drivers/usb/gadget/udc/xgs_iproc_usbd_regs.h b/drivers/usb/gadget/udc/xgs_iproc_usbd_regs.h +new file mode 100644 +index 000000000000..78e0bcf0842e +--- /dev/null ++++ b/drivers/usb/gadget/udc/xgs_iproc_usbd_regs.h +@@ -0,0 +1,969 @@ ++/* ++ * Copyright 2017 Broadcom Limited ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ */ ++ ++#ifndef _USBD_REGS_H_ ++#define _USBD_REGS_H_ ++ ++#include ++#include ++ ++#define USBD_MULTI_RX_FIFO 0 ++ ++#define USBD_EP_CFG_CNT 10 ++#define USBD_REG_EP_CNT 16 ++ ++#define USBD_IRQ_REMOTEWAKEUP_DELTA REG_INTR_REMOTE_WAKEUP_DELTA ++#define USBD_IRQ_SPEED_ENUM_DONE REG_INTR_SPD_ENUM_DONE ++#define USBD_IRQ_SOF_DETECTED REG_INTR_SOF_RX ++#define USBD_IRQ_BUS_SUSPEND REG_INTR_BUS_SUSPEND ++#define USBD_IRQ_BUS_RESET REG_INTR_BUS_RESET ++#define USBD_IRQ_BUS_IDLE REG_INTR_BUS_IDLE ++#define USBD_IRQ_SET_INTF REG_INTR_SET_INTF_RX ++#define USBD_IRQ_SET_CFG REG_INTR_SET_CFG_RX ++#define USBD_IRQ_ALL (USBD_IRQ_REMOTEWAKEUP_DELTA | \ ++ USBD_IRQ_SPEED_ENUM_DONE | \ ++ USBD_IRQ_SOF_DETECTED | \ ++ USBD_IRQ_BUS_SUSPEND | \ ++ USBD_IRQ_BUS_RESET | \ ++ USBD_IRQ_BUS_IDLE | \ ++ USBD_IRQ_SET_INTF | \ ++ USBD_IRQ_SET_CFG) ++ ++#define USBD_EP_STAT_DMA_ERROR REG_EP_FIFO_STATUS_AHB_BUS_ERROR ++#define USBD_EP_STAT_DMA_BUF_UNAVAIL REG_EP_FIFO_STATUS_DMA_BUF_NOT_AVAIL ++#define USBD_EP_STAT_IN_TOKEN_RX REG_EP_FIFO_STATUS_IN_TOKEN_RX ++#define USBD_EP_STAT_IN_DMA_DONE REG_EP_FIFO_STATUS_IN_DMA_DONE ++#define USBD_EP_STAT_IN_FIFO_EMPTY REG_EP_FIFO_STATUS_IN_FIFO_EMPTY ++#define USBD_EP_STAT_IN_XFER_DONE REG_EP_FIFO_STATUS_IN_XFER_DONE ++#define USBD_EP_STAT_OUT_DMA_DATA_DONE REG_EP_FIFO_STATUS_OUT_DMA_DATA_DONE ++#define USBD_EP_STAT_OUT_DMA_SETUP_DONE REG_EP_FIFO_STATUS_OUT_DMA_SETUP_DONE ++#define USBD_EP_STAT_ALL (USBD_EP_STAT_DMA_ERROR | \ ++ USBD_EP_STAT_DMA_BUF_UNAVAIL | \ ++ USBD_EP_STAT_IN_TOKEN_RX | \ ++ USBD_EP_STAT_IN_DMA_DONE | \ ++ USBD_EP_STAT_IN_XFER_DONE | \ ++ USBD_EP_STAT_OUT_DMA_DATA_DONE | \ ++ USBD_EP_STAT_OUT_DMA_SETUP_DONE) ++ ++ ++#define REG8_RSVD(start, end) u8 rsvd_##start[(end - start) / sizeof(u8)] ++#define REG16_RSVD(start, end) u16 rsvd_##start[(end - start) / sizeof(u16)] ++#define REG32_RSVD(start, end) u32 rsvd_##start[(end - start) / sizeof(u32)] ++ ++struct iproc_usbd_ep_fifo_regs { ++ uint ctrl; ++ uint status; ++ uint size1; ++ uint size2; /* Buf Size OUT/Max PKT SIZE */ ++ uint buf_addr; ++ uint desc_addr; ++ REG32_RSVD(0x18, 0x20); ++}; ++ ++struct iproc_usbd_regs { ++ struct iproc_usbd_ep_fifo_regs ep_fifo_in[USBD_REG_EP_CNT]; ++ struct iproc_usbd_ep_fifo_regs ep_fifo_out[USBD_REG_EP_CNT]; ++ uint dev_cfg; ++ uint dev_ctrl; ++ uint dev_status; ++ uint dev_irq_status; ++ uint dev_irq_mask; ++ uint ep_irq_status; ++ uint ep_irq_mask; ++ uint test_mode; ++ uint rel_num; ++ REG32_RSVD(0x424, 0x500); ++ REG32_RSVD(0x500, 0x504); ++ uint ep_cfg[USBD_REG_EP_CNT]; ++ REG32_RSVD(0x544, 0x800); ++ uint rx_fifo[256]; ++ uint tx_fifo[256]; ++ uint strap; ++}; ++ ++ ++struct iproc_usbd_idm_regs { ++ REG32_RSVD(0x000, 0x408); ++ uint io_ctrl; ++ REG32_RSVD(0x40C, 0x500); ++ uint io_status; ++ REG32_RSVD(0x504, 0x800); ++ uint reset_ctrl; ++ uint reset_status; ++ REG32_RSVD(0x808, 0xA00); ++ uint irq_status; ++}; ++ ++/* ++ * The endpoint type field in the FIFO control register has the same enumeration ++ * as the USB protocol. Not going to define it here. ++ */ ++#define REG_EP_FIFO_CTRL_OUT_FLUSH_ENABLE (1 << 12) ++#define REG_EP_FIFO_CTRL_OUT_CLOSE_DESC (1 << 11) ++#define REG_EP_FIFO_CTRL_IN_SEND_NULL (1 << 10) ++#define REG_EP_FIFO_CTRL_OUT_DMA_ENABLE (1 << 9) ++#define REG_EP_FIFO_CTRL_NAK_CLEAR (1 << 8) ++#define REG_EP_FIFO_CTRL_NAK_SET (1 << 7) ++#define REG_EP_FIFO_CTRL_NAK_IN_PROGRESS (1 << 6) ++#define REG_EP_FIFO_CTRL_TYPE_SHIFT 4 ++#define REG_EP_FIFO_CTRL_TYPE_MASK (3 << REG_EP_FIFO_CTRL_TYPE_SHIFT) ++#define REG_EP_FIFO_CTRL_IN_DMA_ENABLE (1 << 3) ++#define REG_EP_FIFO_CTRL_SNOOP_ENABLE (1 << 2) ++#define REG_EP_FIFO_CTRL_IN_FLUSH_ENABLE (1 << 1) ++#define REG_EP_FIFO_CTRL_STALL_ENABLE (1 << 0) ++ ++#define REG_EP_FIFO_STATUS_CLOSE_DESC_CLEAR (1 << 28) ++#define REG_EP_FIFO_STATUS_IN_XFER_DONE (1 << 27) ++#define REG_EP_FIFO_STATUS_STALL_SET_RX (1 << 26) ++#define REG_EP_FIFO_STATUS_STALL_CLEAR_RX (1 << 25) ++#define REG_EP_FIFO_STATUS_IN_FIFO_EMPTY (1 << 24) ++#define REG_EP_FIFO_STATUS_IN_DMA_DONE (1 << 10) ++#define REG_EP_FIFO_STATUS_AHB_BUS_ERROR (1 << 9) ++#define REG_EP_FIFO_STATUS_OUT_FIFO_EMPTY (1 << 8) ++#define REG_EP_FIFO_STATUS_DMA_BUF_NOT_AVAIL (1 << 7) ++#define REG_EP_FIFO_STATUS_IN_TOKEN_RX (1 << 6) ++#define REG_EP_FIFO_STATUS_OUT_DMA_SETUP_DONE (1 << 5) ++#define REG_EP_FIFO_STATUS_OUT_DMA_DATA_DONE (1 << 4) ++ ++#define REG_EP_FIFO_SIZE1_OUT_ISOC_PID_SHIFT 16 ++#define REG_EP_FIFO_SIZE1_OUT_ISOC_PID_MASK (3 << REG_EP_FIFO_SIZE1_OUT_ISOC_PID_SHIFT) ++#define REG_EP_FIFO_SIZE1_IN_DEPTH_SHIFT 0 ++#define REG_EP_FIFO_SIZE1_IN_DEPTH_MASK (0xffff << REG_EP_FIFO_SIZE1_IN_DEPTH_SHIFT) ++#define REG_EP_FIFO_SIZE1_OUT_FRAME_NUM_SHIFT REG_EP_FIFO_SIZE1_IN_DEPTH_SHIFT ++#define REG_EP_FIFO_SIZE1_OUT_FRAME_NUM_MASK REG_EP_FIFO_SIZE1_IN_DEPTH_MASK ++ ++#define REG_EP_FIFO_SIZE2_OUT_DEPTH_SHIFT 16 ++#define REG_EP_FIFO_SIZE2_OUT_DEPTH_MASK (0xffff << REG_EP_FIFO_SIZE2_OUT_DEPTH_SHIFT) ++#define REG_EP_FIFO_SIZE2_PKT_MAX_SHIFT 0 ++#define REG_EP_FIFO_SIZE2_PKT_MAX_MASK (0xffff << REG_EP_FIFO_SIZE2_PKT_MAX_SHIFT) ++ ++/* ++ * The endpoint type field in the config register has the same enumeration ++ * as the USB protocol. Not going to define it here. ++ */ ++#define REG_EP_CFG_PKT_MAX_SHIFT 19 ++#define REG_EP_CFG_PKT_MAX_MASK (0x7ff << REG_EP_CFG_PKT_MAX_SHIFT) ++#define REG_EP_CFG_ALT_NUM_SHIFT 15 ++#define REG_EP_CFG_ALT_NUM_MASK (0xf << REG_EP_CFG_ALT_NUM_SHIFT) ++#define REG_EP_CFG_INTF_NUM_SHIFT 11 ++#define REG_EP_CFG_INTF_NUM_MASK (0xf << REG_EP_CFG_INTF_NUM_SHIFT) ++#define REG_EP_CFG_CFG_NUM_SHIFT 7 ++#define REG_EP_CFG_CFG_NUM_MASK (0xf << REG_EP_CFG_CFG_NUM_SHIFT) ++#define REG_EP_CFG_TYPE_SHIFT 5 ++#define REG_EP_CFG_TYPE_MASK (0x3 << REG_EP_CFG_TYPE_SHIFT) ++#define REG_EP_CFG_DIRN_IN (1 << 4) ++#define REG_EP_CFG_DIRN_OUT 0 ++#define REG_EP_CFG_FIFO_NUM_SHIFT 0 ++#define REG_EP_CFG_FIFO_NUM_MASK (0xf << REG_EP_CFG_FIFO_NUM_SHIFT) ++ ++/* Endpoint Interrupt register definitions */ ++#define REG_EP_INTR_OUT_SHIFT 16 ++#define REG_EP_INTR_OUT_MASK (0xffff << REG_EP_INTR_OUT_SHIFT) ++#define REG_EP_INTR_IN_SHIFT 0 ++#define REG_EP_INTR_IN_MASK (0xffff << REG_EP_INTR_IN_SHIFT) ++ ++/* Device Controller register definitions */ ++#define REG_CFG_ULPI_DDR_ENABLE (1 << 19) ++#define REG_CFG_SET_DESCRIPTOR_ENABLE (1 << 18) ++#define REG_CFG_CSR_PROGRAM_ENABLE (1 << 17) ++#define REG_CFG_HALT_STALL_ENABLE (1 << 16) ++#define REG_CFG_HS_TIMEOUT_CALIB_SHIFT 13 ++#define REG_CFG_HS_TIMEOUT_CALIB_MASK (7 << REG_CFG_HS_TIMEOUT_CALIB_SHIFT) ++#define REG_CFG_FS_TIMEOUT_CALIB_SHIFT 10 ++#define REG_CFG_FS_TIMEOUT_CALIB_MASK (7 << REG_CFG_FS_TIMEOUT_CALIB_SHIFT) ++#define REG_CFG_STATUS_1_ENABLE (1 << 8) ++#define REG_CFG_STATUS_ENABLE (1 << 7) ++#define REG_CFG_UTMI_BI_DIRN_ENABLE (1 << 6) ++#define REG_CFG_UTMI_8BIT_ENABLE (1 << 5) ++#define REG_CFG_SYNC_FRAME_ENABLE (1 << 4) ++#define REG_CFG_SELF_PWR_ENABLE (1 << 3) ++#define REG_CFG_REMOTE_WAKEUP_ENABLE (1 << 2) ++#define REG_CFG_SPD_SHIFT 0 ++#define REG_CFG_SPD_MASK (3 << REG_CFG_SPD_SHIFT) ++#define REG_CFG_SPD_HS (0 << REG_CFG_SPD_SHIFT) ++#define REG_CFG_SPD_FS (1 << REG_CFG_SPD_SHIFT) ++#define REG_CFG_SPD_LS (2 << REG_CFG_SPD_SHIFT) ++#define REG_CFG_SPD_FS_48MHZ (3 << REG_CFG_SPD_SHIFT) ++ ++#define REG_CTRL_DMA_OUT_THRESHOLD_LEN_SHIFT 24 ++#define REG_CTRL_DMA_OUT_THRESHOLD_LEN_MASK (0xff << REG_CTRL_DMA_OUT_THRESHOLD_LEN_SHIFT) ++#define REG_CTRL_DMA_BURST_LEN_SHIFT 16 ++#define REG_CTRL_DMA_BURST_LEN_MASK (0xff << REG_CTRL_DMA_BURST_LEN_SHIFT) ++#define REG_CTRL_OUT_FIFO_FLUSH_ENABLE (1 << 14) ++#define REG_CTRL_CSR_DONE (1 << 13) ++#define REG_CTRL_OUT_NAK_ALL_ENABLE (1 << 12) ++#define REG_CTRL_DISCONNECT_ENABLE (1 << 10) ++#define REG_CTRL_DMA_MODE_ENABLE (1 << 9) ++#define REG_CTRL_DMA_BURST_ENABLE (1 << 8) ++#define REG_CTRL_DMA_OUT_THRESHOLD_ENABLE (1 << 7) ++#define REG_CTRL_DMA_BUFF_FILL_MODE_ENABLE (1 << 6) ++#define REG_CTRL_ENDIAN_BIG_ENABLE (1 << 5) ++#define REG_CTRL_DMA_DESC_UPDATE_ENABLE (1 << 4) ++#define REG_CTRL_DMA_IN_ENABLE (1 << 3) /*TX DMA Enable */ ++#define REG_CTRL_DMA_OUT_ENABLE (1 << 2) /*RX DMA Enable */ ++#define REG_CTRL_RESUME_SIGNAL_ENABLE (1 << 0) ++#define REG_CTRL_LE_ENABLE 0 ++ ++#define REG_STAT_SOF_FRAME_NUM_SHIFT 18 ++#define REG_STAT_SOF_FRAME_NUM_MASK (0x3fff << REG_STAT_SOF_FRAME_NUM_SHIFT) ++#define REG_STAT_REMOTE_WAKEUP_ALLOWED (1 << 17) ++#define REG_STAT_PHY_ERROR (1 << 16) ++#define REG_STAT_OUT_FIFO_EMPTY (1 << 15) ++#define REG_STAT_SPD_SHIFT 13 ++#define REG_STAT_SPD_MASK (3 << REG_STAT_SPD_SHIFT) ++#define REG_STAT_SPD_HS (0 << REG_STAT_SPD_SHIFT) ++#define REG_STAT_SPD_FS (1 << REG_STAT_SPD_SHIFT) ++#define REG_STAT_SPD_LS (2 << REG_STAT_SPD_SHIFT) ++#define REG_STAT_SPD_FS_48MHZ (3 << REG_STAT_SPD_SHIFT) ++#define REG_STAT_BUS_SUSPENDED (1 << 12) ++#define REG_STAT_ALT_NUM_SHIFT 8 ++#define REG_STAT_ALT_NUM_MASK (0xf << REG_STAT_ALT_NUM_SHIFT) ++#define REG_STAT_INTF_NUM_SHIFT 4 ++#define REG_STAT_INTF_NUM_MASK (0xf << REG_STAT_INTF_NUM_SHIFT) ++#define REG_STAT_CFG_NUM_SHIFT 0 ++#define REG_STAT_CFG_NUM_MASK (0xf << REG_STAT_CFG_NUM_SHIFT) ++ ++#define REG_INTR_REMOTE_WAKEUP_DELTA (1 << 7) /*Remote Wakeup Delta*/ ++#define REG_INTR_SPD_ENUM_DONE (1 << 6) /*ENUM Speed Completed*/ ++#define REG_INTR_SOF_RX (1 << 5) /*SOF Token Detected */ ++#define REG_INTR_BUS_SUSPEND (1 << 4) /*SUSPEND State Detected*/ ++#define REG_INTR_BUS_RESET (1 << 3) /*RESET State Detected */ ++#define REG_INTR_BUS_IDLE (1 << 2) /*IDLE State Detected*/ ++#define REG_INTR_SET_INTF_RX (1 << 1) /*Received SET_INTERFACE CMD*/ ++#define REG_INTR_SET_CFG_RX (1 << 0) /*Received SET_CONFIG CMD*/ ++ ++/* DMA Descriptor definitions */ ++#define REG_DMA_STAT_BUF_SHIFT 30 ++#define REG_DMA_STAT_BUF_HOST_READY (0 << REG_DMA_STAT_BUF_SHIFT) ++#define REG_DMA_STAT_BUF_DMA_BUSY (1 << REG_DMA_STAT_BUF_SHIFT) ++#define REG_DMA_STAT_BUF_DMA_DONE (2 << REG_DMA_STAT_BUF_SHIFT) ++#define REG_DMA_STAT_BUF_HOST_BUSY (3 << REG_DMA_STAT_BUF_SHIFT) ++#define REG_DMA_STAT_BUF_MASK (3 << REG_DMA_STAT_BUF_SHIFT) ++#define REG_DMA_STAT_RX_SHIFT 28 ++#define REG_DMA_STAT_RX_SUCCESS (0 << REG_DMA_STAT_RX_SHIFT) ++#define REG_DMA_STAT_RX_ERR_DESC (1 << REG_DMA_STAT_RX_SHIFT) ++#define REG_DMA_STAT_RX_ERR_BUF (3 << REG_DMA_STAT_RX_SHIFT) ++#define REG_DMA_STAT_RX_MASK (3 << REG_DMA_STAT_RX_SHIFT) ++#define REG_DMA_STAT_CFG_NUM_SHIFT 24 ++#define REG_DMA_STAT_CFG_NUM_MASK (0xf << REG_DMA_STAT_CFG_NUM_SHIFT) ++#define REG_DMA_STAT_INTF_NUM_SHIFT 20 ++#define REG_DMA_STAT_INTF_NUM_MASK (0xf << REG_DMA_STAT_INTF_NUM_SHIFT) ++#define REG_DMA_STAT_ALT_NUM_SHIFT 16 ++#define REG_DMA_STAT_ALT_NUM_MASK (0xf << REG_DMA_STAT_ALT_NUM_SHIFT) ++#define REG_DMA_STAT_LAST_DESC (1 << 27) ++#define REG_DMA_STAT_FRAME_NUM_SHIFT 16 ++#define REG_DMA_STAT_FRAME_NUM_MASK (0x7ff << REG_DMA_STAT_FRAME_NUM_SHIFT) ++#define REG_DMA_STAT_BYTE_CNT_SHIFT 0 ++#define REG_DMA_STAT_ISO_PID_SHIFT 14 ++#define REG_DMA_STAT_ISO_PID_MASK (0x3 << REG_DMA_STAT_ISO_PID_SHIFT) ++#define REG_DMA_STAT_ISO_BYTE_CNT_SHIFT REG_DMA_STAT_BYTE_CNT_SHIFT ++#define REG_DMA_STAT_ISO_BYTE_CNT_MASK (0x3fff << REG_DMA_STAT_ISO_BYTE_CNT_SHIFT) ++#define REG_DMA_STAT_NON_ISO_BYTE_CNT_SHIFT REG_DMA_STAT_BYTE_CNT_SHIFT ++#define REG_DMA_STAT_NON_ISO_BYTE_CNT_MASK (0xffff << REG_DMA_STAT_NON_ISO_BYTE_CNT_SHIFT) ++ ++/* USB2D IDM definitions */ ++#define IPROC_USB2D_IDM_REG_IO_CTRL_DIRECT_CLK_ENABLE (1 << 0) ++#define IPROC_USB2D_IDM_REG_RESET_CTRL_RESET (1 << 0) ++ ++/* Inline Function Definitions */ ++static inline uint ++usbd_reg32_read(volatile uint *reg) ++{ ++ return (le32_to_cpu(*reg)); ++} ++ ++static inline void usbd_reg32_write(volatile uint *reg, uint value) ++{ ++ *reg = cpu_to_le32(value); ++} ++ ++static inline void usbd_reg32_bits_set(volatile uint *reg, uint bits) ++{ ++ uint tmp; ++ tmp = usbd_reg32_read(reg); ++ tmp |= bits; ++ usbd_reg32_write(reg, tmp); ++} ++ ++static inline void usbd_reg32_bits_clear(volatile uint *reg, uint bits) ++{ ++ uint tmp; ++ tmp = usbd_reg32_read(reg); ++ tmp &= ~bits; ++ usbd_reg32_write(reg, tmp); ++} ++ ++static inline void usbd_reg32_bits_modify(volatile uint *reg, uint mask, uint value) ++{ ++ uint tmp; ++ tmp = usbd_reg32_read(reg); ++ tmp &= ~mask; ++ tmp |= value; ++ usbd_reg32_write(reg, tmp); ++} ++ ++#define IPROC_USBD_READ(_r) usbd_reg32_read(&_r) ++#define IPROC_USBD_WRITE(_r, _v) usbd_reg32_write(&_r, _v) ++#define IPROC_USBD_BITS_SET(_r, _b) usbd_reg32_bits_set(&_r, _b) ++#define IPROC_USBD_BITS_CLEAR(_r, _b) usbd_reg32_bits_clear(&_r, _b) ++#define IPROC_USBD_BITS_MODIFY(_r, _m, _v) usbd_reg32_bits_modify(&_r, _m, _v) ++ ++/***************************************************************************** ++* @brief Connect / Disconnect to USB BUS ++*****************************************************************************/ ++static inline void iproc_usbd_bus_conn(struct iproc_usbd_regs *base) ++{ ++ IPROC_USBD_BITS_CLEAR(base->dev_ctrl, REG_CTRL_DISCONNECT_ENABLE); ++} ++ ++static inline void iproc_usbd_bus_disconn(struct iproc_usbd_regs *base) ++{ ++ IPROC_USBD_BITS_SET(base->dev_ctrl, REG_CTRL_DISCONNECT_ENABLE); ++} ++ ++/***************************************************************************** ++* @brief USB BUS suspend status ++* @return ++* true : BUS is in suspend state ++* false : BUS is not in suspend state ++*****************************************************************************/ ++static inline bool iproc_usbd_bus_suspend(struct iproc_usbd_regs *base) ++{ ++ return (IPROC_USBD_READ(base->dev_status) & REG_STAT_BUS_SUSPENDED) ? true : false; ++} ++ ++/***************************************************************************** ++* @brief Retrieve setting numbers from last Rx'd SET_CONFIGURATION or ++* SET_INTERFACE request ++* @return ++* Setting Number ++*****************************************************************************/ ++static inline uint iproc_usbd_alt_num(struct iproc_usbd_regs *base) ++{ ++ return ((IPROC_USBD_READ(base->dev_status) & REG_STAT_ALT_NUM_MASK) >> REG_STAT_ALT_NUM_SHIFT); ++} ++ ++static inline uint iproc_usbd_cfg_num(struct iproc_usbd_regs *base) ++{ ++ return ((IPROC_USBD_READ(base->dev_status) & REG_STAT_CFG_NUM_MASK) >> REG_STAT_CFG_NUM_SHIFT); ++} ++ ++static inline uint iproc_usbd_intf_num(struct iproc_usbd_regs *base) ++{ ++ return ((IPROC_USBD_READ(base->dev_status) & REG_STAT_INTF_NUM_MASK) >> REG_STAT_INTF_NUM_SHIFT); ++} ++ ++ ++/***************************************************************************** ++* @brief Disable / Enable DMA operations at the device level (all endpoints) ++*****************************************************************************/ ++static inline void iproc_usbd_dma_dis(struct iproc_usbd_regs *base) ++{ ++ IPROC_USBD_BITS_CLEAR(base->dev_ctrl, (REG_CTRL_DMA_IN_ENABLE | REG_CTRL_DMA_OUT_ENABLE)); ++} ++ ++static inline void iproc_usbd_dma_en(struct iproc_usbd_regs *base) ++{ ++ IPROC_USBD_BITS_SET(base->dev_ctrl, (REG_CTRL_DMA_IN_ENABLE | REG_CTRL_DMA_OUT_ENABLE)); ++} ++ ++static inline bool iproc_usbd_dma_status(struct iproc_usbd_regs *base) ++{ ++ return (IPROC_USBD_READ(base->dev_ctrl) & REG_CTRL_DMA_OUT_ENABLE ? true : false); ++} ++ ++/***************************************************************************** ++* @brief Retrieve Frame number contained in last Rx'd SOF packet ++* @return ++* Frame Number in the following format. ++* bits[13:3] milli-second frame number ++* bits[2:0] micro-frame number ++* @note ++* For full and low speed connections, the microframe number will be zero. ++*****************************************************************************/ ++static inline uint iproc_usbd_last_rx_frame_num(struct iproc_usbd_regs *base) ++{ ++ return((IPROC_USBD_READ(base->dev_status) & REG_STAT_SOF_FRAME_NUM_MASK) >> REG_STAT_SOF_FRAME_NUM_SHIFT); ++} ++ ++/***************************************************************************** ++* @brief Device level interrupt operations ++* @note ++* Use the USBD_IRQ_xxx definitions with these routines. These ++* definitions are bit-wise, and allow operations on multiple interrupts ++* by OR'ing the definitions together. ++* DeviceIrqClear(), DeviceIrqDisable(), DeviceIrqEnable() use their mask ++* parameter to operate only on the interrupts set in the mask. E.g. ++* DeviceIrqEnable( DEVICE_IRQ_SET_INTF ); ++* DeviceIrqEnable( DEVICE_IRQ_SET_CFG ); ++* and ++* DeviceIrqEnable( DEVICE_IRQ_SET_INTF | DEVICE_IRQ_SET_CFG ); ++* are equivalent. ++* DeviceIrqMask() returns a mask of all the interrupts that are enabled. ++* DeviceIrqStatus() returns a mask of all the interrupts that have an active status. ++*****************************************************************************/ ++static inline uint iproc_usbd_irq_active(struct iproc_usbd_regs *base) ++{ ++ return(IPROC_USBD_READ(base->dev_irq_status)); ++} ++ ++static inline void iproc_usbd_irq_clear(struct iproc_usbd_regs *base, uint mask) ++{ ++ IPROC_USBD_WRITE(base->dev_irq_status, mask); ++} ++ ++static inline void iproc_usbd_irq_dis(struct iproc_usbd_regs *base, uint mask) ++{ ++ IPROC_USBD_BITS_SET(base->dev_irq_mask, mask); ++} ++ ++static inline void iproc_usbd_irq_en(struct iproc_usbd_regs *base, uint mask) ++{ ++ IPROC_USBD_BITS_CLEAR(base->dev_irq_mask, mask); ++} ++static inline uint iproc_usbd_irq_mask(struct iproc_usbd_regs *base) ++{ ++ return((~IPROC_USBD_READ(base->dev_irq_mask)) & USBD_IRQ_ALL); ++} ++ ++/***************************************************************************** ++* @brief Disable / Enable NAK responses for all OUT endpoints. ++*****************************************************************************/ ++static inline void iproc_usbd_nak_response_dis(struct iproc_usbd_regs *base) ++{ ++ IPROC_USBD_BITS_CLEAR(base->dev_ctrl, REG_CTRL_OUT_NAK_ALL_ENABLE); ++} ++ ++static inline void iproc_usbd_nak_response_en(struct iproc_usbd_regs *base) ++{ ++ IPROC_USBD_BITS_SET(base->dev_ctrl, REG_CTRL_OUT_NAK_ALL_ENABLE); ++} ++ ++/***************************************************************************** ++* @brief PHY error detected ++*****************************************************************************/ ++static inline bool iproc_usbd_phy_err_detect(struct iproc_usbd_regs *base) ++{ ++ return(IPROC_USBD_READ(base->dev_status) & REG_STAT_PHY_ERROR ? true : false); ++} ++ ++/***************************************************************************** ++* @brief Remote Wakeup operations. ++* DeviceRemoteWakeupEnable() and DeviceRemoteWakeupDisable() are used to ++* specify device if is going to attempt this. ++* DeviceRemoteWakeupAllowed() indicates if host has enabled this feature. ++* The associated DEVICE_IRQ_REMOTEWAKEUP_DELTA can be used to determine ++* changes to the status of this feature. ++* DeviceRemoteWakeupStart(); delayMsec(1); DeviceRemoteWakeupStop(); is ++* used for controlling the wakeup signalling. ++*****************************************************************************/ ++static inline bool iproc_usbd_wakeup_allow(struct iproc_usbd_regs *base) ++{ ++ return(IPROC_USBD_READ(base->dev_status) & REG_STAT_REMOTE_WAKEUP_ALLOWED ? true : false); ++} ++ ++static inline void iproc_usbd_wakeup_dis(struct iproc_usbd_regs *base) ++{ ++ IPROC_USBD_BITS_CLEAR(base->dev_cfg, REG_CFG_REMOTE_WAKEUP_ENABLE); ++} ++ ++static inline void iproc_usbd_wakeup_en(struct iproc_usbd_regs *base) ++{ ++ IPROC_USBD_BITS_SET(base->dev_cfg, REG_CFG_REMOTE_WAKEUP_ENABLE); ++} ++ ++static inline void iproc_usbd_wakeup_start(struct iproc_usbd_regs *base) ++{ ++ IPROC_USBD_BITS_SET(base->dev_ctrl, REG_CTRL_RESUME_SIGNAL_ENABLE); ++} ++ ++static inline void iproc_usbd_wakeup_stop(struct iproc_usbd_regs *base) ++{ ++ IPROC_USBD_BITS_CLEAR(base->dev_ctrl, REG_CTRL_RESUME_SIGNAL_ENABLE); ++} ++ ++/***************************************************************************** ++* @brief Control whether or not device advertises itself as self-powered. ++*****************************************************************************/ ++static inline void iproc_usbd_self_pwr_dis(struct iproc_usbd_regs *base) ++{ ++ IPROC_USBD_BITS_CLEAR(base->dev_cfg, REG_CFG_SELF_PWR_ENABLE); ++} ++ ++static inline void iproc_usbd_self_pwr_en(struct iproc_usbd_regs *base) ++{ ++ IPROC_USBD_BITS_SET(base->dev_cfg, REG_CFG_SELF_PWR_ENABLE); ++} ++ ++/***************************************************************************** ++* @brief Control whether or not device SET DESCRIPTOR support is enabled. ++* If disabled, STALL will be issued upon receipt of a SET DESCRIPTOR request. ++*****************************************************************************/ ++static inline void iproc_usbd_set_desc_dis(struct iproc_usbd_regs *base) ++{ ++ IPROC_USBD_BITS_CLEAR(base->dev_cfg, REG_CFG_SET_DESCRIPTOR_ENABLE); ++} ++ ++static inline void iproc_usbd_set_desc_en(struct iproc_usbd_regs *base) ++{ ++ IPROC_USBD_BITS_SET(base->dev_cfg, REG_CFG_SET_DESCRIPTOR_ENABLE); ++} ++ ++/***************************************************************************** ++* @brief Device SET configuration or SET interface has completed. ++* If disabled, STALL will be issued upon receipt of a SET DESCRIPTOR request. ++*****************************************************************************/ ++static inline void iproc_usbd_setup_done(struct iproc_usbd_regs *base) ++{ ++ IPROC_USBD_BITS_SET(base->dev_ctrl, REG_CTRL_CSR_DONE); ++} ++ ++/***************************************************************************** ++* @brief Link speed routines. ++* Use the usbDevHw_DEVICE_SPEED_xxx definitions with these routines. These ++* DeviceSpeedRequested() indicates the desired link speed. ++* DeviceSpeedEnumerated() returns the speed negotiated with the host. ++* The associated DEVICE_IRQ_SPEED_ENUM_DONE can be used to determine ++* when speed negotiation has completed. ++*****************************************************************************/ ++static inline uint iproc_usbd_speed_get(struct iproc_usbd_regs *base) ++{ ++ switch(IPROC_USBD_READ(base->dev_status) & REG_STAT_SPD_MASK) { ++ case REG_STAT_SPD_LS: ++ return(USB_SPEED_LOW); ++ ++ case REG_STAT_SPD_HS: ++ return(USB_SPEED_HIGH); ++ ++ case REG_STAT_SPD_FS: ++ case REG_STAT_SPD_FS_48MHZ: ++ return(USB_SPEED_FULL); ++ } ++ ++ return USB_SPEED_FULL; ++} ++ ++static inline void iproc_usbd_speed_req(struct iproc_usbd_regs *base, uint speed) ++{ ++ IPROC_USBD_BITS_CLEAR(base->dev_cfg, REG_CFG_SPD_MASK); ++ ++ switch(speed) { ++ case USB_SPEED_LOW: ++ IPROC_USBD_BITS_SET(base->dev_cfg, REG_CFG_SPD_LS); ++ break; ++ ++ case USB_SPEED_HIGH: ++ IPROC_USBD_BITS_SET(base->dev_cfg, REG_CFG_SPD_HS); ++ break; ++ ++ case USB_SPEED_FULL: ++ default: ++ IPROC_USBD_BITS_SET(base->dev_cfg, REG_CFG_SPD_FS); ++ break; ++ } ++} ++ ++/***************************************************************************** ++* @brief Finalize (terminate) / Initialize Endpoint operations ++* @param num - Endpoint number ++* @param dirn - Endpoint direction. See ENDPT_DIRN_xxx definitions ++* @param dirn - Endpoint type. See ENDPT_TYPE_xxx definitions ++* @param dirn - Endpoint max packet size. ++*****************************************************************************/ ++static inline void iproc_usbd_ep_ops_finish(struct iproc_usbd_regs *base, uint num) ++{ ++} ++ ++static inline void iproc_usbd_ep_ops_init(struct iproc_usbd_regs *base, uint num, uint type, uint dirn, uint maxPktSize) ++{ ++ if ((type == USB_ENDPOINT_XFER_CONTROL) || (dirn == USB_DIR_OUT)) { ++ IPROC_USBD_WRITE(base->ep_fifo_out[num].ctrl, (type << REG_EP_FIFO_CTRL_TYPE_SHIFT)); ++ IPROC_USBD_WRITE(base->ep_fifo_out[num].status, IPROC_USBD_READ(base->ep_fifo_out[num].status)); ++ IPROC_USBD_WRITE(base->ep_fifo_out[num].size1, 0); ++ IPROC_USBD_WRITE(base->ep_fifo_out[num].size2, ((maxPktSize >> 2) << 16) | maxPktSize); ++#if USBD_MULTI_RX_FIFO ++ IPROC_USBD_BITS_SET(base->ep_fifo_out[num].size2, ((maxPktSize + 3) >> 2) << REG_EP_FIFO_SIZE2_OUT_DEPTH_SHIFT)); ++#endif ++ } ++ ++ if ((type == USB_ENDPOINT_XFER_CONTROL) || (dirn == USB_DIR_IN)) { ++ IPROC_USBD_WRITE(base->ep_fifo_in[num].ctrl, (type << REG_EP_FIFO_CTRL_TYPE_SHIFT)); ++ IPROC_USBD_WRITE(base->ep_fifo_in[num].size2, (maxPktSize << REG_EP_FIFO_SIZE2_PKT_MAX_SHIFT)); ++ IPROC_USBD_WRITE(base->ep_fifo_in[num].size1, (maxPktSize >> 2)); ++ IPROC_USBD_BITS_SET(base->ep_fifo_in[num].ctrl, REG_EP_FIFO_CTRL_IN_FLUSH_ENABLE); ++ IPROC_USBD_BITS_CLEAR(base->ep_fifo_in[num].ctrl, (REG_EP_FIFO_CTRL_NAK_SET | REG_EP_FIFO_CTRL_IN_FLUSH_ENABLE)); ++ } ++ ++ IPROC_USBD_WRITE(base->ep_cfg[num], (num << REG_EP_CFG_FIFO_NUM_SHIFT) | ++ (type << REG_EP_CFG_TYPE_SHIFT) | ++ (maxPktSize << REG_EP_CFG_PKT_MAX_SHIFT) | ++ (dirn == USB_DIR_OUT ? REG_EP_CFG_DIRN_OUT : REG_EP_CFG_DIRN_IN)); ++} ++ ++/***************************************************************************** ++* @brief Endpoint Configuration / Interface / Alternate number operations ++* @param num - Endpoint number ++* @param cfg - Configuration number ++* @param intf - Interface number ++* @param alt - Alternate number ++*****************************************************************************/ ++static inline void iproc_usbd_ep_alt_set(struct iproc_usbd_regs *base, uint num, uint alt) ++{ ++ IPROC_USBD_BITS_MODIFY(base->ep_cfg[num], REG_EP_CFG_ALT_NUM_MASK, (alt << REG_EP_CFG_ALT_NUM_SHIFT)); ++} ++ ++static inline void iproc_usbd_ep_cfg_set(struct iproc_usbd_regs *base, uint num, uint cfg) ++{ ++ IPROC_USBD_BITS_MODIFY(base->ep_cfg[num], REG_EP_CFG_CFG_NUM_MASK, (cfg << REG_EP_CFG_CFG_NUM_SHIFT)); ++} ++ ++static inline void iproc_usbd_ep_intf_set(struct iproc_usbd_regs *base, uint num, uint intf) ++{ ++ IPROC_USBD_BITS_MODIFY(base->ep_cfg[num], REG_EP_CFG_INTF_NUM_MASK, (intf << REG_EP_CFG_INTF_NUM_SHIFT)); ++} ++ ++ ++/***************************************************************************** ++* @brief Endpoint DMA routines ++* @param num - Endpoint number ++* @param addr - physical address of buffer or descriptor ++*****************************************************************************/ ++static inline void iproc_usbd_ep_dma_dis(struct iproc_usbd_regs *base, uint num, uint dirn) ++{ ++ if (dirn == USB_DIR_OUT) { ++#if USBD_MULTI_RX_FIFO ++ IPROC_USBD_BITS_CLEAR(base->ep_fifo_out[num].ctrl, REG_EP_FIFO_CTRL_OUT_DMA_ENABLE); ++#else ++ /* ++ * With a single RX FIFO, do not want to do anything, as there might be another OUT capable ++ * endpoint still active and wanting DMA enabled. If theory this should be OK, as long as ++ * the DMA descriptor buffer status fields are the last thing updated before being set to ++ * HOST ready, or the first thing updated when being set to HOST busy. Hopefully no ++ * situations arise such that there's contention with the hardware with doing this. ++ */ ++#endif ++ } else { ++ IPROC_USBD_BITS_CLEAR(base->ep_fifo_in[num].ctrl, REG_EP_FIFO_CTRL_IN_DMA_ENABLE); ++ } ++} ++ ++static inline void iproc_usbd_ep_dma_en(struct iproc_usbd_regs *base, uint num, uint dirn) ++{ ++ if (dirn == USB_DIR_OUT) { ++#if USBD_MULTI_RX_FIFO ++ IPROC_USBD_BITS_SET(base->ep_fifo_out[num].ctrl, REG_EP_FIFO_CTRL_OUT_DMA_ENABLE); ++#else ++ IPROC_USBD_BITS_SET(base->dev_ctrl, REG_CTRL_DMA_OUT_ENABLE); ++#endif ++ } else { ++ /* Set the Poll bit in the control register */ ++ IPROC_USBD_BITS_SET(base->ep_fifo_in[num].ctrl, REG_EP_FIFO_CTRL_IN_DMA_ENABLE); ++ } ++} ++ ++static inline void iproc_usbd_ep_dma_buf_addr_set(struct iproc_usbd_regs *base, uint num, uint dirn, void *addr) ++{ ++ if (dirn == USB_DIR_OUT) ++ IPROC_USBD_WRITE(base->ep_fifo_out[num].buf_addr, (uint)addr); ++} ++ ++static inline void iproc_usbd_ep_dma_desc_addr_set(struct iproc_usbd_regs *base, uint num, uint dirn, void *addr) ++{ ++ if (dirn == USB_DIR_OUT) ++ IPROC_USBD_WRITE(base->ep_fifo_out[num].desc_addr, (uint)addr); ++ else ++ IPROC_USBD_WRITE(base->ep_fifo_in[num].desc_addr, (uint)addr); ++} ++ ++/***************************************************************************** ++* @brief Endpoint FIFO routines ++* @param num - Endpoint number ++* @note The flush operation is a state. Once enabled, FIFO contents are discared ++* until disabled. Usually enable upon endpoint termination or error, and ++* then disable once operations are to resume normally. ++*****************************************************************************/ ++static inline bool iproc_usbd_ep_fifo_empty(struct iproc_usbd_regs *base, uint num, uint dirn) ++{ ++ if (dirn == USB_DIR_OUT) { ++#if USBD_MULTI_RX_FIFO ++ return(base->ep_fifo_out[num].status & REG_EP_FIFO_STATUS_OUT_FIFO_EMPTY ? true : false); ++#else ++ return(base->dev_status & REG_STAT_OUT_FIFO_EMPTY ? true : false); ++#endif ++ } ++ ++ return(base->ep_fifo_in[num].status & REG_EP_FIFO_STATUS_IN_FIFO_EMPTY ? true : false); ++} ++ ++static inline void iproc_usbd_ep_fifo_flush_dis(struct iproc_usbd_regs *base, uint num, uint dirn) ++{ ++ if (dirn == USB_DIR_OUT) { ++#if USBD_MULTI_RX_FIFO ++ IPROC_USBD_BITS_CLEAR(base->ep_fifo_out[num].ctrl, REG_EP_FIFO_CTRL_OUT_FLUSH_ENABLE); ++#else ++ IPROC_USBD_BITS_CLEAR(base->dev_ctrl, REG_CTRL_OUT_FIFO_FLUSH_ENABLE); ++#endif ++ } ++ else { ++ IPROC_USBD_BITS_CLEAR(base->ep_fifo_in[num].ctrl, REG_EP_FIFO_CTRL_IN_FLUSH_ENABLE); ++ } ++} ++ ++static inline void iproc_usbd_ep_fifo_flush_en(struct iproc_usbd_regs *base, uint num, uint dirn) ++{ ++ if (dirn == USB_DIR_OUT) { ++#if USBD_MULTI_RX_FIFO ++ IPROC_USBD_BITS_SET(base->ep_fifo_out[num].ctrl, REG_EP_FIFO_CTRL_OUT_FLUSH_ENABLE); ++#else ++ IPROC_USBD_BITS_SET(base->dev_ctrl, REG_CTRL_OUT_FIFO_FLUSH_ENABLE); ++#endif ++ } else { ++ IPROC_USBD_BITS_SET(base->ep_fifo_in[num].ctrl, REG_EP_FIFO_CTRL_IN_FLUSH_ENABLE); ++ } ++} ++ ++/***************************************************************************** ++* @brief Endpoint Frame Number routines ++* @param num - Endpoint number ++* @return Frame number of last packet received on the endpoint, and in the following format. ++* bits[13:3] milli-second frame number ++* bits[2:0] micro-frame number ++* @note Really only applicable to OUT endpoints. IN will always return 0. ++*****************************************************************************/ ++static inline uint iproc_usbd_ep_frame_num(struct iproc_usbd_regs *base, uint num, uint dirn) ++{ ++ if (dirn == USB_DIR_OUT) ++ return((IPROC_USBD_READ(base->ep_fifo_out[num].size1) & REG_EP_FIFO_SIZE1_OUT_FRAME_NUM_MASK) >> ++ REG_EP_FIFO_SIZE1_OUT_FRAME_NUM_SHIFT); ++ ++ return(0); ++} ++ ++/***************************************************************************** ++* @brief Endpoint IRQ / status routines ++* @param num - Endpoint number ++* @note ++* Cannot set specific status for Endpoint interrupts. Can only do operations ++* in a global sense. Once an interrupt occurs for an endpoint, the endpoint ++* status has to be checked for the particular type of interrupt that occurred. ++* ++* The iproc_usbd_ep_irq_en() and iproc_usbd_ep_irq_dis() are used for ++* operations on a specific endpoint. These routines may or may not be used in ++* the context of interrupt processing. ++* ++* Use the usbDevHw_EndptIrqListXxx() routines for operations using a bit-wise ++* list of endpoints (bit 0 for endpoint 0, etc.). Typical use would be for ++* interrupt processing. ++* ++* Use the USBD_EP_STAT_xxx definitions with the status routines. These ++* definitions are bit-wise, and allow operations on multiple conditions ++* by OR'ing the definitions together. ++*****************************************************************************/ ++static inline void iproc_usbd_ep_irq_clear(struct iproc_usbd_regs *base, uint num, uint dirn) ++{ ++ if (dirn == USB_DIR_OUT) ++ IPROC_USBD_WRITE(base->ep_irq_status, (1 << num) << REG_EP_INTR_OUT_SHIFT); ++ else ++ IPROC_USBD_WRITE(base->ep_irq_status, (1 << num) << REG_EP_INTR_IN_SHIFT); ++} ++ ++static inline void iproc_usbd_ep_irq_dis(struct iproc_usbd_regs *base, uint num, uint dirn) ++{ ++ if (dirn == USB_DIR_OUT) ++ IPROC_USBD_BITS_SET(base->ep_irq_mask, ((1 << num) << REG_EP_INTR_OUT_SHIFT)); ++ else ++ IPROC_USBD_BITS_SET(base->ep_irq_mask, ((1 << num) << REG_EP_INTR_IN_SHIFT)); ++} ++ ++static inline void iproc_usbd_ep_irq_en(struct iproc_usbd_regs *base, uint num, uint dirn) ++{ ++ if (dirn == USB_DIR_OUT) ++ IPROC_USBD_BITS_CLEAR(base->ep_irq_mask, ((1 << num) << REG_EP_INTR_OUT_SHIFT)); ++ else ++ IPROC_USBD_BITS_CLEAR(base->ep_irq_mask, ((1 << num) << REG_EP_INTR_IN_SHIFT)); ++} ++ ++static inline uint iproc_usbd_ep_irq_list_active(struct iproc_usbd_regs *base, uint dirn) ++{ ++ if (dirn == USB_DIR_OUT) ++ return((IPROC_USBD_READ(base->ep_irq_status) & REG_EP_INTR_OUT_MASK) >> REG_EP_INTR_OUT_SHIFT); ++ ++ return((IPROC_USBD_READ(base->ep_irq_status) & REG_EP_INTR_IN_MASK) >> REG_EP_INTR_IN_SHIFT); ++} ++ ++static inline void iproc_usbd_ep_irq_list_clear(struct iproc_usbd_regs *base, uint dirn, uint mask) ++{ ++ if (dirn == USB_DIR_OUT) /*strat from bit 16 */ ++ IPROC_USBD_WRITE(base->ep_irq_status, (mask << REG_EP_INTR_OUT_SHIFT)); ++ else /* start from bit 0 */ ++ IPROC_USBD_WRITE(base->ep_irq_status, (mask << REG_EP_INTR_IN_SHIFT)); ++} ++ ++static inline uint iproc_usbd_ep_stat_active(struct iproc_usbd_regs *base, uint num, uint dirn) ++{ ++ if (dirn == USB_DIR_OUT) /* End Point Status register */ ++ return(IPROC_USBD_READ(base->ep_fifo_out[num].status)); ++ ++ return(IPROC_USBD_READ(base->ep_fifo_in[num].status)); ++} ++ ++static inline void iproc_usbd_ep_stat_clear(struct iproc_usbd_regs *base, uint num, uint dirn, uint mask) ++{ ++ if (dirn == USB_DIR_OUT) ++ IPROC_USBD_WRITE(base->ep_fifo_out[num].status, mask); ++ else ++ IPROC_USBD_WRITE(base->ep_fifo_in[num].status, mask); ++} ++ ++/***************************************************************************** ++* @brief Endpoint NAK routines ++* @param num - Endpoint number ++* @note A NAK response can be enabled by the application by the EndptNakEnable(). ++* The EndptNakInProgress() is used to determine if the controller is ++* currently actively sending NAKs. This may have been a result of the ++* EndptNakEnable() or automatically by the controller under certain ++* conditions. The EndptNakClear() must be used to terminate the NAKs. ++*****************************************************************************/ ++static inline void iproc_usbd_ep_nak_clear(struct iproc_usbd_regs *base, uint num, uint dirn) ++{ ++ if (dirn == USB_DIR_OUT) ++ IPROC_USBD_BITS_SET(base->ep_fifo_out[num].ctrl, REG_EP_FIFO_CTRL_NAK_CLEAR); ++ else ++ IPROC_USBD_BITS_SET(base->ep_fifo_in[num].ctrl, REG_EP_FIFO_CTRL_NAK_CLEAR); ++} ++ ++static inline void iproc_usbd_ep_nak_en(struct iproc_usbd_regs *base, uint num, uint dirn) ++{ ++ if (dirn == USB_DIR_OUT) ++ IPROC_USBD_BITS_SET(base->ep_fifo_out[num].ctrl, REG_EP_FIFO_CTRL_NAK_SET); ++ else ++ IPROC_USBD_BITS_SET(base->ep_fifo_in[num].ctrl, REG_EP_FIFO_CTRL_NAK_SET); ++} ++ ++static inline void iproc_usbd_ep_nak_dis(struct iproc_usbd_regs *base, uint num, uint dirn) ++{ ++ if (dirn == USB_DIR_OUT) ++ IPROC_USBD_BITS_CLEAR(base->ep_fifo_out[num].ctrl, REG_EP_FIFO_CTRL_NAK_SET); ++ else ++ IPROC_USBD_BITS_CLEAR(base->ep_fifo_in[num].ctrl, REG_EP_FIFO_CTRL_NAK_SET); ++} ++ ++static inline bool iproc_usbd_ep_nak_progress(struct iproc_usbd_regs *base, uint num, uint dirn) ++{ ++ if (dirn == USB_DIR_OUT) ++ return (IPROC_USBD_READ(base->ep_fifo_out[num].ctrl) & REG_EP_FIFO_CTRL_NAK_IN_PROGRESS) ? true : false; ++ ++ return (IPROC_USBD_READ(base->ep_fifo_in[num].ctrl) & REG_EP_FIFO_CTRL_NAK_IN_PROGRESS) ? true : false; ++} ++ ++/***************************************************************************** ++* @brief Endpoint Stall routines ++* Disable / Enable STALL responses (halt feature) on a given endpoint. ++* @param num - Endpoint number ++*****************************************************************************/ ++static inline void iproc_usbd_ep_stall_dis(struct iproc_usbd_regs *base, uint num, uint dirn) ++{ ++ if (dirn == USB_DIR_OUT) ++ IPROC_USBD_BITS_CLEAR(base->ep_fifo_out[num].ctrl, REG_EP_FIFO_CTRL_STALL_ENABLE); ++ else ++ IPROC_USBD_BITS_CLEAR(base->ep_fifo_in[num].ctrl, REG_EP_FIFO_CTRL_STALL_ENABLE); ++} ++ ++static inline void iproc_usbd_ep_stall_en(struct iproc_usbd_regs *base, uint num, uint dirn) ++{ ++#if USBD_MULTI_RX_FIFO ++ if (!(IPROC_USBD_READ(base->ep_fifo_out[num].status) & REG_EP_FIFO_STATUS_OUT_FIFO_EMPTY)) ++#else ++ if (!(IPROC_USBD_READ(base->dev_status) & REG_STAT_OUT_FIFO_EMPTY)) ++#endif ++ return; ++ ++ if (dirn == USB_DIR_OUT) ++ IPROC_USBD_BITS_SET(base->ep_fifo_out[num].ctrl, REG_EP_FIFO_CTRL_STALL_ENABLE); ++ else ++ IPROC_USBD_BITS_SET(base->ep_fifo_in[num].ctrl, REG_EP_FIFO_CTRL_STALL_ENABLE); ++} ++ ++ ++/***************************************************************************** ++* @brief Initialize device controller operations ++*****************************************************************************/ ++static inline void iproc_usbd_ops_init(struct iproc_usbd_regs *base) ++{ ++ int idx; ++ ++ iproc_usbd_dma_dis(base); ++ iproc_usbd_irq_dis(base, USBD_IRQ_ALL); ++ iproc_usbd_irq_clear(base, USBD_IRQ_ALL); ++ ++ /* @todo Create and use usbDevHw_EndptIrqListDisable?? */ ++ for (idx = 0; idx < USBD_EP_CFG_CNT; idx++) { ++ iproc_usbd_ep_irq_dis(base, idx, USB_DIR_IN); ++ iproc_usbd_ep_irq_clear(base, idx, USB_DIR_IN); ++ iproc_usbd_ep_stat_clear(base, idx, USB_DIR_IN, ++ iproc_usbd_ep_stat_active(base, idx, USB_DIR_IN)); ++ ++ iproc_usbd_ep_irq_dis(base, idx, USB_DIR_OUT); ++ iproc_usbd_ep_irq_clear(base, idx, USB_DIR_OUT); ++ iproc_usbd_ep_stat_clear(base, idx, USB_DIR_OUT, ++ iproc_usbd_ep_stat_active(base, idx, USB_DIR_OUT)); ++ } ++ ++ IPROC_USBD_WRITE(base->dev_cfg, (REG_CFG_SET_DESCRIPTOR_ENABLE | ++ REG_CFG_UTMI_8BIT_ENABLE | ++ REG_CFG_CSR_PROGRAM_ENABLE | ++ REG_CFG_SPD_HS)); ++ ++ IPROC_USBD_WRITE(base->dev_ctrl, (REG_CTRL_LE_ENABLE | ++ REG_CTRL_DISCONNECT_ENABLE | ++ REG_CTRL_DMA_MODE_ENABLE | ++ REG_CTRL_DMA_IN_ENABLE | ++ REG_CTRL_DMA_OUT_ENABLE | ++ REG_CTRL_DMA_DESC_UPDATE_ENABLE | ++ REG_CTRL_OUT_NAK_ALL_ENABLE | ++ REG_CTRL_DMA_OUT_THRESHOLD_LEN_MASK | ++ REG_CTRL_DMA_BURST_LEN_MASK | ++#if !USBD_MULTI_RX_FIFO ++ REG_CTRL_OUT_FIFO_FLUSH_ENABLE | ++#endif ++ REG_CTRL_DMA_BURST_ENABLE)); ++ ++ IPROC_USBD_WRITE(base->dev_irq_mask, (REG_INTR_BUS_IDLE | REG_INTR_SOF_RX)); ++ IPROC_USBD_WRITE(base->ep_irq_mask,0); ++} ++ ++/***************************************************************************** ++* @brief Disable / Enable USB device ++*****************************************************************************/ ++static inline void iproc_usbd_dis(struct iproc_usbd_idm_regs *idm_base) ++{ ++ /* reset usb device */ ++ IPROC_USBD_BITS_SET(idm_base->reset_ctrl, IPROC_USB2D_IDM_REG_RESET_CTRL_RESET); ++ ++ /* disable usb device clock */ ++ IPROC_USBD_BITS_CLEAR(idm_base->io_ctrl, IPROC_USB2D_IDM_REG_IO_CTRL_DIRECT_CLK_ENABLE); ++ mdelay(10); ++} ++ ++static inline void iproc_usbd_en(struct iproc_usbd_idm_regs *idm_base) ++{ ++ /* enable usb device clock */ ++ IPROC_USBD_BITS_SET(idm_base->io_ctrl, IPROC_USB2D_IDM_REG_IO_CTRL_DIRECT_CLK_ENABLE); ++ mdelay(10); ++ ++ /* get usb device out of reset */ ++ IPROC_USBD_BITS_CLEAR(idm_base->reset_ctrl, IPROC_USB2D_IDM_REG_RESET_CTRL_RESET); ++ mdelay(100); ++} ++ ++#endif /* _USBD_REGS_H_ */ +-- +2.47.1 + diff --git a/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-18-usb-phy-phy-xgs-iproc.patch b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-18-usb-phy-phy-xgs-iproc.patch new file mode 100644 index 00000000..37f4fe83 --- /dev/null +++ b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-18-usb-phy-phy-xgs-iproc.patch @@ -0,0 +1,719 @@ +From 4afb4183318f926bab59d251a000a70152770033 Mon Sep 17 00:00:00 2001 +From: Jonas Gorski +Date: Thu, 7 Oct 2021 10:08:28 +0200 +Subject: [PATCH 18/21] usb: phy: phy-xgs-iproc + +--- + drivers/usb/phy/Kconfig | 7 + + drivers/usb/phy/Makefile | 1 + + drivers/usb/phy/phy-xgs-iproc.c | 674 ++++++++++++++++++++++++++++++++ + 3 files changed, 682 insertions(+) + create mode 100644 drivers/usb/phy/phy-xgs-iproc.c + +diff --git a/drivers/usb/phy/Kconfig b/drivers/usb/phy/Kconfig +index 5f629d7cad64..7050cb5658ef 100644 +--- a/drivers/usb/phy/Kconfig ++++ b/drivers/usb/phy/Kconfig +@@ -172,4 +172,11 @@ config USB_ULPI_VIEWPORT + Provides read/write operations to the ULPI phy register set for + controllers with a viewport register (e.g. Chipidea/ARC controllers). + ++config USBPHY_XGS_IPROC ++ tristate "BRCM iProc USB controller support" ++ depends on ARCH_XGS_IPROC ++ select USB_PHY ++ help ++ BRCM iProc USB controller support ++ + endmenu +diff --git a/drivers/usb/phy/Makefile b/drivers/usb/phy/Makefile +index e5d619b4d8f6..807ba15df838 100644 +--- a/drivers/usb/phy/Makefile ++++ b/drivers/usb/phy/Makefile +@@ -22,4 +22,5 @@ obj-$(CONFIG_USB_MV_OTG) += phy-mv-usb.o + obj-$(CONFIG_USB_MXS_PHY) += phy-mxs-usb.o + obj-$(CONFIG_USB_ULPI) += phy-ulpi.o + obj-$(CONFIG_USB_ULPI_VIEWPORT) += phy-ulpi-viewport.o ++obj-$(CONFIG_USBPHY_XGS_IPROC) += phy-xgs-iproc.o + obj-$(CONFIG_KEYSTONE_USB_PHY) += phy-keystone.o +diff --git a/drivers/usb/phy/phy-xgs-iproc.c b/drivers/usb/phy/phy-xgs-iproc.c +new file mode 100644 +index 000000000000..0db479860b97 +--- /dev/null ++++ b/drivers/usb/phy/phy-xgs-iproc.c +@@ -0,0 +1,672 @@ ++/* ++ * Copyright 2017 Broadcom Limited ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++ ++#define USB2_IDM_IO_CONTROL_DIRECT_ADDR(base) (base + 0x408) ++#define USB2_IDM_RESET_CONTROL_ADDR(base) (base + 0x800) ++#define IPROC_WRAP_MISC_STATUS__USBPHY_PLL_LOCK BIT(1) ++#define USB2_IDM_RESET_CONTROL__RESET BIT(0) ++#define USB2_IDM_IO_CONTROL_DIRECT__clk_enable BIT(0) ++ ++/* HX4 */ ++#define HX4_WRAP_XGPLL_CTRL_0_ADDR(base) (base + 0x1c) ++#define HX4_WRAP_XGPLL_CTRL_4_ADDR(base) (base + 0x2c) ++#define HX4_WRAP_USBPHY_CTRL_ADDR(base) (base + 0x34) ++#define HX4_WRAP_MISC_STATUS_ADDR(base) (base + 0x38) ++#define IPROC_CLK_NDIV_40 0x80 ++#define IPROC_CLK_NDIV_20 0x8C ++#define USB_CLK_NDIV_MASK 0xFE7FFE00 ++#define USB_CLK_PLL_RESET_MASK 0xFF7FFE00 ++#define USB_CLK_PHY_RESET_MASK 0xFFFFFE00 ++#define USB_CLK_NDIV_40 0x30 ++#define USB_CLK_NDIV_20 0x60 ++#define HX4_XGPLL_CTRL_4__NDIV_INT_R 0 ++#define HX4_XGPLL_CTRL_4__NDIV_INT_WIDTH 8 ++#define HX4_XGPLL_CTRL_0__CH3_MDIV_R 8 ++#define HX4_XGPLL_CTRL_0__CH3_MDIV_WIDTH 8 ++ ++/* KT2 */ ++#define KT2_PLL_CTRL_REG_3_ADDR(base) (base + 0x0c) ++#define KT2_PLL_CTRL_REG_5_ADDR(base) (base + 0x14) ++#define KT2_WRAP_USBPHY_CTRL_ADDR(base) (base + 0x20) ++#define KT2_WRAP_MISC_STATUS_ADDR(base) (base + 0x28) ++#define KT2_PLL_CTRL_REG_3__NDIV_INT_R 0 ++#define KT2_PLL_CTRL_REG_3__NDIV_INT_WIDTH 10 ++#define KT2_PLL_CTRL_REG_5__CH1_MDIV_R 0 ++#define KT2_PLL_CTRL_REG_5__CH1_MDIV_WIDTH 8 ++ ++/* SB2/GH/GH2/HR3 */ ++#define IPROC_WRAP_USBPHY_CTRL_0__PHY_IDDQ BIT(26) ++#define IPROC_WRAP_USBPHY_CTRL_0__PLL_RESETB BIT(25) ++#define IPROC_WRAP_USBPHY_CTRL_0__RESETB BIT(24) ++#define IPROC_WRAP_USBPHY_CTRL_2__PHY_ISO BIT(17) ++#define IPROC_WRAP_USBPHY_CTRL_2__P1CTL_B0 BIT(0) ++#define IPROC_WRAP_USBPHY_CTRL_2__P1CTL_B11 BIT(11) ++ ++/* SB2 */ ++#define SB2_WRAP_USBPHY_CTRL_0_ADDR(base) (base + 0x28) ++#define SB2_WRAP_USBPHY_CTRL_2_ADDR(base) (base + 0x30) ++#define SB2_WRAP_MISC_STATUS_ADDR(base) (base + 0x44) ++#define IPROC_WRAP_TOP_STRAP_CTRL_ADDR(base) (base + 0x70) ++#define IPROC_WRAP_TOP_STRAP_CTRL__USB_DEVICE BIT(10) ++ ++/* GH/GH2/HR3 */ ++#define GH_WRAP_USBPHY_CTRL_0_ADDR(base) (base + 0x44) ++#define GH_WRAP_USBPHY_CTRL_2_ADDR(base) (base + 0x4c) ++#define GH_WRAP_MISC_STATUS_ADDR(base) (base + 0x58) ++#define IPROC_WRAP_TOP_STRAP_STATUS_ADDR(base) (base + 0xa4) ++#define IPROC_WRAP_TOP_STRAP_STATUS__USB2_SEL BIT(17) ++ ++/* GH2 */ ++#define USBH_Utmi_p0Ctl(base) (base + 0x10) ++ ++ ++struct iproc_usb_priv { ++ struct usb_phy phy; ++ struct phy_device *mdio_phy; ++ void __iomem *wrap_base; ++ void __iomem *idm_base; ++ void __iomem *utmi_base; ++ int usb_mode; ++ int init_count; ++}; ++ ++extern void __iomem *get_iproc_wrap_ctrl_base(void); ++extern void xgs_phy_wr_reg(struct phy_device *phydev, u32 regnum, u16 data); ++extern u16 xgs_phy_rd_reg(struct phy_device *phydev, u32 regnum); ++extern void xgs_sb2_usb_phy_wr_reg(struct phy_device *phydev, u32 regnum, ++ u16 data); ++ ++/*************************************************************************** ++**************************************************************************** ++***************************************************************************/ ++ ++ ++/* check pll_lock */ ++static bool check_usbphy_pll_lock(struct iproc_usb_priv *iproc_usb_data) ++{ ++ void __iomem *wrap_base = iproc_usb_data->wrap_base; ++ void __iomem *wrap_addr = NULL; ++ struct device_node *dn = iproc_usb_data->phy.dev->of_node; ++ u32 val=0, mask; ++ u32 count = 0; ++ ++ if (of_device_is_compatible(dn, "brcm,usb-phy-hx4")) ++ wrap_addr = HX4_WRAP_MISC_STATUS_ADDR(wrap_base); ++ else if (of_device_is_compatible(dn, "brcm,usb-phy-kt2")) ++ wrap_addr = KT2_WRAP_MISC_STATUS_ADDR(wrap_base); ++ else if (of_device_is_compatible(dn, "brcm,usb-phy-sb2")) ++ wrap_addr = SB2_WRAP_MISC_STATUS_ADDR(wrap_base); ++ else if (of_device_is_compatible(dn, "brcm,usb-phy-gh") || ++ of_device_is_compatible(dn, "brcm,usb-phy-hr3") || ++ of_device_is_compatible(dn, "brcm,usb-phy-gh2")) ++ wrap_addr = GH_WRAP_MISC_STATUS_ADDR(wrap_base); ++ ++ if (!wrap_addr) { ++ dev_warn(iproc_usb_data->phy.dev, "No wrap addr specified\n"); ++ return 0; ++ } ++ ++ mask = IPROC_WRAP_MISC_STATUS__USBPHY_PLL_LOCK; ++ do { ++ val = readl(wrap_addr); ++ if ((val & mask) == mask) ++ break; ++ ++ udelay(10); ++ count ++; ++ } while(count <= 10); ++ ++ if (count <= 10) ++ return 1; ++ ++ dev_warn(iproc_usb_data->phy.dev, ++ "PLL not locked: IPROC_WRAP_MISC_STATUS = %x\n", val); ++ return 0; ++} ++ ++static int xgs_iproc_usb_phy_mode(struct iproc_usb_priv *iproc_usb_data) ++{ ++ void __iomem *wrap_base = iproc_usb_data->wrap_base; ++ struct device *dev = iproc_usb_data->phy.dev; ++ struct device_node *dn = dev->of_node; ++ int usb_mode = IPROC_USB_MODE_HOST; ++ u32 __maybe_unused val; ++ int __maybe_unused gpio_pin, ret; ++ struct gpio_desc *usbdev_gpio; ++ ++ if (!wrap_base) ++ dev_warn(dev, "no wrap base addr"); ++ ++ if (of_device_is_compatible(dn, "brcm,usb-phy-hx4") || ++ of_device_is_compatible(dn, "brcm,usb-phy-kt2")) { ++ /* gpio pin 4 to control host/device mode */ ++ usbdev_gpio = gpiod_get(dev, "usbdev", GPIOD_IN); ++ if (IS_ERR(usbdev_gpio)) { ++ dev_warn(dev, "No gpio pin set for USB device detection\n"); ++ /* Use default host mode */ ++ return usb_mode; ++ } ++ ++ val = gpiod_get_value(usbdev_gpio); ++ if (val) ++ usb_mode = IPROC_USB_MODE_DEVICE; ++ ++ gpiod_put(usbdev_gpio); ++ } else if (of_device_is_compatible(dn, "brcm,usb-phy-sb2")) { ++ /* u-boot enable this bit to indicate usb in host mode */ ++ val = readl(IPROC_WRAP_TOP_STRAP_CTRL_ADDR(wrap_base)); ++ if (!(val & IPROC_WRAP_TOP_STRAP_CTRL__USB_DEVICE)) ++ usb_mode = IPROC_USB_MODE_DEVICE; ++ } else if (of_device_is_compatible(dn, "brcm,usb-phy-gh") || ++ of_device_is_compatible(dn, "brcm,usb-phy-hr3") || ++ of_device_is_compatible(dn, "brcm,usb-phy-gh2")) { ++ /* u-boot enable this bit to indicate usb in host mode */ ++ val = readl(IPROC_WRAP_TOP_STRAP_STATUS_ADDR(wrap_base)); ++ if (!(val & IPROC_WRAP_TOP_STRAP_STATUS__USB2_SEL)) ++ usb_mode = IPROC_USB_MODE_DEVICE; ++ } ++ ++ dev_info(dev, "usb mode: %s\n", ++ usb_mode == IPROC_USB_MODE_DEVICE ? "DEVICE" : "HOST"); ++ ++ return usb_mode; ++} ++ ++/* Returns USB PHY PLL ref clock in MHz for HX4/KT2 */ ++static u32 _get_usb_clk(struct iproc_usb_priv *iproc_usb_data) ++{ ++ void __iomem *wrap_base = iproc_usb_data->wrap_base; ++ struct device_node *dn = iproc_usb_data->phy.dev->of_node; ++ u32 ndiv, mdiv, refclk; ++ u32 val; ++ ++ if (of_device_is_compatible(dn, "brcm,usb-phy-hx4")) { ++ val = readl(HX4_WRAP_XGPLL_CTRL_4_ADDR(wrap_base)); ++ ndiv = ((val >> HX4_XGPLL_CTRL_4__NDIV_INT_R) & ++ ~(0xFFFFFFFF << HX4_XGPLL_CTRL_4__NDIV_INT_WIDTH)); ++ ++ val = readl(HX4_WRAP_XGPLL_CTRL_0_ADDR(wrap_base)); ++ mdiv = ((val >> HX4_XGPLL_CTRL_0__CH3_MDIV_R) & ++ ~(0xFFFFFFFF << HX4_XGPLL_CTRL_0__CH3_MDIV_WIDTH)); ++ } else /*if (of_device_is_compatible(dn, "brcm,usb-phy-kt2"))*/ { ++ val = readl(KT2_PLL_CTRL_REG_3_ADDR(wrap_base)); ++ ndiv = ((val >> KT2_PLL_CTRL_REG_3__NDIV_INT_R) & ++ ~(0xFFFFFFFF << KT2_PLL_CTRL_REG_3__NDIV_INT_WIDTH)); ++ ++ /* read channel 1 mdiv */ ++ val = readl(KT2_PLL_CTRL_REG_5_ADDR(wrap_base)); ++ mdiv = ((val >> KT2_PLL_CTRL_REG_5__CH1_MDIV_R) & ++ ~(0xFFFFFFFF << KT2_PLL_CTRL_REG_5__CH1_MDIV_WIDTH)); ++ } ++ ++ refclk = (25 * ndiv) / mdiv; ++ ++ return refclk; ++} ++ ++static void hx4_clk_setup(void __iomem *wrap_base) ++{ ++ u32 val, ndiv; ++ void __iomem *wrap_addr = HX4_WRAP_USBPHY_CTRL_ADDR(wrap_base); ++ ++ val = readl(HX4_WRAP_XGPLL_CTRL_4_ADDR(wrap_base)); ++ ndiv = ((val >> HX4_XGPLL_CTRL_4__NDIV_INT_R) & ++ ~(0xFFFFFFFF << HX4_XGPLL_CTRL_4__NDIV_INT_WIDTH)); ++ ++ if (ndiv == IPROC_CLK_NDIV_40) { ++ val = readl(wrap_addr); ++ val = (val & USB_CLK_NDIV_MASK) | USB_CLK_NDIV_40; ++ writel(val, wrap_addr); ++ udelay(10); ++ val = (val & USB_CLK_PLL_RESET_MASK) | USB_CLK_NDIV_40; ++ writel(val, wrap_addr); ++ udelay(10); ++ val = (val & USB_CLK_PHY_RESET_MASK) | USB_CLK_NDIV_40; ++ writel(val, wrap_addr); ++ udelay(10); ++ } else if (ndiv == IPROC_CLK_NDIV_20) { ++ val = readl(wrap_addr); ++ val = (val & USB_CLK_NDIV_MASK) | USB_CLK_NDIV_20; ++ writel(val, wrap_addr); ++ udelay(10); ++ val = (val & USB_CLK_PLL_RESET_MASK) | USB_CLK_NDIV_20; ++ writel(val, wrap_addr); ++ udelay(10); ++ val = (val & USB_CLK_PHY_RESET_MASK) | USB_CLK_NDIV_20; ++ writel(val, wrap_addr); ++ udelay(10); ++ } ++} ++ ++static int iproc_usb_phy_hx4_config(struct iproc_usb_priv *iproc_usb_data) ++{ ++ void __iomem *wrap_base = iproc_usb_data->wrap_base; ++ void __iomem *wrap_addr = NULL; ++ struct device_node *dn = iproc_usb_data->phy.dev->of_node; ++ u32 ndiv, pdiv, miidata; ++ u32 val; ++ ++ if (!wrap_base) ++ return -EINVAL; ++ ++ if (iproc_usb_data->usb_mode == IPROC_USB_MODE_DEVICE) { ++ ndiv = 1920 / _get_usb_clk(iproc_usb_data); ++ pdiv = 1 << 12; ++ miidata = pdiv + ndiv; ++ ++ /* Program NDIV and PDIV into 0x1C register */ ++ xgs_phy_wr_reg(iproc_usb_data->mdio_phy, 0x800c, miidata); ++ mdelay(10); ++ ++ /* Program other PLL parameters into 0x1D register, disable suspend and ++ put PHY into reset */ ++ miidata = 1 << 13 | 3 << 8 | 3 << 4 | 0xa; ++ xgs_phy_wr_reg(iproc_usb_data->mdio_phy, 0x800d, miidata); ++ mdelay(10); ++ ++ /* Program register 0x15, USB device mode set and get PHY out ++ of reset */ ++ miidata = 1 << 2 | 1 << 1; ++ xgs_phy_wr_reg(iproc_usb_data->mdio_phy, 0x8005, miidata); ++ mdelay(10); ++ ++ /* Program register 0x19, set mdio mode */ ++ miidata = 1 << 7; ++ xgs_phy_wr_reg(iproc_usb_data->mdio_phy, 0x8009, miidata); ++ mdelay(10); ++ ++ /* get the PLL out of reset */ ++ miidata = xgs_phy_rd_reg(iproc_usb_data->mdio_phy, 0x800d); ++ miidata |= (1 << 12); ++ xgs_phy_wr_reg(iproc_usb_data->mdio_phy, 0x800d, miidata); ++ mdelay(10); ++ } else { ++ if (of_device_is_compatible(dn, "brcm,usb-phy-hx4")) ++ wrap_addr = HX4_WRAP_USBPHY_CTRL_ADDR(wrap_base); ++ else if (of_device_is_compatible(dn, "brcm,usb-phy-kt2")) ++ wrap_addr = KT2_WRAP_USBPHY_CTRL_ADDR(wrap_base); ++ ++ val = readl(wrap_addr); ++ /* PLL_RESETB = 1 */ ++ val |= BIT(24); ++ writel(val, wrap_addr); ++ ++ mdelay(10); ++ ++ /* check pll_lock */ ++ check_usbphy_pll_lock(iproc_usb_data); ++ ++ val = readl(wrap_addr); ++ /* RESETB = 0 */ ++ val &= ~BIT(23); ++ writel(val, wrap_addr); ++ mdelay(100); ++ ++ if (of_device_is_compatible(dn, "brcm,usb-phy-hx4")) ++ hx4_clk_setup(wrap_base); ++ ++ val = readl(wrap_addr); ++ /* RESETB = 1 */ ++ val |= BIT(23); ++ writel(val, wrap_addr); ++ mdelay(1); ++ } ++ ++ return 0; ++} ++ ++static int iproc_usb_phy_sb2_config(struct iproc_usb_priv *iproc_usb_data) ++{ ++ void __iomem *wrap_base = iproc_usb_data->wrap_base; ++ u32 val; ++ ++ if (!wrap_base) ++ return -EINVAL; ++ ++ val = readl(SB2_WRAP_USBPHY_CTRL_0_ADDR(wrap_base)); ++ val |= 0x0c000000; /* 27:PHY_ISO & 26:PLL_SUSPEND_EN = 1 */ ++ writel(val, SB2_WRAP_USBPHY_CTRL_0_ADDR(wrap_base)); ++ val &= ~0x03000000; /* 25:PLL_RESETB & 24:RESETB = 0 */ ++ writel(val, SB2_WRAP_USBPHY_CTRL_0_ADDR(wrap_base)); ++ ++ val = readl(SB2_WRAP_USBPHY_CTRL_2_ADDR(wrap_base)); ++ val &= ~0x03000000; /* 25:AFE_BG_PWRDWNB & 24:AFE_LDO_PWRDWNB = 0 */ ++ writel(val, SB2_WRAP_USBPHY_CTRL_2_ADDR(wrap_base)); ++ udelay(10); ++ val |= 0x02000000; /* 25:AFE_BG_PWRDWNB = 1 */ ++ writel(val, SB2_WRAP_USBPHY_CTRL_2_ADDR(wrap_base)); ++ udelay(150); ++ val |= 0x01000000; /* 24:AFE_LDO_PWRDWNB = 1 */ ++ writel(val, SB2_WRAP_USBPHY_CTRL_2_ADDR(wrap_base)); ++ udelay(160); ++ ++ val = readl(SB2_WRAP_USBPHY_CTRL_0_ADDR(wrap_base)); ++ val &= ~0x08000000; /* 27:PHY_ISO = 0 */ ++ writel(val, SB2_WRAP_USBPHY_CTRL_0_ADDR(wrap_base)); ++ udelay(20); ++ val |= 0x02000000; /* 25:PLL_RESETB = 1 */ ++ writel(val, SB2_WRAP_USBPHY_CTRL_0_ADDR(wrap_base)); ++ ++ mdelay(20); ++ ++ /* check pll_lock */ ++ check_usbphy_pll_lock(iproc_usb_data); ++ ++ val = readl(SB2_WRAP_USBPHY_CTRL_0_ADDR(wrap_base)); ++ val |= 0x01000000; /* 24:RESETB = 1 */ ++ writel(val, SB2_WRAP_USBPHY_CTRL_0_ADDR(wrap_base)); ++ udelay(2); ++ ++ /* adjust tx amplitude */ ++ xgs_sb2_usb_phy_wr_reg(iproc_usb_data->mdio_phy, 0x80aa, 0xeea0); ++ ++ return 0; ++} ++ ++static int iproc_usb_phy_gh_config(struct iproc_usb_priv *iproc_usb_data) ++{ ++ void __iomem *wrap_base = iproc_usb_data->wrap_base; ++ u32 val; ++ ++ if (!wrap_base) ++ return -EINVAL; ++ ++ val = readl(GH_WRAP_USBPHY_CTRL_2_ADDR(wrap_base)); ++ val |= IPROC_WRAP_USBPHY_CTRL_2__PHY_ISO; ++ writel(val, GH_WRAP_USBPHY_CTRL_2_ADDR(wrap_base)); ++ ++ val = readl(GH_WRAP_USBPHY_CTRL_0_ADDR(wrap_base)); ++ val |= IPROC_WRAP_USBPHY_CTRL_0__PHY_IDDQ; ++ writel(val, GH_WRAP_USBPHY_CTRL_0_ADDR(wrap_base)); ++ ++ val = readl(GH_WRAP_USBPHY_CTRL_2_ADDR(wrap_base)); ++ val |= IPROC_WRAP_USBPHY_CTRL_2__P1CTL_B0; ++ writel(val, GH_WRAP_USBPHY_CTRL_2_ADDR(wrap_base)); ++ ++ /* set phy_resetb to 0, pll_resetb to 0 */ ++ val = readl(GH_WRAP_USBPHY_CTRL_0_ADDR(wrap_base)); ++ val &= ~IPROC_WRAP_USBPHY_CTRL_0__RESETB; ++ writel(val, GH_WRAP_USBPHY_CTRL_0_ADDR(wrap_base)); ++ ++ val = readl(GH_WRAP_USBPHY_CTRL_0_ADDR(wrap_base)); ++ val &= ~IPROC_WRAP_USBPHY_CTRL_0__PLL_RESETB; ++ writel(val, GH_WRAP_USBPHY_CTRL_0_ADDR(wrap_base)); ++ ++ /* set p1ctl[11] to 0 */ ++ val = readl(GH_WRAP_USBPHY_CTRL_2_ADDR(wrap_base)); ++ val &= ~IPROC_WRAP_USBPHY_CTRL_2__P1CTL_B11; ++ writel(val, GH_WRAP_USBPHY_CTRL_2_ADDR(wrap_base)); ++ ++ /* set phy_iso to 0 */ ++ val = readl(GH_WRAP_USBPHY_CTRL_2_ADDR(wrap_base)); ++ val &= ~IPROC_WRAP_USBPHY_CTRL_2__PHY_ISO; ++ writel(val, GH_WRAP_USBPHY_CTRL_2_ADDR(wrap_base)); ++ ++ /* set phy_iddq to 0 */ ++ val = readl(GH_WRAP_USBPHY_CTRL_0_ADDR(wrap_base)); ++ val &= ~IPROC_WRAP_USBPHY_CTRL_0__PHY_IDDQ; ++ writel(val, GH_WRAP_USBPHY_CTRL_0_ADDR(wrap_base)); ++ ++ mdelay(1); ++ ++ /* set pll_resetb to 1, phy_resetb to 1 */ ++ val = readl(GH_WRAP_USBPHY_CTRL_0_ADDR(wrap_base)); ++ val |= IPROC_WRAP_USBPHY_CTRL_0__PLL_RESETB; ++ writel(val, GH_WRAP_USBPHY_CTRL_0_ADDR(wrap_base)); ++ ++ val = readl(GH_WRAP_USBPHY_CTRL_0_ADDR(wrap_base)); ++ val |= IPROC_WRAP_USBPHY_CTRL_0__RESETB; ++ writel(val, GH_WRAP_USBPHY_CTRL_0_ADDR(wrap_base)); ++ ++ mdelay(20); ++ ++ /* check pll_lock */ ++ check_usbphy_pll_lock(iproc_usb_data); ++ ++ /* set non_drving to 0 */ ++ val = readl(GH_WRAP_USBPHY_CTRL_2_ADDR(wrap_base)); ++ val &= ~IPROC_WRAP_USBPHY_CTRL_2__P1CTL_B0; ++ writel(val, GH_WRAP_USBPHY_CTRL_2_ADDR(wrap_base)); ++ ++ /* set p1ctl[11] to 1 */ ++ val = readl(GH_WRAP_USBPHY_CTRL_2_ADDR(wrap_base)); ++ val |= IPROC_WRAP_USBPHY_CTRL_2__P1CTL_B11; ++ writel(val, GH_WRAP_USBPHY_CTRL_2_ADDR(wrap_base)); ++ ++ return 0; ++} ++ ++static int iproc_usb_phy_gh2_config(struct iproc_usb_priv *iproc_usb_data) ++{ ++ void __iomem *wrap_base = iproc_usb_data->wrap_base; ++ void __iomem *utmi_base = NULL; ++ u32 val; ++ ++ if (!wrap_base) ++ return -EINVAL; ++ ++ /* This value is from DE team to set Internal Power Sequence Mode */ ++ val = readl(IPROC_WRAP_TOP_STRAP_STATUS_ADDR(wrap_base)); ++ if (val & IPROC_WRAP_TOP_STRAP_STATUS__USB2_SEL) { ++ /* host mode */ ++ utmi_base = iproc_usb_data->utmi_base; ++ if (!utmi_base) ++ return -EINVAL; ++ writel(0x0802, USBH_Utmi_p0Ctl(utmi_base)); ++ } else { ++ /* device mode */ ++ writel(0x0806, GH_WRAP_USBPHY_CTRL_2_ADDR(wrap_base)); ++ } ++ ++ mdelay(20); ++ ++ /* check pll_lock */ ++ check_usbphy_pll_lock(iproc_usb_data); ++ ++ return 0; ++} ++ ++static int iproc_usb_phy_init(struct usb_phy *phy) ++{ ++ struct iproc_usb_priv *iproc_usb_data = ++ container_of(phy, struct iproc_usb_priv, phy); ++ struct device *dev = phy->dev; ++ void __iomem *idm_base = iproc_usb_data->idm_base; ++ int ret = 0; ++ u32 val; ++ ++ if (iproc_usb_data->init_count) ++ return 0; ++ else ++ iproc_usb_data->init_count++; ++ ++ if (!iproc_usb_data->wrap_base || !iproc_usb_data->idm_base) ++ return -EINVAL; ++ ++ /* Put USB controller into reset state and disable clock */ ++ val = readl(USB2_IDM_RESET_CONTROL_ADDR(idm_base)); ++ val |= USB2_IDM_RESET_CONTROL__RESET; ++ writel(val, USB2_IDM_RESET_CONTROL_ADDR(idm_base)); ++ ++ val = readl(USB2_IDM_IO_CONTROL_DIRECT_ADDR(idm_base)); ++ val &= ~USB2_IDM_IO_CONTROL_DIRECT__clk_enable; ++ writel(val, USB2_IDM_IO_CONTROL_DIRECT_ADDR(idm_base)); ++ ++ if (of_device_is_compatible(dev->of_node, "brcm,usb-phy-hx4") || ++ of_device_is_compatible(dev->of_node, "brcm,usb-phy-kt2")) ++ ret = iproc_usb_phy_hx4_config(iproc_usb_data); ++ else if (of_device_is_compatible(dev->of_node, "brcm,usb-phy-sb2")) ++ ret = iproc_usb_phy_sb2_config(iproc_usb_data); ++ else if (of_device_is_compatible(dev->of_node, "brcm,usb-phy-gh") || ++ of_device_is_compatible(dev->of_node, "brcm,usb-phy-hr3")) ++ ret = iproc_usb_phy_gh_config(iproc_usb_data); ++ ++ /* Enable clock to USB and get the USB out of reset */ ++ val = readl(USB2_IDM_IO_CONTROL_DIRECT_ADDR(idm_base)); ++ val |= USB2_IDM_IO_CONTROL_DIRECT__clk_enable; ++ writel(val, USB2_IDM_IO_CONTROL_DIRECT_ADDR(idm_base)); ++ ++ mdelay(10); ++ val = readl(USB2_IDM_RESET_CONTROL_ADDR(idm_base)); ++ val &= ~USB2_IDM_RESET_CONTROL__RESET; ++ writel(val, USB2_IDM_RESET_CONTROL_ADDR(idm_base)); ++ mdelay(100); ++ ++ /* For GH2, PHY should be inited after RESET */ ++ if (of_device_is_compatible(dev->of_node, "brcm,usb-phy-gh2")) ++ ret = iproc_usb_phy_gh2_config(iproc_usb_data); ++ ++ return ret; ++} ++ ++static int xgs_iproc_usb_phy_probe(struct platform_device *pdev) ++{ ++ struct device *dev = &pdev->dev; ++ struct device_node *dn = pdev->dev.of_node; ++ struct device_node *mdio_phy_np = NULL; ++ struct iproc_usb_priv *iproc_usb_data; ++ struct resource *res; ++ struct gpio_desc *vbus_gpio; ++ int ret, usb_mode; ++ ++ if (!of_device_is_available(dn)) ++ return -ENODEV; ++ ++ iproc_usb_data = devm_kzalloc(dev, sizeof(*iproc_usb_data), GFP_KERNEL); ++ if (!iproc_usb_data) ++ return -ENOMEM; ++ ++ platform_set_drvdata(pdev, iproc_usb_data); ++ ++ iproc_usb_data->wrap_base = get_iproc_wrap_ctrl_base(); ++ if (!iproc_usb_data->wrap_base) { ++ dev_err(dev, "No wrap_base addr in DT"); ++ return -ENXIO; ++ } ++ ++ vbus_gpio = devm_gpiod_get(dev, "vbus", GPIOD_ASIS); ++ if (IS_ERR(vbus_gpio)) { ++ dev_err(dev, "No gpio pin set for USB power\n"); ++ return PTR_ERR(vbus_gpio); ++ } ++ ++ iproc_usb_data->phy.dev = dev; ++ usb_mode = xgs_iproc_usb_phy_mode(iproc_usb_data); ++ ++ iproc_usb_data->usb_mode = usb_mode; ++ /* Save host/device mode in phy.flags for use by ECHI/OHCI drivers */ ++ iproc_usb_data->phy.flags = usb_mode; ++ iproc_usb_data->phy.init = iproc_usb_phy_init; ++ iproc_usb_data->phy.type = USB_PHY_TYPE_USB2; ++ ++ if (usb_mode == IPROC_USB_MODE_HOST) { ++ res = platform_get_resource(pdev, IORESOURCE_MEM, 0); ++ iproc_usb_data->idm_base = ++ devm_ioremap_resource(dev, res); ++ if (IS_ERR(iproc_usb_data->idm_base)) { ++ dev_err(dev, "can't iomap usb2h idm base\n"); ++ return PTR_ERR(iproc_usb_data->idm_base); ++ } ++ ++ /* required for GH2 */ ++ if (of_device_is_compatible(dev->of_node, "brcm,usb-phy-gh2")) { ++ res = platform_get_resource(pdev, IORESOURCE_MEM, 2); ++ iproc_usb_data->utmi_base = ++ devm_ioremap_resource(dev, res); ++ } ++ /* turn off the power */ ++ gpiod_direction_output(vbus_gpio, 0); ++ } else { ++ res = platform_get_resource(pdev, IORESOURCE_MEM, 1); ++ iproc_usb_data->idm_base = devm_ioremap_resource(dev, res); ++ if (IS_ERR(iproc_usb_data->idm_base)) { ++ dev_err(dev, "can't iomap usb2d idm base\n"); ++ return PTR_ERR(iproc_usb_data->idm_base); ++ } ++ } ++ ++ ++ /* PHY controlled through MDIO */ ++ mdio_phy_np = of_parse_phandle(dn, "mdio-phy-handle", 0); ++ if (mdio_phy_np) ++ iproc_usb_data->mdio_phy = of_phy_find_device(mdio_phy_np); ++ ++ ret = usb_add_phy_dev(&iproc_usb_data->phy); ++ if (ret) ++ return ret; ++ ++ /* supply power for USB device connected to the host */ ++ if (usb_mode == IPROC_USB_MODE_HOST) { ++ gpiod_set_value(vbus_gpio, 1); ++ } ++ ++ return 0; ++} ++ ++static void xgs_iproc_usb_phy_remove(struct platform_device *pdev) ++{ ++ struct iproc_usb_priv *iproc_usb_data = platform_get_drvdata(pdev); ++ ++ if (iproc_usb_data) ++ usb_remove_phy(&iproc_usb_data->phy); ++ ++ platform_set_drvdata(pdev, NULL); ++} ++ ++static const struct of_device_id xgs_iproc_usb_phy_dt_ids[] = { ++ { .compatible = "brcm,usb-phy-hx4", }, ++ { .compatible = "brcm,usb-phy-kt2", }, ++ { .compatible = "brcm,usb-phy-gh", }, ++ { .compatible = "brcm,usb-phy-sb2", }, ++ { .compatible = "brcm,usb-phy-hr3", }, ++ { .compatible = "brcm,usb-phy-gh2", }, ++ { } ++}; ++MODULE_DEVICE_TABLE(of, xgs_iproc_usb_phy_dt_ids); ++ ++static struct platform_driver xgs_iproc_usb_phy_driver = ++{ ++ .driver = { ++ .name = "xgs-usb-phy", ++ .owner = THIS_MODULE, ++ .of_match_table = xgs_iproc_usb_phy_dt_ids, ++ }, ++ .probe = xgs_iproc_usb_phy_probe, ++ .remove = xgs_iproc_usb_phy_remove, ++}; ++ ++module_platform_driver(xgs_iproc_usb_phy_driver); ++ ++MODULE_AUTHOR("Broadcom"); ++MODULE_DESCRIPTION("Broadcom USB phy driver"); ++MODULE_LICENSE("GPL"); +-- +2.47.1 + diff --git a/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-19-watchdog-sp805_wdt-clear-bootstatus.patch b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-19-watchdog-sp805_wdt-clear-bootstatus.patch new file mode 100644 index 00000000..aa731794 --- /dev/null +++ b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-19-watchdog-sp805_wdt-clear-bootstatus.patch @@ -0,0 +1,84 @@ +From 2b674f9cedb3bd3b8dd31de747a13fe2413f9eca Mon Sep 17 00:00:00 2001 +From: Jonas Gorski +Date: Thu, 7 Oct 2021 10:09:06 +0200 +Subject: [PATCH 19/21] watchdog: sp805_wdt: clear bootstatus + +--- + drivers/watchdog/sp805_wdt.c | 33 +++++++++++++++++++++++++++++++++ + 1 file changed, 33 insertions(+) + +diff --git a/drivers/watchdog/sp805_wdt.c b/drivers/watchdog/sp805_wdt.c +index 109e2e37e8f0..9e46f6614610 100644 +--- a/drivers/watchdog/sp805_wdt.c ++++ b/drivers/watchdog/sp805_wdt.c +@@ -30,6 +30,8 @@ + #include + #include + #include ++#include ++ + + /* default timeout in seconds */ + #define DEFAULT_TIMEOUT 60 +@@ -89,6 +91,24 @@ static bool wdt_is_running(struct watchdog_device *wdd) + return (wdtcontrol & ENABLE_MASK) == ENABLE_MASK; + } + ++/* This routine get boot status to indicate if the last boot is from WDT */ ++static unsigned int wdt_get_clear_bootstatus( ++ void __iomem *wdt_bootstatus, ++ unsigned int wdt_bootstatus_bit) ++{ ++ unsigned int reg; ++ unsigned int bootstatus = 0; ++ ++ reg = readl_relaxed(wdt_bootstatus); ++ bootstatus = reg & (1 << wdt_bootstatus_bit); ++ ++ if (bootstatus) ++ /* write 1 to clear boot status bit */ ++ writel_relaxed(reg, wdt_bootstatus); ++ ++ return bootstatus; ++} ++ + /* This routine finds load value that will reset system in required timeout */ + static int wdt_setload(struct watchdog_device *wdd, unsigned int timeout) + { +@@ -236,6 +256,8 @@ sp805_wdt_probe(struct amba_device *adev, const struct amba_id *id) + struct reset_control *rst; + u64 rate = 0; + int ret = 0; ++ void __iomem *wdt_bootstatus = NULL; ++ unsigned int bootstatus_bit = 0; + + wdt = devm_kzalloc(&adev->dev, sizeof(*wdt), GFP_KERNEL); + if (!wdt) { +@@ -247,6 +269,14 @@ sp805_wdt_probe(struct amba_device *adev, const struct amba_id *id) + if (IS_ERR(wdt->base)) + return PTR_ERR(wdt->base); + ++ if (adev->dev.of_node) { ++ wdt_bootstatus = of_iomap(adev->dev.of_node, 1); ++ if (!wdt_bootstatus) { ++ dev_warn(&adev->dev, "of_iomap failed\n"); ++ return -ENOMEM; ++ } ++ } ++ + /* + * When driver probe with ACPI device, clock devices + * are not available, so watchdog rate get from +@@ -306,6 +336,9 @@ sp805_wdt_probe(struct amba_device *adev, const struct amba_id *id) + goto err; + amba_set_drvdata(adev, wdt); + ++ wdt->wdd.bootstatus = wdt_get_clear_bootstatus( ++ wdt_bootstatus, bootstatus_bit); ++ + dev_info(&adev->dev, "registration successful\n"); + return 0; + +-- +2.47.1 + diff --git a/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-20-drivers-usb-phy-phy-xgs-iproc-usb-phy-mode.patch b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-20-drivers-usb-phy-phy-xgs-iproc-usb-phy-mode.patch new file mode 100644 index 00000000..a92c7ffb --- /dev/null +++ b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/10-20-drivers-usb-phy-phy-xgs-iproc-usb-phy-mode.patch @@ -0,0 +1,39 @@ +From 147d6d6af6c6b0f8aa4bdf0f89b51fe8ae3a9bf6 Mon Sep 17 00:00:00 2001 +From: Jonas Gorski +Date: Fri, 12 Nov 2021 10:33:42 +0100 +Subject: [PATCH 20/21] drivers: usb: phy: phy-xgs-iproc: usb phy mode + +--- + drivers/usb/phy/phy-xgs-iproc.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/drivers/usb/phy/phy-xgs-iproc.c b/drivers/usb/phy/phy-xgs-iproc.c +index 0db479860b97..de6ed42bf4a1 100644 +--- a/drivers/usb/phy/phy-xgs-iproc.c ++++ b/drivers/usb/phy/phy-xgs-iproc.c +@@ -163,12 +163,22 @@ static int xgs_iproc_usb_phy_mode(struct iproc_usb_priv *iproc_usb_data) + u32 __maybe_unused val; + int __maybe_unused gpio_pin, ret; + struct gpio_desc *usbdev_gpio; ++ const char *phy_mode_str; + + if (!wrap_base) + dev_warn(dev, "no wrap base addr"); + + if (of_device_is_compatible(dn, "brcm,usb-phy-hx4") || + of_device_is_compatible(dn, "brcm,usb-phy-kt2")) { ++ ++ /* Edge-core patch: use "usb-phy-mode" in dts to decide host/device mode */ ++ if (!of_property_read_string(dn, "usb-phy-mode", &phy_mode_str)) { ++ if (!strcasecmp(phy_mode_str, "host")) ++ return IPROC_USB_MODE_HOST; ++ if (!strcasecmp(phy_mode_str, "device")) ++ return IPROC_USB_MODE_DEVICE; ++ } ++ + /* gpio pin 4 to control host/device mode */ + usbdev_gpio = gpiod_get(dev, "usbdev", GPIOD_IN); + if (IS_ERR(usbdev_gpio)) { +-- +2.47.1 + diff --git a/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/armel-iproc.cfg b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/armel-iproc.cfg new file mode 100644 index 00000000..9acc7eb0 --- /dev/null +++ b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/armel-iproc.cfg @@ -0,0 +1,3204 @@ +# +# Automatically generated file; DO NOT EDIT. +# Linux/arm 4.14.109 Kernel Configuration +# +CONFIG_ARM=y +CONFIG_SYS_SUPPORTS_APM_EMULATION=y +CONFIG_HAVE_PROC_CPU=y +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +CONFIG_FIX_EARLYCON_MEM=y +CONFIG_GENERIC_HWEIGHT=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_ARCH_SUPPORTS_UPROBES=y +CONFIG_ARM_PATCH_PHYS_VIRT=y +CONFIG_GENERIC_BUG=y +CONFIG_PGTABLE_LEVELS=2 +CONFIG_IRQ_WORK=y +CONFIG_BUILDTIME_TABLE_SORT=y + +# +# General setup +# +CONFIG_INIT_ENV_ARG_LIMIT=32 +# CONFIG_COMPILE_TEST is not set +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_HAVE_KERNEL_GZIP=y +CONFIG_HAVE_KERNEL_LZMA=y +CONFIG_HAVE_KERNEL_XZ=y +CONFIG_HAVE_KERNEL_LZO=y +CONFIG_HAVE_KERNEL_LZ4=y +CONFIG_KERNEL_GZIP=y +# CONFIG_KERNEL_LZMA is not set +# CONFIG_KERNEL_XZ is not set +# CONFIG_KERNEL_LZO is not set +# CONFIG_KERNEL_LZ4 is not set +CONFIG_DEFAULT_HOSTNAME="(none)" +CONFIG_SWAP=y +CONFIG_SYSVIPC=y +CONFIG_SYSVIPC_SYSCTL=y +CONFIG_CROSS_MEMORY_ATTACH=y +CONFIG_FHANDLE=y +CONFIG_USELIB=y +# CONFIG_AUDIT is not set +CONFIG_HAVE_ARCH_AUDITSYSCALL=y + +# +# IRQ subsystem +# +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_GENERIC_IRQ_SHOW=y +CONFIG_GENERIC_IRQ_SHOW_LEVEL=y +CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y +CONFIG_GENERIC_IRQ_MIGRATION=y +CONFIG_HARDIRQS_SW_RESEND=y +CONFIG_IRQ_DOMAIN=y +CONFIG_IRQ_DOMAIN_HIERARCHY=y +CONFIG_GENERIC_MSI_IRQ=y +CONFIG_IRQ_FORCED_THREADING=y +CONFIG_SPARSE_IRQ=y +# CONFIG_GENERIC_IRQ_DEBUGFS is not set +CONFIG_GENERIC_IRQ_MULTI_HANDLER=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_ARCH_HAS_TICK_BROADCAST=y +CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y + +# +# Timers subsystem +# +CONFIG_TICK_ONESHOT=y +CONFIG_NO_HZ_COMMON=y +# CONFIG_HZ_PERIODIC is not set +CONFIG_NO_HZ_IDLE=y +# CONFIG_NO_HZ_FULL is not set +CONFIG_NO_HZ=y +# CONFIG_HIGH_RES_TIMERS is not set + +# +# CPU/Task time and stats accounting +# +CONFIG_TICK_CPU_ACCOUNTING=y +# CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set +# CONFIG_IRQ_TIME_ACCOUNTING is not set +# CONFIG_BSD_PROCESS_ACCT is not set +# CONFIG_TASKSTATS is not set + +# +# RCU Subsystem +# +CONFIG_PREEMPT_RCU=y +# CONFIG_RCU_EXPERT is not set +CONFIG_TREE_SRCU=y +CONFIG_TASKS_RCU=y +CONFIG_RCU_STALL_COMMON=y +CONFIG_RCU_NEED_SEGCBLIST=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_LOG_BUF_SHIFT=17 +CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 +CONFIG_GENERIC_SCHED_CLOCK=y +# CONFIG_SCHED_AUTOGROUP is not set +# CONFIG_RELAY is not set +CONFIG_BLK_DEV_INITRD=y +CONFIG_INITRAMFS_SOURCE="" +CONFIG_RD_GZIP=y +CONFIG_RD_BZIP2=y +CONFIG_RD_LZMA=y +CONFIG_RD_XZ=y +CONFIG_RD_LZO=y +CONFIG_RD_LZ4=y +CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set +CONFIG_SYSCTL=y +CONFIG_HAVE_UID16=y +CONFIG_EXPERT=y +CONFIG_UID16=y +CONFIG_MULTIUSER=y +# CONFIG_SGETMASK_SYSCALL is not set +CONFIG_SYSFS_SYSCALL=y +CONFIG_POSIX_TIMERS=y +CONFIG_KALLSYMS=y +# CONFIG_KALLSYMS_ALL is not set +# CONFIG_KALLSYMS_ABSOLUTE_PERCPU is not set +CONFIG_PRINTK=y +CONFIG_BUG=y +CONFIG_ELF_CORE=y +CONFIG_FUTEX=y +CONFIG_FUTEX_PI=y +CONFIG_EPOLL=y +CONFIG_SIGNALFD=y +CONFIG_TIMERFD=y +CONFIG_EVENTFD=y +CONFIG_SHMEM=y +CONFIG_AIO=y +CONFIG_ADVISE_SYSCALLS=y +# CONFIG_USERFAULTFD is not set +CONFIG_PCI_QUIRKS=y +CONFIG_MEMBARRIER=y +CONFIG_HAVE_PERF_EVENTS=y +CONFIG_PERF_USE_VMALLOC=y +# CONFIG_PC104 is not set + +# +# Kernel Performance Events And Counters +# +# CONFIG_PERF_EVENTS is not set +CONFIG_VM_EVENT_COUNTERS=y +# CONFIG_SLUB_DEBUG is not set +# CONFIG_COMPAT_BRK is not set +CONFIG_SLUB=y +CONFIG_SLAB_MERGE_DEFAULT=y +# CONFIG_SLAB_FREELIST_RANDOM is not set +# CONFIG_SLAB_FREELIST_HARDENED is not set +CONFIG_SLUB_CPU_PARTIAL=y +# CONFIG_SYSTEM_DATA_VERIFICATION is not set +# CONFIG_PROFILING is not set +# CONFIG_KPROBES is not set +# CONFIG_JUMP_LABEL is not set +# CONFIG_UPROBES is not set +# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y +CONFIG_ARCH_USE_BUILTIN_BSWAP=y +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KRETPROBES=y +CONFIG_HAVE_OPTPROBES=y +CONFIG_HAVE_NMI=y +CONFIG_HAVE_ARCH_TRACEHOOK=y +CONFIG_HAVE_DMA_CONTIGUOUS=y +CONFIG_GENERIC_SMP_IDLE_THREAD=y +CONFIG_GENERIC_IDLE_POLL_SETUP=y +CONFIG_ARCH_HAS_SET_MEMORY=y +CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y +CONFIG_HAVE_CLK=y +CONFIG_HAVE_PERF_REGS=y +CONFIG_HAVE_PERF_USER_STACK_DUMP=y +CONFIG_HAVE_ARCH_JUMP_LABEL=y +CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y +CONFIG_HAVE_ARCH_SECCOMP_FILTER=y +CONFIG_HAVE_STACKPROTECTOR=y +CONFIG_STACKPROTECTOR=y +CONFIG_STACKPROTECTOR_STRONG=y +CONFIG_HAVE_CONTEXT_TRACKING_USER=y +CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y +CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y +CONFIG_HAVE_MOD_ARCH_SPECIFIC=y +CONFIG_MODULES_USE_ELF_REL=y +CONFIG_ARCH_HAS_ELF_RANDOMIZE=y +CONFIG_HAVE_ARCH_MMAP_RND_BITS=y +CONFIG_HAVE_EXIT_THREAD=y +CONFIG_ARCH_MMAP_RND_BITS_MIN=8 +CONFIG_ARCH_MMAP_RND_BITS_MAX=16 +CONFIG_ARCH_MMAP_RND_BITS=8 +# CONFIG_HAVE_ARCH_HASH is not set +# CONFIG_ISA_BUS_API is not set +CONFIG_CLONE_BACKWARDS=y +CONFIG_OLD_SIGSUSPEND3=y +CONFIG_OLD_SIGACTION=y +# CONFIG_CPU_NO_EFFICIENT_FFS is not set +CONFIG_HAVE_ARCH_VMAP_STACK=y +CONFIG_ARCH_OPTIONAL_KERNEL_RWX=y +CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT=y +CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y +CONFIG_STRICT_KERNEL_RWX=y +CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y +CONFIG_STRICT_MODULE_RWX=y + +# +# GCOV-based kernel profiling +# +# CONFIG_GCOV_KERNEL is not set +CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y +CONFIG_RT_MUTEXES=y +# CONFIG_BASE_SMALL is not set +CONFIG_MODULES=y +# CONFIG_MODULE_FORCE_LOAD is not set +CONFIG_MODULE_UNLOAD=y +# CONFIG_MODULE_FORCE_UNLOAD is not set +# CONFIG_MODVERSIONS is not set +# CONFIG_MODULE_SRCVERSION_ALL is not set +# CONFIG_MODULE_SIG is not set +# CONFIG_MODULE_COMPRESS is not set +# CONFIG_MODULE_COMPRESS_GZIP is not set +# CONFIG_MODULE_COMPRESS_XZ is not set +# CONFIG_MODULE_COMPRESS_ZSTD is not set +# CONFIG_TRIM_UNUSED_KSYMS is not set +CONFIG_BLOCK=y +CONFIG_BLK_DEV_BSG=y +# CONFIG_BLK_DEV_BSGLIB is not set +# CONFIG_BLK_DEV_INTEGRITY is not set +# CONFIG_BLK_DEV_ZONED is not set +# CONFIG_BLK_WBT is not set +CONFIG_BLK_DEBUG_FS=y +# CONFIG_BLK_SED_OPAL is not set + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_AIX_PARTITION is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +# CONFIG_MAC_PARTITION is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_BSD_DISKLABEL is not set +# CONFIG_MINIX_SUBPARTITION is not set +# CONFIG_SOLARIS_X86_PARTITION is not set +# CONFIG_UNIXWARE_DISKLABEL is not set +# CONFIG_LDM_PARTITION is not set +# CONFIG_SGI_PARTITION is not set +# CONFIG_ULTRIX_PARTITION is not set +# CONFIG_SUN_PARTITION is not set +# CONFIG_KARMA_PARTITION is not set +CONFIG_EFI_PARTITION=y +# CONFIG_SYSV68_PARTITION is not set +# CONFIG_CMDLINE_PARTITION is not set +CONFIG_BLK_MQ_PCI=y + +# +# IO Schedulers +# +CONFIG_MQ_IOSCHED_DEADLINE=y +CONFIG_MQ_IOSCHED_KYBER=y +# CONFIG_IOSCHED_BFQ is not set +CONFIG_UNINLINE_SPIN_UNLOCK=y +CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y +CONFIG_MUTEX_SPIN_ON_OWNER=y +CONFIG_RWSEM_SPIN_ON_OWNER=y +CONFIG_LOCK_SPIN_ON_OWNER=y + +# +# System Type +# +CONFIG_MMU=y +CONFIG_ARCH_MULTIPLATFORM=y +# CONFIG_ARCH_EP93XX is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_IXP4XX is not set +# CONFIG_ARCH_DOVE is not set +# CONFIG_ARCH_LPC32XX is not set +# CONFIG_ARCH_PXA is not set +# CONFIG_ARCH_RPC is not set +# CONFIG_ARCH_SA1100 is not set +# CONFIG_ARCH_DAVINCI is not set +# CONFIG_ARCH_OMAP1 is not set + +# +# Multiple platform selection +# + +# +# CPU Core family selection +# +# CONFIG_ARCH_MULTI_V6 is not set +CONFIG_ARCH_MULTI_V7=y +CONFIG_ARCH_MULTI_V6_V7=y +# CONFIG_ARCH_MULTI_CPU_AUTO is not set +# CONFIG_ARCH_VIRT is not set +# CONFIG_ARCH_MVEBU is not set +# CONFIG_ARCH_ACTIONS is not set +# CONFIG_ARCH_ALPINE is not set +# CONFIG_ARCH_ARTPEC is not set +# CONFIG_ARCH_AT91 is not set +# CONFIG_ARCH_BCM is not set +# CONFIG_ARCH_BERLIN is not set +# CONFIG_ARCH_DIGICOLOR is not set +# CONFIG_ARCH_HIGHBANK is not set +# CONFIG_ARCH_HISI is not set +CONFIG_ARCH_XGS_IPROC=y + +# +# XGS iProc SoC based Machine types +# +CONFIG_XGS_IPROC_ARM32_PLATFORM=y +# CONFIG_MACH_HX4 is not set +# CONFIG_MACH_HR2 is not set +# CONFIG_MACH_KT2 is not set +# CONFIG_MACH_GH is not set +# CONFIG_MACH_SB2 is not set +# CONFIG_MACH_HR3 is not set +# CONFIG_MACH_GH2 is not set +# CONFIG_MACH_WH2 is not set +# CONFIG_MACH_IPROC_EMULATION is not set +# CONFIG_ARCH_KEYSTONE is not set +# CONFIG_ARCH_MESON is not set +# CONFIG_ARCH_MXC is not set +# CONFIG_ARCH_MEDIATEK is not set + +# +# TI OMAP/AM/DM/DRA Family +# +# CONFIG_ARCH_OMAP3 is not set +# CONFIG_ARCH_OMAP4 is not set +# CONFIG_SOC_OMAP5 is not set +# CONFIG_SOC_AM33XX is not set +# CONFIG_SOC_AM43XX is not set +# CONFIG_SOC_DRA7XX is not set +# CONFIG_ARCH_MMP is not set +# CONFIG_ARCH_QCOM is not set +# CONFIG_ARCH_REALVIEW is not set +# CONFIG_ARCH_ROCKCHIP is not set +# CONFIG_ARCH_INTEL_SOCFPGA is not set +# CONFIG_PLAT_SPEAR is not set +# CONFIG_ARCH_STI is not set +# CONFIG_ARCH_S5PV210 is not set +# CONFIG_ARCH_EXYNOS is not set +# CONFIG_ARCH_RENESAS is not set +# CONFIG_ARCH_SUNXI is not set +# CONFIG_ARCH_TEGRA is not set +# CONFIG_ARCH_UNIPHIER is not set +# CONFIG_ARCH_U8500 is not set +# CONFIG_ARCH_VEXPRESS is not set +# CONFIG_ARCH_WM8850 is not set +# CONFIG_ARCH_ZYNQ is not set + +# +# Processor Type +# +CONFIG_CPU_V7=y +CONFIG_CPU_THUMB_CAPABLE=y +CONFIG_CPU_32v6K=y +CONFIG_CPU_32v7=y +CONFIG_CPU_ABRT_EV7=y +CONFIG_CPU_PABRT_V7=y +CONFIG_CPU_CACHE_V7=y +CONFIG_CPU_CACHE_VIPT=y +CONFIG_CPU_COPY_V6=y +CONFIG_CPU_TLB_V7=y +CONFIG_CPU_HAS_ASID=y +CONFIG_CPU_CP15=y +CONFIG_CPU_CP15_MMU=y + +# +# Processor Features +# +# CONFIG_ARM_LPAE is not set +CONFIG_ARM_THUMB=y +# CONFIG_ARM_THUMBEE is not set +CONFIG_ARM_VIRT_EXT=y +CONFIG_SWP_EMULATE=y +# CONFIG_CPU_BIG_ENDIAN is not set +# CONFIG_CPU_ICACHE_DISABLE is not set +# CONFIG_CPU_BPREDICT_DISABLE is not set +CONFIG_CPU_SPECTRE=y +CONFIG_HARDEN_BRANCH_PREDICTOR=y +CONFIG_KUSER_HELPERS=y +# CONFIG_VDSO is not set +CONFIG_OUTER_CACHE=y +CONFIG_OUTER_CACHE_SYNC=y +CONFIG_MIGHT_HAVE_CACHE_L2X0=y +CONFIG_CACHE_L2X0=y +# CONFIG_PL310_ERRATA_588369 is not set +# CONFIG_PL310_ERRATA_727915 is not set +# CONFIG_PL310_ERRATA_753970 is not set +# CONFIG_PL310_ERRATA_769419 is not set +CONFIG_ARM_L1_CACHE_SHIFT_6=y +CONFIG_ARM_L1_CACHE_SHIFT=6 +CONFIG_ARM_DMA_MEM_BUFFERABLE=y +CONFIG_ARM_HEAVY_MB=y +CONFIG_DEBUG_ALIGN_RODATA=y +# CONFIG_ARM_ERRATA_430973 is not set +# CONFIG_ARM_ERRATA_643719 is not set +# CONFIG_ARM_ERRATA_720789 is not set +CONFIG_ARM_ERRATA_754322=y +# CONFIG_ARM_ERRATA_754327 is not set +CONFIG_ARM_ERRATA_764369=y +CONFIG_ARM_ERRATA_775420=y +# CONFIG_ARM_ERRATA_798181 is not set +# CONFIG_ARM_ERRATA_773022 is not set +# CONFIG_ARM_ERRATA_818325_852422 is not set +# CONFIG_ARM_ERRATA_821420 is not set +# CONFIG_ARM_ERRATA_825619 is not set +# CONFIG_ARM_ERRATA_852421 is not set +# CONFIG_ARM_ERRATA_852423 is not set + +# +# Bus support +# +CONFIG_PCI=y +CONFIG_PCI_DOMAINS=y +CONFIG_PCI_DOMAINS_GENERIC=y +CONFIG_PCI_SYSCALL=y +# CONFIG_PCIEPORTBUS is not set +CONFIG_PCI_MSI=y +# CONFIG_PCI_DEBUG is not set +# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set +# CONFIG_PCI_STUB is not set +# CONFIG_PCI_PRI is not set +# CONFIG_PCI_PASID is not set +# CONFIG_HOTPLUG_PCI is not set + +# +# DesignWare PCI Core Support +# +# CONFIG_PCIE_DW_PLAT is not set +# CONFIG_PCI_LAYERSCAPE is not set + +# +# PCI host controller drivers +# +# CONFIG_PCI_FTPCI100 is not set +# CONFIG_PCI_HOST_GENERIC is not set +CONFIG_PCIE_XGS_IPROC=y +CONFIG_PCIE_IPROC_MSI=y +# CONFIG_PCIE_ALTERA is not set + +# +# PCI Endpoint +# +# CONFIG_PCI_ENDPOINT is not set + +# +# PCI switch controller drivers +# +# CONFIG_PCI_SW_SWITCHTEC is not set +# CONFIG_PCCARD is not set + +# +# Kernel Features +# +CONFIG_HAVE_SMP=y +CONFIG_SMP=y +CONFIG_SMP_ON_UP=y +CONFIG_ARM_CPU_TOPOLOGY=y +# CONFIG_SCHED_MC is not set +# CONFIG_SCHED_SMT is not set +CONFIG_HAVE_ARM_SCU=y +# CONFIG_HAVE_ARM_ARCH_TIMER is not set +CONFIG_HAVE_ARM_TWD=y +# CONFIG_MCPM is not set +# CONFIG_BIG_LITTLE is not set +CONFIG_VMSPLIT_3G=y +# CONFIG_VMSPLIT_3G_OPT is not set +# CONFIG_VMSPLIT_2G is not set +# CONFIG_VMSPLIT_1G is not set +CONFIG_PAGE_OFFSET=0xC0000000 +CONFIG_NR_CPUS=4 +CONFIG_HOTPLUG_CPU=y +# CONFIG_ARM_PSCI is not set +# CONFIG_PREEMPT_NONE is not set +# CONFIG_PREEMPT_VOLUNTARY is not set +CONFIG_PREEMPT=y +CONFIG_PREEMPT_COUNT=y +CONFIG_HZ_FIXED=0 +CONFIG_HZ_100=y +# CONFIG_HZ_200 is not set +# CONFIG_HZ_250 is not set +# CONFIG_HZ_300 is not set +# CONFIG_HZ_500 is not set +# CONFIG_HZ_1000 is not set +CONFIG_HZ=100 +# CONFIG_SCHED_HRTICK is not set +# CONFIG_THUMB2_KERNEL is not set +CONFIG_ARM_PATCH_IDIV=y +CONFIG_AEABI=y +# CONFIG_OABI_COMPAT is not set +# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set +CONFIG_HAVE_ARCH_PFN_VALID=y +CONFIG_HIGHMEM=y +CONFIG_HIGHPTE=y +CONFIG_CPU_SW_DOMAIN_PAN=y +CONFIG_ARCH_WANT_GENERAL_HUGETLB=y +CONFIG_ARM_MODULE_PLTS=y +CONFIG_FLATMEM=y +CONFIG_MEMORY_ISOLATION=y +# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set +CONFIG_COMPACTION=y +CONFIG_MIGRATION=y +# CONFIG_PHYS_ADDR_T_64BIT is not set +CONFIG_BOUNCE=y +# CONFIG_KSM is not set +CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 +# CONFIG_ARCH_WANTS_THP_SWAP is not set +CONFIG_CMA=y +# CONFIG_CMA_DEBUGFS is not set +CONFIG_CMA_AREAS=7 +# CONFIG_ZPOOL is not set +# CONFIG_ZBUD is not set +# CONFIG_ZSMALLOC is not set +CONFIG_GENERIC_EARLY_IOREMAP=y +# CONFIG_IDLE_PAGE_TRACKING is not set +# CONFIG_PERCPU_STATS is not set +CONFIG_ARCH_FORCE_MAX_ORDER=11 +CONFIG_ALIGNMENT_TRAP=y +# CONFIG_UACCESS_WITH_MEMCPY is not set +# CONFIG_SECCOMP is not set +# CONFIG_PARAVIRT is not set +# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set +# CONFIG_XEN is not set +CONFIG_STACKPROTECTOR_PER_TASK=y + +# +# Boot options +# +CONFIG_USE_OF=y +CONFIG_ATAGS=y +# CONFIG_DEPRECATED_PARAM_STRUCT is not set +CONFIG_ZBOOT_ROM_TEXT=0x0 +CONFIG_ZBOOT_ROM_BSS=0x0 +# CONFIG_ARM_APPENDED_DTB is not set +CONFIG_CMDLINE="" +# CONFIG_CMDLINE_EXTEND is not set +# CONFIG_CMDLINE_FORCE is not set +# CONFIG_KEXEC is not set +# CONFIG_CRASH_DUMP is not set +CONFIG_AUTO_ZRELADDR=y +# CONFIG_EFI is not set + +# +# CPU Power Management +# + +# +# CPU Frequency scaling +# +# CONFIG_CPU_FREQ is not set + +# +# CPU Idle +# +# CONFIG_CPU_IDLE is not set +# CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set + +# +# Floating point emulation +# + +# +# At least one emulation must be selected +# +CONFIG_VFP=y +CONFIG_VFPv3=y +# +# Userspace binary formats +# +CONFIG_BINFMT_ELF=y +CONFIG_ELFCORE=y +CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y +CONFIG_BINFMT_SCRIPT=y +# CONFIG_BINFMT_FLAT is not set +# CONFIG_BINFMT_MISC is not set +CONFIG_COREDUMP=y + +# +# Power management options +# +CONFIG_SUSPEND=y +CONFIG_SUSPEND_FREEZER=y +# CONFIG_SUSPEND_SKIP_SYNC is not set +# CONFIG_HIBERNATION is not set +CONFIG_PM_SLEEP=y +CONFIG_PM_SLEEP_SMP=y +# CONFIG_PM_AUTOSLEEP is not set +# CONFIG_PM_WAKELOCKS is not set +CONFIG_PM=y +# CONFIG_PM_DEBUG is not set +# CONFIG_APM_EMULATION is not set +CONFIG_PM_CLK=y +# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set +CONFIG_CPU_PM=y +CONFIG_ARCH_SUSPEND_POSSIBLE=y +CONFIG_ARM_CPU_SUSPEND=y +CONFIG_ARCH_HIBERNATION_POSSIBLE=y +CONFIG_NET=y +CONFIG_NET_INGRESS=y + +# +# Networking options +# +CONFIG_PACKET=y +# CONFIG_PACKET_DIAG is not set +CONFIG_UNIX=y +# CONFIG_UNIX_DIAG is not set +# CONFIG_TLS is not set +# CONFIG_NET_KEY is not set +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=y +# CONFIG_IP_FIB_TRIE_STATS is not set +# CONFIG_IP_ROUTE_MULTIPATH is not set +# CONFIG_IP_ROUTE_VERBOSE is not set +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +# CONFIG_IP_PNP_RARP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE_DEMUX is not set +CONFIG_NET_IP_TUNNEL=y +# CONFIG_IP_MROUTE is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_NET_FOU is not set +# CONFIG_NET_FOU_IP_TUNNELS is not set +CONFIG_INET_TUNNEL=y +# CONFIG_INET_DIAG is not set +# CONFIG_TCP_CONG_ADVANCED is not set +CONFIG_TCP_CONG_CUBIC=y +CONFIG_DEFAULT_TCP_CONG="cubic" +CONFIG_TCP_MD5SIG=y +CONFIG_IPV6=y +# CONFIG_IPV6_ROUTER_PREF is not set +# CONFIG_IPV6_OPTIMISTIC_DAD is not set +# CONFIG_IPV6_MIP6 is not set +# CONFIG_IPV6_ILA is not set +CONFIG_INET6_TUNNEL=y +CONFIG_IPV6_SIT=y +# CONFIG_IPV6_SIT_6RD is not set +CONFIG_IPV6_NDISC_NODETYPE=y +CONFIG_IPV6_TUNNEL=y +# CONFIG_IPV6_FOU is not set +# CONFIG_IPV6_FOU_TUNNEL is not set +# CONFIG_IPV6_MROUTE is not set +# CONFIG_IPV6_SEG6_LWTUNNEL is not set +# CONFIG_IPV6_SEG6_HMAC is not set +# CONFIG_NETWORK_SECMARK is not set +CONFIG_NET_PTP_CLASSIFY=y +# CONFIG_NETWORK_PHY_TIMESTAMPING is not set +CONFIG_NETFILTER=y +CONFIG_NETFILTER_ADVANCED=y + +# +# Core Netfilter Configuration +# +CONFIG_NETFILTER_INGRESS=y +CONFIG_NETFILTER_NETLINK=y +# CONFIG_NETFILTER_NETLINK_ACCT is not set +CONFIG_NETFILTER_NETLINK_QUEUE=y +CONFIG_NETFILTER_NETLINK_LOG=y +CONFIG_NF_CONNTRACK=y +CONFIG_NF_CONNTRACK_MARK=y +# CONFIG_NF_CONNTRACK_ZONES is not set +CONFIG_NF_CONNTRACK_PROCFS=y +# CONFIG_NF_CONNTRACK_EVENTS is not set +# CONFIG_NF_CONNTRACK_TIMEOUT is not set +# CONFIG_NF_CONNTRACK_TIMESTAMP is not set +# CONFIG_NF_CT_PROTO_DCCP is not set +# CONFIG_NF_CT_PROTO_SCTP is not set +# CONFIG_NF_CT_PROTO_UDPLITE is not set +# CONFIG_NF_CONNTRACK_AMANDA is not set +CONFIG_NF_CONNTRACK_FTP=y +# CONFIG_NF_CONNTRACK_H323 is not set +# CONFIG_NF_CONNTRACK_IRC is not set +# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set +# CONFIG_NF_CONNTRACK_SNMP is not set +# CONFIG_NF_CONNTRACK_PPTP is not set +# CONFIG_NF_CONNTRACK_SANE is not set +# CONFIG_NF_CONNTRACK_SIP is not set +CONFIG_NF_CONNTRACK_TFTP=y +# CONFIG_NF_CT_NETLINK is not set +# CONFIG_NF_CT_NETLINK_TIMEOUT is not set +# CONFIG_NF_TABLES is not set +CONFIG_NETFILTER_XTABLES=y + +# +# Xtables combined modules +# +CONFIG_NETFILTER_XT_CONNMARK=y + +# +# Xtables targets +# +# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set +# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set +CONFIG_NETFILTER_XT_TARGET_CT=y +# CONFIG_NETFILTER_XT_TARGET_DSCP is not set +CONFIG_NETFILTER_XT_TARGET_HL=y +# CONFIG_NETFILTER_XT_TARGET_HMARK is not set +# CONFIG_NETFILTER_XT_TARGET_IDLETIMER is not set +# CONFIG_NETFILTER_XT_TARGET_LOG is not set +# CONFIG_NETFILTER_XT_TARGET_MARK is not set +# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set +# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set +# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set +# CONFIG_NETFILTER_XT_TARGET_RATEEST is not set +# CONFIG_NETFILTER_XT_TARGET_TEE is not set +# CONFIG_NETFILTER_XT_TARGET_TPROXY is not set +# CONFIG_NETFILTER_XT_TARGET_TRACE is not set +CONFIG_NETFILTER_XT_TARGET_TCPMSS=y +# CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set + +# +# Xtables matches +# +# CONFIG_NETFILTER_XT_MATCH_BPF is not set +# CONFIG_NETFILTER_XT_MATCH_CLUSTER is not set +# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set +# CONFIG_NETFILTER_XT_MATCH_CONNBYTES is not set +# CONFIG_NETFILTER_XT_MATCH_CONNLABEL is not set +# CONFIG_NETFILTER_XT_MATCH_CONNLIMIT is not set +CONFIG_NETFILTER_XT_MATCH_CONNMARK=y +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y +CONFIG_NETFILTER_XT_MATCH_POLICY=y +# CONFIG_NETFILTER_XT_MATCH_CPU is not set +# CONFIG_NETFILTER_XT_MATCH_DCCP is not set +# CONFIG_NETFILTER_XT_MATCH_DEVGROUP is not set +# CONFIG_NETFILTER_XT_MATCH_DSCP is not set +CONFIG_NETFILTER_XT_MATCH_ECN=y +# CONFIG_NETFILTER_XT_MATCH_ESP is not set +# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set +CONFIG_NETFILTER_XT_MATCH_HELPER=y +CONFIG_NETFILTER_XT_MATCH_HL=y +# CONFIG_NETFILTER_XT_MATCH_IPCOMP is not set +# CONFIG_NETFILTER_XT_MATCH_IPRANGE is not set +# CONFIG_NETFILTER_XT_MATCH_L2TP is not set +# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set +# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set +# CONFIG_NETFILTER_XT_MATCH_MAC is not set +# CONFIG_NETFILTER_XT_MATCH_MARK is not set +# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set +# CONFIG_NETFILTER_XT_MATCH_NFACCT is not set +# CONFIG_NETFILTER_XT_MATCH_OSF is not set +# CONFIG_NETFILTER_XT_MATCH_OWNER is not set +# CONFIG_NETFILTER_XT_MATCH_PHYSDEV is not set +# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set +# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set +# CONFIG_NETFILTER_XT_MATCH_RATEEST is not set +# CONFIG_NETFILTER_XT_MATCH_REALM is not set +# CONFIG_NETFILTER_XT_MATCH_RECENT is not set +CONFIG_NETFILTER_XT_MATCH_STATE=y +# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set +# CONFIG_NETFILTER_XT_MATCH_STRING is not set +CONFIG_NETFILTER_XT_MATCH_TCPMSS=y +# CONFIG_NETFILTER_XT_MATCH_TIME is not set +# CONFIG_NETFILTER_XT_MATCH_U32 is not set +# CONFIG_IP_SET is not set + +# +# IP: Netfilter Configuration +# +CONFIG_NF_DEFRAG_IPV4=y +# CONFIG_NF_SOCKET_IPV4 is not set +# CONFIG_NF_DUP_IPV4 is not set +# CONFIG_NF_LOG_ARP is not set +# CONFIG_NF_LOG_IPV4 is not set +CONFIG_NF_REJECT_IPV4=y +CONFIG_IP_NF_IPTABLES=y +CONFIG_IP_NF_MATCH_AH=y +CONFIG_IP_NF_MATCH_ECN=y +# CONFIG_IP_NF_MATCH_RPFILTER is not set +CONFIG_IP_NF_MATCH_TTL=y +# CONFIG_IP_NF_TARGET_SYNPROXY is not set +CONFIG_IP_NF_MANGLE=y +CONFIG_IP_NF_TARGET_ECN=y +CONFIG_IP_NF_TARGET_TTL=y +CONFIG_IP_NF_RAW=y +CONFIG_IP_NF_ARPTABLES=y +CONFIG_IP_NF_ARPFILTER=y +CONFIG_IP_NF_ARP_MANGLE=y + +# +# IPv6: Netfilter Configuration +# +CONFIG_NF_DEFRAG_IPV6=y +# CONFIG_NF_SOCKET_IPV6 is not set +# CONFIG_NF_DUP_IPV6 is not set +CONFIG_NF_REJECT_IPV6=y +# CONFIG_NF_LOG_IPV6 is not set +CONFIG_IP6_NF_IPTABLES=y +# CONFIG_IP6_NF_MATCH_AH is not set +# CONFIG_IP6_NF_MATCH_EUI64 is not set +# CONFIG_IP6_NF_MATCH_FRAG is not set +# CONFIG_IP6_NF_MATCH_OPTS is not set +# CONFIG_IP6_NF_MATCH_HL is not set +# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set +# CONFIG_IP6_NF_MATCH_MH is not set +CONFIG_IP6_NF_MATCH_RPFILTER=y +CONFIG_IP6_NF_MATCH_RT=y +# CONFIG_IP6_NF_TARGET_HL is not set +CONFIG_IP6_NF_FILTER=y +CONFIG_IP6_NF_TARGET_REJECT=y +# CONFIG_IP6_NF_TARGET_SYNPROXY is not set +CONFIG_IP6_NF_MANGLE=y +CONFIG_IP6_NF_RAW=y +# CONFIG_IP6_NF_NAT is not set +# CONFIG_IP_DCCP is not set +CONFIG_IP_SCTP=m +CONFIG_SCTP_DEFAULT_COOKIE_HMAC_MD5=y +CONFIG_SCTP_COOKIE_HMAC_MD5=y +CONFIG_SCTP_COOKIE_HMAC_SHA1=y +# CONFIG_RDS is not set +# CONFIG_TIPC is not set +# CONFIG_ATM is not set +# CONFIG_L2TP is not set +CONFIG_STP=y +CONFIG_GARP=y +CONFIG_BRIDGE_IGMP_SNOOPING=y +CONFIG_BRIDGE_VLAN_FILTERING=y +# CONFIG_NET_DSA is not set +CONFIG_VLAN_8021Q=y +CONFIG_VLAN_8021Q_GVRP=y +# CONFIG_VLAN_8021Q_MVRP is not set +CONFIG_LLC=y +# CONFIG_LLC2 is not set +# CONFIG_ATALK is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_PHONET is not set +# CONFIG_6LOWPAN is not set +# CONFIG_IEEE802154 is not set +CONFIG_NET_SCHED=y +CONFIG_NET_CLS_ACT=y +CONFIG_DNS_RESOLVER=y +# CONFIG_BATMAN_ADV is not set +# CONFIG_VSOCKETS is not set +# CONFIG_NETLINK_DIAG is not set +# CONFIG_HSR is not set +CONFIG_NET_SWITCHDEV=y +# CONFIG_NET_NCSI is not set +CONFIG_RPS=y +CONFIG_RFS_ACCEL=y +CONFIG_XPS=y +CONFIG_NET_RX_BUSY_POLL=y +CONFIG_BQL=y +CONFIG_NET_FLOW_LIMIT=y + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set +# CONFIG_HAMRADIO is not set +# CONFIG_CAN is not set +# CONFIG_BT is not set +# CONFIG_AF_RXRPC is not set +# CONFIG_AF_KCM is not set +# CONFIG_STREAM_PARSER is not set +CONFIG_FIB_RULES=y +# CONFIG_WIRELESS is not set +# CONFIG_RFKILL is not set +# CONFIG_NET_9P is not set +# CONFIG_CAIF is not set +# CONFIG_CEPH_LIB is not set +# CONFIG_NFC is not set +# CONFIG_PSAMPLE is not set +# CONFIG_NET_IFE is not set +# CONFIG_LWTUNNEL is not set +CONFIG_DST_CACHE=y +CONFIG_GRO_CELLS=y +CONFIG_HAVE_EBPF_JIT=y + +# +# Device Drivers +# +CONFIG_ARM_AMBA=y + +# +# Generic Driver Options +# +CONFIG_UEVENT_HELPER=y +CONFIG_UEVENT_HELPER_PATH="/sbin/mdev" +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_STANDALONE=y +CONFIG_PREVENT_FIRMWARE_BUILD=y +CONFIG_FW_LOADER=y +CONFIG_EXTRA_FIRMWARE="" +# CONFIG_FW_LOADER_USER_HELPER_FALLBACK is not set +CONFIG_ALLOW_DEV_COREDUMP=y +# CONFIG_DEBUG_DRIVER is not set +# CONFIG_DEBUG_DEVRES is not set +# CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set +# CONFIG_TEST_ASYNC_DRIVER_PROBE is not set +# CONFIG_SYS_HYPERVISOR is not set +CONFIG_GENERIC_CPU_AUTOPROBE=y +# CONFIG_DMA_SHARED_BUFFER is not set +CONFIG_DMA_CMA=y + +# +# Default contiguous memory area size: +# +CONFIG_CMA_SIZE_MBYTES=32 +CONFIG_CMA_SIZE_SEL_MBYTES=y +# CONFIG_CMA_SIZE_SEL_PERCENTAGE is not set +# CONFIG_CMA_SIZE_SEL_MIN is not set +# CONFIG_CMA_SIZE_SEL_MAX is not set +CONFIG_CMA_ALIGNMENT=8 +CONFIG_GENERIC_ARCH_TOPOLOGY=y + +# +# Bus devices +# +# CONFIG_BRCMSTB_GISB_ARB is not set +# CONFIG_VEXPRESS_CONFIG is not set +# CONFIG_CONNECTOR is not set +CONFIG_MTD=y +CONFIG_MTD_TESTS=m +# CONFIG_MTD_REDBOOT_PARTS is not set +CONFIG_MTD_CMDLINE_PARTS=y +# CONFIG_MTD_AFS_PARTS is not set +CONFIG_MTD_OF_PARTS=y + +# +# Partition parsers +# + +# +# User Modules And Translation Layers +# +CONFIG_MTD_BLKDEVS=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set +# CONFIG_INFTL is not set +# CONFIG_RFD_FTL is not set +# CONFIG_SSFDC is not set +# CONFIG_SM_FTL is not set +# CONFIG_MTD_OOPS is not set +# CONFIG_MTD_SWAP is not set +# CONFIG_MTD_PARTITIONED_MASTER is not set + +# +# RAM/ROM/Flash chip drivers +# +CONFIG_MTD_CFI=y +CONFIG_MTD_JEDECPROBE=y +CONFIG_MTD_GEN_PROBE=y +# CONFIG_MTD_CFI_ADV_OPTIONS is not set +CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_MAP_BANK_WIDTH_2=y +CONFIG_MTD_MAP_BANK_WIDTH_4=y +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_CFI_I4 is not set +# CONFIG_MTD_CFI_I8 is not set +CONFIG_MTD_CFI_INTELEXT=y +CONFIG_MTD_CFI_AMDSTD=y +CONFIG_MTD_CFI_STAA=y +CONFIG_MTD_CFI_UTIL=y +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_COMPLEX_MAPPINGS is not set +CONFIG_MTD_PHYSMAP=y +# CONFIG_MTD_PHYSMAP_COMPAT is not set +CONFIG_MTD_PHYSMAP_OF=y +# CONFIG_MTD_IMPA7 is not set +# CONFIG_MTD_PLATRAM is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_DATAFLASH is not set +# CONFIG_MTD_MCHP23K256 is not set +# CONFIG_MTD_SST25L is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_PHRAM is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLOCK2MTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOCG3 is not set +CONFIG_MTD_NAND_ECC=y +# CONFIG_MTD_NAND_ECC_SW_HAMMING_SMC is not set +# CONFIG_MTD_NAND_ECC_SW_BCH is not set +# CONFIG_MTD_SM_COMMON is not set +# CONFIG_MTD_NAND_DENALI_PCI is not set +# CONFIG_MTD_NAND_DENALI_DT is not set +# CONFIG_MTD_NAND_GPIO is not set +# CONFIG_MTD_NAND_OMAP_BCH_BUILD is not set +# CONFIG_MTD_NAND_RICOH is not set +# CONFIG_MTD_NAND_DISKONCHIP is not set +# CONFIG_MTD_NAND_CAFE is not set +# CONFIG_MTD_NAND_NANDSIM is not set +CONFIG_MTD_RAW_NAND=y +CONFIG_MTD_NAND_BRCMNAND=y +# CONFIG_MTD_NAND_PLATFORM is not set +# CONFIG_MTD_ONENAND is not set + +# +# LPDDR & LPDDR2 PCM memory drivers +# +# CONFIG_MTD_LPDDR is not set +# CONFIG_MTD_LPDDR2_NVM is not set +CONFIG_MTD_SPI_NOR=y +# CONFIG_MTD_SPI_NOR_USE_4K_SECTORS is not set +# CONFIG_SPI_CADENCE_QUADSPI is not set +CONFIG_MTD_UBI=y +CONFIG_MTD_UBI_WL_THRESHOLD=4096 +CONFIG_MTD_UBI_BEB_LIMIT=20 +# CONFIG_MTD_UBI_FASTMAP is not set +# CONFIG_MTD_UBI_GLUEBI is not set +# CONFIG_MTD_UBI_BLOCK is not set +CONFIG_DTC=y +CONFIG_OF=y +# CONFIG_OF_UNITTEST is not set +CONFIG_OF_FLATTREE=y +CONFIG_OF_EARLY_FLATTREE=y +CONFIG_OF_DYNAMIC=y +CONFIG_OF_ADDRESS=y +CONFIG_OF_IRQ=y +CONFIG_OF_MDIO=y +CONFIG_OF_RESERVED_MEM=y +CONFIG_OF_RESOLVE=y +CONFIG_OF_OVERLAY=y +CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y +# CONFIG_PARPORT is not set +CONFIG_BLK_DEV=y +# CONFIG_BLK_DEV_NULL_BLK is not set +# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set +# CONFIG_BLK_DEV_COW_COMMON is not set +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 +# CONFIG_BLK_DEV_DRBD is not set +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=16 +CONFIG_BLK_DEV_RAM_SIZE=32768 +# CONFIG_CDROM_PKTCDVD is not set +# CONFIG_ATA_OVER_ETH is not set +# CONFIG_BLK_DEV_RBD is not set +# CONFIG_BLK_DEV_NVME is not set +# CONFIG_NVME_FC is not set +# CONFIG_NVME_TARGET is not set + +# +# Misc devices +# +# CONFIG_AD525X_DPOT is not set +# CONFIG_DUMMY_IRQ is not set +# CONFIG_PHANTOM is not set +# CONFIG_TIFM_CORE is not set +# CONFIG_ICS932S401 is not set +# CONFIG_ENCLOSURE_SERVICES is not set +# CONFIG_HP_ILO is not set +# CONFIG_APDS9802ALS is not set +# CONFIG_ISL29003 is not set +# CONFIG_ISL29020 is not set +# CONFIG_SENSORS_TSL2550 is not set +# CONFIG_SENSORS_BH1770 is not set +# CONFIG_SENSORS_APDS990X is not set +# CONFIG_HMC6352 is not set +# CONFIG_DS1682 is not set +# CONFIG_LATTICE_ECP3_CONFIG is not set +# CONFIG_SRAM is not set +# CONFIG_PCI_ENDPOINT_TEST is not set +# CONFIG_C2PORT is not set + +# +# EEPROM support +# +CONFIG_EEPROM_AT24=y +# CONFIG_EEPROM_AT25 is not set +# CONFIG_EEPROM_MAX6875 is not set +# CONFIG_EEPROM_93CX6 is not set +# CONFIG_EEPROM_93XX46 is not set +# CONFIG_EEPROM_IDT_89HPESX is not set +# CONFIG_CB710_CORE is not set + +# +# Texas Instruments shared transport line discipline +# +# CONFIG_TI_ST is not set + +# +# Altera FPGA firmware download module +# +# CONFIG_ALTERA_STAPL is not set +# CONFIG_MISC_RTSX_PCI is not set +# CONFIG_MISC_RTSX_USB is not set + +# +# Intel MIC Bus Driver +# + +# +# SCIF Bus Driver +# + +# +# VOP Bus Driver +# + +# +# Intel MIC Host Driver +# + +# +# Intel MIC Card Driver +# + +# +# SCIF Driver +# + +# +# Intel MIC Coprocessor State Management (COSM) Drivers +# + +# +# VOP Driver +# +# CONFIG_ECHO is not set +# CONFIG_CXL_BASE is not set + +# +# SCSI device support +# +CONFIG_SCSI_MOD=y +# CONFIG_RAID_ATTRS is not set +CONFIG_SCSI_COMMON=y +CONFIG_SCSI=y +CONFIG_SCSI_DMA=y +# CONFIG_SCSI_NETLINK is not set +CONFIG_SCSI_PROC_FS=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=y +CONFIG_CHR_DEV_ST=y +# CONFIG_BLK_DEV_SR is not set +CONFIG_CHR_DEV_SG=y +# CONFIG_CHR_DEV_SCH is not set +CONFIG_SCSI_CONSTANTS=y +CONFIG_SCSI_LOGGING=y +# CONFIG_SCSI_SCAN_ASYNC is not set + +# +# SCSI Transports +# +# CONFIG_SCSI_SPI_ATTRS is not set +# CONFIG_SCSI_FC_ATTRS is not set +# CONFIG_SCSI_ISCSI_ATTRS is not set +# CONFIG_SCSI_SAS_ATTRS is not set +# CONFIG_SCSI_SAS_LIBSAS is not set +# CONFIG_SCSI_SRP_ATTRS is not set +CONFIG_SCSI_LOWLEVEL=y +# CONFIG_ISCSI_TCP is not set +# CONFIG_ISCSI_BOOT_SYSFS is not set +# CONFIG_SCSI_CXGB3_ISCSI is not set +# CONFIG_SCSI_CXGB4_ISCSI is not set +# CONFIG_SCSI_BNX2_ISCSI is not set +# CONFIG_BE2ISCSI is not set +# CONFIG_BLK_DEV_3W_XXXX_RAID is not set +# CONFIG_SCSI_HPSA is not set +# CONFIG_SCSI_3W_9XXX is not set +# CONFIG_SCSI_3W_SAS is not set +# CONFIG_SCSI_ACARD is not set +# CONFIG_SCSI_AACRAID is not set +# CONFIG_SCSI_AIC7XXX is not set +# CONFIG_SCSI_AIC79XX is not set +# CONFIG_SCSI_AIC94XX is not set +# CONFIG_SCSI_MVSAS is not set +# CONFIG_SCSI_MVUMI is not set +# CONFIG_SCSI_ADVANSYS is not set +# CONFIG_SCSI_ARCMSR is not set +# CONFIG_SCSI_ESAS2R is not set +# CONFIG_MEGARAID_NEWGEN is not set +# CONFIG_MEGARAID_LEGACY is not set +# CONFIG_MEGARAID_SAS is not set +# CONFIG_SCSI_MPT3SAS is not set +# CONFIG_SCSI_MPT2SAS is not set +# CONFIG_SCSI_SMARTPQI is not set +# CONFIG_SCSI_UFSHCD is not set +# CONFIG_SCSI_HPTIOP is not set +# CONFIG_SCSI_SNIC is not set +# CONFIG_SCSI_DMX3191D is not set +# CONFIG_SCSI_IPS is not set +# CONFIG_SCSI_INITIO is not set +# CONFIG_SCSI_INIA100 is not set +# CONFIG_SCSI_STEX is not set +# CONFIG_SCSI_SYM53C8XX_2 is not set +# CONFIG_SCSI_QLOGIC_1280 is not set +# CONFIG_SCSI_QLA_ISCSI is not set +# CONFIG_SCSI_DC395x is not set +# CONFIG_SCSI_AM53C974 is not set +# CONFIG_SCSI_NSP32 is not set +# CONFIG_SCSI_WD719X is not set +# CONFIG_SCSI_DEBUG is not set +# CONFIG_SCSI_PMCRAID is not set +# CONFIG_SCSI_PM8001 is not set +# CONFIG_SCSI_DH is not set +# CONFIG_ATA is not set +CONFIG_MD=y +CONFIG_BLK_DEV_DM=m +# CONFIG_TARGET_CORE is not set +# CONFIG_FUSION is not set + +# +# IEEE 1394 (FireWire) support +# +# CONFIG_FIREWIRE is not set +# CONFIG_FIREWIRE_NOSY is not set +CONFIG_NETDEVICES=y +CONFIG_NET_CORE=y +CONFIG_BONDING=m +# CONFIG_EQUALIZER is not set +# CONFIG_NET_FC is not set +# CONFIG_NET_TEAM is not set +# CONFIG_MACSEC is not set +# CONFIG_NETCONSOLE is not set +# CONFIG_NETPOLL is not set +# CONFIG_NET_POLL_CONTROLLER is not set +# CONFIG_TUN_VNET_CROSS_LE is not set +# CONFIG_NLMON is not set +# CONFIG_ARCNET is not set + +# +# CAIF transport drivers +# + +# +# Distributed Switch Architecture drivers +# +CONFIG_ETHERNET=y +CONFIG_NET_VENDOR_3COM=y +# CONFIG_VORTEX is not set +# CONFIG_TYPHOON is not set +CONFIG_NET_VENDOR_ADAPTEC=y +# CONFIG_ADAPTEC_STARFIRE is not set +CONFIG_NET_VENDOR_AGERE=y +# CONFIG_ET131X is not set +CONFIG_NET_VENDOR_ALACRITECH=y +# CONFIG_SLICOSS is not set +CONFIG_NET_VENDOR_ALTEON=y +# CONFIG_ACENIC is not set +# CONFIG_ALTERA_TSE is not set +CONFIG_NET_VENDOR_AMAZON=y +CONFIG_NET_VENDOR_AMD=y +# CONFIG_AMD8111_ETH is not set +# CONFIG_PCNET32 is not set +# CONFIG_AMD_XGBE_HAVE_ECC is not set +CONFIG_NET_VENDOR_AQUANTIA=y +CONFIG_NET_VENDOR_ARC=y +CONFIG_NET_VENDOR_ATHEROS=y +# CONFIG_ATL2 is not set +# CONFIG_ATL1 is not set +# CONFIG_ATL1E is not set +# CONFIG_ATL1C is not set +# CONFIG_ALX is not set +CONFIG_NET_VENDOR_CADENCE=y +# CONFIG_MACB is not set +CONFIG_NET_VENDOR_BROADCOM=y +# CONFIG_B44 is not set +# CONFIG_BCMGENET is not set +# CONFIG_BNX2 is not set +# CONFIG_CNIC is not set +CONFIG_TIGON3=y +CONFIG_TIGON3_HWMON=y +# CONFIG_BNX2X is not set +CONFIG_BGMAC=y +CONFIG_BGMAC_PLATFORM=y +# CONFIG_SYSTEMPORT is not set +# CONFIG_BNXT is not set +CONFIG_NET_VENDOR_BROCADE=y +# CONFIG_BNA is not set +CONFIG_NET_VENDOR_CAVIUM=y +CONFIG_NET_VENDOR_CHELSIO=y +# CONFIG_CHELSIO_T1 is not set +# CONFIG_CHELSIO_T3 is not set +# CONFIG_CHELSIO_T4 is not set +# CONFIG_CHELSIO_T4VF is not set +CONFIG_NET_VENDOR_CIRRUS=y +# CONFIG_CS89x0 is not set +CONFIG_NET_VENDOR_CISCO=y +# CONFIG_ENIC is not set +# CONFIG_DM9000 is not set +# CONFIG_DNET is not set +CONFIG_NET_VENDOR_DEC=y +# CONFIG_NET_TULIP is not set +CONFIG_NET_VENDOR_DLINK=y +# CONFIG_DL2K is not set +# CONFIG_SUNDANCE is not set +CONFIG_NET_VENDOR_EMULEX=y +# CONFIG_BE2NET is not set +CONFIG_NET_VENDOR_EZCHIP=y +# CONFIG_EZCHIP_NPS_MANAGEMENT_ENET is not set +CONFIG_NET_VENDOR_FARADAY=y +# CONFIG_FTMAC100 is not set +# CONFIG_FTGMAC100 is not set +CONFIG_NET_VENDOR_HISILICON=y +# CONFIG_HIX5HD2_GMAC is not set +# CONFIG_HISI_FEMAC is not set +# CONFIG_HIP04_ETH is not set +# CONFIG_HNS is not set +# CONFIG_HNS_DSAF is not set +# CONFIG_HNS_ENET is not set +# CONFIG_HNS3 is not set +CONFIG_NET_VENDOR_HUAWEI=y +CONFIG_NET_VENDOR_INTEL=y +# CONFIG_E100 is not set +# CONFIG_E1000 is not set +# CONFIG_E1000E is not set +# CONFIG_IGB is not set +# CONFIG_IGBVF is not set +# CONFIG_IXGBE is not set +# CONFIG_IXGBEVF is not set +# CONFIG_I40E is not set +# CONFIG_I40EVF is not set +# CONFIG_FM10K is not set +CONFIG_NET_VENDOR_I825XX=y +# CONFIG_JME is not set +CONFIG_NET_VENDOR_MARVELL=y +# CONFIG_MVMDIO is not set +# CONFIG_MVNETA_BM is not set +# CONFIG_SKGE is not set +# CONFIG_SKY2 is not set +CONFIG_NET_VENDOR_MELLANOX=y +# CONFIG_MLX4_EN is not set +# CONFIG_MLX4_CORE is not set +# CONFIG_MLX5_CORE is not set +# CONFIG_MLXSW_CORE is not set +# CONFIG_MLXFW is not set +CONFIG_NET_VENDOR_MICREL=y +# CONFIG_KS8842 is not set +# CONFIG_KS8851 is not set +# CONFIG_KS8851_MLL is not set +# CONFIG_KSZ884X_PCI is not set +CONFIG_NET_VENDOR_MICROCHIP=y +# CONFIG_ENC28J60 is not set +# CONFIG_ENCX24J600 is not set +CONFIG_NET_VENDOR_MYRI=y +# CONFIG_MYRI10GE is not set +# CONFIG_FEALNX is not set +CONFIG_NET_VENDOR_NATSEMI=y +# CONFIG_NATSEMI is not set +# CONFIG_NS83820 is not set +CONFIG_NET_VENDOR_NETERION=y +# CONFIG_S2IO is not set +CONFIG_NET_VENDOR_NETRONOME=y +# CONFIG_NFP is not set +CONFIG_NET_VENDOR_8390=y +# CONFIG_AX88796 is not set +# CONFIG_NE2K_PCI is not set +CONFIG_NET_VENDOR_NVIDIA=y +# CONFIG_FORCEDETH is not set +CONFIG_NET_VENDOR_OKI=y +# CONFIG_ETHOC is not set +CONFIG_NET_VENDOR_PACKET_ENGINES=y +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +CONFIG_NET_VENDOR_QLOGIC=y +# CONFIG_QLA3XXX is not set +# CONFIG_QLCNIC is not set +# CONFIG_NETXEN_NIC is not set +# CONFIG_QED is not set +CONFIG_NET_VENDOR_QUALCOMM=y +# CONFIG_QCA7000_SPI is not set +# CONFIG_QCOM_EMAC is not set +# CONFIG_RMNET is not set +CONFIG_NET_VENDOR_REALTEK=y +# CONFIG_8139CP is not set +# CONFIG_8139TOO is not set +# CONFIG_R8169 is not set +CONFIG_NET_VENDOR_RENESAS=y +CONFIG_NET_VENDOR_RDC=y +# CONFIG_R6040 is not set +CONFIG_NET_VENDOR_ROCKER=y +CONFIG_NET_VENDOR_SAMSUNG=y +# CONFIG_SXGBE_ETH is not set +CONFIG_NET_VENDOR_SEEQ=y +CONFIG_NET_VENDOR_SILAN=y +# CONFIG_SC92031 is not set +CONFIG_NET_VENDOR_SIS=y +# CONFIG_SIS900 is not set +# CONFIG_SIS190 is not set +CONFIG_NET_VENDOR_SOLARFLARE=y +# CONFIG_SFC is not set +# CONFIG_SFC_FALCON is not set +CONFIG_NET_VENDOR_SMSC=y +# CONFIG_SMC91X is not set +# CONFIG_EPIC100 is not set +# CONFIG_SMSC911X is not set +# CONFIG_SMSC9420 is not set +CONFIG_NET_VENDOR_STMICRO=y +# CONFIG_STMMAC_ETH is not set +CONFIG_NET_VENDOR_SUN=y +# CONFIG_HAPPYMEAL is not set +# CONFIG_SUNGEM is not set +# CONFIG_CASSINI is not set +# CONFIG_NIU is not set +CONFIG_NET_VENDOR_TEHUTI=y +# CONFIG_TEHUTI is not set +CONFIG_NET_VENDOR_TI=y +# CONFIG_TLAN is not set +CONFIG_NET_VENDOR_VIA=y +# CONFIG_VIA_RHINE is not set +# CONFIG_VIA_VELOCITY is not set +CONFIG_NET_VENDOR_WIZNET=y +# CONFIG_WIZNET_W5100 is not set +# CONFIG_WIZNET_W5300 is not set +CONFIG_NET_VENDOR_SYNOPSYS=y +# CONFIG_DWC_XLGMAC is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +CONFIG_MDIO_DEVICE=y +CONFIG_MDIO_BUS=y +# CONFIG_MDIO_BCM_UNIMAC is not set +# CONFIG_MDIO_BITBANG is not set +# CONFIG_MDIO_BUS_MUX_GPIO is not set +CONFIG_MDIO_BUS_MUX_MMIOREG=y +# CONFIG_MDIO_HISI_FEMAC is not set +CONFIG_PHYLIB=y +CONFIG_SWPHY=y +CONFIG_MDIO_BCM_IPROC=y + +# +# MII PHY device drivers +# +# CONFIG_AMD_PHY is not set +# CONFIG_AQUANTIA_PHY is not set +# CONFIG_AT803X_PHY is not set +# CONFIG_BCM7XXX_PHY is not set +# CONFIG_BCM87XX_PHY is not set +CONFIG_BCM_NET_PHYLIB=y +CONFIG_BROADCOM_PHY=y +CONFIG_XGS_IPROC_SERDES=y +# CONFIG_CICADA_PHY is not set +# CONFIG_CORTINA_PHY is not set +# CONFIG_DAVICOM_PHY is not set +# CONFIG_DP83848_PHY is not set +# CONFIG_DP83867_PHY is not set +CONFIG_FIXED_PHY=y +# CONFIG_ICPLUS_PHY is not set +# CONFIG_INTEL_XWAY_PHY is not set +# CONFIG_LSI_ET1011C_PHY is not set +# CONFIG_LXT_PHY is not set +# CONFIG_MARVELL_PHY is not set +# CONFIG_MARVELL_10G_PHY is not set +# CONFIG_MICREL_PHY is not set +# CONFIG_MICROCHIP_PHY is not set +# CONFIG_MICROSEMI_PHY is not set +# CONFIG_NATIONAL_PHY is not set +# CONFIG_QSEMI_PHY is not set +# CONFIG_REALTEK_PHY is not set +# CONFIG_ROCKCHIP_PHY is not set +# CONFIG_SMSC_PHY is not set +# CONFIG_STE10XP is not set +# CONFIG_TERANETICS_PHY is not set +# CONFIG_VITESSE_PHY is not set +# CONFIG_XILINX_GMII2RGMII is not set +# CONFIG_MICREL_KS8995MA is not set +CONFIG_PPP=m +CONFIG_PPP_MULTILINK=y +CONFIG_PPP_FILTER=y +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPPOE=m +# CONFIG_SLIP is not set +CONFIG_USB_NET_DRIVERS=y +# CONFIG_USB_CATC is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_RTL8150 is not set +# CONFIG_USB_RTL8152 is not set +# CONFIG_USB_LAN78XX is not set +# CONFIG_USB_IPHETH is not set +# CONFIG_WLAN is not set + +# +# Enable WiMAX (Networking options) to see the WiMAX drivers +# +# CONFIG_WAN is not set +# CONFIG_VMXNET3 is not set +# CONFIG_ISDN is not set + +# +# Input device support +# +# CONFIG_INPUT is not set + +# +# Hardware I/O ports +# +CONFIG_SERIO=y +CONFIG_SERIO_SERPORT=y +# CONFIG_SERIO_AMBAKMI is not set +# CONFIG_SERIO_PCIPS2 is not set +CONFIG_SERIO_LIBPS2=y +# CONFIG_SERIO_RAW is not set +# CONFIG_SERIO_ALTERA_PS2 is not set +# CONFIG_SERIO_PS2MULT is not set +# CONFIG_SERIO_ARC_PS2 is not set +# CONFIG_SERIO_APBPS2 is not set +# CONFIG_SERIO_GPIO_PS2 is not set +# CONFIG_USERIO is not set +# CONFIG_GAMEPORT is not set + +# +# Character devices +# +CONFIG_TTY=y +# CONFIG_VT is not set +CONFIG_UNIX98_PTYS=y +# CONFIG_LEGACY_PTYS is not set +# CONFIG_SERIAL_NONSTANDARD is not set +# CONFIG_NOZOMI is not set +# CONFIG_N_GSM is not set +CONFIG_DEVMEM=y + +# +# Serial drivers +# +CONFIG_SERIAL_EARLYCON=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y +# CONFIG_SERIAL_8250_FINTEK is not set +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_DMA=y +CONFIG_SERIAL_8250_PCI=y +CONFIG_SERIAL_8250_EXAR=y +CONFIG_SERIAL_8250_NR_UARTS=2 +CONFIG_SERIAL_8250_RUNTIME_UARTS=2 +CONFIG_SERIAL_8250_EXTENDED=y +# CONFIG_SERIAL_8250_MANY_PORTS is not set +# CONFIG_SERIAL_8250_ASPEED_VUART is not set +CONFIG_SERIAL_8250_SHARE_IRQ=y +CONFIG_SERIAL_8250_DETECT_IRQ=y +CONFIG_SERIAL_8250_RSA=y +CONFIG_SERIAL_8250_FSL=y +CONFIG_SERIAL_8250_DW=y +# CONFIG_SERIAL_8250_EM is not set +# CONFIG_SERIAL_8250_RT288X is not set +CONFIG_SERIAL_OF_PLATFORM=y + +# +# Non-8250 serial port support +# +# CONFIG_SERIAL_AMBA_PL010 is not set +# CONFIG_SERIAL_AMBA_PL011 is not set +# CONFIG_SERIAL_MAX3100 is not set +# CONFIG_SERIAL_MAX310X is not set +# CONFIG_SERIAL_UARTLITE is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +# CONFIG_SERIAL_JSM is not set +# CONFIG_SERIAL_SCCNXP is not set +# CONFIG_SERIAL_SC16IS7XX is not set +# CONFIG_SERIAL_BCM63XX is not set +# CONFIG_SERIAL_ALTERA_JTAGUART is not set +# CONFIG_SERIAL_ALTERA_UART is not set +# CONFIG_SERIAL_XILINX_PS_UART is not set +# CONFIG_SERIAL_ARC is not set +# CONFIG_SERIAL_RP2 is not set +# CONFIG_SERIAL_FSL_LPUART is not set +# CONFIG_SERIAL_CONEXANT_DIGICOLOR is not set +# CONFIG_SERIAL_ST_ASC is not set +CONFIG_SERIAL_DEV_BUS=y +CONFIG_SERIAL_DEV_CTRL_TTYPORT=y +# CONFIG_TTY_PRINTK is not set +# CONFIG_HVC_DCC is not set +# CONFIG_IPMI_HANDLER is not set +CONFIG_HW_RANDOM=y +# CONFIG_HW_RANDOM_TIMERIOMEM is not set +CONFIG_HW_RANDOM_XGS_IPROC_RNG=y +# CONFIG_APPLICOM is not set +# CONFIG_TCG_TPM is not set +CONFIG_DEVPORT=y +# CONFIG_XILLYBUS is not set + +# +# I2C support +# +CONFIG_I2C=y +CONFIG_I2C_BOARDINFO=y +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_MUX=y + +# +# Multiplexer I2C Chip support +# +# CONFIG_I2C_ARB_GPIO_CHALLENGE is not set +CONFIG_I2C_MUX_GPIO=y +# CONFIG_I2C_MUX_GPMUX is not set +# CONFIG_I2C_MUX_LTC4306 is not set +CONFIG_I2C_MUX_PCA9541=y +CONFIG_I2C_MUX_PCA954x=y +CONFIG_I2C_MUX_REG=y +# CONFIG_I2C_MUX_MLXCPLD is not set +CONFIG_I2C_HELPER_AUTO=y + +# +# I2C Hardware Bus support +# + +# +# PC SMBus host controller drivers +# +# CONFIG_I2C_ALI1535 is not set +# CONFIG_I2C_ALI1563 is not set +# CONFIG_I2C_ALI15X3 is not set +# CONFIG_I2C_AMD756 is not set +# CONFIG_I2C_AMD8111 is not set +# CONFIG_I2C_I801 is not set +# CONFIG_I2C_ISCH is not set +# CONFIG_I2C_PIIX4 is not set +# CONFIG_I2C_NFORCE2 is not set +# CONFIG_I2C_SIS5595 is not set +# CONFIG_I2C_SIS630 is not set +# CONFIG_I2C_SIS96X is not set +# CONFIG_I2C_VIA is not set +# CONFIG_I2C_VIAPRO is not set + +# +# I2C system bus drivers (mostly embedded / system-on-chip) +# +CONFIG_I2C_BCM_IPROC=y +# CONFIG_I2C_CBUS_GPIO is not set +# CONFIG_I2C_DESIGNWARE_PLATFORM is not set +# CONFIG_I2C_DESIGNWARE_PCI is not set +# CONFIG_I2C_EMEV2 is not set +# CONFIG_I2C_GPIO is not set +# CONFIG_I2C_NOMADIK is not set +# CONFIG_I2C_OCORES is not set +# CONFIG_I2C_PCA_PLATFORM is not set +# CONFIG_I2C_PXA_PCI is not set +# CONFIG_I2C_RK3X is not set +# CONFIG_I2C_SIMTEC is not set +# CONFIG_I2C_XILINX is not set + +# +# External I2C/SMBus adapter drivers +# +# CONFIG_I2C_DIOLAN_U2C is not set +# CONFIG_I2C_ROBOTFUZZ_OSIF is not set +# CONFIG_I2C_TAOS_EVM is not set +# CONFIG_I2C_TINY_USB is not set + +# +# Other I2C/SMBus bus drivers +# +# CONFIG_I2C_STUB is not set +CONFIG_I2C_SLAVE=y +# CONFIG_I2C_DEBUG_CORE is not set +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set +CONFIG_SPI=y +# CONFIG_SPI_DEBUG is not set +CONFIG_SPI_MASTER=y + +# +# SPI Master Controller Drivers +# +# CONFIG_SPI_ALTERA is not set +# CONFIG_SPI_AXI_SPI_ENGINE is not set +CONFIG_SPI_BCM_QSPI=y +# CONFIG_SPI_BITBANG is not set +# CONFIG_SPI_CADENCE is not set +# CONFIG_SPI_DESIGNWARE is not set +# CONFIG_SPI_GPIO is not set +# CONFIG_SPI_FSL_SPI is not set +# CONFIG_SPI_OC_TINY is not set +# CONFIG_SPI_PL022 is not set +# CONFIG_SPI_PXA2XX is not set +# CONFIG_SPI_PXA2XX_PCI is not set +# CONFIG_SPI_ROCKCHIP is not set +# CONFIG_SPI_SC18IS602 is not set +# CONFIG_SPI_XCOMM is not set +# CONFIG_SPI_XILINX is not set +# CONFIG_SPI_ZYNQMP_GQSPI is not set + +# +# SPI Protocol Masters +# +# CONFIG_SPI_SPIDEV is not set +# CONFIG_SPI_LOOPBACK_TEST is not set +# CONFIG_SPI_TLE62X0 is not set +# CONFIG_SPI_SLAVE is not set +# CONFIG_SPMI is not set +# CONFIG_HSI is not set +CONFIG_PPS=y +# CONFIG_PPS_DEBUG is not set + +# +# PPS clients support +# +# CONFIG_PPS_CLIENT_KTIMER is not set +# CONFIG_PPS_CLIENT_LDISC is not set +# CONFIG_PPS_CLIENT_GPIO is not set + +# +# PPS generators support +# + +# +# PTP clock support +# +CONFIG_PTP_1588_CLOCK=y + +# +# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks. +# +CONFIG_GPIOLIB=y +CONFIG_OF_GPIO=y +CONFIG_GPIOLIB_IRQCHIP=y +# CONFIG_DEBUG_GPIO is not set +CONFIG_GPIO_SYSFS=y +CONFIG_GPIO_GENERIC=y + +# +# Memory mapped GPIO drivers +# +# CONFIG_GPIO_74XX_MMIO is not set +# CONFIG_GPIO_ALTERA is not set +CONFIG_GPIO_BCM_XGS_IPROC=y +# CONFIG_GPIO_DWAPB is not set +# CONFIG_GPIO_EXAR is not set +# CONFIG_GPIO_FTGPIO010 is not set +# CONFIG_GPIO_GENERIC_PLATFORM is not set +# CONFIG_GPIO_GRGPIO is not set +# CONFIG_GPIO_MOCKUP is not set +# CONFIG_GPIO_MPC8XXX is not set +# CONFIG_GPIO_PL061 is not set +# CONFIG_GPIO_XILINX is not set +# CONFIG_GPIO_ZEVIO is not set + +# +# I2C GPIO expanders +# +# CONFIG_GPIO_ADNP is not set +# CONFIG_GPIO_MAX7300 is not set +# CONFIG_GPIO_MAX732X is not set +# CONFIG_GPIO_PCA953X is not set +# CONFIG_GPIO_PCF857X is not set +# CONFIG_GPIO_TPIC2810 is not set + +# +# MFD GPIO expanders +# +# CONFIG_HTC_EGPIO is not set + +# +# PCI GPIO expanders +# +# CONFIG_GPIO_BT8XX is not set +# CONFIG_GPIO_PCI_IDIO_16 is not set +# CONFIG_GPIO_RDC321X is not set + +# +# SPI GPIO expanders +# +# CONFIG_GPIO_74X164 is not set +# CONFIG_GPIO_MAX7301 is not set +# CONFIG_GPIO_MC33880 is not set +# CONFIG_GPIO_PISOSR is not set +# CONFIG_GPIO_XRA1403 is not set + +# +# USB GPIO expanders +# +# CONFIG_W1 is not set +# CONFIG_POWER_RESET is not set +# CONFIG_POWER_SUPPLY is not set +CONFIG_HWMON=y +CONFIG_HWMON_VID=y +# CONFIG_HWMON_DEBUG_CHIP is not set + +# +# Native drivers +# +# CONFIG_SENSORS_AD7314 is not set +# CONFIG_SENSORS_AD7414 is not set +# CONFIG_SENSORS_AD7418 is not set +# CONFIG_SENSORS_ADM1025 is not set +# CONFIG_SENSORS_ADM1026 is not set +# CONFIG_SENSORS_ADM1029 is not set +# CONFIG_SENSORS_ADM1031 is not set +# CONFIG_SENSORS_ADM9240 is not set +# CONFIG_SENSORS_ADT7310 is not set +# CONFIG_SENSORS_ADT7410 is not set +# CONFIG_SENSORS_ADT7411 is not set +# CONFIG_SENSORS_ADT7462 is not set +# CONFIG_SENSORS_ADT7470 is not set +# CONFIG_SENSORS_ADT7475 is not set +# CONFIG_SENSORS_ASC7621 is not set +# CONFIG_SENSORS_ASPEED is not set +# CONFIG_SENSORS_ATXP1 is not set +# CONFIG_SENSORS_DS620 is not set +# CONFIG_SENSORS_DS1621 is not set +# CONFIG_SENSORS_I5K_AMB is not set +# CONFIG_SENSORS_F71805F is not set +# CONFIG_SENSORS_F71882FG is not set +# CONFIG_SENSORS_F75375S is not set +# CONFIG_SENSORS_FTSTEUTATES is not set +# CONFIG_SENSORS_GL518SM is not set +# CONFIG_SENSORS_GL520SM is not set +# CONFIG_SENSORS_G760A is not set +# CONFIG_SENSORS_G762 is not set +# CONFIG_SENSORS_GPIO_FAN is not set +# CONFIG_SENSORS_HIH6130 is not set +# CONFIG_SENSORS_IT87 is not set +# CONFIG_SENSORS_JC42 is not set +# CONFIG_SENSORS_POWR1220 is not set +# CONFIG_SENSORS_LINEAGE is not set +# CONFIG_SENSORS_LTC2945 is not set +# CONFIG_SENSORS_LTC2990 is not set +# CONFIG_SENSORS_LTC4151 is not set +# CONFIG_SENSORS_LTC4215 is not set +# CONFIG_SENSORS_LTC4222 is not set +# CONFIG_SENSORS_LTC4245 is not set +# CONFIG_SENSORS_LTC4260 is not set +# CONFIG_SENSORS_LTC4261 is not set +# CONFIG_SENSORS_MAX1111 is not set +# CONFIG_SENSORS_MAX16065 is not set +# CONFIG_SENSORS_MAX1619 is not set +# CONFIG_SENSORS_MAX1668 is not set +# CONFIG_SENSORS_MAX197 is not set +# CONFIG_SENSORS_MAX31722 is not set +# CONFIG_SENSORS_MAX6639 is not set +# CONFIG_SENSORS_MAX6650 is not set +# CONFIG_SENSORS_MAX6697 is not set +# CONFIG_SENSORS_MAX31790 is not set +# CONFIG_SENSORS_MCP3021 is not set +# CONFIG_SENSORS_TC654 is not set +# CONFIG_SENSORS_ADCXX is not set +# CONFIG_SENSORS_LM63 is not set +CONFIG_SENSORS_LM70=y +CONFIG_SENSORS_LM73=y +CONFIG_SENSORS_LM75=y +CONFIG_SENSORS_LM77=y +CONFIG_SENSORS_LM78=y +CONFIG_SENSORS_LM80=y +CONFIG_SENSORS_LM83=y +CONFIG_SENSORS_LM85=y +CONFIG_SENSORS_LM87=y +CONFIG_SENSORS_LM90=y +CONFIG_SENSORS_LM92=y +CONFIG_SENSORS_LM93=y +# CONFIG_SENSORS_LM95234 is not set +# CONFIG_SENSORS_LM95241 is not set +# CONFIG_SENSORS_LM95245 is not set +# CONFIG_SENSORS_PC87360 is not set +# CONFIG_SENSORS_PC87427 is not set +# CONFIG_SENSORS_NTC_THERMISTOR is not set +# CONFIG_SENSORS_NCT6683 is not set +# CONFIG_SENSORS_NCT6775 is not set +# CONFIG_SENSORS_NCT7802 is not set +# CONFIG_SENSORS_NCT7904 is not set +# CONFIG_SENSORS_PCF8591 is not set +# CONFIG_PMBUS is not set +# CONFIG_SENSORS_SHT15 is not set +# CONFIG_SENSORS_SHT21 is not set +# CONFIG_SENSORS_SHT3x is not set +# CONFIG_SENSORS_SHTC1 is not set +# CONFIG_SENSORS_SIS5595 is not set +# CONFIG_SENSORS_DME1737 is not set +# CONFIG_SENSORS_EMC1403 is not set +# CONFIG_SENSORS_EMC2103 is not set +# CONFIG_SENSORS_EMC6W201 is not set +# CONFIG_SENSORS_SMSC47M1 is not set +# CONFIG_SENSORS_SMSC47M192 is not set +# CONFIG_SENSORS_SMSC47B397 is not set +# CONFIG_SENSORS_SCH56XX_COMMON is not set +# CONFIG_SENSORS_SCH5627 is not set +# CONFIG_SENSORS_SCH5636 is not set +# CONFIG_SENSORS_STTS751 is not set +# CONFIG_SENSORS_ADC128D818 is not set +# CONFIG_SENSORS_ADS7828 is not set +# CONFIG_SENSORS_ADS7871 is not set +# CONFIG_SENSORS_AMC6821 is not set +# CONFIG_SENSORS_INA209 is not set +# CONFIG_SENSORS_INA2XX is not set +# CONFIG_SENSORS_INA3221 is not set +# CONFIG_SENSORS_TC74 is not set +# CONFIG_SENSORS_THMC50 is not set +# CONFIG_SENSORS_TMP102 is not set +# CONFIG_SENSORS_TMP103 is not set +# CONFIG_SENSORS_TMP108 is not set +# CONFIG_SENSORS_TMP401 is not set +# CONFIG_SENSORS_TMP421 is not set +# CONFIG_SENSORS_VIA686A is not set +# CONFIG_SENSORS_VT1211 is not set +# CONFIG_SENSORS_VT8231 is not set +# CONFIG_SENSORS_W83781D is not set +# CONFIG_SENSORS_W83791D is not set +# CONFIG_SENSORS_W83792D is not set +# CONFIG_SENSORS_W83793 is not set +# CONFIG_SENSORS_W83795 is not set +# CONFIG_SENSORS_W83L785TS is not set +# CONFIG_SENSORS_W83L786NG is not set +# CONFIG_SENSORS_W83627HF is not set +# CONFIG_SENSORS_W83627EHF is not set +CONFIG_THERMAL=y +CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0 +CONFIG_THERMAL_HWMON=y +CONFIG_THERMAL_OF=y +CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y +# CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set +# CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set +# CONFIG_THERMAL_DEFAULT_GOV_POWER_ALLOCATOR is not set +# CONFIG_THERMAL_GOV_FAIR_SHARE is not set +CONFIG_THERMAL_GOV_STEP_WISE=y +# CONFIG_THERMAL_GOV_BANG_BANG is not set +# CONFIG_THERMAL_GOV_USER_SPACE is not set +# CONFIG_THERMAL_GOV_POWER_ALLOCATOR is not set +# CONFIG_THERMAL_EMULATION is not set +# CONFIG_QORIQ_THERMAL is not set + +# +# ACPI INT340X thermal drivers +# +CONFIG_WATCHDOG=y +CONFIG_WATCHDOG_CORE=y +# CONFIG_WATCHDOG_NOWAYOUT is not set +CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y +# CONFIG_WATCHDOG_SYSFS is not set + +# +# Watchdog Device Drivers +# +# CONFIG_SOFT_WATCHDOG is not set +# CONFIG_GPIO_WATCHDOG is not set +# CONFIG_XILINX_WATCHDOG is not set +# CONFIG_ZIIRAVE_WATCHDOG is not set +CONFIG_ARM_SP805_WATCHDOG=y +# CONFIG_CADENCE_WATCHDOG is not set +# CONFIG_DW_WATCHDOG is not set +# CONFIG_MAX63XX_WATCHDOG is not set +# CONFIG_ALIM7101_WDT is not set +# CONFIG_I6300ESB_WDT is not set +# CONFIG_MEN_A21_WDT is not set + +# +# PCI-based Watchdog Cards +# +# CONFIG_PCIPCWATCHDOG is not set +# CONFIG_WDTPCI is not set + +# +# USB-based Watchdog Cards +# +# CONFIG_USBPCWATCHDOG is not set + +# +# Watchdog Pretimeout Governors +# +# CONFIG_WATCHDOG_PRETIMEOUT_GOV is not set +CONFIG_SSB_POSSIBLE=y + +# +# Sonics Silicon Backplane +# +# CONFIG_SSB is not set +CONFIG_BCMA_POSSIBLE=y +# CONFIG_BCMA is not set + +# +# Multifunction device drivers +# +# CONFIG_MFD_CORE is not set +# CONFIG_MFD_ACT8945A is not set +# CONFIG_MFD_AS3711 is not set +# CONFIG_MFD_AS3722 is not set +# CONFIG_PMIC_ADP5520 is not set +# CONFIG_MFD_AAT2870_CORE is not set +# CONFIG_MFD_ATMEL_FLEXCOM is not set +# CONFIG_MFD_ATMEL_HLCDC is not set +# CONFIG_MFD_BCM590XX is not set +# CONFIG_MFD_BD9571MWV is not set +# CONFIG_MFD_AXP20X_I2C is not set +# CONFIG_PMIC_DA903X is not set +# CONFIG_MFD_DA9052_SPI is not set +# CONFIG_MFD_DA9052_I2C is not set +# CONFIG_MFD_DA9055 is not set +# CONFIG_MFD_DA9062 is not set +# CONFIG_MFD_DA9063 is not set +# CONFIG_MFD_DA9150 is not set +# CONFIG_MFD_DLN2 is not set +# CONFIG_MFD_MC13XXX_SPI is not set +# CONFIG_MFD_MC13XXX_I2C is not set +# CONFIG_MFD_HI6421_PMIC is not set +# CONFIG_LPC_SCH is not set +# CONFIG_MFD_JANZ_CMODIO is not set +# CONFIG_MFD_KEMPLD is not set +# CONFIG_MFD_88PM800 is not set +# CONFIG_MFD_88PM805 is not set +# CONFIG_MFD_88PM860X is not set +# CONFIG_MFD_MAX14577 is not set +# CONFIG_MFD_MAX77620 is not set +# CONFIG_MFD_MAX77686 is not set +# CONFIG_MFD_MAX77693 is not set +# CONFIG_MFD_MAX77843 is not set +# CONFIG_MFD_MAX8907 is not set +# CONFIG_MFD_MAX8925 is not set +# CONFIG_MFD_MAX8997 is not set +# CONFIG_MFD_MAX8998 is not set +# CONFIG_MFD_MT6397 is not set +# CONFIG_MFD_MENF21BMC is not set +# CONFIG_EZX_PCAP is not set +# CONFIG_MFD_CPCAP is not set +# CONFIG_MFD_VIPERBOARD is not set +# CONFIG_MFD_RETU is not set +# CONFIG_MFD_PCF50633 is not set +# CONFIG_MFD_PM8XXX is not set +# CONFIG_MFD_RDC321X is not set +# CONFIG_MFD_RT5033 is not set +# CONFIG_MFD_RC5T583 is not set +# CONFIG_MFD_RN5T618 is not set +# CONFIG_MFD_SEC_CORE is not set +# CONFIG_MFD_SI476X_CORE is not set +# CONFIG_MFD_SM501 is not set +# CONFIG_MFD_SKY81452 is not set +# CONFIG_ABX500_CORE is not set +# CONFIG_MFD_STMPE is not set +# CONFIG_MFD_SYSCON is not set +# CONFIG_MFD_TI_AM335X_TSCADC is not set +# CONFIG_MFD_LP3943 is not set +# CONFIG_MFD_LP8788 is not set +# CONFIG_MFD_TI_LMU is not set +# CONFIG_MFD_PALMAS is not set +# CONFIG_TPS6105X is not set +# CONFIG_TPS65010 is not set +# CONFIG_TPS6507X is not set +# CONFIG_MFD_TPS65086 is not set +# CONFIG_MFD_TPS65090 is not set +# CONFIG_MFD_TPS65217 is not set +# CONFIG_MFD_TI_LP873X is not set +# CONFIG_MFD_TI_LP87565 is not set +# CONFIG_MFD_TPS65218 is not set +# CONFIG_MFD_TPS6586X is not set +# CONFIG_MFD_TPS65910 is not set +# CONFIG_MFD_TPS65912_I2C is not set +# CONFIG_MFD_TPS65912_SPI is not set +# CONFIG_TWL4030_CORE is not set +# CONFIG_TWL6040_CORE is not set +# CONFIG_MFD_WL1273_CORE is not set +# CONFIG_MFD_LM3533 is not set +# CONFIG_MFD_TC3589X is not set +# CONFIG_MFD_VX855 is not set +# CONFIG_MFD_ARIZONA_I2C is not set +# CONFIG_MFD_ARIZONA_SPI is not set +# CONFIG_MFD_WM8400 is not set +# CONFIG_MFD_WM831X_I2C is not set +# CONFIG_MFD_WM831X_SPI is not set +# CONFIG_MFD_WM8350_I2C is not set +# CONFIG_MFD_WM8994 is not set +# CONFIG_REGULATOR is not set +# CONFIG_MEDIA_SUPPORT is not set + +# +# Graphics support +# +# CONFIG_VGA_ARB is not set +# CONFIG_IMX_IPUV3_CORE is not set +# CONFIG_DRM is not set + +# +# ACP (Audio CoProcessor) Configuration +# +# CONFIG_DRM_LIB_RANDOM is not set + +# +# Frame buffer Devices +# +# CONFIG_FB is not set +# CONFIG_VGASTATE is not set +# CONFIG_SOUND is not set +CONFIG_USB_OHCI_LITTLE_ENDIAN=y +CONFIG_USB_SUPPORT=y +CONFIG_USB_COMMON=y +CONFIG_USB_ARCH_HAS_HCD=y +CONFIG_USB=y +CONFIG_USB_PCI=y +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y + +# +# Miscellaneous USB options +# +CONFIG_USB_DEFAULT_PERSIST=y +CONFIG_USB_DYNAMIC_MINORS=y +# CONFIG_USB_OTG is not set +# CONFIG_USB_OTG_PRODUCTLIST is not set +# CONFIG_USB_OTG_DISABLE_EXTERNAL_HUB is not set +# CONFIG_USB_MON is not set + +# +# USB Host Controller Drivers +# +# CONFIG_USB_C67X00_HCD is not set +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_ROOT_HUB_TT=y +CONFIG_USB_EHCI_TT_NEWSCHED=y +CONFIG_USB_EHCI_PCI=y +CONFIG_USB_EHCI_XGS_IPROC=y +CONFIG_USB_EHCI_HCD_PLATFORM=y +# CONFIG_USB_OXU210HP_HCD is not set +# CONFIG_USB_ISP116X_HCD is not set +# CONFIG_USB_ISP1362_HCD is not set +# CONFIG_USB_FOTG210_HCD is not set +# CONFIG_USB_MAX3421_HCD is not set +CONFIG_USB_OHCI_HCD=y +CONFIG_USB_OHCI_HCD_PCI=y +CONFIG_USB_OHCI_HCD_PLATFORM=y +CONFIG_USB_OHCI_XGS_IPROC=y +# CONFIG_USB_UHCI_HCD is not set +# CONFIG_USB_SL811_HCD is not set +# CONFIG_USB_R8A66597_HCD is not set +# CONFIG_USB_HCD_TEST_MODE is not set + +# +# USB Device Class drivers +# +# CONFIG_USB_ACM is not set +# CONFIG_USB_PRINTER is not set +# CONFIG_USB_WDM is not set +# CONFIG_USB_TMC is not set + +# +# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may +# + +# +# also be needed; see USB_STORAGE Help for more info +# +CONFIG_USB_STORAGE=y +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_REALTEK is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_USBAT is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_SDDR55 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_STORAGE_ALAUDA is not set +# CONFIG_USB_STORAGE_KARMA is not set +# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set +# CONFIG_USB_STORAGE_ENE_UB6250 is not set +# CONFIG_USB_UAS is not set + +# +# USB Imaging devices +# +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_MICROTEK is not set +# CONFIG_USBIP_CORE is not set +# CONFIG_USB_MUSB_HDRC is not set +# CONFIG_USB_DWC3 is not set +# CONFIG_USB_DWC2 is not set +# CONFIG_USB_CHIPIDEA is not set +# CONFIG_USB_ISP1760 is not set + +# +# USB port drivers +# +# CONFIG_USB_SERIAL is not set + +# +# USB Miscellaneous drivers +# +# CONFIG_USB_EMI62 is not set +# CONFIG_USB_EMI26 is not set +# CONFIG_USB_ADUTUX is not set +# CONFIG_USB_SEVSEG is not set +# CONFIG_USB_LEGOTOWER is not set +# CONFIG_USB_LCD is not set +# CONFIG_USB_CYPRESS_CY7C63 is not set +# CONFIG_USB_CYTHERM is not set +# CONFIG_USB_IDMOUSE is not set +# CONFIG_USB_APPLEDISPLAY is not set +# CONFIG_USB_SISUSBVGA is not set +# CONFIG_USB_LD is not set +# CONFIG_USB_TRANCEVIBRATOR is not set +# CONFIG_USB_IOWARRIOR is not set +# CONFIG_USB_TEST is not set +# CONFIG_USB_EHSET_TEST_FIXTURE is not set +# CONFIG_USB_ISIGHTFW is not set +# CONFIG_USB_YUREX is not set +# CONFIG_USB_EZUSB_FX2 is not set +# CONFIG_USB_HUB_USB251XB is not set +# CONFIG_USB_HSIC_USB3503 is not set +# CONFIG_USB_HSIC_USB4604 is not set +# CONFIG_USB_LINK_LAYER_TEST is not set +# CONFIG_USB_CHAOSKEY is not set + +# +# USB Physical Layer drivers +# +CONFIG_USB_PHY=y +# CONFIG_NOP_USB_XCEIV is not set +# CONFIG_USB_GPIO_VBUS is not set +# CONFIG_USB_ISP1301 is not set +# CONFIG_USB_ULPI is not set +CONFIG_USBPHY_XGS_IPROC=y +CONFIG_USB_GADGET=y +# CONFIG_USB_GADGET_DEBUG is not set +# CONFIG_USB_GADGET_DEBUG_FILES is not set +# CONFIG_USB_GADGET_DEBUG_FS is not set +CONFIG_USB_GADGET_VBUS_DRAW=2 +CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2 +# CONFIG_U_SERIAL_CONSOLE is not set + +# +# USB Peripheral Controller +# +# CONFIG_USB_FUSB300 is not set +# CONFIG_USB_FOTG210_UDC is not set +# CONFIG_USB_GR_UDC is not set +# CONFIG_USB_R8A66597 is not set +# CONFIG_USB_PXA27X is not set +# CONFIG_USB_MV_UDC is not set +# CONFIG_USB_MV_U3D is not set +# CONFIG_USB_SNP_UDC_PLAT is not set +# CONFIG_USB_M66592 is not set +# CONFIG_USB_BDC_UDC is not set +# CONFIG_USB_AMD5536UDC is not set +# CONFIG_USB_NET2272 is not set +# CONFIG_USB_NET2280 is not set +# CONFIG_USB_GOKU is not set +# CONFIG_USB_EG20T is not set +# CONFIG_USB_GADGET_XILINX is not set +CONFIG_USB_XGS_IPROC_UDC=y +# CONFIG_USB_DUMMY_HCD is not set +CONFIG_USB_LIBCOMPOSITE=m +CONFIG_USB_F_ACM=m +CONFIG_USB_U_SERIAL=m +CONFIG_USB_F_SERIAL=m +CONFIG_USB_F_OBEX=m +# CONFIG_USB_CONFIGFS is not set +# CONFIG_USB_ZERO is not set +# CONFIG_USB_ETH is not set +# CONFIG_USB_G_NCM is not set +# CONFIG_USB_GADGETFS is not set +# CONFIG_USB_FUNCTIONFS is not set +# CONFIG_USB_MASS_STORAGE is not set +CONFIG_USB_G_SERIAL=m +# CONFIG_USB_G_PRINTER is not set +# CONFIG_USB_CDC_COMPOSITE is not set +# CONFIG_USB_G_ACM_MS is not set +# CONFIG_USB_G_MULTI is not set +# CONFIG_USB_G_HID is not set +# CONFIG_USB_G_DBGP is not set + +# +# USB Power Delivery and Type-C drivers +# +# CONFIG_TYPEC_UCSI is not set +# CONFIG_USB_ULPI_BUS is not set +CONFIG_MMC=y +CONFIG_PWRSEQ_EMMC=y +CONFIG_PWRSEQ_SIMPLE=y +CONFIG_MMC_BLOCK=y +CONFIG_MMC_BLOCK_MINORS=8 +# CONFIG_SDIO_UART is not set +# CONFIG_MMC_TEST is not set + +# +# MMC/SD/SDIO Host Controller Drivers +# +# CONFIG_MMC_DEBUG is not set +# CONFIG_MMC_ARMMMCI is not set +CONFIG_MMC_SDHCI=y +# CONFIG_MMC_SDHCI_IO_ACCESSORS is not set +# CONFIG_MMC_SDHCI_PCI is not set +CONFIG_MMC_SDHCI_PLTFM=y +# CONFIG_MMC_SDHCI_OF_ARASAN is not set +# CONFIG_MMC_SDHCI_OF_AT91 is not set +# CONFIG_MMC_SDHCI_CADENCE is not set +# CONFIG_MMC_SDHCI_F_SDH30 is not set +# CONFIG_MMC_TIFM_SD is not set +# CONFIG_MMC_SPI is not set +# CONFIG_MMC_CB710 is not set +# CONFIG_MMC_VIA_SDMMC is not set +# CONFIG_MMC_DW is not set +# CONFIG_MMC_VUB300 is not set +# CONFIG_MMC_USHC is not set +# CONFIG_MMC_USDHI6ROL0 is not set +# CONFIG_MMC_TOSHIBA_PCI is not set +# CONFIG_MMC_MTK is not set +# CONFIG_MMC_SDHCI_XENON is not set +# CONFIG_MEMSTICK is not set +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y +# CONFIG_LEDS_CLASS_FLASH is not set +# CONFIG_LEDS_BRIGHTNESS_HW_CHANGED is not set + +# +# LED drivers +# +# CONFIG_LEDS_BCM6328 is not set +# CONFIG_LEDS_BCM6358 is not set +# CONFIG_LEDS_LM3530 is not set +# CONFIG_LEDS_LM3642 is not set +# CONFIG_LEDS_GPIO is not set +# CONFIG_LEDS_LP3944 is not set +# CONFIG_LEDS_LP3952 is not set +# CONFIG_LEDS_LP5521 is not set +# CONFIG_LEDS_LP5523 is not set +# CONFIG_LEDS_LP5562 is not set +# CONFIG_LEDS_LP8501 is not set +# CONFIG_LEDS_LP8860 is not set +# CONFIG_LEDS_PCA955X is not set +# CONFIG_LEDS_PCA963X is not set +# CONFIG_LEDS_DAC124S085 is not set +# CONFIG_LEDS_BD2802 is not set +# CONFIG_LEDS_LT3593 is not set +# CONFIG_LEDS_TCA6507 is not set +# CONFIG_LEDS_TLC591XX is not set +# CONFIG_LEDS_LM355x is not set +# CONFIG_LEDS_IS31FL319X is not set +# CONFIG_LEDS_IS31FL32XX is not set + +# +# LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM) +# +# CONFIG_LEDS_BLINKM is not set +# CONFIG_LEDS_USER is not set + +# +# LED Triggers +# +# CONFIG_LEDS_TRIGGERS is not set +# CONFIG_ACCESSIBILITY is not set +# CONFIG_INFINIBAND is not set +CONFIG_EDAC_ATOMIC_SCRUB=y +CONFIG_EDAC_SUPPORT=y +CONFIG_RTC_LIB=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_HCTOSYS=y +CONFIG_RTC_HCTOSYS_DEVICE="rtc0" +CONFIG_RTC_SYSTOHC=y +CONFIG_RTC_SYSTOHC_DEVICE="rtc0" +# CONFIG_RTC_DEBUG is not set +CONFIG_RTC_NVMEM=y + +# +# RTC interfaces +# +CONFIG_RTC_INTF_SYSFS=y +CONFIG_RTC_INTF_PROC=y +CONFIG_RTC_INTF_DEV=y +# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set +# CONFIG_RTC_DRV_TEST is not set + +# +# I2C RTC drivers +# +# CONFIG_RTC_DRV_ABB5ZES3 is not set +# CONFIG_RTC_DRV_ABX80X is not set +CONFIG_RTC_DRV_DS1307=y +CONFIG_RTC_DRV_DS1307_CENTURY=y +# CONFIG_RTC_DRV_DS1374 is not set +# CONFIG_RTC_DRV_DS1672 is not set +# CONFIG_RTC_DRV_HYM8563 is not set +# CONFIG_RTC_DRV_MAX6900 is not set +# CONFIG_RTC_DRV_RS5C372 is not set +# CONFIG_RTC_DRV_ISL1208 is not set +# CONFIG_RTC_DRV_ISL12022 is not set +# CONFIG_RTC_DRV_X1205 is not set +# CONFIG_RTC_DRV_PCF8523 is not set +# CONFIG_RTC_DRV_PCF85063 is not set +# CONFIG_RTC_DRV_PCF8563 is not set +# CONFIG_RTC_DRV_PCF8583 is not set +# CONFIG_RTC_DRV_M41T80 is not set +# CONFIG_RTC_DRV_BQ32K is not set +# CONFIG_RTC_DRV_S35390A is not set +# CONFIG_RTC_DRV_FM3130 is not set +# CONFIG_RTC_DRV_RX8010 is not set +# CONFIG_RTC_DRV_RX8581 is not set +# CONFIG_RTC_DRV_RX8025 is not set +# CONFIG_RTC_DRV_EM3027 is not set +# CONFIG_RTC_DRV_RV8803 is not set + +# +# SPI RTC drivers +# +# CONFIG_RTC_DRV_M41T93 is not set +# CONFIG_RTC_DRV_M41T94 is not set +# CONFIG_RTC_DRV_DS1302 is not set +# CONFIG_RTC_DRV_DS1305 is not set +# CONFIG_RTC_DRV_DS1343 is not set +# CONFIG_RTC_DRV_DS1347 is not set +# CONFIG_RTC_DRV_DS1390 is not set +# CONFIG_RTC_DRV_MAX6916 is not set +# CONFIG_RTC_DRV_R9701 is not set +# CONFIG_RTC_DRV_RX4581 is not set +# CONFIG_RTC_DRV_RX6110 is not set +# CONFIG_RTC_DRV_RS5C348 is not set +# CONFIG_RTC_DRV_MAX6902 is not set +# CONFIG_RTC_DRV_PCF2123 is not set +# CONFIG_RTC_DRV_MCP795 is not set +CONFIG_RTC_I2C_AND_SPI=y + +# +# SPI and I2C RTC drivers +# +# CONFIG_RTC_DRV_DS3232 is not set +# CONFIG_RTC_DRV_PCF2127 is not set +# CONFIG_RTC_DRV_RV3029C2 is not set + +# +# Platform RTC drivers +# +# CONFIG_RTC_DRV_CMOS is not set +# CONFIG_RTC_DRV_DS1286 is not set +# CONFIG_RTC_DRV_DS1511 is not set +# CONFIG_RTC_DRV_DS1553 is not set +# CONFIG_RTC_DRV_DS1685_FAMILY is not set +# CONFIG_RTC_DRV_DS1742 is not set +# CONFIG_RTC_DRV_DS2404 is not set +# CONFIG_RTC_DRV_STK17TA8 is not set +# CONFIG_RTC_DRV_M48T86 is not set +# CONFIG_RTC_DRV_M48T35 is not set +# CONFIG_RTC_DRV_M48T59 is not set +# CONFIG_RTC_DRV_MSM6242 is not set +# CONFIG_RTC_DRV_BQ4802 is not set +# CONFIG_RTC_DRV_RP5C01 is not set +# CONFIG_RTC_DRV_ZYNQMP is not set + +# +# on-CPU RTC drivers +# +# CONFIG_RTC_DRV_PL030 is not set +# CONFIG_RTC_DRV_PL031 is not set +# CONFIG_RTC_DRV_FTRTC010 is not set +# CONFIG_RTC_DRV_SNVS is not set +# CONFIG_RTC_DRV_R7301 is not set + +# +# HID Sensor RTC drivers +# +CONFIG_DMADEVICES=y +CONFIG_DMADEVICES_DEBUG=y +CONFIG_DMADEVICES_VDEBUG=y + +# +# DMA Devices +# +CONFIG_DMA_ENGINE=y +CONFIG_DMA_OF=y +# CONFIG_ALTERA_MSGDMA is not set +# CONFIG_AMBA_PL08X is not set +# CONFIG_FSL_EDMA is not set +# CONFIG_INTEL_IDMA64 is not set +# CONFIG_NBPFAXI_DMA is not set +CONFIG_PL330_DMA=y +# CONFIG_QCOM_HIDMA_MGMT is not set +# CONFIG_QCOM_HIDMA is not set +# CONFIG_DW_DMAC is not set +# CONFIG_DW_DMAC_PCI is not set + +# +# DMA Clients +# +# CONFIG_ASYNC_TX_DMA is not set +# CONFIG_DMATEST is not set + +# +# DMABUF options +# +# CONFIG_SYNC_FILE is not set +# CONFIG_AUXDISPLAY is not set +# CONFIG_UIO is not set +# CONFIG_VIRT_DRIVERS is not set + +# +# Virtio drivers +# +# CONFIG_VIRTIO_PCI is not set +# CONFIG_VIRTIO_MMIO is not set + +# +# Microsoft Hyper-V guest support +# +# CONFIG_STAGING is not set +# CONFIG_GOLDFISH is not set +# CONFIG_CHROME_PLATFORMS is not set +CONFIG_HAVE_CLK_PREPARE=y +CONFIG_COMMON_CLK=y + +# +# Common Clock Framework +# +# CONFIG_CLK_HSDK is not set +# CONFIG_COMMON_CLK_SI5351 is not set +# CONFIG_COMMON_CLK_SI514 is not set +# CONFIG_COMMON_CLK_SI570 is not set +# CONFIG_COMMON_CLK_CDCE706 is not set +# CONFIG_COMMON_CLK_CDCE925 is not set +# CONFIG_COMMON_CLK_CS2000_CP is not set +# CONFIG_CLK_QORIQ is not set +# CONFIG_COMMON_CLK_NXP is not set +# CONFIG_COMMON_CLK_PXA is not set +# CONFIG_COMMON_CLK_PIC32 is not set +# CONFIG_COMMON_CLK_VC5 is not set +CONFIG_COMMON_CLK_IPROC=y +CONFIG_CLK_XGS_IPROC=y +# CONFIG_HWSPINLOCK is not set + +# +# Clock Source drivers +# +CONFIG_TIMER_OF=y +CONFIG_TIMER_PROBE=y +CONFIG_ARM_GLOBAL_TIMER=y +# CONFIG_ARM_TIMER_SP804 is not set +CONFIG_CLKSRC_ARM_GLOBAL_TIMER_SCHED_CLOCK=y +# CONFIG_ATMEL_PIT is not set +# CONFIG_SH_TIMER_CMT is not set +# CONFIG_SH_TIMER_MTU2 is not set +# CONFIG_SH_TIMER_TMU is not set +# CONFIG_EM_TIMER_STI is not set +# CONFIG_MAILBOX is not set +CONFIG_IOMMU_SUPPORT=y + +# +# Generic IOMMU Pagetable Support +# +# CONFIG_IOMMU_IO_PGTABLE_LPAE is not set +# CONFIG_IOMMU_IO_PGTABLE_ARMV7S is not set +# CONFIG_ARM_SMMU is not set + +# +# Remoteproc drivers +# +# CONFIG_REMOTEPROC is not set + +# +# Rpmsg drivers +# + +# +# SOC (System On Chip) specific Drivers +# + +# +# Amlogic SoC drivers +# + +# +# Broadcom SoC drivers +# +# CONFIG_SOC_BRCMSTB is not set + +# +# i.MX SoC drivers +# + +# +# Qualcomm SoC drivers +# +# CONFIG_SUNXI_SRAM is not set +# CONFIG_SOC_TI is not set +# CONFIG_PM_DEVFREQ is not set +CONFIG_EXTCON=y + +# +# Extcon Device Drivers +# +# CONFIG_EXTCON_GPIO is not set +# CONFIG_EXTCON_MAX3355 is not set +# CONFIG_EXTCON_RT8973A is not set +# CONFIG_EXTCON_SM5502 is not set +# CONFIG_EXTCON_USB_GPIO is not set +# CONFIG_MEMORY is not set +# CONFIG_IIO is not set +# CONFIG_NTB is not set +# CONFIG_VME_BUS is not set +# CONFIG_PWM is not set +CONFIG_IRQCHIP=y +CONFIG_ARM_GIC=y +CONFIG_ARM_GIC_MAX_NR=1 +# CONFIG_IPACK_BUS is not set +# CONFIG_RESET_CONTROLLER is not set + +# +# PHY Subsystem +# +CONFIG_GENERIC_PHY=y +# CONFIG_BCM_KONA_USB2_PHY is not set +# CONFIG_PHY_PXA_28NM_HSIC is not set +# CONFIG_PHY_PXA_28NM_USB2 is not set +# CONFIG_POWERCAP is not set +# CONFIG_MCB is not set +# CONFIG_RAS is not set + +# +# Android +# +# CONFIG_DAX is not set +CONFIG_NVMEM=y +# CONFIG_STM is not set +# CONFIG_INTEL_TH is not set +# CONFIG_FPGA is not set + +# +# FSI support +# +# CONFIG_FSI is not set +# CONFIG_TEE is not set + +# +# Firmware Drivers +# +# CONFIG_FIRMWARE_MEMMAP is not set +# CONFIG_FW_CFG_SYSFS is not set +CONFIG_HAVE_ARM_SMCCC=y +# CONFIG_GOOGLE_FIRMWARE is not set + +# +# Tegra firmware driver +# + +# +# File systems +# +CONFIG_DCACHE_WORD_ACCESS=y +CONFIG_JBD2=y +# CONFIG_JBD2_DEBUG is not set +CONFIG_FS_MBCACHE=y +# CONFIG_REISERFS_FS is not set +# CONFIG_JFS_FS is not set +# CONFIG_XFS_FS is not set +# CONFIG_GFS2_FS is not set +# CONFIG_OCFS2_FS is not set +# CONFIG_BTRFS_FS is not set +# CONFIG_NILFS2_FS is not set +# CONFIG_F2FS_FS is not set +CONFIG_FS_POSIX_ACL=y +CONFIG_EXPORTFS=y +# CONFIG_EXPORTFS_BLOCK_OPS is not set +CONFIG_FILE_LOCKING=y +# CONFIG_FS_ENCRYPTION is not set +CONFIG_FSNOTIFY=y +# CONFIG_DNOTIFY is not set +CONFIG_INOTIFY_USER=y +# CONFIG_FANOTIFY is not set +# CONFIG_QUOTA is not set +# CONFIG_QUOTACTL is not set +CONFIG_AUTOFS_FS=y +# CONFIG_FUSE_FS is not set + +# +# Caches +# +# CONFIG_FSCACHE is not set + +# +# CD-ROM/DVD Filesystems +# +# CONFIG_ISO9660_FS is not set +# CONFIG_UDF_FS is not set + +# +# DOS/FAT/NT Filesystems +# +CONFIG_FAT_FS=y +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +# CONFIG_FAT_DEFAULT_UTF8 is not set +CONFIG_NTFS_FS=y + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +CONFIG_PROC_SYSCTL=y +CONFIG_PROC_PAGE_MONITOR=y +CONFIG_KERNFS=y +CONFIG_SYSFS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_TMPFS_XATTR=y +# CONFIG_HUGETLB_PAGE is not set +CONFIG_CONFIGFS_FS=m +CONFIG_MISC_FILESYSTEMS=y +# CONFIG_ORANGEFS_FS is not set +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set +# CONFIG_ECRYPT_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_HFSPLUS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EFS_FS is not set +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_FS_DEBUG=0 +CONFIG_JFFS2_FS_WRITEBUFFER=y +# CONFIG_JFFS2_FS_WBUF_VERIFY is not set +# CONFIG_JFFS2_SUMMARY is not set +# CONFIG_JFFS2_FS_XATTR is not set +# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set +CONFIG_JFFS2_ZLIB=y +# CONFIG_JFFS2_LZO is not set +CONFIG_JFFS2_RTIME=y +# CONFIG_JFFS2_RUBIN is not set +CONFIG_UBIFS_FS=y +# CONFIG_UBIFS_FS_ADVANCED_COMPR is not set +CONFIG_UBIFS_FS_LZO=y +CONFIG_UBIFS_FS_ZLIB=y +# CONFIG_UBIFS_ATIME_SUPPORT is not set +CONFIG_UBIFS_FS_SECURITY=y +# CONFIG_CRAMFS is not set +CONFIG_SQUASHFS=y +# CONFIG_SQUASHFS_FILE_CACHE is not set +CONFIG_SQUASHFS_FILE_DIRECT=y +CONFIG_SQUASHFS_DECOMP_MULTI=y +# CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU is not set +# CONFIG_SQUASHFS_COMPILE_DECOMP_SINGLE is not set +CONFIG_SQUASHFS_COMPILE_DECOMP_MULTI=y +# CONFIG_SQUASHFS_COMPILE_DECOMP_MULTI_PERCPU is not set +CONFIG_SQUASHFS_XATTR=y +CONFIG_SQUASHFS_ZLIB=y +CONFIG_SQUASHFS_LZ4=y +CONFIG_SQUASHFS_LZO=y +CONFIG_SQUASHFS_XZ=y +CONFIG_SQUASHFS_ZSTD=y +CONFIG_SQUASHFS_4K_DEVBLK_SIZE=y +# CONFIG_SQUASHFS_EMBEDDED is not set +CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 +# CONFIG_VXFS_FS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_OMFS_FS is not set +# CONFIG_HPFS_FS is not set +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX6FS_FS is not set +# CONFIG_ROMFS_FS is not set +# CONFIG_PSTORE is not set +# CONFIG_SYSV_FS is not set +# CONFIG_UFS_FS is not set +CONFIG_NETWORK_FILESYSTEMS=y +CONFIG_NFS_FS=y +CONFIG_NFS_V2=y +CONFIG_NFS_V3=y +CONFIG_NFS_V3_ACL=y +CONFIG_NFS_V4=y +CONFIG_NFS_SWAP=y +# CONFIG_NFS_V4_1 is not set +CONFIG_ROOT_NFS=y +# CONFIG_NFS_USE_LEGACY_DNS is not set +CONFIG_NFS_USE_KERNEL_DNS=y +CONFIG_NFSD=y +# CONFIG_NFSD_V4 is not set +CONFIG_GRACE_PERIOD=y +CONFIG_LOCKD=y +CONFIG_LOCKD_V4=y +CONFIG_NFS_ACL_SUPPORT=y +CONFIG_NFS_COMMON=y +CONFIG_SUNRPC=y +CONFIG_SUNRPC_GSS=y +CONFIG_SUNRPC_SWAP=y +# CONFIG_SUNRPC_DEBUG is not set +# CONFIG_CEPH_FS is not set +# CONFIG_CIFS is not set +# CONFIG_CODA_FS is not set +# CONFIG_AFS_FS is not set +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_CODEPAGE_437=y +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +CONFIG_NLS_ASCII=y +CONFIG_NLS_ISO8859_1=y +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_MAC_ROMAN is not set +# CONFIG_NLS_MAC_CELTIC is not set +# CONFIG_NLS_MAC_CENTEURO is not set +# CONFIG_NLS_MAC_CROATIAN is not set +# CONFIG_NLS_MAC_CYRILLIC is not set +# CONFIG_NLS_MAC_GAELIC is not set +# CONFIG_NLS_MAC_GREEK is not set +# CONFIG_NLS_MAC_ICELAND is not set +# CONFIG_NLS_MAC_INUIT is not set +# CONFIG_NLS_MAC_ROMANIAN is not set +# CONFIG_NLS_MAC_TURKISH is not set +# CONFIG_NLS_UTF8 is not set +# CONFIG_DLM is not set + +# +# Kernel hacking +# + +# +# printk and dmesg options +# +# CONFIG_PRINTK_TIME is not set +CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7 +CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4 +# CONFIG_BOOT_PRINTK_DELAY is not set +# CONFIG_DYNAMIC_DEBUG is not set + +# +# Compile-time checks and compiler options +# +CONFIG_DEBUG_KERNEL=y +CONFIG_DEBUG_INFO=y +# CONFIG_DEBUG_INFO_NONE is not set +CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y +# CONFIG_DEBUG_INFO_DWARF4 is not set +# CONFIG_DEBUG_INFO_DWARF5 is not set +# CONFIG_DEBUG_INFO_REDUCED is not set +# CONFIG_DEBUG_INFO_SPLIT is not set +# CONFIG_GDB_SCRIPTS is not set +CONFIG_FRAME_WARN=1024 +# CONFIG_STRIP_ASM_SYMS is not set +# CONFIG_READABLE_ASM is not set +# CONFIG_PAGE_OWNER is not set +CONFIG_DEBUG_FS=y +# CONFIG_DEBUG_SECTION_MISMATCH is not set +CONFIG_SECTION_MISMATCH_WARN_ONLY=y +# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set +CONFIG_MAGIC_SYSRQ=y +CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1 +CONFIG_MAGIC_SYSRQ_SERIAL=y + +# +# Memory Debugging +# +# CONFIG_PAGE_EXTENSION is not set +# CONFIG_DEBUG_PAGEALLOC is not set +# CONFIG_PAGE_POISONING is not set +# CONFIG_DEBUG_RODATA_TEST is not set +# CONFIG_DEBUG_OBJECTS is not set +# CONFIG_SLUB_STATS is not set +CONFIG_HAVE_DEBUG_KMEMLEAK=y +# CONFIG_DEBUG_KMEMLEAK is not set +# CONFIG_DEBUG_STACK_USAGE is not set +# CONFIG_DEBUG_VM is not set +CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y +# CONFIG_DEBUG_VIRTUAL is not set +# CONFIG_DEBUG_MEMORY_INIT is not set +# CONFIG_DEBUG_PER_CPU_MAPS is not set +# CONFIG_DEBUG_HIGHMEM is not set +# CONFIG_DEBUG_SHIRQ is not set + +# +# Debug Lockups and Hangs +# +# CONFIG_SOFTLOCKUP_DETECTOR is not set +# CONFIG_DETECT_HUNG_TASK is not set +# CONFIG_WQ_WATCHDOG is not set +# CONFIG_PANIC_ON_OOPS is not set +CONFIG_PANIC_ON_OOPS_VALUE=0 +CONFIG_PANIC_TIMEOUT=0 +# CONFIG_SCHED_DEBUG is not set +# CONFIG_SCHED_INFO is not set +# CONFIG_SCHEDSTATS is not set +# CONFIG_SCHED_STACK_END_CHECK is not set +CONFIG_DEBUG_PREEMPT=y + +# +# Lock Debugging (spinlocks, mutexes, etc...) +# +# CONFIG_DEBUG_RT_MUTEXES is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_MUTEXES is not set +# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set +# CONFIG_DEBUG_LOCK_ALLOC is not set +# CONFIG_PROVE_LOCKING is not set +# CONFIG_LOCK_STAT is not set +# CONFIG_DEBUG_ATOMIC_SLEEP is not set +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +# CONFIG_LOCK_TORTURE_TEST is not set +# CONFIG_WW_MUTEX_SELFTEST is not set +# CONFIG_STACKTRACE is not set +# CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set +# CONFIG_DEBUG_KOBJECT is not set +CONFIG_DEBUG_BUGVERBOSE=y +# CONFIG_DEBUG_LIST is not set +# CONFIG_DEBUG_PLIST is not set +# CONFIG_DEBUG_SG is not set +# CONFIG_DEBUG_NOTIFIERS is not set + +# +# RCU Debugging +# +# CONFIG_PROVE_RCU is not set +# CONFIG_TORTURE_TEST is not set +# CONFIG_RCU_SCALE_TEST is not set +# CONFIG_RCU_TORTURE_TEST is not set +CONFIG_RCU_CPU_STALL_TIMEOUT=21 +# CONFIG_RCU_TRACE is not set +# CONFIG_RCU_EQS_DEBUG is not set +# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set +# CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set +# CONFIG_NOTIFIER_ERROR_INJECTION is not set +# CONFIG_FAULT_INJECTION is not set +# CONFIG_LATENCYTOP is not set +CONFIG_HAVE_FUNCTION_TRACER=y +CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y +CONFIG_HAVE_DYNAMIC_FTRACE=y +CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y +CONFIG_HAVE_SYSCALL_TRACEPOINTS=y +CONFIG_HAVE_C_RECORDMCOUNT=y +CONFIG_TRACING_SUPPORT=y +# CONFIG_FTRACE is not set +# CONFIG_DMA_API_DEBUG is not set + +# +# arm Debugging +# +# CONFIG_ARM_PTDUMP_DEBUGFS is not set + +# +# Runtime Testing +# +# CONFIG_LKDTM is not set +# CONFIG_TEST_LIST_SORT is not set +# CONFIG_TEST_SORT is not set +# CONFIG_BACKTRACE_SELF_TEST is not set +# CONFIG_RBTREE_TEST is not set +# CONFIG_INTERVAL_TREE_TEST is not set +# CONFIG_PERCPU_TEST is not set +# CONFIG_ATOMIC64_SELFTEST is not set +# CONFIG_TEST_HEXDUMP is not set +# CONFIG_STRING_HELPERS_KUNIT_TEST is not set +# CONFIG_TEST_KSTRTOX is not set +# CONFIG_TEST_PRINTF is not set +# CONFIG_TEST_BITMAP is not set +# CONFIG_TEST_UUID is not set +# CONFIG_TEST_RHASHTABLE is not set +# CONFIG_TEST_LKM is not set +# CONFIG_TEST_BPF is not set +# CONFIG_TEST_FIRMWARE is not set +# CONFIG_TEST_SYSCTL is not set +# CONFIG_USERCOPY_KUNIT_TEST is not set +# CONFIG_TEST_UDELAY is not set +# CONFIG_TEST_STATIC_KEYS is not set +# CONFIG_TEST_KMOD is not set +# CONFIG_MEMTEST is not set +# CONFIG_BUG_ON_DATA_CORRUPTION is not set +# CONFIG_SAMPLES is not set +CONFIG_HAVE_ARCH_KGDB=y +# CONFIG_KGDB is not set +# CONFIG_UBSAN is not set +# CONFIG_STRICT_DEVMEM is not set +CONFIG_ARM_UNWIND=y +CONFIG_DEBUG_USER=y +# CONFIG_DEBUG_LL is not set +CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S" +# CONFIG_DEBUG_UART_8250 is not set +CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h" +# CONFIG_PID_IN_CONTEXTIDR is not set +# CONFIG_CORESIGHT is not set + +# +# Security options +# +CONFIG_KEYS=y +# CONFIG_PERSISTENT_KEYRINGS is not set +# CONFIG_BIG_KEYS is not set +# CONFIG_ENCRYPTED_KEYS is not set +# CONFIG_KEY_DH_OPERATIONS is not set +# CONFIG_SECURITY_DMESG_RESTRICT is not set +# CONFIG_SECURITY is not set +# CONFIG_SECURITYFS is not set +# CONFIG_HARDENED_USERCOPY is not set +# CONFIG_STATIC_USERMODEHELPER is not set +CONFIG_DEFAULT_SECURITY_DAC=y +CONFIG_CRYPTO=y + +# +# Crypto core or helper +# +CONFIG_CRYPTO_MANAGER=y +# CONFIG_CRYPTO_USER is not set +CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y +CONFIG_CRYPTO_NULL=y +# CONFIG_CRYPTO_PCRYPT is not set +# CONFIG_CRYPTO_CRYPTD is not set +CONFIG_CRYPTO_AUTHENC=y +# CONFIG_CRYPTO_TEST is not set + +# +# Public-key cryptography +# +# CONFIG_CRYPTO_ECDH is not set + +# +# Authenticated Encryption with Associated Data +# +# CONFIG_CRYPTO_CCM is not set +CONFIG_CRYPTO_GCM=y +# CONFIG_CRYPTO_CHACHA20POLY1305 is not set +CONFIG_CRYPTO_SEQIV=y + +# +# Block modes +# +CONFIG_CRYPTO_CBC=y +CONFIG_CRYPTO_CTR=y +# CONFIG_CRYPTO_CTS is not set +# CONFIG_CRYPTO_LRW is not set +# CONFIG_CRYPTO_PCBC is not set +# CONFIG_CRYPTO_XTS is not set +# CONFIG_CRYPTO_KEYWRAP is not set + +# +# Hash modes +# +# CONFIG_CRYPTO_CMAC is not set +CONFIG_CRYPTO_HMAC=y +# CONFIG_CRYPTO_VMAC is not set + +# +# Digest +# +CONFIG_CRYPTO_CRC32C=y +# CONFIG_CRYPTO_CRC32 is not set +# CONFIG_CRYPTO_CRCT10DIF is not set +CONFIG_CRYPTO_GHASH=y +# CONFIG_CRYPTO_POLY1305 is not set +# CONFIG_CRYPTO_MD4 is not set +CONFIG_CRYPTO_MD5=y +# CONFIG_CRYPTO_MICHAEL_MIC is not set +CONFIG_CRYPTO_SHA1=y +CONFIG_CRYPTO_SHA512=y +CONFIG_CRYPTO_SHA3=y +# CONFIG_CRYPTO_WP512 is not set + +# +# Ciphers +# +CONFIG_CRYPTO_AES=y +# CONFIG_CRYPTO_AES_TI is not set +# CONFIG_CRYPTO_ANUBIS is not set +# CONFIG_CRYPTO_ARC4 is not set +# CONFIG_CRYPTO_BLOWFISH is not set +# CONFIG_CRYPTO_CAST5 is not set +# CONFIG_CRYPTO_CAST6 is not set +CONFIG_CRYPTO_DES=y +# CONFIG_CRYPTO_FCRYPT is not set +# CONFIG_CRYPTO_KHAZAD is not set +# CONFIG_CRYPTO_CHACHA20 is not set +# CONFIG_CRYPTO_SEED is not set +# CONFIG_CRYPTO_SERPENT is not set +# CONFIG_CRYPTO_TEA is not set +# CONFIG_CRYPTO_TWOFISH is not set + +# +# Compression +# +CONFIG_CRYPTO_LZO=y +# CONFIG_CRYPTO_842 is not set +# CONFIG_CRYPTO_LZ4 is not set +# CONFIG_CRYPTO_LZ4HC is not set + +# +# Random Number Generation +# +CONFIG_CRYPTO_ANSI_CPRNG=m +CONFIG_CRYPTO_DRBG_MENU=y +CONFIG_CRYPTO_DRBG_HMAC=y +# CONFIG_CRYPTO_DRBG_HASH is not set +CONFIG_CRYPTO_DRBG=y +CONFIG_CRYPTO_JITTERENTROPY=y +# CONFIG_CRYPTO_USER_API_HASH is not set +# CONFIG_CRYPTO_USER_API_SKCIPHER is not set +# CONFIG_CRYPTO_USER_API_RNG is not set +# CONFIG_CRYPTO_USER_API_AEAD is not set +CONFIG_CRYPTO_HW=y +# CONFIG_CRYPTO_DEV_HIFN_795X is not set +# CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API_DESC is not set +# CONFIG_ASYMMETRIC_KEY_TYPE is not set + +# +# Certificates for signature checking +# +# CONFIG_SYSTEM_BLACKLIST_KEYRING is not set +CONFIG_BINARY_PRINTF=y + +# +# Library routines +# +CONFIG_BITREVERSE=y +CONFIG_HAVE_ARCH_BITREVERSE=y +CONFIG_RATIONAL=y +CONFIG_GENERIC_STRNCPY_FROM_USER=y +CONFIG_GENERIC_STRNLEN_USER=y +CONFIG_GENERIC_NET_UTILS=y +CONFIG_GENERIC_PCI_IOMAP=y +CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y +CONFIG_CRC_CCITT=m +CONFIG_CRC16=y +# CONFIG_CRC_T10DIF is not set +# CONFIG_CRC_ITU_T is not set +CONFIG_CRC32=y +# CONFIG_CRC32_SELFTEST is not set +CONFIG_CRC32_SLICEBY8=y +# CONFIG_CRC32_SLICEBY4 is not set +# CONFIG_CRC32_SARWATE is not set +# CONFIG_CRC32_BIT is not set +# CONFIG_CRC4 is not set +# CONFIG_CRC7 is not set +CONFIG_LIBCRC32C=y +# CONFIG_CRC8 is not set +CONFIG_XXHASH=y +# CONFIG_AUDIT_ARCH_COMPAT_GENERIC is not set +# CONFIG_RANDOM32_SELFTEST is not set +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=y +CONFIG_LZO_COMPRESS=y +CONFIG_LZO_DECOMPRESS=y +CONFIG_LZ4_DECOMPRESS=y +CONFIG_ZSTD_DECOMPRESS=y +CONFIG_XZ_DEC=y +CONFIG_XZ_DEC_X86=y +CONFIG_XZ_DEC_POWERPC=y +CONFIG_XZ_DEC_ARM=y +CONFIG_XZ_DEC_ARMTHUMB=y +CONFIG_XZ_DEC_SPARC=y +CONFIG_XZ_DEC_BCJ=y +# CONFIG_XZ_DEC_TEST is not set +CONFIG_DECOMPRESS_GZIP=y +CONFIG_DECOMPRESS_BZIP2=y +CONFIG_DECOMPRESS_LZMA=y +CONFIG_DECOMPRESS_XZ=y +CONFIG_DECOMPRESS_LZO=y +CONFIG_DECOMPRESS_LZ4=y +CONFIG_GENERIC_ALLOCATOR=y +CONFIG_ASSOCIATIVE_ARRAY=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT_MAP=y +CONFIG_HAS_DMA=y +CONFIG_DMA_DECLARE_COHERENT=y +CONFIG_CPU_RMAP=y +CONFIG_DQL=y +CONFIG_NLATTR=y +# CONFIG_CORDIC is not set +# CONFIG_DDR is not set +# CONFIG_IRQ_POLL is not set +CONFIG_LIBFDT=y +CONFIG_OID_REGISTRY=y +# CONFIG_SG_SPLIT is not set +CONFIG_SG_POOL=y +CONFIG_SBITMAP=y +# CONFIG_STRING_KUNIT_TEST is not set +# CONFIG_VIRTUALIZATION is not set diff --git a/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/armel-iproc.scc b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/armel-iproc.scc new file mode 100644 index 00000000..309fe3bc --- /dev/null +++ b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/armel-iproc/armel-iproc.scc @@ -0,0 +1,38 @@ +define KMACHINE armel-iproc +define KTYPE standard +define KARCH arm + +# submitted upstream + +patch 09-01-i2c-iproc-reset-bus-after-timeout-if-START_BUSY-is-s.patch + +# platform support + +patch 10-01-soc-xgs_iproc-drivers.patch +patch 10-02-arm-add-iproc-xgs.patch +patch 10-03-arm-add-iproc-xgs-shim-layer.patch +patch 10-04-arm-init-DEBUG_RODATA-fix.patch +patch 10-05-hw_random-xgs-iproc-rng100.patch +patch 10-06-clk-clk-iproc-armpll-avoid-overflow.patch +patch 10-07-clk-clk-xgs-iproc.patch +patch 10-08-gpio-allow-xgs-iproc-for-ARCH_XGS_IPROC-as-well.patch +patch 10-09-i2c-allow-i2c-bcm-iproc-for-ARCH_XGS_IPROC-as-well.patch +patch 10-10-mtd-brcmnand-ignore-warning.patch +patch 10-11-bgmac-xgs-iproc-changes.patch +patch 10-12-mdio-allow-mdio-bcm-iproc-for-ARCH_XGS_IPROC-as-well.patch +patch 10-13-phy-xgs-iproc-serdes.patch +patch 10-14-pci-pcie-xgs-iproc.patch +patch 10-15-spi-spi-iproc-qspi-xgs-iproc-support.patch +patch 10-16-usb-ipproc-xgs-hack.patch +patch 10-17-usb-udc-xgs-iproc-udc.patch +patch 10-18-usb-phy-phy-xgs-iproc.patch +patch 10-19-watchdog-sp805_wdt-clear-bootstatus.patch +patch 10-20-drivers-usb-phy-phy-xgs-iproc-usb-phy-mode.patch + +# Yocto patch for ARM reproducibility + +patch patches/misc/tools-use-basename-to-identify-file-in-gen-mach-type.patch + +include cfg/bisdn-linux.scc + +kconf hardware armel-iproc.cfg diff --git a/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/x86_64-intel/0002-driver-support-intel-igb-bcm5461S-phy.patch b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/x86_64-intel/0002-driver-support-intel-igb-bcm5461S-phy.patch new file mode 100644 index 00000000..1ee0c2e3 --- /dev/null +++ b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/x86_64-intel/0002-driver-support-intel-igb-bcm5461S-phy.patch @@ -0,0 +1,252 @@ +From f0159ec906a78bdb294e6b92c6654ff9d99f4f2f Mon Sep 17 00:00:00 2001 +From: Jonas Gorski +Date: Sun, 9 Feb 2025 10:59:58 +0100 +Subject: [PATCH] driver-support-intel-igb-bcm5461S-phy + +--- + drivers/net/ethernet/intel/igb/e1000_82575.c | 23 ++++- + .../net/ethernet/intel/igb/e1000_defines.h | 1 + + drivers/net/ethernet/intel/igb/e1000_hw.h | 1 + + drivers/net/ethernet/intel/igb/e1000_phy.c | 89 +++++++++++++++++-- + drivers/net/ethernet/intel/igb/e1000_phy.h | 2 + + drivers/net/ethernet/intel/igb/igb_main.c | 2 + + 6 files changed, 112 insertions(+), 6 deletions(-) + +diff --git a/drivers/net/ethernet/intel/igb/e1000_82575.c b/drivers/net/ethernet/intel/igb/e1000_82575.c +index 64dfc362d1dc..f7b156b5a387 100644 +--- a/drivers/net/ethernet/intel/igb/e1000_82575.c ++++ b/drivers/net/ethernet/intel/igb/e1000_82575.c +@@ -307,6 +307,12 @@ static s32 igb_init_phy_params_82575(struct e1000_hw *hw) + phy->ops.set_d3_lplu_state = igb_set_d3_lplu_state_82580; + phy->ops.force_speed_duplex = igb_phy_force_speed_duplex_m88; + break; ++ case BCM5461S_PHY_ID: ++ phy->type = e1000_phy_bcm5461s; ++ phy->ops.check_polarity = NULL; ++ phy->ops.get_cable_length = NULL; ++ phy->ops.force_speed_duplex = igb_phy_force_speed_duplex_82580; ++ break; + case BCM54616_E_PHY_ID: + phy->type = e1000_phy_bcm54616; + break; +@@ -864,6 +870,16 @@ static s32 igb_get_phy_id_82575(struct e1000_hw *hw) + goto out; + } + ret_val = igb_get_phy_id(hw); ++ if (ret_val && hw->mac.type == e1000_i354) { ++ /* we do a special check for bcm5461s phy by setting ++ * the phy->addr to 5 and doing the phy check again. This ++ * call will succeed and retrieve a valid phy id if we have ++ * the bcm5461s phy ++ */ ++ phy->addr = 5; ++ phy->type = e1000_phy_bcm5461s; ++ ret_val = igb_get_phy_id(hw); ++ } + goto out; + } + +@@ -1251,6 +1267,9 @@ static s32 igb_get_cfg_done_82575(struct e1000_hw *hw) + (hw->phy.type == e1000_phy_igp_3)) + igb_phy_init_script_igp3(hw); + ++ if (hw->phy.type == e1000_phy_bcm5461s) ++ igb_phy_init_script_5461s(hw); ++ + return 0; + } + +@@ -1580,6 +1599,7 @@ static s32 igb_setup_copper_link_82575(struct e1000_hw *hw) + case e1000_i350: + case e1000_i210: + case e1000_i211: ++ case e1000_i354: + phpm_reg = rd32(E1000_82580_PHY_POWER_MGMT); + phpm_reg &= ~E1000_82580_PM_GO_LINKD; + wr32(E1000_82580_PHY_POWER_MGMT, phpm_reg); +@@ -1625,7 +1645,8 @@ static s32 igb_setup_copper_link_82575(struct e1000_hw *hw) + ret_val = igb_copper_link_setup_82580(hw); + break; + case e1000_phy_bcm54616: +- ret_val = 0; ++ break; ++ case e1000_phy_bcm5461s: + break; + default: + ret_val = -E1000_ERR_PHY; +diff --git a/drivers/net/ethernet/intel/igb/e1000_defines.h b/drivers/net/ethernet/intel/igb/e1000_defines.h +index fa028928482f..524daad88efa 100644 +--- a/drivers/net/ethernet/intel/igb/e1000_defines.h ++++ b/drivers/net/ethernet/intel/igb/e1000_defines.h +@@ -886,6 +886,7 @@ + #define M88E1543_E_PHY_ID 0x01410EA0 + #define M88E1512_E_PHY_ID 0x01410DD0 + #define BCM54616_E_PHY_ID 0x03625D10 ++#define BCM5461S_PHY_ID 0x002060C0 + + /* M88E1000 Specific Registers */ + #define M88E1000_PHY_SPEC_CTRL 0x10 /* PHY Specific Control Register */ +diff --git a/drivers/net/ethernet/intel/igb/e1000_hw.h b/drivers/net/ethernet/intel/igb/e1000_hw.h +index 44111f65afc7..1fc393ca0a40 100644 +--- a/drivers/net/ethernet/intel/igb/e1000_hw.h ++++ b/drivers/net/ethernet/intel/igb/e1000_hw.h +@@ -110,6 +110,7 @@ enum e1000_phy_type { + e1000_phy_82580, + e1000_phy_i210, + e1000_phy_bcm54616, ++ e1000_phy_bcm5461s, + }; + + enum e1000_bus_type { +diff --git a/drivers/net/ethernet/intel/igb/e1000_phy.c b/drivers/net/ethernet/intel/igb/e1000_phy.c +index cd65008c7ef5..fbc01c7f81b9 100644 +--- a/drivers/net/ethernet/intel/igb/e1000_phy.c ++++ b/drivers/net/ethernet/intel/igb/e1000_phy.c +@@ -126,6 +126,13 @@ s32 igb_read_phy_reg_mdic(struct e1000_hw *hw, u32 offset, u16 *data) + * Control register. The MAC will take care of interfacing with the + * PHY to retrieve the desired data. + */ ++ if (phy->type == e1000_phy_bcm5461s) { ++ mdic = rd32(E1000_MDICNFG); ++ mdic &= ~E1000_MDICNFG_PHY_MASK; ++ mdic |= (phy->addr << E1000_MDICNFG_PHY_SHIFT); ++ wr32(E1000_MDICNFG, mdic); ++ } ++ + mdic = ((offset << E1000_MDIC_REG_SHIFT) | + (phy->addr << E1000_MDIC_PHY_SHIFT) | + (E1000_MDIC_OP_READ)); +@@ -182,6 +189,13 @@ s32 igb_write_phy_reg_mdic(struct e1000_hw *hw, u32 offset, u16 data) + * Control register. The MAC will take care of interfacing with the + * PHY to retrieve the desired data. + */ ++ if (phy->type == e1000_phy_bcm5461s) { ++ mdic = rd32(E1000_MDICNFG); ++ mdic &= ~E1000_MDICNFG_PHY_MASK; ++ mdic |= (phy->addr << E1000_MDICNFG_PHY_SHIFT); ++ wr32(E1000_MDICNFG, mdic); ++ } ++ + mdic = (((u32)data) | + (offset << E1000_MDIC_REG_SHIFT) | + (phy->addr << E1000_MDIC_PHY_SHIFT) | +@@ -1095,11 +1109,13 @@ s32 igb_setup_copper_link(struct e1000_hw *hw) + * depending on user settings. + */ + hw_dbg("Forcing Speed and Duplex\n"); +- ret_val = hw->phy.ops.force_speed_duplex(hw); +- if (ret_val) { +- hw_dbg("Error Forcing Speed and Duplex\n"); +- goto out; +- } ++ if (hw->phy.ops.force_speed_duplex) { ++ ret_val = hw->phy.ops.force_speed_duplex(hw); ++ if (ret_val) { ++ hw_dbg("Error Forcing Speed and Duplex\n"); ++ goto out; ++ } ++ } + } + + /* Check link status. Wait up to 100 microseconds for link to become +@@ -2626,3 +2642,66 @@ static s32 igb_set_master_slave_mode(struct e1000_hw *hw) + + return hw->phy.ops.write_reg(hw, PHY_1000T_CTRL, phy_data); + } ++ ++/** ++ * igb_phy_init_script_5461s - Inits the BCM5461S PHY ++ * @hw: pointer to the HW structure ++ * ++ * Initializes a Broadcom Gigabit PHY. ++ **/ ++s32 igb_phy_init_script_5461s(struct e1000_hw *hw) ++{ ++ u16 mii_reg_led = 0; ++ ++ /* 1. Speed LED (Set the Link LED mode), Shadow 00010, 0x1C.bit2=1 */ ++ hw->phy.ops.write_reg(hw, 0x1C, 0x0800); ++ hw->phy.ops.read_reg(hw, 0x1C, &mii_reg_led); ++ mii_reg_led |= 0x0004; ++ hw->phy.ops.write_reg(hw, 0x1C, mii_reg_led | 0x8000); ++ ++ /* 2. Active LED (Set the Link LED mode), Shadow 01001, 0x1C.bit4=1, 0x10.bit5=0 */ ++ hw->phy.ops.write_reg(hw, 0x1C, 0x2400); ++ hw->phy.ops.read_reg(hw, 0x1C, &mii_reg_led); ++ mii_reg_led |= 0x0010; ++ hw->phy.ops.write_reg(hw, 0x1C, mii_reg_led | 0x8000); ++ hw->phy.ops.read_reg(hw, 0x10, &mii_reg_led); ++ mii_reg_led &= 0xffdf; ++ hw->phy.ops.write_reg(hw, 0x10, mii_reg_led); ++ ++ return 0; ++} ++ ++/** ++ * igb_get_phy_info_5461s - Retrieve 5461s PHY information ++ * @hw: pointer to the HW structure ++ * ++ * Read PHY status to determine if link is up. If link is up, then ++ * set/determine 10base-T extended distance and polarity correction. Read ++ * PHY port status to determine MDI/MDIx and speed. Based on the speed, ++ * determine on the cable length, local and remote receiver. ++ **/ ++s32 igb_get_phy_info_5461s(struct e1000_hw *hw) ++{ ++ struct e1000_phy_info *phy = &hw->phy; ++ s32 ret_val; ++ bool link; ++ ++ ret_val = igb_phy_has_link(hw, 1, 0, &link); ++ if (ret_val) ++ goto out; ++ ++ if (!link) { ++ ret_val = -E1000_ERR_CONFIG; ++ goto out; ++ } ++ ++ phy->polarity_correction = true; ++ ++ phy->is_mdix = true; ++ phy->cable_length = E1000_CABLE_LENGTH_UNDEFINED; ++ phy->local_rx = e1000_1000t_rx_status_ok; ++ phy->remote_rx = e1000_1000t_rx_status_ok; ++ ++out: ++ return ret_val; ++} +diff --git a/drivers/net/ethernet/intel/igb/e1000_phy.h b/drivers/net/ethernet/intel/igb/e1000_phy.h +index 5894e4b1d0a8..aa888efc05f2 100644 +--- a/drivers/net/ethernet/intel/igb/e1000_phy.h ++++ b/drivers/net/ethernet/intel/igb/e1000_phy.h +@@ -41,6 +41,8 @@ s32 igb_phy_has_link(struct e1000_hw *hw, u32 iterations, + void igb_power_up_phy_copper(struct e1000_hw *hw); + void igb_power_down_phy_copper(struct e1000_hw *hw); + s32 igb_phy_init_script_igp3(struct e1000_hw *hw); ++s32 igb_phy_init_script_5461s(struct e1000_hw *hw); ++s32 igb_get_phy_info_5461s(struct e1000_hw *hw); + s32 igb_initialize_M88E1512_phy(struct e1000_hw *hw); + s32 igb_initialize_M88E1543_phy(struct e1000_hw *hw); + s32 igb_read_phy_reg_mdic(struct e1000_hw *hw, u32 offset, u16 *data); +diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c +index 18284a838e24..895624320b6e 100644 +--- a/drivers/net/ethernet/intel/igb/igb_main.c ++++ b/drivers/net/ethernet/intel/igb/igb_main.c +@@ -9157,11 +9157,13 @@ static int igb_mii_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd) + data->phy_id = adapter->hw.phy.addr; + break; + case SIOCGMIIREG: ++ adapter->hw.phy.addr = data->phy_id; + if (igb_read_phy_reg(&adapter->hw, data->reg_num & 0x1F, + &data->val_out)) + return -EIO; + break; + case SIOCSMIIREG: ++ adapter->hw.phy.addr = data->phy_id; + if (igb_write_phy_reg(&adapter->hw, data->reg_num & 0x1F, + data->val_in)) + return -EIO; +-- +2.47.1 + diff --git a/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/x86_64-intel/igb-dont-drop-packets-if-rx-flow-control-is-enabled.patch b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/x86_64-intel/igb-dont-drop-packets-if-rx-flow-control-is-enabled.patch new file mode 100644 index 00000000..792bc465 --- /dev/null +++ b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/x86_64-intel/igb-dont-drop-packets-if-rx-flow-control-is-enabled.patch @@ -0,0 +1,137 @@ +From 6506f52dcbf8c2afca47bd7a48c18459e1f04f86 Mon Sep 17 00:00:00 2001 +From: Robert Beckett +Date: Tue, 22 Oct 2019 16:31:41 +0100 +Subject: [PATCH] igb: dont drop packets if rx flow control is enabled + +If Rx flow control has been enabled (via autoneg or forced), packets +should not be dropped due to Rx descriptor ring exhaustion. Instead +pause frames should be used to apply back pressure. This only applies +if VFs are not in use. + +Move SRRCTL setup to its own function for easy reuse and only set drop +enable bit if Rx flow control is not enabled. + +Since v1: always enable dropping of packets if VFs in use. + +Signed-off-by: Robert Beckett +Tested-by: Aaron Brown +Signed-off-by: Jeff Kirsher +--- + drivers/net/ethernet/intel/igb/igb.h | 1 + + drivers/net/ethernet/intel/igb/igb_ethtool.c | 8 ++++ + drivers/net/ethernet/intel/igb/igb_main.c | 47 ++++++++++++++------ + 3 files changed, 42 insertions(+), 14 deletions(-) + +diff --git a/drivers/net/ethernet/intel/igb/igb.h b/drivers/net/ethernet/intel/igb/igb.h +index ca54e268d157..49b5fa9d4783 100644 +--- a/drivers/net/ethernet/intel/igb/igb.h ++++ b/drivers/net/ethernet/intel/igb/igb.h +@@ -661,6 +661,7 @@ void igb_configure_tx_ring(struct igb_adapter *, struct igb_ring *); + void igb_configure_rx_ring(struct igb_adapter *, struct igb_ring *); + void igb_setup_tctl(struct igb_adapter *); + void igb_setup_rctl(struct igb_adapter *); ++void igb_setup_srrctl(struct igb_adapter *, struct igb_ring *); + netdev_tx_t igb_xmit_frame_ring(struct sk_buff *, struct igb_ring *); + void igb_alloc_rx_buffers(struct igb_ring *, u16); + void igb_update_stats(struct igb_adapter *); +diff --git a/drivers/net/ethernet/intel/igb/igb_ethtool.c b/drivers/net/ethernet/intel/igb/igb_ethtool.c +index 4690d6c87f39..43c438365389 100644 +--- a/drivers/net/ethernet/intel/igb/igb_ethtool.c ++++ b/drivers/net/ethernet/intel/igb/igb_ethtool.c +@@ -396,6 +396,7 @@ static int igb_set_pauseparam(struct net_device *netdev, + struct igb_adapter *adapter = netdev_priv(netdev); + struct e1000_hw *hw = &adapter->hw; + int retval = 0; ++ int i; + + /* 100basefx does not support setting link flow control */ + if (hw->dev_spec._82575.eth_flags.e100_base_fx) +@@ -428,6 +429,13 @@ static int igb_set_pauseparam(struct net_device *netdev, + + retval = ((hw->phy.media_type == e1000_media_type_copper) ? + igb_force_mac_fc(hw) : igb_setup_link(hw)); ++ ++ /* Make sure SRRCTL considers new fc settings for each ring */ ++ for (i = 0; i < adapter->num_rx_queues; i++) { ++ struct igb_ring *ring = adapter->rx_ring[i]; ++ ++ igb_setup_srrctl(adapter, ring); ++ } + } + + clear_bit(__IGB_RESETTING, &adapter->state); +diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c +index d11e64a58ed1..b46bff8fe056 100644 +--- a/drivers/net/ethernet/intel/igb/igb_main.c ++++ b/drivers/net/ethernet/intel/igb/igb_main.c +@@ -4467,6 +4467,37 @@ static inline void igb_set_vmolr(struct igb_adapter *adapter, + wr32(E1000_VMOLR(vfn), vmolr); + } + ++/** ++ * igb_setup_srrctl - configure the split and replication receive control ++ * registers ++ * @adapter: Board private structure ++ * @ring: receive ring to be configured ++ **/ ++void igb_setup_srrctl(struct igb_adapter *adapter, struct igb_ring *ring) ++{ ++ struct e1000_hw *hw = &adapter->hw; ++ int reg_idx = ring->reg_idx; ++ u32 srrctl = 0; ++ ++ srrctl = IGB_RX_HDR_LEN << E1000_SRRCTL_BSIZEHDRSIZE_SHIFT; ++ if (ring_uses_large_buffer(ring)) ++ srrctl |= IGB_RXBUFFER_3072 >> E1000_SRRCTL_BSIZEPKT_SHIFT; ++ else ++ srrctl |= IGB_RXBUFFER_2048 >> E1000_SRRCTL_BSIZEPKT_SHIFT; ++ srrctl |= E1000_SRRCTL_DESCTYPE_ADV_ONEBUF; ++ if (hw->mac.type >= e1000_82580) ++ srrctl |= E1000_SRRCTL_TIMESTAMP; ++ /* Only set Drop Enable if VFs allocated, or we are supporting multiple ++ * queues and rx flow control is disabled ++ */ ++ if (adapter->vfs_allocated_count || ++ (!(hw->fc.current_mode & e1000_fc_rx_pause) && ++ adapter->num_rx_queues > 1)) ++ srrctl |= E1000_SRRCTL_DROP_EN; ++ ++ wr32(E1000_SRRCTL(reg_idx), srrctl); ++} ++ + /** + * igb_configure_rx_ring - Configure a receive ring after Reset + * @adapter: board private structure +@@ -4481,7 +4512,7 @@ void igb_configure_rx_ring(struct igb_adapter *adapter, + union e1000_adv_rx_desc *rx_desc; + u64 rdba = ring->dma; + int reg_idx = ring->reg_idx; +- u32 srrctl = 0, rxdctl = 0; ++ u32 rxdctl = 0; + + /* disable the queue */ + wr32(E1000_RXDCTL(reg_idx), 0); +@@ -4499,19 +4530,7 @@ void igb_configure_rx_ring(struct igb_adapter *adapter, + writel(0, ring->tail); + + /* set descriptor configuration */ +- srrctl = IGB_RX_HDR_LEN << E1000_SRRCTL_BSIZEHDRSIZE_SHIFT; +- if (ring_uses_large_buffer(ring)) +- srrctl |= IGB_RXBUFFER_3072 >> E1000_SRRCTL_BSIZEPKT_SHIFT; +- else +- srrctl |= IGB_RXBUFFER_2048 >> E1000_SRRCTL_BSIZEPKT_SHIFT; +- srrctl |= E1000_SRRCTL_DESCTYPE_ADV_ONEBUF; +- if (hw->mac.type >= e1000_82580) +- srrctl |= E1000_SRRCTL_TIMESTAMP; +- /* Only set Drop Enable if we are supporting multiple queues */ +- if (adapter->vfs_allocated_count || adapter->num_rx_queues > 1) +- srrctl |= E1000_SRRCTL_DROP_EN; +- +- wr32(E1000_SRRCTL(reg_idx), srrctl); ++ igb_setup_srrctl(adapter, ring); + + /* set filtering for VMDQ pools */ + igb_set_vmolr(adapter, reg_idx & 0x7, true); +-- +2.28.0 + diff --git a/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/x86_64-intel/igb-setup-Broadcom-54616-PHY-when-no-EEPROM-present.patch b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/x86_64-intel/igb-setup-Broadcom-54616-PHY-when-no-EEPROM-present.patch new file mode 100644 index 00000000..03bf20da --- /dev/null +++ b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/x86_64-intel/igb-setup-Broadcom-54616-PHY-when-no-EEPROM-present.patch @@ -0,0 +1,283 @@ +From 33d4bb302fcb7add5732641119421c93fa0fea57 Mon Sep 17 00:00:00 2001 +From: Sergey Popovich +Date: Tue, 25 Dec 2018 06:54:08 +0000 +Subject: [PATCH] igb: Setup Broadcom 54616 PHY when no EEPROM present + +While commit eeb0149660a2 ("igb: support BCM54616 PHY") adds basic +support for Broadcom 54616 PHY it does not handle case when EEPROM +is missing. + +In that case we need initialize PHY manually by isolating it from +MII interface and providing methods to force speed and duplex. + +Behaviour was observed on Netberg Aurora 420 switch management port +that uses igb MAC and Broadcom PHY. + +Fixes: commit eeb0149660a2 ("igb: support BCM54616 PHY") +Cc: Jeff Kirsher +Cc: John W Linville +Signed-off-by: Sergey Popovich +--- + drivers/net/ethernet/intel/igb/e1000_82575.c | 12 +- + .../net/ethernet/intel/igb/e1000_defines.h | 1 + + drivers/net/ethernet/intel/igb/e1000_phy.c | 144 ++++++++++++++++++ + drivers/net/ethernet/intel/igb/e1000_phy.h | 4 + + 4 files changed, 158 insertions(+), 3 deletions(-) + +diff --git a/drivers/net/ethernet/intel/igb/e1000_82575.c b/drivers/net/ethernet/intel/igb/e1000_82575.c +index 460f1b1c429e..461939af6a25 100644 +--- a/drivers/net/ethernet/intel/igb/e1000_82575.c ++++ b/drivers/net/ethernet/intel/igb/e1000_82575.c +@@ -316,6 +316,8 @@ static s32 igb_init_phy_params_82575(struct e1000_hw *hw) + break; + case BCM54616_E_PHY_ID: + phy->type = e1000_phy_bcm54616; ++ phy->ops.get_phy_info = igb_get_phy_info_bcm54xx; ++ phy->ops.force_speed_duplex = igb_phy_force_speed_duplex_bcm54xx; + break; + default: + ret_val = -E1000_ERR_PHY; +@@ -1269,9 +1271,12 @@ static s32 igb_get_cfg_done_82575(struct e1000_hw *hw) + hw_dbg("MNG configuration cycle has not completed.\n"); + + /* If EEPROM is not marked present, init the PHY manually */ +- if (((rd32(E1000_EECD) & E1000_EECD_PRES) == 0) && +- (hw->phy.type == e1000_phy_igp_3)) +- igb_phy_init_script_igp3(hw); ++ if ((rd32(E1000_EECD) & E1000_EECD_PRES) == 0) { ++ if (hw->phy.type == e1000_phy_igp_3) ++ igb_phy_init_script_igp3(hw); ++ else if (hw->phy.type == e1000_phy_bcm54616) ++ igb_phy_init_script_bcm54xx(hw); ++ } + + if (hw->phy.type == e1000_phy_bcm5461s) + igb_phy_init_script_5461s(hw); +@@ -1651,6 +1656,7 @@ static s32 igb_setup_copper_link_82575(struct e1000_hw *hw) + ret_val = igb_copper_link_setup_82580(hw); + break; + case e1000_phy_bcm54616: ++ ret_val = igb_copper_link_setup_bcm54xx(hw); + break; + case e1000_phy_bcm5461s: + break; +diff --git a/drivers/net/ethernet/intel/igb/e1000_defines.h b/drivers/net/ethernet/intel/igb/e1000_defines.h +index 0561ef6cb29c..5034546f4b3c 100644 +--- a/drivers/net/ethernet/intel/igb/e1000_defines.h ++++ b/drivers/net/ethernet/intel/igb/e1000_defines.h +@@ -650,6 +650,7 @@ + /* PHY Control Register */ + #define MII_CR_FULL_DUPLEX 0x0100 /* FDX =1, half duplex =0 */ + #define MII_CR_RESTART_AUTO_NEG 0x0200 /* Restart auto negotiation */ ++#define MII_CR_ISOLATE 0x0400 /* Isolate PHY from MII */ + #define MII_CR_POWER_DOWN 0x0800 /* Power down */ + #define MII_CR_AUTO_NEG_EN 0x1000 /* Auto Neg Enable */ + #define MII_CR_LOOPBACK 0x4000 /* 0 = normal, 1 = loopback */ +diff --git a/drivers/net/ethernet/intel/igb/e1000_phy.c b/drivers/net/ethernet/intel/igb/e1000_phy.c +index 38034d1d1830..6e477824f21a 100644 +--- a/drivers/net/ethernet/intel/igb/e1000_phy.c ++++ b/drivers/net/ethernet/intel/igb/e1000_phy.c +@@ -4,6 +4,7 @@ + #include + #include + #include ++#include + #include "e1000_mac.h" + #include "e1000_phy.h" + +@@ -461,6 +462,34 @@ s32 igb_write_phy_reg_igp(struct e1000_hw *hw, u32 offset, u16 data) + return ret_val; + } + ++/** ++ * igb_copper_link_setup_bcm54xx - Setup BCM54xx PHY for copper link ++ * @hw: pointer to the HW structure ++ * ++ * Sets up copper link. ++ **/ ++s32 igb_copper_link_setup_bcm54xx(struct e1000_hw *hw) ++{ ++ struct e1000_phy_info *phy = &hw->phy; ++ s32 ret_val = 0; ++ u16 phy_data; ++ ++ if (phy->reset_disable) ++ return 0; ++ ++ ret_val = phy->ops.read_reg(hw, PHY_CONTROL, &phy_data); ++ if (ret_val) ++ goto out; ++ ++ phy_data &= ~(MII_CR_ISOLATE); ++ ++ ret_val = phy->ops.write_reg(hw, PHY_CONTROL, phy_data); ++ if (ret_val) ++ goto out; ++out: ++ return ret_val; ++} ++ + /** + * igb_copper_link_setup_82580 - Setup 82580 PHY for copper link + * @hw: pointer to the HW structure +@@ -1672,6 +1701,55 @@ s32 igb_phy_has_link(struct e1000_hw *hw, u32 iterations, + return ret_val; + } + ++/** ++ * igb_phy_force_speed_duplex_bcm54xx - Force speed/duplex for BCM54xx PHY ++ * @hw: pointer to the HW structure ++ * ++ * Calls the PHY setup function to force speed and duplex. Waits ++ * for link and returns successful if link up is successful, else ++ * -E1000_ERR_PHY (-2). ++ **/ ++s32 igb_phy_force_speed_duplex_bcm54xx(struct e1000_hw *hw) ++{ ++ struct e1000_phy_info *phy = &hw->phy; ++ s32 ret_val; ++ u16 phy_data; ++ bool link; ++ ++ ret_val = phy->ops.read_reg(hw, PHY_CONTROL, &phy_data); ++ if (ret_val) ++ goto out; ++ ++ igb_phy_force_speed_duplex_setup(hw, &phy_data); ++ ++ phy_data &= ~(MII_CR_POWER_DOWN | MII_CR_ISOLATE); ++ ++ ret_val = phy->ops.write_reg(hw, PHY_CONTROL, phy_data); ++ if (ret_val) ++ goto out; ++ ++ udelay(1); ++ ++ if (phy->autoneg_wait_to_complete) { ++ hw_dbg("Waiting for forced speed/duplex link on BCM phy.\n"); ++ ++ ret_val = igb_phy_has_link(hw, PHY_FORCE_LIMIT, 100000, &link); ++ if (ret_val) ++ goto out; ++ ++ if (!link) ++ hw_dbg("Link taking longer than expected.\n"); ++ ++ /* Try once more */ ++ ret_val = igb_phy_has_link(hw, PHY_FORCE_LIMIT, 100000, &link); ++ if (ret_val) ++ goto out; ++ } ++ ++out: ++ return ret_val; ++} ++ + /** + * igb_get_cable_length_m88 - Determine cable length for m88 PHY + * @hw: pointer to the HW structure +@@ -2054,6 +2132,39 @@ s32 igb_get_phy_info_igp(struct e1000_hw *hw) + return ret_val; + } + ++/** ++ * igb_get_phy_info_bcm54xx - Retrieve PHY information ++ * @hw: pointer to the HW structure ++ * ++ * Valid for only copper links. Read the PHY status register (sticky read) ++ * to verify that link is up. ++ **/ ++s32 igb_get_phy_info_bcm54xx(struct e1000_hw *hw) ++{ ++ struct e1000_phy_info *phy = &hw->phy; ++ s32 ret_val; ++ bool link; ++ ++ if (phy->media_type != e1000_media_type_copper) { ++ hw_dbg("Phy info is only valid for copper media\n"); ++ ret_val = -E1000_ERR_CONFIG; ++ goto out; ++ } ++ ++ ret_val = igb_phy_has_link(hw, 1, 0, &link); ++ if (ret_val) ++ goto out; ++ ++ if (!link) { ++ hw_dbg("Phy info is only valid if link is up\n"); ++ ret_val = -E1000_ERR_CONFIG; ++ goto out; ++ } ++ ++out: ++ return ret_val; ++} ++ + /** + * igb_phy_sw_reset - PHY software reset + * @hw: pointer to the HW structure +@@ -2211,6 +2322,39 @@ s32 igb_phy_init_script_igp3(struct e1000_hw *hw) + return 0; + } + ++/** ++ * igb_phy_init_script_bcm54xx - Initialize BCM54xx PHY ++ * @hw: pointer to the HW structure ++ * ++ * Initialize Broadcom 54xx to work correctly. ++ **/ ++s32 igb_phy_init_script_bcm54xx(struct e1000_hw *hw) ++{ ++ struct e1000_phy_info *phy = &hw->phy; ++ u16 data = 0; ++ s32 ret_val = 0; ++ ++ ret_val = phy->ops.read_reg(hw, MII_BCM54XX_ECR, &data); ++ if (ret_val) ++ goto out; ++ ++ /* Mask interrupts globally. */ ++ data |= MII_BCM54XX_ECR_IM; ++ ret_val = phy->ops.write_reg(hw, MII_BCM54XX_ECR, data); ++ if (ret_val) ++ goto out; ++ ++ /* Unmask events we are interested in. */ ++ data = ~(MII_BCM54XX_INT_DUPLEX | ++ MII_BCM54XX_INT_SPEED | ++ MII_BCM54XX_INT_LINK); ++ ret_val = phy->ops.write_reg(hw, MII_BCM54XX_IMR, data); ++ if (ret_val) ++ goto out; ++out: ++ return ret_val; ++} ++ + /** + * igb_initialize_M88E1512_phy - Initialize M88E1512 PHY + * @hw: pointer to the HW structure +diff --git a/drivers/net/ethernet/intel/igb/e1000_phy.h b/drivers/net/ethernet/intel/igb/e1000_phy.h +index aa888efc05f2..890f14a04203 100644 +--- a/drivers/net/ethernet/intel/igb/e1000_phy.h ++++ b/drivers/net/ethernet/intel/igb/e1000_phy.h +@@ -43,6 +43,7 @@ void igb_power_down_phy_copper(struct e1000_hw *hw); + s32 igb_phy_init_script_igp3(struct e1000_hw *hw); + s32 igb_phy_init_script_5461s(struct e1000_hw *hw); + s32 igb_get_phy_info_5461s(struct e1000_hw *hw); ++s32 igb_phy_init_script_bcm54xx(struct e1000_hw *hw); + s32 igb_initialize_M88E1512_phy(struct e1000_hw *hw); + s32 igb_initialize_M88E1543_phy(struct e1000_hw *hw); + s32 igb_read_phy_reg_mdic(struct e1000_hw *hw, u32 offset, u16 *data); +@@ -57,6 +58,9 @@ s32 igb_get_cable_length_82580(struct e1000_hw *hw); + s32 igb_read_phy_reg_82580(struct e1000_hw *hw, u32 offset, u16 *data); + s32 igb_write_phy_reg_82580(struct e1000_hw *hw, u32 offset, u16 data); + s32 igb_check_polarity_m88(struct e1000_hw *hw); ++s32 igb_copper_link_setup_bcm54xx(struct e1000_hw *hw); ++s32 igb_phy_force_speed_duplex_bcm54xx(struct e1000_hw *hw); ++s32 igb_get_phy_info_bcm54xx(struct e1000_hw *hw); + + /* IGP01E1000 Specific Registers */ + #define IGP01E1000_PHY_PORT_CONFIG 0x10 /* Port Config */ +-- +2.27.0 + diff --git a/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/x86_64-intel/igb_print_mac_phy_type.patch b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/x86_64-intel/igb_print_mac_phy_type.patch new file mode 100644 index 00000000..0690ff94 --- /dev/null +++ b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/x86_64-intel/igb_print_mac_phy_type.patch @@ -0,0 +1,13 @@ +diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c +index ed7e667d7eb2..6ae4712b1a7c 100644 +--- a/drivers/net/ethernet/intel/igb/igb_main.c ++++ b/drivers/net/ethernet/intel/igb/igb_main.c +@@ -3407,6 +3407,8 @@ static int igb_probe(struct pci_dev *pdev, const struct pci_device_id *ent) + if (ret_val) + strcpy(part_str, "Unknown"); + dev_info(&pdev->dev, "%s: PBA No: %s\n", netdev->name, part_str); ++ dev_info(&pdev->dev, "%s: mac_type: %i phy_type: %i\n", netdev->name, ++ hw->mac.type, hw->phy.type); + dev_info(&pdev->dev, + "Using %s interrupts. %d rx queue(s), %d tx queue(s)\n", + (adapter->flags & IGB_FLAG_HAS_MSIX) ? "MSI-X" : diff --git a/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/x86_64-intel/x86_64-intel.cfg b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/x86_64-intel/x86_64-intel.cfg new file mode 100644 index 00000000..c1f052e8 --- /dev/null +++ b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/x86_64-intel/x86_64-intel.cfg @@ -0,0 +1,4830 @@ +# +# Automatically generated file; DO NOT EDIT. +# Linux/x86 5.2.10 Kernel Configuration +# + +# +# Compiler: gcc (GCC) 8.2.0 +# +CONFIG_IRQ_WORK=y +CONFIG_BUILDTIME_TABLE_SORT=y +CONFIG_THREAD_INFO_IN_TASK=y + +# +# General setup +# +CONFIG_INIT_ENV_ARG_LIMIT=32 +# CONFIG_COMPILE_TEST is not set +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_BUILD_SALT="" +CONFIG_HAVE_KERNEL_GZIP=y +CONFIG_HAVE_KERNEL_BZIP2=y +CONFIG_HAVE_KERNEL_LZMA=y +CONFIG_HAVE_KERNEL_XZ=y +CONFIG_HAVE_KERNEL_LZO=y +CONFIG_HAVE_KERNEL_LZ4=y +CONFIG_KERNEL_GZIP=y +# CONFIG_KERNEL_BZIP2 is not set +# CONFIG_KERNEL_LZMA is not set +# CONFIG_KERNEL_XZ is not set +# CONFIG_KERNEL_LZO is not set +# CONFIG_KERNEL_LZ4 is not set +CONFIG_DEFAULT_HOSTNAME="(none)" +CONFIG_SWAP=y +CONFIG_SYSVIPC=y +CONFIG_SYSVIPC_SYSCTL=y +CONFIG_CROSS_MEMORY_ATTACH=y +CONFIG_USELIB=y +CONFIG_AUDIT=y +CONFIG_HAVE_ARCH_AUDITSYSCALL=y +CONFIG_AUDITSYSCALL=y + +# +# IRQ subsystem +# +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_GENERIC_IRQ_SHOW=y +CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y +CONFIG_GENERIC_PENDING_IRQ=y +CONFIG_GENERIC_IRQ_MIGRATION=y +CONFIG_IRQ_DOMAIN=y +CONFIG_IRQ_DOMAIN_HIERARCHY=y +CONFIG_GENERIC_MSI_IRQ=y +CONFIG_GENERIC_IRQ_MATRIX_ALLOCATOR=y +CONFIG_GENERIC_IRQ_RESERVATION_MODE=y +CONFIG_IRQ_FORCED_THREADING=y +CONFIG_SPARSE_IRQ=y +# CONFIG_GENERIC_IRQ_DEBUGFS is not set +# end of IRQ subsystem + +CONFIG_CLOCKSOURCE_WATCHDOG=y +CONFIG_ARCH_CLOCKSOURCE_INIT=y +CONFIG_GENERIC_TIME_VSYSCALL=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y +CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y +CONFIG_GENERIC_CMOS_UPDATE=y + +# +# Timers subsystem +# +CONFIG_TICK_ONESHOT=y +CONFIG_NO_HZ_COMMON=y +# CONFIG_HZ_PERIODIC is not set +CONFIG_NO_HZ_IDLE=y +# CONFIG_NO_HZ_FULL is not set +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +# end of Timers subsystem + +# CONFIG_PREEMPT_NONE is not set +CONFIG_PREEMPT_VOLUNTARY=y +# CONFIG_PREEMPT is not set + +# +# CPU/Task time and stats accounting +# +CONFIG_TICK_CPU_ACCOUNTING=y +# CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set +# CONFIG_IRQ_TIME_ACCOUNTING is not set +CONFIG_BSD_PROCESS_ACCT=y +# CONFIG_BSD_PROCESS_ACCT_V3 is not set +CONFIG_TASKSTATS=y +CONFIG_TASK_DELAY_ACCT=y +CONFIG_TASK_XACCT=y +CONFIG_TASK_IO_ACCOUNTING=y +# CONFIG_PSI is not set +# end of CPU/Task time and stats accounting + +CONFIG_CPU_ISOLATION=y + +# +# RCU Subsystem +# +CONFIG_TREE_RCU=y +# CONFIG_RCU_EXPERT is not set +CONFIG_TREE_SRCU=y +CONFIG_RCU_STALL_COMMON=y +CONFIG_RCU_NEED_SEGCBLIST=y +# end of RCU Subsystem + +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +# CONFIG_IKHEADERS is not set +CONFIG_LOG_BUF_SHIFT=18 +CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 +CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y +CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y +CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=y +CONFIG_ARCH_SUPPORTS_INT128=y +# CONFIG_CGROUP_RDMA is not set +# CONFIG_SCHED_AUTOGROUP is not set +CONFIG_RELAY=y +CONFIG_BLK_DEV_INITRD=y +CONFIG_INITRAMFS_SOURCE="" +CONFIG_RD_GZIP=y +CONFIG_RD_BZIP2=y +CONFIG_RD_LZMA=y +CONFIG_RD_XZ=y +CONFIG_RD_LZO=y +CONFIG_RD_LZ4=y +CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set +CONFIG_SYSCTL=y +CONFIG_HAVE_UID16=y +CONFIG_SYSCTL_EXCEPTION_TRACE=y +CONFIG_HAVE_PCSPKR_PLATFORM=y +CONFIG_EXPERT=y +CONFIG_UID16=y +CONFIG_MULTIUSER=y +CONFIG_SGETMASK_SYSCALL=y +CONFIG_SYSFS_SYSCALL=y +CONFIG_FHANDLE=y +CONFIG_POSIX_TIMERS=y +CONFIG_PRINTK=y +CONFIG_BUG=y +CONFIG_ELF_CORE=y +CONFIG_PCSPKR_PLATFORM=y +CONFIG_FUTEX=y +CONFIG_FUTEX_PI=y +CONFIG_EPOLL=y +CONFIG_SIGNALFD=y +CONFIG_TIMERFD=y +CONFIG_EVENTFD=y +CONFIG_SHMEM=y +CONFIG_AIO=y +CONFIG_IO_URING=y +CONFIG_ADVISE_SYSCALLS=y +CONFIG_MEMBARRIER=y +CONFIG_KALLSYMS=y +# CONFIG_KALLSYMS_ALL is not set +CONFIG_KALLSYMS_ABSOLUTE_PERCPU=y +# CONFIG_USERFAULTFD is not set +CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y +CONFIG_RSEQ=y +CONFIG_HAVE_PERF_EVENTS=y + +# +# Kernel Performance Events And Counters +# +CONFIG_PERF_EVENTS=y +# CONFIG_DEBUG_PERF_USE_VMALLOC is not set +# end of Kernel Performance Events And Counters + +CONFIG_VM_EVENT_COUNTERS=y +CONFIG_SLUB_DEBUG=y +# CONFIG_COMPAT_BRK is not set +CONFIG_SLUB=y +CONFIG_SLAB_MERGE_DEFAULT=y +# CONFIG_SLAB_FREELIST_RANDOM is not set +# CONFIG_SLAB_FREELIST_HARDENED is not set +# CONFIG_SHUFFLE_PAGE_ALLOCATOR is not set +CONFIG_SLUB_CPU_PARTIAL=y +CONFIG_PROFILING=y +CONFIG_TRACEPOINTS=y +# end of General setup + +CONFIG_64BIT=y +CONFIG_X86_64=y +CONFIG_X86=y +CONFIG_INSTRUCTION_DECODER=y +CONFIG_OUTPUT_FORMAT="elf64-x86-64" +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_MMU=y +CONFIG_ARCH_MMAP_RND_BITS_MIN=28 +CONFIG_ARCH_MMAP_RND_BITS_MAX=32 +CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=8 +CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=16 +CONFIG_GENERIC_ISA_DMA=y +CONFIG_GENERIC_BUG=y +CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y +CONFIG_ARCH_MAY_HAVE_PC_FDC=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_ARCH_HAS_CPU_RELAX=y +CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y +CONFIG_ARCH_HAS_PTE_DEVMAP=y +CONFIG_HAVE_SETUP_PER_CPU_AREA=y +CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y +CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y +CONFIG_ARCH_HIBERNATION_POSSIBLE=y +CONFIG_ARCH_SUSPEND_POSSIBLE=y +CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y +CONFIG_ARCH_WANT_GENERAL_HUGETLB=y +CONFIG_ZONE_DMA32=y +CONFIG_AUDIT_ARCH=y +CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y +CONFIG_HAVE_INTEL_TXT=y +CONFIG_X86_64_SMP=y +CONFIG_ARCH_SUPPORTS_UPROBES=y +CONFIG_FIX_EARLYCON_MEM=y +CONFIG_PGTABLE_LEVELS=4 +CONFIG_CC_HAS_SANE_STACKPROTECTOR=y + +# +# Processor type and features +# +CONFIG_ZONE_DMA=y +CONFIG_SMP=y +CONFIG_X86_X2APIC=y +CONFIG_X86_MPPARSE=y +# CONFIG_GOLDFISH is not set +# CONFIG_MITIGATION_RETPOLINE is not set +# CONFIG_X86_CPU_RESCTRL is not set +CONFIG_X86_EXTENDED_PLATFORM=y +# CONFIG_X86_NUMACHIP is not set +# CONFIG_X86_VSMP is not set +# CONFIG_X86_UV is not set +# CONFIG_X86_GOLDFISH is not set +# CONFIG_X86_INTEL_MID is not set +# CONFIG_X86_INTEL_LPSS is not set +# CONFIG_X86_AMD_PLATFORM_DEVICE is not set +CONFIG_IOSF_MBI=y +# CONFIG_IOSF_MBI_DEBUG is not set +CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y +CONFIG_SCHED_OMIT_FRAME_POINTER=y +CONFIG_HYPERVISOR_GUEST=y +# CONFIG_PARAVIRT is not set +# CONFIG_PVH is not set +# CONFIG_JAILHOUSE_GUEST is not set +# CONFIG_MK8 is not set +# CONFIG_MPSC is not set +# CONFIG_MCORE2 is not set +# CONFIG_MATOM is not set +CONFIG_GENERIC_CPU=y +CONFIG_X86_INTERNODE_CACHE_SHIFT=6 +CONFIG_X86_L1_CACHE_SHIFT=6 +CONFIG_X86_TSC=y +CONFIG_X86_CMPXCHG64=y +CONFIG_X86_CMOV=y +CONFIG_X86_MINIMUM_CPU_FAMILY=64 +CONFIG_X86_DEBUGCTLMSR=y +CONFIG_CPU_SUP_INTEL=y +CONFIG_CPU_SUP_AMD=y +CONFIG_CPU_SUP_HYGON=y +CONFIG_CPU_SUP_CENTAUR=y +CONFIG_HPET_TIMER=y +CONFIG_HPET_EMULATE_RTC=y +CONFIG_DMI=y +# CONFIG_GART_IOMMU is not set +# CONFIG_MAXSMP is not set +CONFIG_NR_CPUS_RANGE_BEGIN=2 +CONFIG_NR_CPUS_RANGE_END=512 +CONFIG_NR_CPUS_DEFAULT=64 +CONFIG_NR_CPUS=64 +CONFIG_SCHED_SMT=y +CONFIG_SCHED_MC=y +CONFIG_SCHED_MC_PRIO=y +CONFIG_X86_LOCAL_APIC=y +CONFIG_X86_IO_APIC=y +CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y +CONFIG_X86_MCE=y +# CONFIG_X86_MCELOG_LEGACY is not set +CONFIG_X86_MCE_INTEL=y +CONFIG_X86_MCE_AMD=y +CONFIG_X86_MCE_THRESHOLD=y +# CONFIG_X86_MCE_INJECT is not set +CONFIG_X86_THERMAL_VECTOR=y + +# +# Performance monitoring +# +CONFIG_PERF_EVENTS_INTEL_UNCORE=y +CONFIG_PERF_EVENTS_INTEL_RAPL=y +CONFIG_PERF_EVENTS_INTEL_CSTATE=y +# CONFIG_PERF_EVENTS_AMD_POWER is not set +# end of Performance monitoring + +CONFIG_X86_16BIT=y +CONFIG_X86_ESPFIX64=y +CONFIG_X86_VSYSCALL_EMULATION=y +# CONFIG_I8K is not set +CONFIG_MICROCODE=y +CONFIG_X86_MSR=y +CONFIG_X86_CPUID=y +# CONFIG_X86_5LEVEL is not set +CONFIG_X86_DIRECT_GBPAGES=y +# CONFIG_X86_CPA_STATISTICS is not set +CONFIG_ARCH_HAS_MEM_ENCRYPT=y +# CONFIG_AMD_MEM_ENCRYPT is not set +CONFIG_NUMA=y +CONFIG_AMD_NUMA=y +CONFIG_X86_64_ACPI_NUMA=y +# CONFIG_NUMA_EMU is not set +CONFIG_NODES_SHIFT=6 +CONFIG_ARCH_SPARSEMEM_ENABLE=y +CONFIG_ARCH_SPARSEMEM_DEFAULT=y +CONFIG_ARCH_PROC_KCORE_TEXT=y +CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000 +# CONFIG_X86_PMEM_LEGACY is not set +CONFIG_X86_CHECK_BIOS_CORRUPTION=y +CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y +CONFIG_MTRR=y +# CONFIG_MTRR_SANITIZER is not set +CONFIG_X86_PAT=y +CONFIG_X86_UMIP=y +CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS=y +CONFIG_EFI=y +# CONFIG_EFI_STUB is not set +CONFIG_SECCOMP=y +# CONFIG_HZ_100 is not set +# CONFIG_HZ_250 is not set +# CONFIG_HZ_300 is not set +CONFIG_HZ_1000=y +CONFIG_HZ=1000 +CONFIG_SCHED_HRTICK=y +CONFIG_KEXEC=y +# CONFIG_KEXEC_FILE is not set +CONFIG_CRASH_DUMP=y +# CONFIG_KEXEC_JUMP is not set +CONFIG_PHYSICAL_START=0x1000000 +CONFIG_RELOCATABLE=y +# CONFIG_RANDOMIZE_BASE is not set +CONFIG_PHYSICAL_ALIGN=0x200000 +CONFIG_HOTPLUG_CPU=y +# CONFIG_COMPAT_VDSO is not set +# CONFIG_LEGACY_VSYSCALL_NONE is not set +# CONFIG_CMDLINE_BOOL is not set +CONFIG_MODIFY_LDT_SYSCALL=y +CONFIG_HAVE_LIVEPATCH=y +# end of Processor type and features + +CONFIG_ARCH_HAS_ADD_PAGES=y +CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y +CONFIG_USE_PERCPU_NUMA_NODE_ID=y +CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y +CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION=y + +# +# Power management and ACPI options +# +CONFIG_ARCH_HIBERNATION_HEADER=y +CONFIG_SUSPEND=y +CONFIG_SUSPEND_FREEZER=y +CONFIG_HIBERNATE_CALLBACKS=y +CONFIG_HIBERNATION=y +CONFIG_PM_STD_PARTITION="" +CONFIG_PM_SLEEP=y +CONFIG_PM_SLEEP_SMP=y +# CONFIG_PM_AUTOSLEEP is not set +# CONFIG_PM_WAKELOCKS is not set +CONFIG_PM=y +CONFIG_PM_DEBUG=y +# CONFIG_PM_ADVANCED_DEBUG is not set +# CONFIG_PM_TEST_SUSPEND is not set +CONFIG_PM_SLEEP_DEBUG=y +CONFIG_PM_TRACE=y +CONFIG_PM_TRACE_RTC=y +CONFIG_PM_CLK=y +# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set +# CONFIG_ENERGY_MODEL is not set +CONFIG_ARCH_SUPPORTS_ACPI=y +CONFIG_ACPI=y +CONFIG_ACPI_LEGACY_TABLES_LOOKUP=y +CONFIG_ARCH_MIGHT_HAVE_ACPI_PDC=y +CONFIG_ACPI_SYSTEM_POWER_STATES_SUPPORT=y +# CONFIG_ACPI_DEBUGGER is not set +CONFIG_ACPI_SPCR_TABLE=y +CONFIG_ACPI_LPIT=y +CONFIG_ACPI_SLEEP=y +CONFIG_ACPI_REV_OVERRIDE_POSSIBLE=y +# CONFIG_ACPI_EC_DEBUGFS is not set +CONFIG_ACPI_AC=y +CONFIG_ACPI_BATTERY=y +CONFIG_ACPI_BUTTON=y +# CONFIG_ACPI_VIDEO is not set +CONFIG_ACPI_FAN=y +# CONFIG_ACPI_TAD is not set +CONFIG_ACPI_DOCK=y +CONFIG_ACPI_CPU_FREQ_PSS=y +CONFIG_ACPI_PROCESSOR_CSTATE=y +CONFIG_ACPI_PROCESSOR_IDLE=y +CONFIG_ACPI_CPPC_LIB=y +CONFIG_ACPI_PROCESSOR=y +# CONFIG_ACPI_IPMI is not set +CONFIG_ACPI_HOTPLUG_CPU=y +# CONFIG_ACPI_PROCESSOR_AGGREGATOR is not set +CONFIG_ACPI_THERMAL=y +CONFIG_ACPI_NUMA=y +CONFIG_ARCH_HAS_ACPI_TABLE_UPGRADE=y +CONFIG_ACPI_TABLE_UPGRADE=y +# CONFIG_ACPI_DEBUG is not set +# CONFIG_ACPI_PCI_SLOT is not set +CONFIG_ACPI_CONTAINER=y +CONFIG_ACPI_HOTPLUG_IOAPIC=y +# CONFIG_ACPI_SBS is not set +# CONFIG_ACPI_HED is not set +# CONFIG_ACPI_BGRT is not set +# CONFIG_ACPI_NFIT is not set +# CONFIG_ACPI_HMAT is not set +CONFIG_HAVE_ACPI_APEI=y +CONFIG_HAVE_ACPI_APEI_NMI=y +# CONFIG_ACPI_APEI is not set +# CONFIG_DPTF_POWER is not set +# CONFIG_ACPI_EXTLOG is not set +# CONFIG_PMIC_OPREGION is not set +# CONFIG_ACPI_CONFIGFS is not set +CONFIG_X86_PM_TIMER=y + +# +# CPU Frequency scaling +# +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_GOV_ATTR_SET=y +CONFIG_CPU_FREQ_GOV_COMMON=y +# CONFIG_CPU_FREQ_STAT is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL is not set +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set +CONFIG_CPU_FREQ_GOV_USERSPACE=y +CONFIG_CPU_FREQ_GOV_ONDEMAND=y +# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set +CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y + +# +# CPU frequency scaling drivers +# +CONFIG_X86_INTEL_PSTATE=y +# CONFIG_X86_PCC_CPUFREQ is not set +CONFIG_X86_ACPI_CPUFREQ=y +CONFIG_X86_ACPI_CPUFREQ_CPB=y +# CONFIG_X86_POWERNOW_K8 is not set +# CONFIG_X86_AMD_FREQ_SENSITIVITY is not set +# CONFIG_X86_SPEEDSTEP_CENTRINO is not set +# CONFIG_X86_P4_CLOCKMOD is not set + +# +# shared options +# +# end of CPU Frequency scaling + +# +# CPU Idle +# +CONFIG_CPU_IDLE=y +# CONFIG_CPU_IDLE_GOV_LADDER is not set +CONFIG_CPU_IDLE_GOV_MENU=y +# CONFIG_CPU_IDLE_GOV_TEO is not set +# end of CPU Idle + +# CONFIG_INTEL_IDLE is not set +# end of Power management and ACPI options + +# +# Bus options (PCI etc.) +# +CONFIG_PCI_DIRECT=y +CONFIG_PCI_MMCONFIG=y +CONFIG_MMCONF_FAM10H=y +CONFIG_ISA_DMA_API=y +CONFIG_AMD_NB=y +# end of Bus options (PCI etc.) + +# +# Binary Emulations +# +CONFIG_IA32_EMULATION=y +# CONFIG_X86_X32_ABI is not set +CONFIG_COMPAT_32=y +CONFIG_COMPAT=y +CONFIG_COMPAT_FOR_U64_ALIGNMENT=y +CONFIG_SYSVIPC_COMPAT=y +# end of Binary Emulations + +# +# Firmware Drivers +# +# CONFIG_EDD is not set +CONFIG_FIRMWARE_MEMMAP=y +CONFIG_DMIID=y +# CONFIG_DMI_SYSFS is not set +CONFIG_DMI_SCAN_MACHINE_NON_EFI_FALLBACK=y +# CONFIG_FW_CFG_SYSFS is not set +# CONFIG_SYSFB_SIMPLEFB is not set +# CONFIG_GOOGLE_FIRMWARE is not set + +# +# EFI (Extensible Firmware Interface) Support +# +CONFIG_EFI_ESRT=y +CONFIG_EFI_RUNTIME_MAP=y +CONFIG_EFI_RUNTIME_WRAPPERS=y +# CONFIG_EFI_BOOTLOADER_CONTROL is not set +# CONFIG_EFI_CAPSULE_LOADER is not set +# CONFIG_EFI_TEST is not set +# end of EFI (Extensible Firmware Interface) Support + +CONFIG_EFI_EARLYCON=y + +# +# Tegra firmware driver +# +# end of Tegra firmware driver +# end of Firmware Drivers + +CONFIG_VIRTUALIZATION=y +# CONFIG_KVM is not set +# CONFIG_VHOST_NET is not set +# CONFIG_VHOST_CROSS_ENDIAN_LEGACY is not set + +# +# General architecture-dependent options +# +CONFIG_KEXEC_CORE=y +CONFIG_HOTPLUG_SMT=y +CONFIG_KPROBES=y +CONFIG_JUMP_LABEL=y +# CONFIG_STATIC_KEYS_SELFTEST is not set +CONFIG_OPTPROBES=y +CONFIG_UPROBES=y +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y +CONFIG_ARCH_USE_BUILTIN_BSWAP=y +CONFIG_KRETPROBES=y +CONFIG_HAVE_IOREMAP_PROT=y +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KRETPROBES=y +CONFIG_HAVE_OPTPROBES=y +CONFIG_HAVE_KPROBES_ON_FTRACE=y +CONFIG_HAVE_FUNCTION_ERROR_INJECTION=y +CONFIG_HAVE_NMI=y +CONFIG_HAVE_ARCH_TRACEHOOK=y +CONFIG_HAVE_DMA_CONTIGUOUS=y +CONFIG_GENERIC_SMP_IDLE_THREAD=y +CONFIG_ARCH_HAS_FORTIFY_SOURCE=y +CONFIG_ARCH_HAS_SET_MEMORY=y +CONFIG_ARCH_HAS_SET_DIRECT_MAP=y +CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y +CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT=y +CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y +CONFIG_HAVE_RSEQ=y +CONFIG_HAVE_FUNCTION_ARG_ACCESS_API=y +CONFIG_HAVE_CLK=y +CONFIG_HAVE_HW_BREAKPOINT=y +CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y +CONFIG_HAVE_USER_RETURN_NOTIFIER=y +CONFIG_HAVE_PERF_EVENTS_NMI=y +CONFIG_HAVE_HARDLOCKUP_DETECTOR_PERF=y +CONFIG_HAVE_PERF_REGS=y +CONFIG_HAVE_PERF_USER_STACK_DUMP=y +CONFIG_HAVE_ARCH_JUMP_LABEL=y +CONFIG_HAVE_ARCH_JUMP_LABEL_RELATIVE=y +CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y +CONFIG_HAVE_ALIGNED_STRUCT_PAGE=y +CONFIG_HAVE_CMPXCHG_LOCAL=y +CONFIG_HAVE_CMPXCHG_DOUBLE=y +CONFIG_ARCH_WANT_COMPAT_IPC_PARSE_VERSION=y +CONFIG_ARCH_WANT_OLD_COMPAT_IPC=y +CONFIG_HAVE_ARCH_SECCOMP_FILTER=y +CONFIG_SECCOMP_FILTER=y +CONFIG_HAVE_ARCH_STACKLEAK=y +CONFIG_HAVE_STACKPROTECTOR=y +CONFIG_STACKPROTECTOR=y +CONFIG_STACKPROTECTOR_STRONG=y +CONFIG_HAVE_ARCH_WITHIN_STACK_FRAMES=y +CONFIG_HAVE_CONTEXT_TRACKING_USER=y +CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y +CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y +CONFIG_HAVE_MOVE_PMD=y +CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y +CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD=y +CONFIG_HAVE_ARCH_HUGE_VMAP=y +CONFIG_HAVE_ARCH_SOFT_DIRTY=y +CONFIG_HAVE_MOD_ARCH_SPECIFIC=y +CONFIG_MODULES_USE_ELF_RELA=y +CONFIG_ARCH_HAS_ELF_RANDOMIZE=y +CONFIG_HAVE_ARCH_MMAP_RND_BITS=y +CONFIG_HAVE_EXIT_THREAD=y +CONFIG_ARCH_MMAP_RND_BITS=28 +CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS=y +CONFIG_ARCH_MMAP_RND_COMPAT_BITS=8 +CONFIG_HAVE_ARCH_COMPAT_MMAP_BASES=y +CONFIG_HAVE_STACK_VALIDATION=y +CONFIG_HAVE_RELIABLE_STACKTRACE=y +CONFIG_OLD_SIGSUSPEND3=y +CONFIG_COMPAT_OLD_SIGACTION=y +CONFIG_COMPAT_32BIT_TIME=y +CONFIG_HAVE_ARCH_VMAP_STACK=y +CONFIG_VMAP_STACK=y +CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y +CONFIG_STRICT_KERNEL_RWX=y +CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y +CONFIG_STRICT_MODULE_RWX=y +CONFIG_HAVE_ARCH_PREL32_RELOCATIONS=y +CONFIG_ARCH_USE_MEMREMAP_PROT=y +# CONFIG_LOCK_EVENT_COUNTS is not set + +# +# GCOV-based kernel profiling +# +# CONFIG_GCOV_KERNEL is not set +CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y +# end of GCOV-based kernel profiling + +# end of General architecture-dependent options + +CONFIG_RT_MUTEXES=y +# CONFIG_BASE_SMALL is not set +CONFIG_MODULES=y +# CONFIG_MODULE_FORCE_LOAD is not set +CONFIG_MODULE_UNLOAD=y +CONFIG_MODULE_FORCE_UNLOAD=y +# CONFIG_MODVERSIONS is not set +# CONFIG_MODULE_SRCVERSION_ALL is not set +# CONFIG_MODULE_SIG is not set +# CONFIG_MODULE_COMPRESS is not set +# CONFIG_MODULE_COMPRESS_GZIP is not set +# CONFIG_MODULE_COMPRESS_XZ is not set +# CONFIG_MODULE_COMPRESS_ZSTD is not set +# CONFIG_TRIM_UNUSED_KSYMS is not set +CONFIG_MODULES_TREE_LOOKUP=y +CONFIG_BLOCK=y +CONFIG_BLK_DEV_BSG=y +# CONFIG_BLK_DEV_BSGLIB is not set +# CONFIG_BLK_DEV_INTEGRITY is not set +# CONFIG_BLK_DEV_ZONED is not set +# CONFIG_BLK_WBT is not set +CONFIG_BLK_DEBUG_FS=y +# CONFIG_BLK_SED_OPAL is not set + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_AIX_PARTITION is not set +CONFIG_OSF_PARTITION=y +CONFIG_AMIGA_PARTITION=y +# CONFIG_ATARI_PARTITION is not set +CONFIG_MAC_PARTITION=y +CONFIG_MSDOS_PARTITION=y +CONFIG_BSD_DISKLABEL=y +CONFIG_MINIX_SUBPARTITION=y +CONFIG_SOLARIS_X86_PARTITION=y +CONFIG_UNIXWARE_DISKLABEL=y +# CONFIG_LDM_PARTITION is not set +CONFIG_SGI_PARTITION=y +# CONFIG_ULTRIX_PARTITION is not set +CONFIG_SUN_PARTITION=y +CONFIG_KARMA_PARTITION=y +CONFIG_EFI_PARTITION=y +# CONFIG_SYSV68_PARTITION is not set +# CONFIG_CMDLINE_PARTITION is not set +# end of Partition Types + +CONFIG_BLK_MQ_PCI=y +CONFIG_BLK_MQ_VIRTIO=y +CONFIG_BLK_PM=y + +# +# IO Schedulers +# +CONFIG_MQ_IOSCHED_DEADLINE=y +CONFIG_MQ_IOSCHED_KYBER=y +# CONFIG_IOSCHED_BFQ is not set +# end of IO Schedulers + +CONFIG_ASN1=y +CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y +CONFIG_MUTEX_SPIN_ON_OWNER=y +CONFIG_RWSEM_SPIN_ON_OWNER=y +CONFIG_LOCK_SPIN_ON_OWNER=y +CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y +CONFIG_QUEUED_SPINLOCKS=y +CONFIG_ARCH_USE_QUEUED_RWLOCKS=y +CONFIG_QUEUED_RWLOCKS=y +CONFIG_ARCH_HAS_SYNC_CORE_BEFORE_USERMODE=y +CONFIG_ARCH_HAS_SYSCALL_WRAPPER=y + +# +# Executable file formats +# +CONFIG_BINFMT_ELF=y +CONFIG_COMPAT_BINFMT_ELF=y +CONFIG_ELFCORE=y +CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y +CONFIG_BINFMT_SCRIPT=y +CONFIG_BINFMT_MISC=y +CONFIG_COREDUMP=y +# end of Executable file formats + +# +# Memory Management options +# +CONFIG_SPARSEMEM=y +CONFIG_SPARSEMEM_EXTREME=y +CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y +CONFIG_SPARSEMEM_VMEMMAP=y +# CONFIG_MEMORY_HOTPLUG is not set +CONFIG_COMPACTION=y +CONFIG_MIGRATION=y +CONFIG_PHYS_ADDR_T_64BIT=y +# CONFIG_KSM is not set +CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 +CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y +# CONFIG_MEMORY_FAILURE is not set +# CONFIG_TRANSPARENT_HUGEPAGE is not set +CONFIG_ARCH_WANTS_THP_SWAP=y +# CONFIG_CMA is not set +# CONFIG_ZPOOL is not set +# CONFIG_ZBUD is not set +# CONFIG_ZSMALLOC is not set +CONFIG_GENERIC_EARLY_IOREMAP=y +# CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set +# CONFIG_IDLE_PAGE_TRACKING is not set +CONFIG_ARCH_USES_HIGH_VMA_FLAGS=y +CONFIG_ARCH_HAS_PKEYS=y +# CONFIG_PERCPU_STATS is not set +# CONFIG_GUP_TEST is not set +CONFIG_ARCH_HAS_PTE_SPECIAL=y +# end of Memory Management options + +CONFIG_NET=y +CONFIG_NET_INGRESS=y +CONFIG_SKB_EXTENSIONS=y + +# +# Networking options +# +CONFIG_PACKET=y +# CONFIG_PACKET_DIAG is not set +CONFIG_UNIX=y +# CONFIG_UNIX_DIAG is not set +# CONFIG_TLS is not set +# CONFIG_NET_KEY is not set +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=y +# CONFIG_IP_FIB_TRIE_STATS is not set +CONFIG_IP_ROUTE_MULTIPATH=y +CONFIG_IP_ROUTE_VERBOSE=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +CONFIG_IP_PNP_RARP=y +CONFIG_NET_IPIP=y +# CONFIG_NET_IPGRE_DEMUX is not set +CONFIG_NET_IP_TUNNEL=y +CONFIG_IP_MROUTE_COMMON=y +CONFIG_IP_MROUTE=y +# CONFIG_IP_MROUTE_MULTIPLE_TABLES is not set +CONFIG_IP_PIMSM_V1=y +CONFIG_IP_PIMSM_V2=y +CONFIG_SYN_COOKIES=y +# CONFIG_NET_IPVTI is not set +# CONFIG_NET_FOU is not set +# CONFIG_NET_FOU_IP_TUNNELS is not set +CONFIG_INET_TUNNEL=y +# CONFIG_INET_DIAG is not set +CONFIG_TCP_CONG_ADVANCED=y +# CONFIG_TCP_CONG_BIC is not set +CONFIG_TCP_CONG_CUBIC=y +# CONFIG_TCP_CONG_WESTWOOD is not set +# CONFIG_TCP_CONG_HTCP is not set +# CONFIG_TCP_CONG_HSTCP is not set +# CONFIG_TCP_CONG_HYBLA is not set +# CONFIG_TCP_CONG_VEGAS is not set +# CONFIG_TCP_CONG_NV is not set +# CONFIG_TCP_CONG_SCALABLE is not set +# CONFIG_TCP_CONG_LP is not set +# CONFIG_TCP_CONG_VENO is not set +# CONFIG_TCP_CONG_YEAH is not set +# CONFIG_TCP_CONG_ILLINOIS is not set +# CONFIG_TCP_CONG_DCTCP is not set +# CONFIG_TCP_CONG_CDG is not set +# CONFIG_TCP_CONG_BBR is not set +CONFIG_DEFAULT_CUBIC=y +# CONFIG_DEFAULT_RENO is not set +CONFIG_DEFAULT_TCP_CONG="cubic" +CONFIG_TCP_MD5SIG=y +CONFIG_IPV6=y +# CONFIG_IPV6_ROUTER_PREF is not set +# CONFIG_IPV6_OPTIMISTIC_DAD is not set +# CONFIG_INET6_ESP_OFFLOAD is not set +# CONFIG_IPV6_MIP6 is not set +# CONFIG_IPV6_ILA is not set +CONFIG_INET6_TUNNEL=y +# CONFIG_IPV6_VTI is not set +CONFIG_IPV6_SIT=y +# CONFIG_IPV6_SIT_6RD is not set +CONFIG_IPV6_NDISC_NODETYPE=y +CONFIG_IPV6_TUNNEL=y +# CONFIG_IPV6_SUBTREES is not set +# CONFIG_IPV6_MROUTE is not set +# CONFIG_IPV6_SEG6_LWTUNNEL is not set +# CONFIG_IPV6_SEG6_HMAC is not set +CONFIG_NETLABEL=y +CONFIG_NETWORK_SECMARK=y +CONFIG_NET_PTP_CLASSIFY=y +# CONFIG_NETWORK_PHY_TIMESTAMPING is not set +CONFIG_NETFILTER=y +CONFIG_NETFILTER_ADVANCED=y + +# +# Core Netfilter Configuration +# +CONFIG_NETFILTER_INGRESS=y +CONFIG_NETFILTER_NETLINK=y +CONFIG_NETFILTER_NETLINK_LOG=y +CONFIG_NF_CONNTRACK=y +CONFIG_NF_CONNTRACK_SECMARK=y +CONFIG_NF_CONNTRACK_PROCFS=y +# CONFIG_NF_CONNTRACK_LABELS is not set +CONFIG_NF_CONNTRACK_FTP=y +CONFIG_NF_CONNTRACK_IRC=y +# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set +CONFIG_NF_CONNTRACK_SIP=y +CONFIG_NF_CT_NETLINK=y +# CONFIG_NETFILTER_NETLINK_GLUE_CT is not set +# CONFIG_NF_TABLES is not set +CONFIG_NETFILTER_XTABLES=y + +# +# Xtables combined modules +# + +# +# Xtables targets +# +CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=y +# CONFIG_NETFILTER_XT_TARGET_LOG is not set +CONFIG_NETFILTER_XT_TARGET_NFLOG=y +CONFIG_NETFILTER_XT_TARGET_SECMARK=y +CONFIG_NETFILTER_XT_TARGET_TCPMSS=y + +# +# Xtables matches +# +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y +CONFIG_NETFILTER_XT_MATCH_POLICY=y +CONFIG_NETFILTER_XT_MATCH_STATE=y +# end of Core Netfilter Configuration + +# CONFIG_IP_SET is not set + +# +# IP: Netfilter Configuration +# +CONFIG_NF_DEFRAG_IPV4=y +# CONFIG_NF_SOCKET_IPV4 is not set +# CONFIG_NF_TPROXY_IPV4 is not set +# CONFIG_NF_DUP_IPV4 is not set +# CONFIG_NF_LOG_ARP is not set +# CONFIG_NF_LOG_IPV4 is not set +CONFIG_NF_REJECT_IPV4=y +CONFIG_IP_NF_IPTABLES=y +CONFIG_IP_NF_MANGLE=y +# CONFIG_IP_NF_RAW is not set +# end of IP: Netfilter Configuration + +# +# IPv6: Netfilter Configuration +# +# CONFIG_NF_SOCKET_IPV6 is not set +# CONFIG_NF_TPROXY_IPV6 is not set +# CONFIG_NF_DUP_IPV6 is not set +CONFIG_NF_REJECT_IPV6=y +# CONFIG_NF_LOG_IPV6 is not set +CONFIG_IP6_NF_IPTABLES=y +CONFIG_IP6_NF_MATCH_IPV6HEADER=y +CONFIG_IP6_NF_FILTER=y +CONFIG_IP6_NF_TARGET_REJECT=y +CONFIG_IP6_NF_MANGLE=y +# CONFIG_IP6_NF_RAW is not set +# end of IPv6: Netfilter Configuration + +CONFIG_NF_DEFRAG_IPV6=y +# CONFIG_IP_DCCP is not set +CONFIG_IP_SCTP=m +CONFIG_SCTP_DEFAULT_COOKIE_HMAC_MD5=y +CONFIG_SCTP_COOKIE_HMAC_MD5=y +CONFIG_SCTP_COOKIE_HMAC_SHA1=y +# CONFIG_RDS is not set +# CONFIG_TIPC is not set +# CONFIG_ATM is not set +# CONFIG_L2TP is not set +CONFIG_STP=y +CONFIG_BRIDGE_IGMP_SNOOPING=y +CONFIG_BRIDGE_VLAN_FILTERING=y +# CONFIG_NET_DSA is not set +CONFIG_VLAN_8021Q=y +# CONFIG_VLAN_8021Q_GVRP is not set +# CONFIG_VLAN_8021Q_MVRP is not set +CONFIG_LLC=y +# CONFIG_LLC2 is not set +# CONFIG_ATALK is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_PHONET is not set +# CONFIG_6LOWPAN is not set +# CONFIG_IEEE802154 is not set +CONFIG_NET_SCHED=y + +# +# Queueing/Scheduling +# +# CONFIG_NET_SCH_HTB is not set +# CONFIG_NET_SCH_HFSC is not set +# CONFIG_NET_SCH_PRIO is not set +# CONFIG_NET_SCH_MULTIQ is not set +# CONFIG_NET_SCH_RED is not set +# CONFIG_NET_SCH_SFB is not set +# CONFIG_NET_SCH_SFQ is not set +# CONFIG_NET_SCH_TEQL is not set +# CONFIG_NET_SCH_TBF is not set +# CONFIG_NET_SCH_CBS is not set +# CONFIG_NET_SCH_ETF is not set +# CONFIG_NET_SCH_TAPRIO is not set +# CONFIG_NET_SCH_GRED is not set +# CONFIG_NET_SCH_NETEM is not set +# CONFIG_NET_SCH_DRR is not set +# CONFIG_NET_SCH_MQPRIO is not set +# CONFIG_NET_SCH_SKBPRIO is not set +# CONFIG_NET_SCH_CHOKE is not set +# CONFIG_NET_SCH_QFQ is not set +# CONFIG_NET_SCH_CODEL is not set +# CONFIG_NET_SCH_FQ_CODEL is not set +# CONFIG_NET_SCH_CAKE is not set +# CONFIG_NET_SCH_FQ is not set +# CONFIG_NET_SCH_HHF is not set +# CONFIG_NET_SCH_PIE is not set +# CONFIG_NET_SCH_PLUG is not set +# CONFIG_NET_SCH_DEFAULT is not set + +# +# Classification +# +CONFIG_NET_CLS=y +# CONFIG_NET_CLS_BASIC is not set +# CONFIG_NET_CLS_ROUTE4 is not set +# CONFIG_NET_CLS_FW is not set +# CONFIG_NET_CLS_U32 is not set +# CONFIG_NET_CLS_FLOW is not set +# CONFIG_NET_CLS_BPF is not set +# CONFIG_NET_CLS_FLOWER is not set +# CONFIG_NET_CLS_MATCHALL is not set +CONFIG_NET_EMATCH=y +CONFIG_NET_EMATCH_STACK=32 +# CONFIG_NET_EMATCH_CMP is not set +# CONFIG_NET_EMATCH_NBYTE is not set +# CONFIG_NET_EMATCH_U32 is not set +# CONFIG_NET_EMATCH_META is not set +# CONFIG_NET_EMATCH_TEXT is not set +# CONFIG_NET_EMATCH_IPT is not set +CONFIG_NET_CLS_ACT=y +# CONFIG_NET_ACT_GACT is not set +# CONFIG_NET_ACT_MIRRED is not set +# CONFIG_NET_ACT_SAMPLE is not set +# CONFIG_NET_ACT_NAT is not set +# CONFIG_NET_ACT_PEDIT is not set +# CONFIG_NET_ACT_SIMP is not set +# CONFIG_NET_ACT_SKBEDIT is not set +# CONFIG_NET_ACT_CSUM is not set +# CONFIG_NET_ACT_VLAN is not set +# CONFIG_NET_ACT_BPF is not set +# CONFIG_NET_ACT_SKBMOD is not set +# CONFIG_NET_ACT_IFE is not set +# CONFIG_NET_ACT_TUNNEL_KEY is not set +CONFIG_NET_SCH_FIFO=y +CONFIG_DNS_RESOLVER=y +# CONFIG_BATMAN_ADV is not set +# CONFIG_VSOCKETS is not set +CONFIG_NETLINK_DIAG=y +# CONFIG_HSR is not set +CONFIG_NET_SWITCHDEV=y +# CONFIG_NET_NCSI is not set +CONFIG_RPS=y +CONFIG_RFS_ACCEL=y +CONFIG_XPS=y +CONFIG_NET_RX_BUSY_POLL=y +CONFIG_BQL=y +CONFIG_NET_FLOW_LIMIT=y + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set +# CONFIG_NET_DROP_MONITOR is not set +# end of Network testing +# end of Networking options + +CONFIG_HAMRADIO=y + +# +# Packet Radio protocols +# +# CONFIG_AX25 is not set +# CONFIG_CAN is not set +# CONFIG_BT is not set +# CONFIG_AF_RXRPC is not set +# CONFIG_AF_KCM is not set +CONFIG_FIB_RULES=y +# CONFIG_WIRELESS is not set +CONFIG_RFKILL=y +CONFIG_RFKILL_LEDS=y +CONFIG_RFKILL_INPUT=y +# CONFIG_RFKILL_GPIO is not set +# CONFIG_NET_9P is not set +# CONFIG_CAIF is not set +# CONFIG_CEPH_LIB is not set +# CONFIG_NFC is not set +# CONFIG_PSAMPLE is not set +# CONFIG_NET_IFE is not set +# CONFIG_LWTUNNEL is not set +CONFIG_DST_CACHE=y +CONFIG_GRO_CELLS=y +CONFIG_FAILOVER=y +CONFIG_HAVE_EBPF_JIT=y + +# +# Device Drivers +# +# CONFIG_EISA is not set +CONFIG_HAVE_PCI=y +CONFIG_PCI=y +CONFIG_PCI_DOMAINS=y +CONFIG_PCIEPORTBUS=y +CONFIG_PCIEAER=y +# CONFIG_PCIEAER_INJECT is not set +# CONFIG_PCIE_ECRC is not set +CONFIG_PCIEASPM=y +CONFIG_PCIEASPM_DEFAULT=y +# CONFIG_PCIEASPM_POWERSAVE is not set +# CONFIG_PCIEASPM_POWER_SUPERSAVE is not set +# CONFIG_PCIEASPM_PERFORMANCE is not set +CONFIG_PCIE_PME=y +# CONFIG_PCIE_DPC is not set +# CONFIG_PCIE_PTM is not set +CONFIG_PCI_MSI=y +CONFIG_PCI_QUIRKS=y +# CONFIG_PCI_DEBUG is not set +# CONFIG_PCI_STUB is not set +CONFIG_PCI_ATS=y +CONFIG_PCI_LOCKLESS_CONFIG=y +CONFIG_PCI_PRI=y +CONFIG_PCI_PASID=y +CONFIG_PCI_LABEL=y +CONFIG_HOTPLUG_PCI=y +# CONFIG_HOTPLUG_PCI_CPCI is not set +# CONFIG_HOTPLUG_PCI_SHPC is not set + +# +# PCI controller drivers +# + +# +# Cadence PCIe controllers support +# +# end of Cadence PCIe controllers support + +# CONFIG_VMD is not set + +# +# DesignWare PCI Core Support +# +# CONFIG_PCIE_DW_PLAT_HOST is not set +# CONFIG_PCI_MESON is not set +# end of DesignWare PCI Core Support +# end of PCI controller drivers + +# +# PCI Endpoint +# +# CONFIG_PCI_ENDPOINT is not set +# end of PCI Endpoint + +# +# PCI switch controller drivers +# +# CONFIG_PCI_SW_SWITCHTEC is not set +# end of PCI switch controller drivers + +CONFIG_PCCARD=y +CONFIG_PCMCIA=y +CONFIG_PCMCIA_LOAD_CIS=y +CONFIG_CARDBUS=y + +# +# PC-card bridges +# +CONFIG_YENTA=y +CONFIG_YENTA_O2=y +CONFIG_YENTA_RICOH=y +CONFIG_YENTA_TI=y +CONFIG_YENTA_ENE_TUNE=y +CONFIG_YENTA_TOSHIBA=y +# CONFIG_PD6729 is not set +# CONFIG_I82092 is not set +CONFIG_PCCARD_NONSTATIC=y +# CONFIG_RAPIDIO is not set + +# +# Generic Driver Options +# +CONFIG_UEVENT_HELPER=y +CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_STANDALONE=y +CONFIG_PREVENT_FIRMWARE_BUILD=y + +# +# Firmware loader +# +CONFIG_FW_LOADER=y +CONFIG_EXTRA_FIRMWARE="" +# CONFIG_FW_LOADER_USER_HELPER is not set +# end of Firmware loader + +CONFIG_ALLOW_DEV_COREDUMP=y +# CONFIG_DEBUG_DRIVER is not set +CONFIG_DEBUG_DEVRES=y +# CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set +# CONFIG_TEST_ASYNC_DRIVER_PROBE is not set +CONFIG_GENERIC_CPU_AUTOPROBE=y +CONFIG_GENERIC_CPU_VULNERABILITIES=y +CONFIG_DMA_SHARED_BUFFER=y +# CONFIG_DMA_FENCE_TRACE is not set +# end of Generic Driver Options + +# +# Bus devices +# +# end of Bus devices + +CONFIG_CONNECTOR=y +CONFIG_PROC_EVENTS=y +# CONFIG_GNSS is not set +# CONFIG_MTD is not set +# CONFIG_OF is not set +CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y +# CONFIG_PARPORT is not set +CONFIG_PNP=y +CONFIG_PNP_DEBUG_MESSAGES=y + +# +# Protocols +# +CONFIG_PNPACPI=y +CONFIG_BLK_DEV=y +# CONFIG_BLK_DEV_NULL_BLK is not set +# CONFIG_BLK_DEV_FD is not set +CONFIG_CDROM=y +# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 +# CONFIG_BLK_DEV_DRBD is not set +# CONFIG_BLK_DEV_NBD is not set +# CONFIG_BLK_DEV_RAM is not set +# CONFIG_CDROM_PKTCDVD is not set +# CONFIG_ATA_OVER_ETH is not set +CONFIG_VIRTIO_BLK=y +# CONFIG_BLK_DEV_RBD is not set + +# +# NVME Support +# +CONFIG_NVME_CORE=y +CONFIG_BLK_DEV_NVME=y +# CONFIG_NVME_FC is not set +# end of NVME Support + +# +# Misc devices +# +# CONFIG_AD525X_DPOT is not set +# CONFIG_DUMMY_IRQ is not set +# CONFIG_IBM_ASM is not set +# CONFIG_PHANTOM is not set +# CONFIG_TIFM_CORE is not set +# CONFIG_ICS932S401 is not set +# CONFIG_ENCLOSURE_SERVICES is not set +# CONFIG_HP_ILO is not set +# CONFIG_APDS9802ALS is not set +# CONFIG_ISL29003 is not set +# CONFIG_ISL29020 is not set +# CONFIG_SENSORS_TSL2550 is not set +# CONFIG_SENSORS_BH1770 is not set +# CONFIG_SENSORS_APDS990X is not set +# CONFIG_HMC6352 is not set +# CONFIG_DS1682 is not set +# CONFIG_LATTICE_ECP3_CONFIG is not set +# CONFIG_SRAM is not set +# CONFIG_PCI_ENDPOINT_TEST is not set +# CONFIG_PVPANIC is not set +# CONFIG_C2PORT is not set + +# +# EEPROM support +# +CONFIG_EEPROM_AT24=y +CONFIG_EEPROM_AT25=y +# CONFIG_EEPROM_MAX6875 is not set +# CONFIG_EEPROM_93CX6 is not set +# CONFIG_EEPROM_93XX46 is not set +# CONFIG_EEPROM_IDT_89HPESX is not set +# CONFIG_EEPROM_EE1004 is not set +# end of EEPROM support + +# CONFIG_CB710_CORE is not set + +# +# Texas Instruments shared transport line discipline +# +# CONFIG_TI_ST is not set +# end of Texas Instruments shared transport line discipline + +# CONFIG_SENSORS_LIS3_I2C is not set +# CONFIG_ALTERA_STAPL is not set +# CONFIG_INTEL_MEI_TXE is not set +# CONFIG_INTEL_MEI_HDCP is not set +# CONFIG_VMWARE_VMCI is not set +# CONFIG_GENWQE is not set +# CONFIG_ECHO is not set +# CONFIG_MISC_ALCOR_PCI is not set +# CONFIG_MISC_RTSX_PCI is not set +# CONFIG_MISC_RTSX_USB is not set +# end of Misc devices + +# +# SCSI device support +# +CONFIG_SCSI_MOD=y +# CONFIG_RAID_ATTRS is not set +CONFIG_SCSI_COMMON=y +CONFIG_SCSI=y +CONFIG_SCSI_DMA=y +CONFIG_SCSI_PROC_FS=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=y +# CONFIG_CHR_DEV_ST is not set +CONFIG_BLK_DEV_SR=y +CONFIG_CHR_DEV_SG=y +# CONFIG_CHR_DEV_SCH is not set +CONFIG_SCSI_CONSTANTS=y +# CONFIG_SCSI_LOGGING is not set +# CONFIG_SCSI_SCAN_ASYNC is not set + +# +# SCSI Transports +# +CONFIG_SCSI_SPI_ATTRS=y +# CONFIG_SCSI_FC_ATTRS is not set +# CONFIG_SCSI_ISCSI_ATTRS is not set +# CONFIG_SCSI_SAS_ATTRS is not set +# CONFIG_SCSI_SAS_LIBSAS is not set +# CONFIG_SCSI_SRP_ATTRS is not set +# end of SCSI Transports + +# CONFIG_SCSI_LOWLEVEL is not set +# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set +# CONFIG_SCSI_DH is not set +# end of SCSI device support + +CONFIG_ATA=y +CONFIG_ATA_VERBOSE_ERROR=y +CONFIG_ATA_ACPI=y +# CONFIG_SATA_ZPODD is not set +CONFIG_SATA_PMP=y + +# +# Controllers with non-SFF native interface +# +CONFIG_SATA_AHCI=y +CONFIG_SATA_MOBILE_LPM_POLICY=0 +# CONFIG_SATA_AHCI_PLATFORM is not set +# CONFIG_SATA_INIC162X is not set +# CONFIG_SATA_ACARD_AHCI is not set +# CONFIG_SATA_SIL24 is not set +CONFIG_ATA_SFF=y + +# +# SFF controllers with custom DMA interface +# +# CONFIG_PDC_ADMA is not set +# CONFIG_SATA_QSTOR is not set +# CONFIG_SATA_SX4 is not set +CONFIG_ATA_BMDMA=y + +# +# SATA SFF controllers with BMDMA +# +CONFIG_ATA_PIIX=y +# CONFIG_SATA_DWC is not set +# CONFIG_SATA_MV is not set +# CONFIG_SATA_NV is not set +# CONFIG_SATA_PROMISE is not set +# CONFIG_SATA_SIL is not set +# CONFIG_SATA_SIS is not set +# CONFIG_SATA_SVW is not set +# CONFIG_SATA_ULI is not set +# CONFIG_SATA_VIA is not set +# CONFIG_SATA_VITESSE is not set + +# +# PATA SFF controllers with BMDMA +# +# CONFIG_PATA_ALI is not set +CONFIG_PATA_AMD=y +# CONFIG_PATA_ARTOP is not set +# CONFIG_PATA_ATIIXP is not set +# CONFIG_PATA_ATP867X is not set +# CONFIG_PATA_CMD64X is not set +# CONFIG_PATA_CYPRESS is not set +# CONFIG_PATA_EFAR is not set +# CONFIG_PATA_HPT366 is not set +# CONFIG_PATA_HPT37X is not set +# CONFIG_PATA_HPT3X2N is not set +# CONFIG_PATA_HPT3X3 is not set +# CONFIG_PATA_IT8213 is not set +# CONFIG_PATA_IT821X is not set +# CONFIG_PATA_JMICRON is not set +# CONFIG_PATA_MARVELL is not set +# CONFIG_PATA_NETCELL is not set +# CONFIG_PATA_NINJA32 is not set +# CONFIG_PATA_NS87415 is not set +CONFIG_PATA_OLDPIIX=y +# CONFIG_PATA_OPTIDMA is not set +# CONFIG_PATA_PDC2027X is not set +# CONFIG_PATA_PDC_OLD is not set +# CONFIG_PATA_RADISYS is not set +# CONFIG_PATA_RDC is not set +CONFIG_PATA_SCH=y +# CONFIG_PATA_SERVERWORKS is not set +# CONFIG_PATA_SIL680 is not set +# CONFIG_PATA_SIS is not set +# CONFIG_PATA_TOSHIBA is not set +# CONFIG_PATA_TRIFLEX is not set +# CONFIG_PATA_VIA is not set +# CONFIG_PATA_WINBOND is not set + +# +# PIO-only SFF controllers +# +# CONFIG_PATA_CMD640_PCI is not set +# CONFIG_PATA_MPIIX is not set +# CONFIG_PATA_NS87410 is not set +# CONFIG_PATA_OPTI is not set +# CONFIG_PATA_PCMCIA is not set +# CONFIG_PATA_RZ1000 is not set + +# +# Generic fallback / legacy drivers +# +# CONFIG_PATA_ACPI is not set +# CONFIG_ATA_GENERIC is not set +# CONFIG_PATA_LEGACY is not set +CONFIG_MD=y +CONFIG_BLK_DEV_MD=y +CONFIG_MD_AUTODETECT=y +# CONFIG_MD_RAID0 is not set +# CONFIG_MD_RAID1 is not set +# CONFIG_MD_RAID10 is not set +# CONFIG_MD_RAID456 is not set +# CONFIG_BCACHE is not set +CONFIG_BLK_DEV_DM_BUILTIN=y +CONFIG_BLK_DEV_DM=y +# CONFIG_DM_DEBUG is not set +# CONFIG_DM_UNSTRIPED is not set +# CONFIG_DM_CRYPT is not set +# CONFIG_DM_SNAPSHOT is not set +# CONFIG_DM_CACHE is not set +# CONFIG_DM_WRITECACHE is not set +# CONFIG_DM_ERA is not set +CONFIG_DM_MIRROR=y +# CONFIG_DM_LOG_USERSPACE is not set +# CONFIG_DM_RAID is not set +CONFIG_DM_ZERO=y +# CONFIG_DM_MULTIPATH is not set +# CONFIG_DM_DELAY is not set +# CONFIG_DM_DUST is not set +# CONFIG_DM_INIT is not set +# CONFIG_DM_UEVENT is not set +# CONFIG_DM_FLAKEY is not set +# CONFIG_DM_VERITY is not set +# CONFIG_DM_SWITCH is not set +# CONFIG_DM_LOG_WRITES is not set +# CONFIG_DM_INTEGRITY is not set +# CONFIG_TARGET_CORE is not set +# CONFIG_FUSION is not set + +# +# IEEE 1394 (FireWire) support +# +# CONFIG_FIREWIRE is not set +# CONFIG_FIREWIRE_NOSY is not set +# end of IEEE 1394 (FireWire) support + +CONFIG_MACINTOSH_DRIVERS=y +CONFIG_MAC_EMUMOUSEBTN=y +CONFIG_NETDEVICES=y +CONFIG_MII=y +CONFIG_NET_CORE=y +CONFIG_BONDING=m +# CONFIG_EQUALIZER is not set +# CONFIG_NET_FC is not set +# CONFIG_IFB is not set +# CONFIG_NET_TEAM is not set +# CONFIG_GENEVE is not set +# CONFIG_GTP is not set +# CONFIG_MACSEC is not set +CONFIG_NETCONSOLE=y +CONFIG_NETPOLL=y +CONFIG_NET_POLL_CONTROLLER=y +# CONFIG_TUN_VNET_CROSS_LE is not set +CONFIG_VETH=y +CONFIG_VIRTIO_NET=y +# CONFIG_NLMON is not set +# CONFIG_ARCNET is not set + +# +# CAIF transport drivers +# + +# +# Distributed Switch Architecture drivers +# +# end of Distributed Switch Architecture drivers + +CONFIG_ETHERNET=y +CONFIG_MDIO=y +CONFIG_NET_VENDOR_3COM=y +# CONFIG_PCMCIA_3C574 is not set +# CONFIG_PCMCIA_3C589 is not set +# CONFIG_VORTEX is not set +# CONFIG_TYPHOON is not set +CONFIG_NET_VENDOR_ADAPTEC=y +# CONFIG_ADAPTEC_STARFIRE is not set +CONFIG_NET_VENDOR_AGERE=y +# CONFIG_ET131X is not set +CONFIG_NET_VENDOR_ALACRITECH=y +# CONFIG_SLICOSS is not set +CONFIG_NET_VENDOR_ALTEON=y +# CONFIG_ACENIC is not set +# CONFIG_ALTERA_TSE is not set +CONFIG_NET_VENDOR_AMAZON=y +# CONFIG_ENA_ETHERNET is not set +CONFIG_NET_VENDOR_AMD=y +# CONFIG_AMD8111_ETH is not set +# CONFIG_PCNET32 is not set +# CONFIG_PCMCIA_NMCLAN is not set +# CONFIG_AMD_XGBE is not set +CONFIG_NET_VENDOR_AQUANTIA=y +# CONFIG_AQTION is not set +CONFIG_NET_VENDOR_ARC=y +CONFIG_NET_VENDOR_ATHEROS=y +# CONFIG_ATL2 is not set +# CONFIG_ATL1 is not set +# CONFIG_ATL1E is not set +# CONFIG_ATL1C is not set +# CONFIG_ALX is not set +CONFIG_NET_VENDOR_BROADCOM=y +# CONFIG_B44 is not set +# CONFIG_BCMGENET is not set +# CONFIG_BNX2 is not set +# CONFIG_CNIC is not set +CONFIG_TIGON3=y +CONFIG_TIGON3_HWMON=y +# CONFIG_BNX2X is not set +# CONFIG_SYSTEMPORT is not set +# CONFIG_BNXT is not set +CONFIG_NET_VENDOR_BROCADE=y +# CONFIG_BNA is not set +CONFIG_NET_VENDOR_CADENCE=y +# CONFIG_MACB is not set +CONFIG_NET_VENDOR_CAVIUM=y +# CONFIG_THUNDER_NIC_PF is not set +# CONFIG_THUNDER_NIC_VF is not set +# CONFIG_THUNDER_NIC_BGX is not set +# CONFIG_THUNDER_NIC_RGX is not set +# CONFIG_CAVIUM_PTP is not set +# CONFIG_LIQUIDIO is not set +# CONFIG_LIQUIDIO_VF is not set +CONFIG_NET_VENDOR_CHELSIO=y +# CONFIG_CHELSIO_T1 is not set +# CONFIG_CHELSIO_T3 is not set +# CONFIG_CHELSIO_T4 is not set +# CONFIG_CHELSIO_T4VF is not set +CONFIG_NET_VENDOR_CISCO=y +# CONFIG_ENIC is not set +CONFIG_NET_VENDOR_CORTINA=y +# CONFIG_CX_ECAT is not set +# CONFIG_DNET is not set +CONFIG_NET_VENDOR_DEC=y +CONFIG_NET_TULIP=y +# CONFIG_DE2104X is not set +# CONFIG_TULIP is not set +# CONFIG_WINBOND_840 is not set +# CONFIG_DM9102 is not set +# CONFIG_ULI526X is not set +# CONFIG_PCMCIA_XIRCOM is not set +CONFIG_NET_VENDOR_DLINK=y +# CONFIG_DL2K is not set +# CONFIG_SUNDANCE is not set +CONFIG_NET_VENDOR_EMULEX=y +# CONFIG_BE2NET is not set +CONFIG_NET_VENDOR_EZCHIP=y +CONFIG_NET_VENDOR_FUJITSU=y +# CONFIG_PCMCIA_FMVJ18X is not set +CONFIG_NET_VENDOR_HUAWEI=y +# CONFIG_HINIC is not set +CONFIG_NET_VENDOR_I825XX=y +CONFIG_NET_VENDOR_INTEL=y +CONFIG_E100=y +CONFIG_E1000=y +CONFIG_E1000E=y +CONFIG_E1000E_HWTS=y +CONFIG_IGB=m +CONFIG_IGB_HWMON=y +CONFIG_IGBVF=y +CONFIG_IXGBE=y +CONFIG_IXGBE_HWMON=y +# CONFIG_IXGBEVF is not set +# CONFIG_I40E is not set +# CONFIG_I40EVF is not set +# CONFIG_FM10K is not set +# CONFIG_IGC is not set +# CONFIG_JME is not set +CONFIG_NET_VENDOR_MARVELL=y +# CONFIG_MVMDIO is not set +# CONFIG_SKGE is not set +CONFIG_SKY2=y +# CONFIG_SKY2_DEBUG is not set +CONFIG_NET_VENDOR_MELLANOX=y +CONFIG_NET_VENDOR_MICREL=y +# CONFIG_KS8842 is not set +# CONFIG_KS8851 is not set +# CONFIG_KS8851_MLL is not set +# CONFIG_KSZ884X_PCI is not set +CONFIG_NET_VENDOR_MICROCHIP=y +# CONFIG_ENC28J60 is not set +# CONFIG_ENCX24J600 is not set +# CONFIG_LAN743X is not set +CONFIG_NET_VENDOR_MICROSEMI=y +CONFIG_NET_VENDOR_MYRI=y +# CONFIG_MYRI10GE is not set +# CONFIG_FEALNX is not set +CONFIG_NET_VENDOR_NATSEMI=y +# CONFIG_NATSEMI is not set +# CONFIG_NS83820 is not set +CONFIG_NET_VENDOR_NETERION=y +# CONFIG_S2IO is not set +CONFIG_NET_VENDOR_NETRONOME=y +# CONFIG_NFP is not set +CONFIG_NET_VENDOR_NI=y +# CONFIG_NI_XGE_MANAGEMENT_ENET is not set +CONFIG_NET_VENDOR_8390=y +# CONFIG_PCMCIA_AXNET is not set +# CONFIG_NE2K_PCI is not set +# CONFIG_PCMCIA_PCNET is not set +CONFIG_NET_VENDOR_NVIDIA=y +CONFIG_FORCEDETH=y +CONFIG_NET_VENDOR_OKI=y +# CONFIG_ETHOC is not set +CONFIG_NET_VENDOR_PACKET_ENGINES=y +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +CONFIG_NET_VENDOR_QLOGIC=y +# CONFIG_QLA3XXX is not set +# CONFIG_QLCNIC is not set +# CONFIG_NETXEN_NIC is not set +# CONFIG_QED is not set +CONFIG_NET_VENDOR_QUALCOMM=y +# CONFIG_QCOM_EMAC is not set +# CONFIG_RMNET is not set +CONFIG_NET_VENDOR_RDC=y +# CONFIG_R6040 is not set +CONFIG_NET_VENDOR_REALTEK=y +# CONFIG_8139CP is not set +CONFIG_8139TOO=y +CONFIG_8139TOO_PIO=y +# CONFIG_8139TOO_TUNE_TWISTER is not set +# CONFIG_8139TOO_8129 is not set +# CONFIG_8139_OLD_RX_RESET is not set +# CONFIG_R8169 is not set +CONFIG_NET_VENDOR_RENESAS=y +CONFIG_NET_VENDOR_ROCKER=y +CONFIG_NET_VENDOR_SAMSUNG=y +# CONFIG_SXGBE_ETH is not set +CONFIG_NET_VENDOR_SEEQ=y +CONFIG_NET_VENDOR_SOLARFLARE=y +# CONFIG_SFC is not set +# CONFIG_SFC_FALCON is not set +CONFIG_NET_VENDOR_SILAN=y +# CONFIG_SC92031 is not set +CONFIG_NET_VENDOR_SIS=y +# CONFIG_SIS900 is not set +# CONFIG_SIS190 is not set +CONFIG_NET_VENDOR_SMSC=y +# CONFIG_PCMCIA_SMC91C92 is not set +# CONFIG_EPIC100 is not set +# CONFIG_SMSC911X is not set +# CONFIG_SMSC9420 is not set +CONFIG_NET_VENDOR_SOCIONEXT=y +CONFIG_NET_VENDOR_STMICRO=y +# CONFIG_STMMAC_ETH is not set +CONFIG_NET_VENDOR_SUN=y +# CONFIG_HAPPYMEAL is not set +# CONFIG_SUNGEM is not set +# CONFIG_CASSINI is not set +# CONFIG_NIU is not set +CONFIG_NET_VENDOR_SYNOPSYS=y +# CONFIG_DWC_XLGMAC is not set +CONFIG_NET_VENDOR_TEHUTI=y +# CONFIG_TEHUTI is not set +CONFIG_NET_VENDOR_TI=y +# CONFIG_TI_CPSW_PHY_SEL is not set +# CONFIG_TLAN is not set +CONFIG_NET_VENDOR_VIA=y +# CONFIG_VIA_RHINE is not set +# CONFIG_VIA_VELOCITY is not set +CONFIG_NET_VENDOR_WIZNET=y +# CONFIG_WIZNET_W5100 is not set +# CONFIG_WIZNET_W5300 is not set +CONFIG_NET_VENDOR_XILINX=y +# CONFIG_XILINX_LL_TEMAC is not set +CONFIG_NET_VENDOR_XIRCOM=y +# CONFIG_PCMCIA_XIRC2PS is not set +CONFIG_FDDI=y +# CONFIG_DEFXX is not set +# CONFIG_SKFP is not set +# CONFIG_HIPPI is not set +# CONFIG_NET_SB1000 is not set +CONFIG_MDIO_DEVICE=y +CONFIG_MDIO_BUS=y +# CONFIG_MDIO_BCM_UNIMAC is not set +# CONFIG_MDIO_BITBANG is not set +# CONFIG_MDIO_MSCC_MIIM is not set +# CONFIG_MDIO_THUNDER is not set +CONFIG_PHYLIB=y +# CONFIG_LED_TRIGGER_PHY is not set + +# +# MII PHY device drivers +# +# CONFIG_AMD_PHY is not set +# CONFIG_AQUANTIA_PHY is not set +# CONFIG_AX88796B_PHY is not set +# CONFIG_AT803X_PHY is not set +# CONFIG_BCM7XXX_PHY is not set +# CONFIG_BCM87XX_PHY is not set +# CONFIG_BROADCOM_PHY is not set +# CONFIG_CICADA_PHY is not set +# CONFIG_CORTINA_PHY is not set +# CONFIG_DAVICOM_PHY is not set +# CONFIG_DP83822_PHY is not set +# CONFIG_DP83TC811_PHY is not set +# CONFIG_DP83848_PHY is not set +# CONFIG_DP83867_PHY is not set +CONFIG_FIXED_PHY=y +# CONFIG_ICPLUS_PHY is not set +# CONFIG_INTEL_XWAY_PHY is not set +# CONFIG_LSI_ET1011C_PHY is not set +# CONFIG_LXT_PHY is not set +# CONFIG_MARVELL_PHY is not set +# CONFIG_MARVELL_10G_PHY is not set +# CONFIG_MICREL_PHY is not set +# CONFIG_MICROCHIP_PHY is not set +# CONFIG_MICROCHIP_T1_PHY is not set +# CONFIG_MICROSEMI_PHY is not set +# CONFIG_NATIONAL_PHY is not set +# CONFIG_QSEMI_PHY is not set +# CONFIG_REALTEK_PHY is not set +# CONFIG_RENESAS_PHY is not set +# CONFIG_ROCKCHIP_PHY is not set +# CONFIG_SMSC_PHY is not set +# CONFIG_STE10XP is not set +# CONFIG_TERANETICS_PHY is not set +# CONFIG_VITESSE_PHY is not set +# CONFIG_XILINX_GMII2RGMII is not set +# CONFIG_MICREL_KS8995MA is not set +CONFIG_PPP=m +CONFIG_PPP_MULTILINK=y +CONFIG_PPP_FILTER=y +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPPOE=m +# CONFIG_SLIP is not set +CONFIG_USB_NET_DRIVERS=y +# CONFIG_USB_CATC is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_RTL8150 is not set +# CONFIG_USB_RTL8152 is not set +# CONFIG_USB_LAN78XX is not set +# CONFIG_USB_HSO is not set +# CONFIG_USB_IPHETH is not set +# CONFIG_WLAN is not set + +# +# Enable WiMAX (Networking options) to see the WiMAX drivers +# +# CONFIG_WAN is not set +# CONFIG_VMXNET3 is not set +# CONFIG_FUJITSU_ES is not set +# CONFIG_NETDEVSIM is not set +CONFIG_NET_FAILOVER=y +# CONFIG_ISDN is not set + +# +# Input device support +# +CONFIG_INPUT=y +CONFIG_INPUT_LEDS=y +CONFIG_INPUT_FF_MEMLESS=y +CONFIG_INPUT_SPARSEKMAP=y +# CONFIG_INPUT_MATRIXKMAP is not set + +# +# Userland interfaces +# +CONFIG_INPUT_MOUSEDEV=y +# CONFIG_INPUT_MOUSEDEV_PSAUX is not set +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +# CONFIG_INPUT_JOYDEV is not set +CONFIG_INPUT_EVDEV=y +# CONFIG_INPUT_EVBUG is not set + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +# CONFIG_KEYBOARD_ADC is not set +# CONFIG_KEYBOARD_ADP5588 is not set +# CONFIG_KEYBOARD_ADP5589 is not set +CONFIG_KEYBOARD_ATKBD=y +# CONFIG_KEYBOARD_QT1050 is not set +# CONFIG_KEYBOARD_QT1070 is not set +# CONFIG_KEYBOARD_QT2160 is not set +# CONFIG_KEYBOARD_DLINK_DIR685 is not set +# CONFIG_KEYBOARD_LKKBD is not set +# CONFIG_KEYBOARD_GPIO is not set +# CONFIG_KEYBOARD_GPIO_POLLED is not set +# CONFIG_KEYBOARD_TCA6416 is not set +# CONFIG_KEYBOARD_TCA8418 is not set +# CONFIG_KEYBOARD_MATRIX is not set +# CONFIG_KEYBOARD_LM8323 is not set +# CONFIG_KEYBOARD_LM8333 is not set +# CONFIG_KEYBOARD_MAX7359 is not set +# CONFIG_KEYBOARD_MPR121 is not set +# CONFIG_KEYBOARD_NEWTON is not set +# CONFIG_KEYBOARD_OPENCORES is not set +# CONFIG_KEYBOARD_SAMSUNG is not set +# CONFIG_KEYBOARD_STOWAWAY is not set +# CONFIG_KEYBOARD_SUNKBD is not set +# CONFIG_KEYBOARD_TM2_TOUCHKEY is not set +# CONFIG_KEYBOARD_XTKBD is not set +CONFIG_INPUT_MOUSE=y +CONFIG_MOUSE_PS2=y +CONFIG_MOUSE_PS2_ALPS=y +CONFIG_MOUSE_PS2_BYD=y +CONFIG_MOUSE_PS2_LOGIPS2PP=y +CONFIG_MOUSE_PS2_SYNAPTICS=y +CONFIG_MOUSE_PS2_SYNAPTICS_SMBUS=y +CONFIG_MOUSE_PS2_CYPRESS=y +CONFIG_MOUSE_PS2_LIFEBOOK=y +CONFIG_MOUSE_PS2_TRACKPOINT=y +# CONFIG_MOUSE_PS2_ELANTECH is not set +# CONFIG_MOUSE_PS2_SENTELIC is not set +# CONFIG_MOUSE_PS2_TOUCHKIT is not set +CONFIG_MOUSE_PS2_FOCALTECH=y +# CONFIG_MOUSE_PS2_VMMOUSE is not set +CONFIG_MOUSE_PS2_SMBUS=y +# CONFIG_MOUSE_SERIAL is not set +# CONFIG_MOUSE_APPLETOUCH is not set +# CONFIG_MOUSE_BCM5974 is not set +# CONFIG_MOUSE_CYAPA is not set +# CONFIG_MOUSE_ELAN_I2C is not set +# CONFIG_MOUSE_VSXXXAA is not set +# CONFIG_MOUSE_GPIO is not set +# CONFIG_MOUSE_SYNAPTICS_I2C is not set +# CONFIG_MOUSE_SYNAPTICS_USB is not set +CONFIG_INPUT_JOYSTICK=y +# CONFIG_JOYSTICK_ANALOG is not set +# CONFIG_JOYSTICK_A3D is not set +# CONFIG_JOYSTICK_ADI is not set +# CONFIG_JOYSTICK_COBRA is not set +# CONFIG_JOYSTICK_GF2K is not set +# CONFIG_JOYSTICK_GRIP is not set +# CONFIG_JOYSTICK_GRIP_MP is not set +# CONFIG_JOYSTICK_GUILLEMOT is not set +# CONFIG_JOYSTICK_INTERACT is not set +# CONFIG_JOYSTICK_SIDEWINDER is not set +# CONFIG_JOYSTICK_TMDC is not set +# CONFIG_JOYSTICK_IFORCE is not set +# CONFIG_JOYSTICK_WARRIOR is not set +# CONFIG_JOYSTICK_MAGELLAN is not set +# CONFIG_JOYSTICK_SPACEORB is not set +# CONFIG_JOYSTICK_SPACEBALL is not set +# CONFIG_JOYSTICK_STINGER is not set +# CONFIG_JOYSTICK_TWIDJOY is not set +# CONFIG_JOYSTICK_ZHENHUA is not set +# CONFIG_JOYSTICK_AS5011 is not set +# CONFIG_JOYSTICK_JOYDUMP is not set +# CONFIG_JOYSTICK_XPAD is not set +# CONFIG_JOYSTICK_PSXPAD_SPI is not set +# CONFIG_JOYSTICK_PXRC is not set +CONFIG_INPUT_TABLET=y +# CONFIG_TABLET_USB_ACECAD is not set +# CONFIG_TABLET_USB_AIPTEK is not set +# CONFIG_TABLET_USB_HANWANG is not set +# CONFIG_TABLET_USB_KBTAB is not set +# CONFIG_TABLET_USB_PEGASUS is not set +# CONFIG_TABLET_SERIAL_WACOM4 is not set +CONFIG_INPUT_TOUCHSCREEN=y +# CONFIG_TOUCHSCREEN_ADS7846 is not set +# CONFIG_TOUCHSCREEN_AD7877 is not set +# CONFIG_TOUCHSCREEN_AD7879 is not set +# CONFIG_TOUCHSCREEN_ADC is not set +# CONFIG_TOUCHSCREEN_ATMEL_MXT is not set +# CONFIG_TOUCHSCREEN_AUO_PIXCIR is not set +# CONFIG_TOUCHSCREEN_BU21013 is not set +# CONFIG_TOUCHSCREEN_BU21029 is not set +# CONFIG_TOUCHSCREEN_CHIPONE_ICN8505 is not set +# CONFIG_TOUCHSCREEN_CY8CTMG110 is not set +# CONFIG_TOUCHSCREEN_CYTTSP_CORE is not set +# CONFIG_TOUCHSCREEN_DYNAPRO is not set +# CONFIG_TOUCHSCREEN_HAMPSHIRE is not set +# CONFIG_TOUCHSCREEN_EETI is not set +# CONFIG_TOUCHSCREEN_EGALAX_SERIAL is not set +# CONFIG_TOUCHSCREEN_EXC3000 is not set +# CONFIG_TOUCHSCREEN_FUJITSU is not set +# CONFIG_TOUCHSCREEN_GOODIX is not set +# CONFIG_TOUCHSCREEN_HIDEEP is not set +# CONFIG_TOUCHSCREEN_ILI210X is not set +# CONFIG_TOUCHSCREEN_S6SY761 is not set +# CONFIG_TOUCHSCREEN_GUNZE is not set +# CONFIG_TOUCHSCREEN_EKTF2127 is not set +# CONFIG_TOUCHSCREEN_ELAN is not set +# CONFIG_TOUCHSCREEN_ELO is not set +# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set +# CONFIG_TOUCHSCREEN_WACOM_I2C is not set +# CONFIG_TOUCHSCREEN_MAX11801 is not set +# CONFIG_TOUCHSCREEN_MMS114 is not set +# CONFIG_TOUCHSCREEN_MELFAS_MIP4 is not set +# CONFIG_TOUCHSCREEN_MTOUCH is not set +# CONFIG_TOUCHSCREEN_INEXIO is not set +# CONFIG_TOUCHSCREEN_MK712 is not set +# CONFIG_TOUCHSCREEN_PENMOUNT is not set +# CONFIG_TOUCHSCREEN_EDT_FT5X06 is not set +# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set +# CONFIG_TOUCHSCREEN_TOUCHWIN is not set +# CONFIG_TOUCHSCREEN_PIXCIR is not set +# CONFIG_TOUCHSCREEN_WDT87XX_I2C is not set +# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set +# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set +# CONFIG_TOUCHSCREEN_TSC_SERIO is not set +# CONFIG_TOUCHSCREEN_TSC2004 is not set +# CONFIG_TOUCHSCREEN_TSC2005 is not set +# CONFIG_TOUCHSCREEN_TSC2007 is not set +# CONFIG_TOUCHSCREEN_RM_TS is not set +# CONFIG_TOUCHSCREEN_SILEAD is not set +# CONFIG_TOUCHSCREEN_SIS_I2C is not set +# CONFIG_TOUCHSCREEN_ST1232 is not set +# CONFIG_TOUCHSCREEN_STMFTS is not set +# CONFIG_TOUCHSCREEN_SURFACE3_SPI is not set +# CONFIG_TOUCHSCREEN_SX8654 is not set +# CONFIG_TOUCHSCREEN_TPS6507X is not set +# CONFIG_TOUCHSCREEN_ZET6223 is not set +# CONFIG_TOUCHSCREEN_ZFORCE is not set +# CONFIG_TOUCHSCREEN_ROHM_BU21023 is not set +# CONFIG_TOUCHSCREEN_IQS5XX is not set +CONFIG_INPUT_MISC=y +# CONFIG_INPUT_AD714X is not set +# CONFIG_INPUT_BMA150 is not set +# CONFIG_INPUT_E3X0_BUTTON is not set +# CONFIG_INPUT_PCSPKR is not set +# CONFIG_INPUT_MMA8450 is not set +# CONFIG_INPUT_APANEL is not set +# CONFIG_INPUT_GPIO_BEEPER is not set +# CONFIG_INPUT_GPIO_DECODER is not set +# CONFIG_INPUT_GPIO_VIBRA is not set +# CONFIG_INPUT_ATLAS_BTNS is not set +# CONFIG_INPUT_ATI_REMOTE2 is not set +# CONFIG_INPUT_KEYSPAN_REMOTE is not set +# CONFIG_INPUT_KXTJ9 is not set +# CONFIG_INPUT_POWERMATE is not set +# CONFIG_INPUT_YEALINK is not set +# CONFIG_INPUT_CM109 is not set +# CONFIG_INPUT_UINPUT is not set +# CONFIG_INPUT_PCF8574 is not set +# CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set +# CONFIG_INPUT_ADXL34X is not set +# CONFIG_INPUT_IMS_PCU is not set +# CONFIG_INPUT_CMA3000 is not set +# CONFIG_INPUT_IDEAPAD_SLIDEBAR is not set +# CONFIG_INPUT_DRV260X_HAPTICS is not set +# CONFIG_INPUT_DRV2665_HAPTICS is not set +# CONFIG_INPUT_DRV2667_HAPTICS is not set +# CONFIG_RMI4_CORE is not set + +# +# Hardware I/O ports +# +CONFIG_SERIO=y +CONFIG_ARCH_MIGHT_HAVE_PC_SERIO=y +CONFIG_SERIO_I8042=y +CONFIG_SERIO_SERPORT=y +# CONFIG_SERIO_CT82C710 is not set +# CONFIG_SERIO_PCIPS2 is not set +CONFIG_SERIO_LIBPS2=y +# CONFIG_SERIO_RAW is not set +# CONFIG_SERIO_ALTERA_PS2 is not set +# CONFIG_SERIO_PS2MULT is not set +# CONFIG_SERIO_ARC_PS2 is not set +# CONFIG_SERIO_GPIO_PS2 is not set +# CONFIG_USERIO is not set +# CONFIG_GAMEPORT is not set +# end of Hardware I/O ports +# end of Input device support + +# +# Character devices +# +CONFIG_TTY=y +CONFIG_VT=y +CONFIG_CONSOLE_TRANSLATIONS=y +CONFIG_VT_CONSOLE=y +CONFIG_VT_CONSOLE_SLEEP=y +CONFIG_VT_HW_CONSOLE_BINDING=y +CONFIG_UNIX98_PTYS=y +# CONFIG_LEGACY_PTYS is not set +CONFIG_SERIAL_NONSTANDARD=y +# CONFIG_MOXA_INTELLIO is not set +# CONFIG_MOXA_SMARTIO is not set +# CONFIG_SYNCLINK_GT is not set +# CONFIG_NOZOMI is not set +# CONFIG_N_HDLC is not set +# CONFIG_N_GSM is not set +# CONFIG_NULL_TTY is not set +CONFIG_LDISC_AUTOLOAD=y +CONFIG_DEVMEM=y + +# +# Serial drivers +# +CONFIG_SERIAL_EARLYCON=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y +CONFIG_SERIAL_8250_PNP=y +# CONFIG_SERIAL_8250_FINTEK is not set +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_DMA=y +CONFIG_SERIAL_8250_PCI=y +CONFIG_SERIAL_8250_EXAR=y +# CONFIG_SERIAL_8250_CS is not set +CONFIG_SERIAL_8250_NR_UARTS=32 +CONFIG_SERIAL_8250_RUNTIME_UARTS=4 +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_MANY_PORTS=y +CONFIG_SERIAL_8250_SHARE_IRQ=y +CONFIG_SERIAL_8250_DETECT_IRQ=y +CONFIG_SERIAL_8250_RSA=y +# CONFIG_SERIAL_8250_DW is not set +# CONFIG_SERIAL_8250_RT288X is not set +CONFIG_SERIAL_8250_LPSS=y +CONFIG_SERIAL_8250_MID=y + +# +# Non-8250 serial port support +# +# CONFIG_SERIAL_MAX3100 is not set +# CONFIG_SERIAL_MAX310X is not set +# CONFIG_SERIAL_UARTLITE is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +# CONFIG_SERIAL_JSM is not set +# CONFIG_SERIAL_SCCNXP is not set +# CONFIG_SERIAL_SC16IS7XX is not set +# CONFIG_SERIAL_ALTERA_JTAGUART is not set +# CONFIG_SERIAL_ALTERA_UART is not set +# CONFIG_SERIAL_ARC is not set +# CONFIG_SERIAL_RP2 is not set +# CONFIG_SERIAL_FSL_LPUART is not set +# end of Serial drivers + +# CONFIG_SERIAL_DEV_BUS is not set +CONFIG_HVC_DRIVER=y +CONFIG_VIRTIO_CONSOLE=y +CONFIG_IPMI_HANDLER=y +CONFIG_IPMI_DMI_DECODE=y +CONFIG_IPMI_PLAT_DATA=y +CONFIG_IPMI_PANIC_EVENT=y +CONFIG_IPMI_PANIC_STRING=y +CONFIG_IPMI_DEVICE_INTERFACE=y +CONFIG_IPMI_SI=y +CONFIG_IPMI_SSIF=y +# CONFIG_IPMI_WATCHDOG is not set +CONFIG_IPMI_POWEROFF=y +CONFIG_HW_RANDOM=y +# CONFIG_HW_RANDOM_TIMERIOMEM is not set +# CONFIG_HW_RANDOM_INTEL is not set +# CONFIG_HW_RANDOM_AMD is not set +CONFIG_HW_RANDOM_VIA=y +CONFIG_HW_RANDOM_VIRTIO=y +CONFIG_NVRAM=y +# CONFIG_APPLICOM is not set + +# +# PCMCIA character devices +# +# CONFIG_IPWIRELESS is not set +# end of PCMCIA character devices + +# CONFIG_MWAVE is not set +CONFIG_HPET=y +# CONFIG_HPET_MMAP is not set +# CONFIG_HANGCHECK_TIMER is not set +# CONFIG_TCG_TPM is not set +# CONFIG_TELCLOCK is not set +CONFIG_DEVPORT=y +# CONFIG_XILLYBUS is not set +# end of Character devices + +# +# I2C support +# +CONFIG_I2C=y +CONFIG_ACPI_I2C_OPREGION=y +CONFIG_I2C_BOARDINFO=y +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_MUX=y + +# +# Multiplexer I2C Chip support +# +# CONFIG_I2C_MUX_GPIO is not set +# CONFIG_I2C_MUX_LTC4306 is not set +CONFIG_I2C_MUX_PCA9541=y +CONFIG_I2C_MUX_PCA954x=y +CONFIG_I2C_MUX_REG=y +CONFIG_I2C_MUX_MLXCPLD=y +# end of Multiplexer I2C Chip support + +CONFIG_I2C_HELPER_AUTO=y +CONFIG_I2C_SMBUS=m +CONFIG_I2C_ALGOBIT=m + +# +# I2C Hardware Bus support +# + +# +# PC SMBus host controller drivers +# +# CONFIG_I2C_ALI1535 is not set +# CONFIG_I2C_ALI1563 is not set +# CONFIG_I2C_ALI15X3 is not set +# CONFIG_I2C_AMD756 is not set +# CONFIG_I2C_AMD8111 is not set +# CONFIG_I2C_AMD_MP2 is not set +CONFIG_I2C_I801=m +CONFIG_I2C_ISCH=y +CONFIG_I2C_ISMT=m +# CONFIG_I2C_PIIX4 is not set +# CONFIG_I2C_NFORCE2 is not set +# CONFIG_I2C_NVIDIA_GPU is not set +# CONFIG_I2C_SIS5595 is not set +# CONFIG_I2C_SIS630 is not set +# CONFIG_I2C_SIS96X is not set +# CONFIG_I2C_VIA is not set +# CONFIG_I2C_VIAPRO is not set + +# +# ACPI drivers +# +# CONFIG_I2C_SCMI is not set + +# +# I2C system bus drivers (mostly embedded / system-on-chip) +# +# CONFIG_I2C_CBUS_GPIO is not set +# CONFIG_I2C_DESIGNWARE_PLATFORM is not set +# CONFIG_I2C_DESIGNWARE_PCI is not set +# CONFIG_I2C_EMEV2 is not set +# CONFIG_I2C_GPIO is not set +# CONFIG_I2C_OCORES is not set +# CONFIG_I2C_PCA_PLATFORM is not set +# CONFIG_I2C_SIMTEC is not set +# CONFIG_I2C_XILINX is not set + +# +# External I2C/SMBus adapter drivers +# +# CONFIG_I2C_DIOLAN_U2C is not set +# CONFIG_I2C_ROBOTFUZZ_OSIF is not set +# CONFIG_I2C_TAOS_EVM is not set +# CONFIG_I2C_TINY_USB is not set + +# +# Other I2C/SMBus bus drivers +# +CONFIG_I2C_MLXCPLD=y +# end of I2C Hardware Bus support + +# CONFIG_I2C_STUB is not set +# CONFIG_I2C_SLAVE is not set +# CONFIG_I2C_DEBUG_CORE is not set +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set +# end of I2C support + +# CONFIG_I3C is not set +CONFIG_SPI=y +# CONFIG_SPI_DEBUG is not set +CONFIG_SPI_MASTER=y +# CONFIG_SPI_MEM is not set + +# +# SPI Master Controller Drivers +# +# CONFIG_SPI_ALTERA is not set +# CONFIG_SPI_AXI_SPI_ENGINE is not set +# CONFIG_SPI_BITBANG is not set +# CONFIG_SPI_CADENCE is not set +# CONFIG_SPI_DESIGNWARE is not set +# CONFIG_SPI_NXP_FLEXSPI is not set +# CONFIG_SPI_GPIO is not set +# CONFIG_SPI_OC_TINY is not set +# CONFIG_SPI_PXA2XX is not set +# CONFIG_SPI_ROCKCHIP is not set +# CONFIG_SPI_SC18IS602 is not set +# CONFIG_SPI_SIFIVE is not set +# CONFIG_SPI_MXIC is not set +# CONFIG_SPI_XCOMM is not set +# CONFIG_SPI_XILINX is not set +# CONFIG_SPI_ZYNQMP_GQSPI is not set + +# +# SPI Protocol Masters +# +# CONFIG_SPI_SPIDEV is not set +# CONFIG_SPI_LOOPBACK_TEST is not set +# CONFIG_SPI_TLE62X0 is not set +# CONFIG_SPI_SLAVE is not set +# CONFIG_SPMI is not set +# CONFIG_HSI is not set +CONFIG_PPS=y +# CONFIG_PPS_DEBUG is not set + +# +# PPS clients support +# +# CONFIG_PPS_CLIENT_KTIMER is not set +# CONFIG_PPS_CLIENT_LDISC is not set +# CONFIG_PPS_CLIENT_GPIO is not set + +# +# PPS generators support +# + +# +# PTP clock support +# +CONFIG_PTP_1588_CLOCK=y + +# +# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks. +# +# end of PTP clock support + +# CONFIG_PINCTRL is not set +CONFIG_GPIOLIB=y +CONFIG_GPIOLIB_FASTPATH_LIMIT=512 +CONFIG_GPIO_ACPI=y +CONFIG_GPIOLIB_IRQCHIP=y +# CONFIG_DEBUG_GPIO is not set +CONFIG_GPIO_SYSFS=y + +# +# Memory mapped GPIO drivers +# +# CONFIG_GPIO_AMDPT is not set +# CONFIG_GPIO_DWAPB is not set +# CONFIG_GPIO_EXAR is not set +# CONFIG_GPIO_GENERIC_PLATFORM is not set +# CONFIG_GPIO_ICH is not set +# CONFIG_GPIO_MB86S7X is not set +# CONFIG_GPIO_VX855 is not set +# CONFIG_GPIO_AMD_FCH is not set +# end of Memory mapped GPIO drivers + +# +# Port-mapped I/O GPIO drivers +# +# CONFIG_GPIO_F7188X is not set +# CONFIG_GPIO_IT87 is not set +# CONFIG_GPIO_SCH is not set +# CONFIG_GPIO_SCH311X is not set +# CONFIG_GPIO_WINBOND is not set +# CONFIG_GPIO_WS16C48 is not set +# end of Port-mapped I/O GPIO drivers + +# +# I2C GPIO expanders +# +# CONFIG_GPIO_MAX7300 is not set +# CONFIG_GPIO_MAX732X is not set +# CONFIG_GPIO_PCA953X is not set +# CONFIG_GPIO_PCF857X is not set +# CONFIG_GPIO_TPIC2810 is not set +# end of I2C GPIO expanders + +# +# MFD GPIO expanders +# +# end of MFD GPIO expanders + +# +# PCI GPIO expanders +# +# CONFIG_GPIO_AMD8111 is not set +# CONFIG_GPIO_BT8XX is not set +# CONFIG_GPIO_ML_IOH is not set +# CONFIG_GPIO_PCI_IDIO_16 is not set +# CONFIG_GPIO_PCIE_IDIO_24 is not set +# CONFIG_GPIO_RDC321X is not set +# end of PCI GPIO expanders + +# +# SPI GPIO expanders +# +# CONFIG_GPIO_MAX3191X is not set +# CONFIG_GPIO_MAX7301 is not set +# CONFIG_GPIO_MC33880 is not set +# CONFIG_GPIO_PISOSR is not set +# CONFIG_GPIO_XRA1403 is not set +# end of SPI GPIO expanders + +# +# USB GPIO expanders +# +# end of USB GPIO expanders + +# CONFIG_GPIO_MOCKUP is not set +# CONFIG_W1 is not set +# CONFIG_POWER_RESET is not set +CONFIG_POWER_SUPPLY=y +# CONFIG_POWER_SUPPLY_DEBUG is not set +# CONFIG_GENERIC_ADC_BATTERY is not set +# CONFIG_TEST_POWER is not set +# CONFIG_CHARGER_ADP5061 is not set +# CONFIG_BATTERY_DS2780 is not set +# CONFIG_BATTERY_DS2781 is not set +# CONFIG_BATTERY_DS2782 is not set +# CONFIG_BATTERY_SBS is not set +# CONFIG_CHARGER_SBS is not set +# CONFIG_MANAGER_SBS is not set +# CONFIG_BATTERY_BQ27XXX is not set +# CONFIG_BATTERY_MAX17040 is not set +# CONFIG_BATTERY_MAX17042 is not set +# CONFIG_CHARGER_MAX8903 is not set +# CONFIG_CHARGER_LP8727 is not set +# CONFIG_CHARGER_GPIO is not set +# CONFIG_CHARGER_LT3651 is not set +# CONFIG_CHARGER_BQ2415X is not set +# CONFIG_CHARGER_BQ24257 is not set +# CONFIG_CHARGER_BQ24735 is not set +# CONFIG_CHARGER_BQ25890 is not set +# CONFIG_CHARGER_SMB347 is not set +# CONFIG_BATTERY_GAUGE_LTC2941 is not set +# CONFIG_CHARGER_RT9455 is not set +CONFIG_HWMON=y +# CONFIG_HWMON_DEBUG_CHIP is not set + +# +# Native drivers +# +# CONFIG_SENSORS_ABITUGURU is not set +# CONFIG_SENSORS_ABITUGURU3 is not set +# CONFIG_SENSORS_AD7314 is not set +# CONFIG_SENSORS_AD7414 is not set +# CONFIG_SENSORS_AD7418 is not set +# CONFIG_SENSORS_ADM1025 is not set +# CONFIG_SENSORS_ADM1026 is not set +# CONFIG_SENSORS_ADM1029 is not set +# CONFIG_SENSORS_ADM1031 is not set +# CONFIG_SENSORS_ADM9240 is not set +# CONFIG_SENSORS_ADT7310 is not set +# CONFIG_SENSORS_ADT7410 is not set +# CONFIG_SENSORS_ADT7411 is not set +# CONFIG_SENSORS_ADT7462 is not set +# CONFIG_SENSORS_ADT7470 is not set +# CONFIG_SENSORS_ADT7475 is not set +# CONFIG_SENSORS_ASC7621 is not set +# CONFIG_SENSORS_K8TEMP is not set +# CONFIG_SENSORS_K10TEMP is not set +# CONFIG_SENSORS_FAM15H_POWER is not set +# CONFIG_SENSORS_APPLESMC is not set +# CONFIG_SENSORS_ASB100 is not set +# CONFIG_SENSORS_ASPEED is not set +# CONFIG_SENSORS_ATXP1 is not set +# CONFIG_SENSORS_DS620 is not set +# CONFIG_SENSORS_DS1621 is not set +# CONFIG_SENSORS_DELL_SMM is not set +# CONFIG_SENSORS_I5K_AMB is not set +# CONFIG_SENSORS_F71805F is not set +# CONFIG_SENSORS_F71882FG is not set +# CONFIG_SENSORS_F75375S is not set +# CONFIG_SENSORS_FSCHMD is not set +# CONFIG_SENSORS_FTSTEUTATES is not set +# CONFIG_SENSORS_GL518SM is not set +# CONFIG_SENSORS_GL520SM is not set +# CONFIG_SENSORS_G760A is not set +# CONFIG_SENSORS_G762 is not set +# CONFIG_SENSORS_HIH6130 is not set +# CONFIG_SENSORS_IBMAEM is not set +# CONFIG_SENSORS_IBMPEX is not set +CONFIG_SENSORS_IIO_HWMON=y +# CONFIG_SENSORS_I5500 is not set +CONFIG_SENSORS_CORETEMP=y +# CONFIG_SENSORS_IT87 is not set +# CONFIG_SENSORS_JC42 is not set +# CONFIG_SENSORS_POWR1220 is not set +# CONFIG_SENSORS_LINEAGE is not set +# CONFIG_SENSORS_LTC2945 is not set +# CONFIG_SENSORS_LTC2990 is not set +# CONFIG_SENSORS_LTC4151 is not set +# CONFIG_SENSORS_LTC4215 is not set +# CONFIG_SENSORS_LTC4222 is not set +# CONFIG_SENSORS_LTC4245 is not set +# CONFIG_SENSORS_LTC4260 is not set +# CONFIG_SENSORS_LTC4261 is not set +# CONFIG_SENSORS_MAX1111 is not set +# CONFIG_SENSORS_MAX16065 is not set +# CONFIG_SENSORS_MAX1619 is not set +# CONFIG_SENSORS_MAX1668 is not set +# CONFIG_SENSORS_MAX197 is not set +# CONFIG_SENSORS_MAX31722 is not set +# CONFIG_SENSORS_MAX6621 is not set +# CONFIG_SENSORS_MAX6639 is not set +# CONFIG_SENSORS_MAX6650 is not set +# CONFIG_SENSORS_MAX6697 is not set +# CONFIG_SENSORS_MAX31790 is not set +# CONFIG_SENSORS_MCP3021 is not set +# CONFIG_SENSORS_MLXREG_FAN is not set +# CONFIG_SENSORS_TC654 is not set +# CONFIG_SENSORS_ADCXX is not set +# CONFIG_SENSORS_LM63 is not set +# CONFIG_SENSORS_LM70 is not set +# CONFIG_SENSORS_LM73 is not set +CONFIG_SENSORS_LM75=y +CONFIG_SENSORS_LM77=y +# CONFIG_SENSORS_LM78 is not set +# CONFIG_SENSORS_LM80 is not set +# CONFIG_SENSORS_LM83 is not set +# CONFIG_SENSORS_LM85 is not set +# CONFIG_SENSORS_LM87 is not set +# CONFIG_SENSORS_LM90 is not set +# CONFIG_SENSORS_LM92 is not set +# CONFIG_SENSORS_LM93 is not set +# CONFIG_SENSORS_LM95234 is not set +# CONFIG_SENSORS_LM95241 is not set +# CONFIG_SENSORS_LM95245 is not set +# CONFIG_SENSORS_PC87360 is not set +# CONFIG_SENSORS_PC87427 is not set +# CONFIG_SENSORS_NTC_THERMISTOR is not set +# CONFIG_SENSORS_NCT6683 is not set +# CONFIG_SENSORS_NCT6775 is not set +# CONFIG_SENSORS_NCT7802 is not set +# CONFIG_SENSORS_NCT7904 is not set +# CONFIG_SENSORS_NPCM7XX is not set +# CONFIG_SENSORS_PCF8591 is not set +CONFIG_PMBUS=y +CONFIG_SENSORS_PMBUS=y +# CONFIG_SENSORS_ADM1275 is not set +# CONFIG_SENSORS_IBM_CFFPS is not set +# CONFIG_SENSORS_IR35221 is not set +# CONFIG_SENSORS_IR38064 is not set +# CONFIG_SENSORS_ISL68137 is not set +CONFIG_SENSORS_LM25066=y +# CONFIG_SENSORS_LTC2978 is not set +# CONFIG_SENSORS_LTC3815 is not set +# CONFIG_SENSORS_MAX16064 is not set +# CONFIG_SENSORS_MAX20751 is not set +# CONFIG_SENSORS_MAX31785 is not set +# CONFIG_SENSORS_MAX34440 is not set +# CONFIG_SENSORS_MAX8688 is not set +# CONFIG_SENSORS_TPS40422 is not set +CONFIG_SENSORS_TPS53679=y +CONFIG_SENSORS_UCD9000=y +CONFIG_SENSORS_UCD9200=y +# CONFIG_SENSORS_ZL6100 is not set +# CONFIG_SENSORS_SHT15 is not set +# CONFIG_SENSORS_SHT21 is not set +# CONFIG_SENSORS_SHT3x is not set +# CONFIG_SENSORS_SHTC1 is not set +# CONFIG_SENSORS_SIS5595 is not set +# CONFIG_SENSORS_DME1737 is not set +# CONFIG_SENSORS_EMC1403 is not set +# CONFIG_SENSORS_EMC2103 is not set +# CONFIG_SENSORS_EMC6W201 is not set +# CONFIG_SENSORS_SMSC47M1 is not set +# CONFIG_SENSORS_SMSC47M192 is not set +# CONFIG_SENSORS_SMSC47B397 is not set +# CONFIG_SENSORS_SCH5627 is not set +# CONFIG_SENSORS_SCH5636 is not set +# CONFIG_SENSORS_STTS751 is not set +# CONFIG_SENSORS_ADC128D818 is not set +# CONFIG_SENSORS_ADS7828 is not set +# CONFIG_SENSORS_ADS7871 is not set +# CONFIG_SENSORS_AMC6821 is not set +# CONFIG_SENSORS_INA209 is not set +# CONFIG_SENSORS_INA2XX is not set +# CONFIG_SENSORS_INA3221 is not set +# CONFIG_SENSORS_TC74 is not set +# CONFIG_SENSORS_THMC50 is not set +CONFIG_SENSORS_TMP102=y +# CONFIG_SENSORS_TMP103 is not set +# CONFIG_SENSORS_TMP108 is not set +# CONFIG_SENSORS_TMP401 is not set +# CONFIG_SENSORS_TMP421 is not set +# CONFIG_SENSORS_VIA_CPUTEMP is not set +# CONFIG_SENSORS_VIA686A is not set +# CONFIG_SENSORS_VT1211 is not set +# CONFIG_SENSORS_VT8231 is not set +# CONFIG_SENSORS_W83773G is not set +# CONFIG_SENSORS_W83781D is not set +# CONFIG_SENSORS_W83791D is not set +# CONFIG_SENSORS_W83792D is not set +# CONFIG_SENSORS_W83793 is not set +# CONFIG_SENSORS_W83795 is not set +# CONFIG_SENSORS_W83L785TS is not set +# CONFIG_SENSORS_W83L786NG is not set +# CONFIG_SENSORS_W83627HF is not set +# CONFIG_SENSORS_W83627EHF is not set +# CONFIG_SENSORS_XGENE is not set + +# +# ACPI drivers +# +# CONFIG_SENSORS_ACPI_POWER is not set +# CONFIG_SENSORS_ATK0110 is not set +CONFIG_THERMAL=y +# CONFIG_THERMAL_STATISTICS is not set +CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0 +CONFIG_THERMAL_HWMON=y +CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y +# CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set +# CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set +# CONFIG_THERMAL_DEFAULT_GOV_POWER_ALLOCATOR is not set +# CONFIG_THERMAL_GOV_FAIR_SHARE is not set +CONFIG_THERMAL_GOV_STEP_WISE=y +# CONFIG_THERMAL_GOV_BANG_BANG is not set +CONFIG_THERMAL_GOV_USER_SPACE=y +# CONFIG_THERMAL_GOV_POWER_ALLOCATOR is not set +# CONFIG_THERMAL_EMULATION is not set + +# +# Intel thermal drivers +# +# CONFIG_INTEL_POWERCLAMP is not set +# CONFIG_X86_PKG_TEMP_THERMAL is not set +# CONFIG_INTEL_SOC_DTS_THERMAL is not set + +# +# ACPI INT340X thermal drivers +# +# CONFIG_INT340X_THERMAL is not set +# end of ACPI INT340X thermal drivers + +# CONFIG_INTEL_PCH_THERMAL is not set +# end of Intel thermal drivers + +# CONFIG_GENERIC_ADC_THERMAL is not set +CONFIG_WATCHDOG=y +# CONFIG_WATCHDOG_CORE is not set +# CONFIG_WATCHDOG_NOWAYOUT is not set +CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y +# CONFIG_WATCHDOG_SYSFS is not set + +# +# Watchdog Pretimeout Governors +# + +# +# Watchdog Device Drivers +# +# CONFIG_SOFT_WATCHDOG is not set +# CONFIG_WDAT_WDT is not set +# CONFIG_XILINX_WATCHDOG is not set +# CONFIG_ZIIRAVE_WATCHDOG is not set +# CONFIG_MLX_WDT is not set +# CONFIG_CADENCE_WATCHDOG is not set +# CONFIG_DW_WATCHDOG is not set +# CONFIG_MAX63XX_WATCHDOG is not set +# CONFIG_ACQUIRE_WDT is not set +# CONFIG_ADVANTECH_WDT is not set +# CONFIG_ALIM1535_WDT is not set +# CONFIG_ALIM7101_WDT is not set +# CONFIG_EBC_C384_WDT is not set +# CONFIG_F71808E_WDT is not set +# CONFIG_SP5100_TCO is not set +# CONFIG_SBC_FITPC2_WATCHDOG is not set +# CONFIG_EUROTECH_WDT is not set +# CONFIG_IB700_WDT is not set +# CONFIG_IBMASR is not set +# CONFIG_WAFER_WDT is not set +# CONFIG_I6300ESB_WDT is not set +# CONFIG_IE6XX_WDT is not set +# CONFIG_ITCO_WDT is not set +# CONFIG_IT8712F_WDT is not set +# CONFIG_IT87_WDT is not set +# CONFIG_HP_WATCHDOG is not set +# CONFIG_SC1200_WDT is not set +# CONFIG_PC87413_WDT is not set +# CONFIG_NV_TCO is not set +# CONFIG_60XX_WDT is not set +# CONFIG_CPU5_WDT is not set +# CONFIG_SMSC_SCH311X_WDT is not set +# CONFIG_SMSC37B787_WDT is not set +# CONFIG_TQMX86_WDT is not set +# CONFIG_VIA_WDT is not set +# CONFIG_W83627HF_WDT is not set +# CONFIG_W83877F_WDT is not set +# CONFIG_W83977F_WDT is not set +# CONFIG_MACHZ_WDT is not set +# CONFIG_SBC_EPX_C3_WATCHDOG is not set +# CONFIG_NI903X_WDT is not set +# CONFIG_NIC7018_WDT is not set +# CONFIG_MEN_A21_WDT is not set + +# +# PCI-based Watchdog Cards +# +# CONFIG_PCIPCWATCHDOG is not set +# CONFIG_WDTPCI is not set + +# +# USB-based Watchdog Cards +# +# CONFIG_USBPCWATCHDOG is not set +CONFIG_SSB_POSSIBLE=y +# CONFIG_SSB is not set +CONFIG_BCMA_POSSIBLE=y +# CONFIG_BCMA is not set + +# +# Multifunction device drivers +# +CONFIG_MFD_CORE=y +# CONFIG_MFD_AS3711 is not set +# CONFIG_PMIC_ADP5520 is not set +# CONFIG_MFD_AAT2870_CORE is not set +# CONFIG_MFD_BCM590XX is not set +# CONFIG_MFD_BD9571MWV is not set +# CONFIG_MFD_AXP20X_I2C is not set +# CONFIG_MFD_MADERA is not set +# CONFIG_PMIC_DA903X is not set +# CONFIG_MFD_DA9052_SPI is not set +# CONFIG_MFD_DA9052_I2C is not set +# CONFIG_MFD_DA9055 is not set +# CONFIG_MFD_DA9062 is not set +# CONFIG_MFD_DA9063 is not set +# CONFIG_MFD_DA9150 is not set +# CONFIG_MFD_DLN2 is not set +# CONFIG_MFD_MC13XXX_SPI is not set +# CONFIG_MFD_MC13XXX_I2C is not set +# CONFIG_MFD_INTEL_QUARK_I2C_GPIO is not set +CONFIG_LPC_ICH=m +CONFIG_LPC_SCH=y +# CONFIG_INTEL_SOC_PMIC_CHTDC_TI is not set +# CONFIG_MFD_INTEL_LPSS_ACPI is not set +# CONFIG_MFD_INTEL_LPSS_PCI is not set +# CONFIG_MFD_INTEL_PMC_BXT is not set +# CONFIG_MFD_JANZ_CMODIO is not set +# CONFIG_MFD_KEMPLD is not set +# CONFIG_MFD_88PM800 is not set +# CONFIG_MFD_88PM805 is not set +# CONFIG_MFD_88PM860X is not set +# CONFIG_MFD_MAX14577 is not set +# CONFIG_MFD_MAX77693 is not set +# CONFIG_MFD_MAX77843 is not set +# CONFIG_MFD_MAX8907 is not set +# CONFIG_MFD_MAX8925 is not set +# CONFIG_MFD_MAX8997 is not set +# CONFIG_MFD_MAX8998 is not set +# CONFIG_MFD_MT6397 is not set +# CONFIG_MFD_MENF21BMC is not set +# CONFIG_EZX_PCAP is not set +# CONFIG_MFD_VIPERBOARD is not set +# CONFIG_MFD_RETU is not set +# CONFIG_MFD_PCF50633 is not set +# CONFIG_MFD_RDC321X is not set +# CONFIG_MFD_RT5033 is not set +# CONFIG_MFD_RC5T583 is not set +# CONFIG_MFD_SEC_CORE is not set +# CONFIG_MFD_SI476X_CORE is not set +# CONFIG_MFD_SM501 is not set +# CONFIG_MFD_SKY81452 is not set +# CONFIG_ABX500_CORE is not set +# CONFIG_MFD_SYSCON is not set +# CONFIG_MFD_TI_AM335X_TSCADC is not set +# CONFIG_MFD_LP3943 is not set +# CONFIG_MFD_LP8788 is not set +# CONFIG_MFD_TI_LMU is not set +# CONFIG_MFD_PALMAS is not set +# CONFIG_TPS6105X is not set +# CONFIG_TPS65010 is not set +# CONFIG_TPS6507X is not set +# CONFIG_MFD_TPS65086 is not set +# CONFIG_MFD_TPS65090 is not set +# CONFIG_MFD_TI_LP873X is not set +# CONFIG_MFD_TPS6586X is not set +# CONFIG_MFD_TPS65910 is not set +# CONFIG_MFD_TPS65912_I2C is not set +# CONFIG_MFD_TPS65912_SPI is not set +# CONFIG_TWL4030_CORE is not set +# CONFIG_TWL6040_CORE is not set +# CONFIG_MFD_WL1273_CORE is not set +# CONFIG_MFD_LM3533 is not set +# CONFIG_MFD_TQMX86 is not set +# CONFIG_MFD_VX855 is not set +# CONFIG_MFD_ARIZONA_I2C is not set +# CONFIG_MFD_ARIZONA_SPI is not set +# CONFIG_MFD_WM8400 is not set +# CONFIG_MFD_WM831X_I2C is not set +# CONFIG_MFD_WM831X_SPI is not set +# CONFIG_MFD_WM8350_I2C is not set +# CONFIG_MFD_WM8994 is not set +# end of Multifunction device drivers + +# CONFIG_REGULATOR is not set +# CONFIG_RC_CORE is not set +# CONFIG_MEDIA_SUPPORT is not set + +# +# Graphics support +# +CONFIG_AGP=y +CONFIG_AGP_AMD64=y +CONFIG_AGP_INTEL=y +# CONFIG_AGP_SIS is not set +# CONFIG_AGP_VIA is not set +CONFIG_INTEL_GTT=y +CONFIG_VGA_ARB=y +CONFIG_VGA_ARB_MAX_GPUS=16 +# CONFIG_VGA_SWITCHEROO is not set +CONFIG_DRM=y +# CONFIG_DRM_MIPI_DSI is not set +# CONFIG_DRM_DISPLAY_DP_AUX_CHARDEV is not set +# CONFIG_DRM_DEBUG_MM is not set +# CONFIG_DRM_DEBUG_SELFTEST is not set +CONFIG_DRM_KMS_HELPER=y +CONFIG_DRM_FBDEV_EMULATION=y +CONFIG_DRM_FBDEV_OVERALLOC=100 +# CONFIG_DRM_LOAD_EDID_FIRMWARE is not set +# CONFIG_DRM_DISPLAY_DP_AUX_CEC is not set + +# +# I2C encoder or helper chips +# +# CONFIG_DRM_I2C_CH7006 is not set +# CONFIG_DRM_I2C_SIL164 is not set +# CONFIG_DRM_I2C_NXP_TDA998X is not set +# CONFIG_DRM_I2C_NXP_TDA9950 is not set +# end of I2C encoder or helper chips + +# +# ARM devices +# +# end of ARM devices + +# CONFIG_DRM_RADEON is not set +# CONFIG_DRM_AMDGPU is not set + +# +# ACP (Audio CoProcessor) Configuration +# +# end of ACP (Audio CoProcessor) Configuration + +# CONFIG_DRM_NOUVEAU is not set +# CONFIG_DRM_I915 is not set +# CONFIG_DRM_I915_GVT is not set +# CONFIG_DRM_VGEM is not set +# CONFIG_DRM_VKMS is not set +# CONFIG_DRM_VMWGFX is not set +# CONFIG_DRM_GMA500 is not set +# CONFIG_DRM_UDL is not set +CONFIG_DRM_AST=m +# CONFIG_DRM_MGAG200 is not set +# CONFIG_DRM_CIRRUS_QEMU is not set +# CONFIG_DRM_QXL is not set +# CONFIG_DRM_BOCHS is not set +# CONFIG_DRM_VIRTIO_GPU is not set +CONFIG_DRM_PANEL=y + +# +# Display Panels +# +# CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN is not set +# end of Display Panels + +CONFIG_DRM_BRIDGE=y +CONFIG_DRM_PANEL_BRIDGE=y + +# +# Display Interface Bridges +# +# CONFIG_DRM_ANALOGIX_ANX78XX is not set +# end of Display Interface Bridges + +# CONFIG_DRM_ETNAVIV is not set +# CONFIG_DRM_HISI_HIBMC is not set +# CONFIG_DRM_VBOXVIDEO is not set +CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y + +# +# Frame buffer Devices +# +CONFIG_FB_NOTIFY=y +CONFIG_FB=y +# CONFIG_FIRMWARE_EDID is not set +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_IMAGEBLIT=y +CONFIG_FB_SYS_FILLRECT=y +CONFIG_FB_SYS_COPYAREA=y +CONFIG_FB_SYS_IMAGEBLIT=y +# CONFIG_FB_FOREIGN_ENDIAN is not set +CONFIG_FB_DEFERRED_IO=y +CONFIG_FB_MODE_HELPERS=y +CONFIG_FB_TILEBLITTING=y + +# +# Frame buffer hardware drivers +# +# CONFIG_FB_CIRRUS is not set +# CONFIG_FB_PM2 is not set +# CONFIG_FB_CYBER2000 is not set +# CONFIG_FB_ARC is not set +# CONFIG_FB_ASILIANT is not set +# CONFIG_FB_IMSTT is not set +# CONFIG_FB_VGA16 is not set +# CONFIG_FB_UVESA is not set +# CONFIG_FB_VESA is not set +CONFIG_FB_EFI=y +# CONFIG_FB_N411 is not set +# CONFIG_FB_HGA is not set +# CONFIG_FB_OPENCORES is not set +# CONFIG_FB_S1D13XXX is not set +# CONFIG_FB_NVIDIA is not set +# CONFIG_FB_RIVA is not set +# CONFIG_FB_I740 is not set +# CONFIG_FB_MATROX is not set +# CONFIG_FB_RADEON is not set +# CONFIG_FB_ATY128 is not set +# CONFIG_FB_ATY is not set +# CONFIG_FB_S3 is not set +# CONFIG_FB_SAVAGE is not set +# CONFIG_FB_SIS is not set +# CONFIG_FB_VIA is not set +# CONFIG_FB_NEOMAGIC is not set +# CONFIG_FB_KYRO is not set +# CONFIG_FB_3DFX is not set +# CONFIG_FB_VOODOO1 is not set +# CONFIG_FB_VT8623 is not set +# CONFIG_FB_TRIDENT is not set +# CONFIG_FB_ARK is not set +# CONFIG_FB_PM3 is not set +# CONFIG_FB_CARMINE is not set +# CONFIG_FB_SMSCUFX is not set +# CONFIG_FB_UDL is not set +# CONFIG_FB_IBM_GXT4500 is not set +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FB_METRONOME is not set +# CONFIG_FB_MB862XX is not set +# CONFIG_FB_SIMPLE is not set +# CONFIG_FB_SM712 is not set +# end of Frame buffer Devices + +# +# Backlight & LCD device support +# +# CONFIG_LCD_CLASS_DEVICE is not set +CONFIG_BACKLIGHT_CLASS_DEVICE=y +# CONFIG_BACKLIGHT_APPLE is not set +# CONFIG_BACKLIGHT_QCOM_WLED is not set +# CONFIG_BACKLIGHT_SAHARA is not set +# CONFIG_BACKLIGHT_ADP8860 is not set +# CONFIG_BACKLIGHT_ADP8870 is not set +# CONFIG_BACKLIGHT_LM3639 is not set +# CONFIG_BACKLIGHT_GPIO is not set +# CONFIG_BACKLIGHT_LV5207LP is not set +# CONFIG_BACKLIGHT_BD6107 is not set +# CONFIG_BACKLIGHT_ARCXCNN is not set +# end of Backlight & LCD device support + +CONFIG_HDMI=y + +# +# Console display driver support +# +CONFIG_VGA_CONSOLE=y +CONFIG_DUMMY_CONSOLE=y +CONFIG_DUMMY_CONSOLE_COLUMNS=80 +CONFIG_DUMMY_CONSOLE_ROWS=25 +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y +# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set +# CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER is not set +# end of Console display driver support + +CONFIG_LOGO=y +# CONFIG_LOGO_LINUX_MONO is not set +# CONFIG_LOGO_LINUX_VGA16 is not set +CONFIG_LOGO_LINUX_CLUT224=y +# end of Graphics support + +CONFIG_SOUND=y +CONFIG_SOUND_OSS_CORE=y +CONFIG_SOUND_OSS_CORE_PRECLAIM=y +CONFIG_SND=y +CONFIG_SND_TIMER=y +CONFIG_SND_PCM=y +CONFIG_SND_HWDEP=y +CONFIG_SND_SEQ_DEVICE=y +CONFIG_SND_JACK=y +CONFIG_SND_JACK_INPUT_DEV=y +CONFIG_SND_OSSEMUL=y +CONFIG_SND_MIXER_OSS=y +CONFIG_SND_PCM_OSS=y +CONFIG_SND_PCM_OSS_PLUGINS=y +CONFIG_SND_PCM_TIMER=y +CONFIG_SND_HRTIMER=y +# CONFIG_SND_DYNAMIC_MINORS is not set +CONFIG_SND_SUPPORT_OLD_API=y +CONFIG_SND_PROC_FS=y +CONFIG_SND_VERBOSE_PROCFS=y +# CONFIG_SND_DEBUG is not set +CONFIG_SND_VMASTER=y +CONFIG_SND_DMA_SGBUF=y +CONFIG_SND_SEQUENCER=y +CONFIG_SND_SEQ_DUMMY=y +CONFIG_SND_SEQUENCER_OSS=y +CONFIG_SND_SEQ_HRTIMER_DEFAULT=y +CONFIG_SND_SEQ_MIDI_EVENT=y +CONFIG_SND_DRIVERS=y +# CONFIG_SND_PCSP is not set +# CONFIG_SND_DUMMY is not set +# CONFIG_SND_ALOOP is not set +# CONFIG_SND_VIRMIDI is not set +# CONFIG_SND_MTPAV is not set +# CONFIG_SND_SERIAL_U16550 is not set +# CONFIG_SND_MPU401 is not set +CONFIG_SND_PCI=y +# CONFIG_SND_AD1889 is not set +# CONFIG_SND_ALS300 is not set +# CONFIG_SND_ALS4000 is not set +# CONFIG_SND_ALI5451 is not set +# CONFIG_SND_ASIHPI is not set +# CONFIG_SND_ATIIXP is not set +# CONFIG_SND_ATIIXP_MODEM is not set +# CONFIG_SND_AU8810 is not set +# CONFIG_SND_AU8820 is not set +# CONFIG_SND_AU8830 is not set +# CONFIG_SND_AW2 is not set +# CONFIG_SND_AZT3328 is not set +# CONFIG_SND_BT87X is not set +# CONFIG_SND_CA0106 is not set +# CONFIG_SND_CMIPCI is not set +# CONFIG_SND_OXYGEN is not set +# CONFIG_SND_CS4281 is not set +# CONFIG_SND_CS46XX is not set +# CONFIG_SND_CTXFI is not set +# CONFIG_SND_DARLA20 is not set +# CONFIG_SND_GINA20 is not set +# CONFIG_SND_LAYLA20 is not set +# CONFIG_SND_DARLA24 is not set +# CONFIG_SND_GINA24 is not set +# CONFIG_SND_LAYLA24 is not set +# CONFIG_SND_MONA is not set +# CONFIG_SND_MIA is not set +# CONFIG_SND_ECHO3G is not set +# CONFIG_SND_INDIGO is not set +# CONFIG_SND_INDIGOIO is not set +# CONFIG_SND_INDIGODJ is not set +# CONFIG_SND_INDIGOIOX is not set +# CONFIG_SND_INDIGODJX is not set +# CONFIG_SND_EMU10K1 is not set +# CONFIG_SND_EMU10K1X is not set +# CONFIG_SND_ENS1370 is not set +# CONFIG_SND_ENS1371 is not set +# CONFIG_SND_ES1938 is not set +# CONFIG_SND_ES1968 is not set +# CONFIG_SND_FM801 is not set +# CONFIG_SND_HDSP is not set +# CONFIG_SND_HDSPM is not set +# CONFIG_SND_ICE1712 is not set +# CONFIG_SND_ICE1724 is not set +# CONFIG_SND_INTEL8X0 is not set +# CONFIG_SND_INTEL8X0M is not set +# CONFIG_SND_KORG1212 is not set +# CONFIG_SND_LOLA is not set +# CONFIG_SND_LX6464ES is not set +# CONFIG_SND_MAESTRO3 is not set +# CONFIG_SND_MIXART is not set +# CONFIG_SND_NM256 is not set +# CONFIG_SND_PCXHR is not set +# CONFIG_SND_RIPTIDE is not set +# CONFIG_SND_RME32 is not set +# CONFIG_SND_RME96 is not set +# CONFIG_SND_RME9652 is not set +# CONFIG_SND_SE6X is not set +# CONFIG_SND_SONICVIBES is not set +# CONFIG_SND_TRIDENT is not set +# CONFIG_SND_VIA82XX is not set +# CONFIG_SND_VIA82XX_MODEM is not set +# CONFIG_SND_VIRTUOSO is not set +# CONFIG_SND_VX222 is not set +# CONFIG_SND_YMFPCI is not set + +# +# HD-Audio +# +CONFIG_SND_HDA=y +CONFIG_SND_HDA_INTEL=y +CONFIG_SND_HDA_HWDEP=y +# CONFIG_SND_HDA_RECONFIG is not set +# CONFIG_SND_HDA_INPUT_BEEP is not set +# CONFIG_SND_HDA_PATCH_LOADER is not set +# CONFIG_SND_HDA_CODEC_REALTEK is not set +# CONFIG_SND_HDA_CODEC_ANALOG is not set +# CONFIG_SND_HDA_CODEC_SIGMATEL is not set +# CONFIG_SND_HDA_CODEC_VIA is not set +# CONFIG_SND_HDA_CODEC_HDMI is not set +# CONFIG_SND_HDA_CODEC_CIRRUS is not set +# CONFIG_SND_HDA_CODEC_CONEXANT is not set +# CONFIG_SND_HDA_CODEC_CA0110 is not set +# CONFIG_SND_HDA_CODEC_CA0132 is not set +# CONFIG_SND_HDA_CODEC_CMEDIA is not set +# CONFIG_SND_HDA_CODEC_SI3054 is not set +# CONFIG_SND_HDA_GENERIC is not set +CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0 +# end of HD-Audio + +CONFIG_SND_HDA_CORE=y +# CONFIG_SND_HDA_COMPONENT is not set +# CONFIG_SND_HDA_I915 is not set +CONFIG_SND_HDA_PREALLOC_SIZE=0 +# CONFIG_SND_SPI is not set +CONFIG_SND_USB=y +# CONFIG_SND_USB_AUDIO is not set +# CONFIG_SND_USB_UA101 is not set +# CONFIG_SND_USB_USX2Y is not set +# CONFIG_SND_USB_CAIAQ is not set +# CONFIG_SND_USB_US122L is not set +# CONFIG_SND_USB_6FIRE is not set +# CONFIG_SND_USB_HIFACE is not set +# CONFIG_SND_BCD2000 is not set +# CONFIG_SND_USB_POD is not set +# CONFIG_SND_USB_PODHD is not set +# CONFIG_SND_USB_TONEPORT is not set +# CONFIG_SND_USB_VARIAX is not set +CONFIG_SND_PCMCIA=y +# CONFIG_SND_VXPOCKET is not set +# CONFIG_SND_PDAUDIOCF is not set +# CONFIG_SND_SOC is not set +CONFIG_SND_X86=y +# CONFIG_HDMI_LPE_AUDIO is not set + +# +# HID support +# +CONFIG_HID=y +# CONFIG_HID_BATTERY_STRENGTH is not set +CONFIG_HIDRAW=y +# CONFIG_UHID is not set +CONFIG_HID_GENERIC=y + +# +# Special HID drivers +# +CONFIG_HID_A4TECH=y +# CONFIG_HID_ACCUTOUCH is not set +# CONFIG_HID_ACRUX is not set +CONFIG_HID_APPLE=y +# CONFIG_HID_APPLEIR is not set +# CONFIG_HID_ASUS is not set +# CONFIG_HID_AUREAL is not set +CONFIG_HID_BELKIN=y +# CONFIG_HID_BETOP_FF is not set +# CONFIG_HID_BIGBEN_FF is not set +CONFIG_HID_CHERRY=y +CONFIG_HID_CHICONY=y +# CONFIG_HID_CORSAIR is not set +# CONFIG_HID_COUGAR is not set +# CONFIG_HID_MACALLY is not set +# CONFIG_HID_PRODIKEYS is not set +# CONFIG_HID_CMEDIA is not set +CONFIG_HID_CP2112=y +CONFIG_HID_CYPRESS=y +# CONFIG_HID_DRAGONRISE is not set +# CONFIG_HID_EMS_FF is not set +# CONFIG_HID_ELAN is not set +# CONFIG_HID_ELECOM is not set +# CONFIG_HID_ELO is not set +CONFIG_HID_EZKEY=y +# CONFIG_HID_GEMBIRD is not set +# CONFIG_HID_GFRM is not set +# CONFIG_HID_HOLTEK is not set +# CONFIG_HID_GT683R is not set +# CONFIG_HID_KEYTOUCH is not set +# CONFIG_HID_KYE is not set +# CONFIG_HID_UCLOGIC is not set +# CONFIG_HID_WALTOP is not set +# CONFIG_HID_VIEWSONIC is not set +CONFIG_HID_GYRATION=y +# CONFIG_HID_ICADE is not set +CONFIG_HID_ITE=y +# CONFIG_HID_JABRA is not set +# CONFIG_HID_TWINHAN is not set +CONFIG_HID_KENSINGTON=y +# CONFIG_HID_LCPOWER is not set +# CONFIG_HID_LED is not set +# CONFIG_HID_LENOVO is not set +CONFIG_HID_LOGITECH=y +# CONFIG_HID_LOGITECH_DJ is not set +# CONFIG_HID_LOGITECH_HIDPP is not set +CONFIG_LOGITECH_FF=y +# CONFIG_LOGIRUMBLEPAD2_FF is not set +# CONFIG_LOGIG940_FF is not set +CONFIG_LOGIWHEELS_FF=y +# CONFIG_HID_MAGICMOUSE is not set +# CONFIG_HID_MALTRON is not set +# CONFIG_HID_MAYFLASH is not set +CONFIG_HID_REDRAGON=y +CONFIG_HID_MICROSOFT=y +CONFIG_HID_MONTEREY=y +# CONFIG_HID_MULTITOUCH is not set +# CONFIG_HID_NTI is not set +CONFIG_HID_NTRIG=y +# CONFIG_HID_ORTEK is not set +CONFIG_HID_PANTHERLORD=y +CONFIG_PANTHERLORD_FF=y +# CONFIG_HID_PENMOUNT is not set +CONFIG_HID_PETALYNX=y +# CONFIG_HID_PICOLCD is not set +# CONFIG_HID_PLANTRONICS is not set +# CONFIG_HID_PRIMAX is not set +# CONFIG_HID_RETRODE is not set +# CONFIG_HID_ROCCAT is not set +# CONFIG_HID_SAITEK is not set +CONFIG_HID_SAMSUNG=y +CONFIG_HID_SONY=y +# CONFIG_SONY_FF is not set +# CONFIG_HID_SPEEDLINK is not set +# CONFIG_HID_STEAM is not set +# CONFIG_HID_STEELSERIES is not set +CONFIG_HID_SUNPLUS=y +# CONFIG_HID_RMI is not set +# CONFIG_HID_GREENASIA is not set +# CONFIG_HID_SMARTJOYPLUS is not set +# CONFIG_HID_TIVO is not set +CONFIG_HID_TOPSEED=y +# CONFIG_HID_THINGM is not set +# CONFIG_HID_THRUSTMASTER is not set +# CONFIG_HID_UDRAW_PS3 is not set +# CONFIG_HID_U2FZERO is not set +# CONFIG_HID_WACOM is not set +# CONFIG_HID_WIIMOTE is not set +# CONFIG_HID_XINMO is not set +# CONFIG_HID_ZEROPLUS is not set +# CONFIG_HID_ZYDACRON is not set +# CONFIG_HID_SENSOR_HUB is not set +# CONFIG_HID_ALPS is not set +# end of Special HID drivers + +# +# USB HID support +# +CONFIG_USB_HID=y +CONFIG_HID_PID=y +CONFIG_USB_HIDDEV=y +# end of USB HID support + +# +# I2C HID support +# +# CONFIG_I2C_HID_ACPI is not set +# end of I2C HID support + +# +# Intel ISH HID support +# +# CONFIG_INTEL_ISH_HID is not set +# end of Intel ISH HID support +# end of HID support + +CONFIG_USB_OHCI_LITTLE_ENDIAN=y +CONFIG_USB_COMMON=y +CONFIG_USB_ARCH_HAS_HCD=y +CONFIG_USB_PCI=y +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y + +# +# Miscellaneous USB options +# +CONFIG_USB_DEFAULT_PERSIST=y +# CONFIG_USB_DYNAMIC_MINORS is not set +# CONFIG_USB_OTG is not set +# CONFIG_USB_OTG_PRODUCTLIST is not set +# CONFIG_USB_LEDS_TRIGGER_USBPORT is not set +CONFIG_USB_AUTOSUSPEND_DELAY=2 +CONFIG_USB_MON=y + +# +# USB Host Controller Drivers +# +# CONFIG_USB_C67X00_HCD is not set +CONFIG_USB_EHCI_HCD=y +# CONFIG_USB_EHCI_ROOT_HUB_TT is not set +CONFIG_USB_EHCI_TT_NEWSCHED=y +CONFIG_USB_EHCI_PCI=y +# CONFIG_USB_EHCI_FSL is not set +# CONFIG_USB_EHCI_HCD_PLATFORM is not set +# CONFIG_USB_OXU210HP_HCD is not set +# CONFIG_USB_ISP116X_HCD is not set +# CONFIG_USB_FOTG210_HCD is not set +# CONFIG_USB_MAX3421_HCD is not set +CONFIG_USB_OHCI_HCD=y +CONFIG_USB_OHCI_HCD_PCI=y +# CONFIG_USB_OHCI_HCD_PLATFORM is not set +CONFIG_USB_UHCI_HCD=y +# CONFIG_USB_SL811_HCD is not set +# CONFIG_USB_R8A66597_HCD is not set +# CONFIG_USB_HCD_TEST_MODE is not set + +# +# USB Device Class drivers +# +CONFIG_USB_ACM=y +CONFIG_USB_PRINTER=y +# CONFIG_USB_WDM is not set +# CONFIG_USB_TMC is not set + +# +# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may +# + +# +# also be needed; see USB_STORAGE Help for more info +# +CONFIG_USB_STORAGE=y +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_REALTEK is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_USBAT is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_SDDR55 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_STORAGE_ALAUDA is not set +# CONFIG_USB_STORAGE_ONETOUCH is not set +# CONFIG_USB_STORAGE_KARMA is not set +# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set +# CONFIG_USB_STORAGE_ENE_UB6250 is not set +# CONFIG_USB_UAS is not set + +# +# USB Imaging devices +# +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_MICROTEK is not set +# CONFIG_USBIP_CORE is not set +# CONFIG_USB_MUSB_HDRC is not set +# CONFIG_USB_DWC3 is not set +# CONFIG_USB_DWC2 is not set +# CONFIG_USB_CHIPIDEA is not set +# CONFIG_USB_ISP1760 is not set + +# +# USB port drivers +# +# CONFIG_USB_SERIAL is not set + +# +# USB Miscellaneous drivers +# +# CONFIG_USB_EMI62 is not set +# CONFIG_USB_EMI26 is not set +# CONFIG_USB_ADUTUX is not set +# CONFIG_USB_SEVSEG is not set +# CONFIG_USB_LEGOTOWER is not set +# CONFIG_USB_LCD is not set +# CONFIG_USB_CYPRESS_CY7C63 is not set +# CONFIG_USB_CYTHERM is not set +# CONFIG_USB_IDMOUSE is not set +# CONFIG_USB_APPLEDISPLAY is not set +# CONFIG_USB_SISUSBVGA is not set +# CONFIG_USB_LD is not set +# CONFIG_USB_TRANCEVIBRATOR is not set +# CONFIG_USB_IOWARRIOR is not set +# CONFIG_USB_TEST is not set +# CONFIG_USB_EHSET_TEST_FIXTURE is not set +# CONFIG_USB_ISIGHTFW is not set +# CONFIG_USB_YUREX is not set +# CONFIG_USB_EZUSB_FX2 is not set +# CONFIG_USB_HUB_USB251XB is not set +# CONFIG_USB_HSIC_USB3503 is not set +# CONFIG_USB_HSIC_USB4604 is not set +# CONFIG_USB_LINK_LAYER_TEST is not set +# CONFIG_USB_CHAOSKEY is not set + +# +# USB Physical Layer drivers +# +# CONFIG_NOP_USB_XCEIV is not set +# CONFIG_USB_GPIO_VBUS is not set +# CONFIG_USB_ISP1301 is not set +# end of USB Physical Layer drivers + +# CONFIG_USB_GADGET is not set +# CONFIG_TYPEC is not set +# CONFIG_USB_ROLE_SWITCH is not set +# CONFIG_USB_LED_TRIG is not set +# CONFIG_USB_ULPI_BUS is not set +# CONFIG_MMC is not set +# CONFIG_MEMSTICK is not set +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y +# CONFIG_LEDS_CLASS_FLASH is not set +# CONFIG_LEDS_BRIGHTNESS_HW_CHANGED is not set + +# +# LED drivers +# +# CONFIG_LEDS_APU is not set +# CONFIG_LEDS_LM3530 is not set +# CONFIG_LEDS_LM3532 is not set +# CONFIG_LEDS_LM3642 is not set +# CONFIG_LEDS_PCA9532 is not set +# CONFIG_LEDS_GPIO is not set +# CONFIG_LEDS_LP3944 is not set +# CONFIG_LEDS_LP3952 is not set +# CONFIG_LEDS_LP5521 is not set +# CONFIG_LEDS_LP5523 is not set +# CONFIG_LEDS_LP5562 is not set +# CONFIG_LEDS_LP8501 is not set +# CONFIG_LEDS_CLEVO_MAIL is not set +# CONFIG_LEDS_PCA955X is not set +# CONFIG_LEDS_PCA963X is not set +# CONFIG_LEDS_DAC124S085 is not set +# CONFIG_LEDS_BD2802 is not set +# CONFIG_LEDS_INTEL_SS4200 is not set +# CONFIG_LEDS_TCA6507 is not set +# CONFIG_LEDS_TLC591XX is not set +# CONFIG_LEDS_LM355x is not set + +# +# LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM) +# +# CONFIG_LEDS_BLINKM is not set +# CONFIG_LEDS_MLXCPLD is not set +CONFIG_LEDS_MLXREG=y +# CONFIG_LEDS_USER is not set +# CONFIG_LEDS_NIC78BX is not set + +# +# LED Triggers +# +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_TIMER=y +# CONFIG_LEDS_TRIGGER_ONESHOT is not set +# CONFIG_LEDS_TRIGGER_DISK is not set +# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set +# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set +# CONFIG_LEDS_TRIGGER_CPU is not set +# CONFIG_LEDS_TRIGGER_ACTIVITY is not set +# CONFIG_LEDS_TRIGGER_GPIO is not set +# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set + +# +# iptables trigger is under Netfilter config (LED target) +# +# CONFIG_LEDS_TRIGGER_TRANSIENT is not set +# CONFIG_LEDS_TRIGGER_CAMERA is not set +# CONFIG_LEDS_TRIGGER_PANIC is not set +# CONFIG_LEDS_TRIGGER_NETDEV is not set +# CONFIG_LEDS_TRIGGER_PATTERN is not set +# CONFIG_ACCESSIBILITY is not set +# CONFIG_INFINIBAND is not set +CONFIG_EDAC_ATOMIC_SCRUB=y +CONFIG_EDAC_SUPPORT=y +CONFIG_EDAC=y +CONFIG_EDAC_LEGACY_SYSFS=y +# CONFIG_EDAC_DEBUG is not set +CONFIG_EDAC_DECODE_MCE=y +# CONFIG_EDAC_AMD64 is not set +# CONFIG_EDAC_E752X is not set +# CONFIG_EDAC_I82975X is not set +# CONFIG_EDAC_I3000 is not set +# CONFIG_EDAC_I3200 is not set +# CONFIG_EDAC_IE31200 is not set +# CONFIG_EDAC_X38 is not set +# CONFIG_EDAC_I5400 is not set +# CONFIG_EDAC_I7CORE is not set +# CONFIG_EDAC_I5000 is not set +# CONFIG_EDAC_I5100 is not set +# CONFIG_EDAC_I7300 is not set +# CONFIG_EDAC_SBRIDGE is not set +# CONFIG_EDAC_SKX is not set +# CONFIG_EDAC_I10NM is not set +# CONFIG_EDAC_PND2 is not set +CONFIG_RTC_LIB=y +CONFIG_RTC_MC146818_LIB=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_HCTOSYS=y +CONFIG_RTC_HCTOSYS_DEVICE="rtc0" +CONFIG_RTC_SYSTOHC=y +CONFIG_RTC_SYSTOHC_DEVICE="rtc0" +# CONFIG_RTC_DEBUG is not set +CONFIG_RTC_NVMEM=y + +# +# RTC interfaces +# +CONFIG_RTC_INTF_SYSFS=y +CONFIG_RTC_INTF_PROC=y +CONFIG_RTC_INTF_DEV=y +# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set +# CONFIG_RTC_DRV_TEST is not set + +# +# I2C RTC drivers +# +# CONFIG_RTC_DRV_ABB5ZES3 is not set +# CONFIG_RTC_DRV_ABEOZ9 is not set +# CONFIG_RTC_DRV_ABX80X is not set +# CONFIG_RTC_DRV_DS1307 is not set +# CONFIG_RTC_DRV_DS1374 is not set +# CONFIG_RTC_DRV_DS1672 is not set +# CONFIG_RTC_DRV_MAX6900 is not set +# CONFIG_RTC_DRV_RS5C372 is not set +# CONFIG_RTC_DRV_ISL1208 is not set +# CONFIG_RTC_DRV_ISL12022 is not set +# CONFIG_RTC_DRV_X1205 is not set +# CONFIG_RTC_DRV_PCF8523 is not set +# CONFIG_RTC_DRV_PCF85063 is not set +# CONFIG_RTC_DRV_PCF85363 is not set +# CONFIG_RTC_DRV_PCF8563 is not set +# CONFIG_RTC_DRV_PCF8583 is not set +# CONFIG_RTC_DRV_M41T80 is not set +# CONFIG_RTC_DRV_BQ32K is not set +# CONFIG_RTC_DRV_S35390A is not set +# CONFIG_RTC_DRV_FM3130 is not set +# CONFIG_RTC_DRV_RX8010 is not set +# CONFIG_RTC_DRV_RX8581 is not set +# CONFIG_RTC_DRV_RX8025 is not set +# CONFIG_RTC_DRV_EM3027 is not set +# CONFIG_RTC_DRV_RV3028 is not set +# CONFIG_RTC_DRV_RV8803 is not set +# CONFIG_RTC_DRV_SD3078 is not set + +# +# SPI RTC drivers +# +# CONFIG_RTC_DRV_M41T93 is not set +# CONFIG_RTC_DRV_M41T94 is not set +# CONFIG_RTC_DRV_DS1302 is not set +# CONFIG_RTC_DRV_DS1305 is not set +# CONFIG_RTC_DRV_DS1343 is not set +# CONFIG_RTC_DRV_DS1347 is not set +# CONFIG_RTC_DRV_DS1390 is not set +# CONFIG_RTC_DRV_MAX6916 is not set +# CONFIG_RTC_DRV_R9701 is not set +# CONFIG_RTC_DRV_RX4581 is not set +# CONFIG_RTC_DRV_RX6110 is not set +# CONFIG_RTC_DRV_RS5C348 is not set +# CONFIG_RTC_DRV_MAX6902 is not set +# CONFIG_RTC_DRV_PCF2123 is not set +# CONFIG_RTC_DRV_MCP795 is not set +CONFIG_RTC_I2C_AND_SPI=y + +# +# SPI and I2C RTC drivers +# +# CONFIG_RTC_DRV_DS3232 is not set +# CONFIG_RTC_DRV_PCF2127 is not set +# CONFIG_RTC_DRV_RV3029C2 is not set + +# +# Platform RTC drivers +# +CONFIG_RTC_DRV_CMOS=y +# CONFIG_RTC_DRV_DS1286 is not set +# CONFIG_RTC_DRV_DS1511 is not set +# CONFIG_RTC_DRV_DS1553 is not set +# CONFIG_RTC_DRV_DS1685_FAMILY is not set +# CONFIG_RTC_DRV_DS1742 is not set +# CONFIG_RTC_DRV_DS2404 is not set +# CONFIG_RTC_DRV_STK17TA8 is not set +# CONFIG_RTC_DRV_M48T86 is not set +# CONFIG_RTC_DRV_M48T35 is not set +# CONFIG_RTC_DRV_M48T59 is not set +# CONFIG_RTC_DRV_MSM6242 is not set +# CONFIG_RTC_DRV_BQ4802 is not set +# CONFIG_RTC_DRV_RP5C01 is not set + +# +# on-CPU RTC drivers +# +# CONFIG_RTC_DRV_FTRTC010 is not set + +# +# HID Sensor RTC drivers +# +CONFIG_DMADEVICES=y +# CONFIG_DMADEVICES_DEBUG is not set + +# +# DMA Devices +# +CONFIG_DMA_ENGINE=y +CONFIG_DMA_VIRTUAL_CHANNELS=y +CONFIG_DMA_ACPI=y +# CONFIG_ALTERA_MSGDMA is not set +# CONFIG_INTEL_IDMA64 is not set +# CONFIG_QCOM_HIDMA_MGMT is not set +# CONFIG_QCOM_HIDMA is not set +CONFIG_DW_DMAC_CORE=y +# CONFIG_DW_DMAC is not set +# CONFIG_DW_DMAC_PCI is not set +CONFIG_HSU_DMA=y + +# +# DMA Clients +# +# CONFIG_ASYNC_TX_DMA is not set +# CONFIG_DMATEST is not set + +# +# DMABUF options +# +CONFIG_SYNC_FILE=y +# CONFIG_SW_SYNC is not set +# CONFIG_UDMABUF is not set +# end of DMABUF options + +# CONFIG_AUXDISPLAY is not set +# CONFIG_UIO is not set +# CONFIG_VFIO is not set +CONFIG_VIRT_DRIVERS=y +# CONFIG_VBOXGUEST is not set +CONFIG_VIRTIO=y +CONFIG_VIRTIO_MENU=y +CONFIG_VIRTIO_PCI=y +CONFIG_VIRTIO_PCI_LEGACY=y +# CONFIG_VIRTIO_BALLOON is not set +CONFIG_VIRTIO_INPUT=y +CONFIG_VIRTIO_MMIO=y +# CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES is not set + +# +# Microsoft Hyper-V guest support +# +# CONFIG_HYPERV is not set +# end of Microsoft Hyper-V guest support + +# CONFIG_STAGING is not set +CONFIG_X86_PLATFORM_DEVICES=y +# CONFIG_ACER_WIRELESS is not set +# CONFIG_ACERHDF is not set +# CONFIG_ASUS_LAPTOP is not set +# CONFIG_DCDBAS is not set +# CONFIG_DELL_SMBIOS is not set +# CONFIG_DELL_SMO8800 is not set +# CONFIG_DELL_RBTN is not set +# CONFIG_DELL_RBU is not set +# CONFIG_FUJITSU_LAPTOP is not set +# CONFIG_FUJITSU_TABLET is not set +# CONFIG_AMILO_RFKILL is not set +# CONFIG_GPD_POCKET_FAN is not set +# CONFIG_HP_ACCEL is not set +# CONFIG_WIRELESS_HOTKEY is not set +# CONFIG_MSI_LAPTOP is not set +# CONFIG_PANASONIC_LAPTOP is not set +# CONFIG_COMPAL_LAPTOP is not set +# CONFIG_SONY_LAPTOP is not set +# CONFIG_IDEAPAD_LAPTOP is not set +# CONFIG_THINKPAD_ACPI is not set +# CONFIG_SENSORS_HDAPS is not set +CONFIG_EEEPC_LAPTOP=y +# CONFIG_ASUS_WIRELESS is not set +# CONFIG_ACPI_WMI is not set +# CONFIG_TOPSTAR_LAPTOP is not set +# CONFIG_TOSHIBA_BT_RFKILL is not set +# CONFIG_TOSHIBA_HAPS is not set +# CONFIG_INTEL_INT0002_VGPIO is not set +# CONFIG_INTEL_HID_EVENT is not set +# CONFIG_INTEL_VBTN is not set +# CONFIG_INTEL_IPS is not set +# CONFIG_INTEL_PMC_CORE is not set +# CONFIG_IBM_RTL is not set +# CONFIG_SAMSUNG_LAPTOP is not set +# CONFIG_INTEL_OAKTRAIL is not set +# CONFIG_APPLE_GMUX is not set +# CONFIG_INTEL_RST is not set +# CONFIG_INTEL_SMARTCONNECT is not set +# CONFIG_SURFACE_PRO3_BUTTON is not set +# CONFIG_INTEL_PUNIT_IPC is not set +CONFIG_MLX_PLATFORM=y +# CONFIG_INTEL_TURBO_MAX_3 is not set +# CONFIG_SERIAL_MULTI_INSTANTIATE is not set +# CONFIG_INTEL_ATOMISP2_PM is not set +# CONFIG_PCENGINES_APU2 is not set +# CONFIG_CHROME_PLATFORMS is not set +CONFIG_MELLANOX_PLATFORM=y +CONFIG_MLXREG_HOTPLUG=y +CONFIG_MLXREG_IO=y +CONFIG_HAVE_CLK_PREPARE=y +CONFIG_COMMON_CLK=y + +# +# Common Clock Framework +# +# CONFIG_COMMON_CLK_MAX9485 is not set +# CONFIG_COMMON_CLK_SI5351 is not set +# CONFIG_COMMON_CLK_SI544 is not set +# CONFIG_COMMON_CLK_CDCE706 is not set +# CONFIG_COMMON_CLK_CS2000_CP is not set +# end of Common Clock Framework + +# CONFIG_HWSPINLOCK is not set + +# +# Clock Source drivers +# +CONFIG_CLKEVT_I8253=y +CONFIG_I8253_LOCK=y +CONFIG_CLKBLD_I8253=y +# end of Clock Source drivers + +CONFIG_MAILBOX=y +CONFIG_PCC=y +# CONFIG_ALTERA_MBOX is not set +CONFIG_IOMMU_IOVA=y +CONFIG_IOMMU_API=y +CONFIG_IOMMU_SUPPORT=y + +# +# Generic IOMMU Pagetable Support +# +# end of Generic IOMMU Pagetable Support + +# CONFIG_IOMMU_DEBUGFS is not set +# CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set +CONFIG_AMD_IOMMU=y +CONFIG_DMAR_TABLE=y +CONFIG_INTEL_IOMMU=y +# CONFIG_INTEL_IOMMU_SVM is not set +# CONFIG_INTEL_IOMMU_DEFAULT_ON is not set +CONFIG_INTEL_IOMMU_FLOPPY_WA=y + +# +# Remoteproc drivers +# +# CONFIG_REMOTEPROC is not set +# end of Remoteproc drivers + +# +# Rpmsg drivers +# +# CONFIG_RPMSG_QCOM_GLINK_RPM is not set +# CONFIG_RPMSG_VIRTIO is not set +# end of Rpmsg drivers + +# CONFIG_SOUNDWIRE is not set + +# +# SOC (System On Chip) specific Drivers +# + +# +# Amlogic SoC drivers +# +# end of Amlogic SoC drivers + +# +# Aspeed SoC drivers +# +# end of Aspeed SoC drivers + +# +# Broadcom SoC drivers +# +# end of Broadcom SoC drivers + +# +# NXP/Freescale QorIQ SoC drivers +# +# end of NXP/Freescale QorIQ SoC drivers + +# +# i.MX SoC drivers +# +# end of i.MX SoC drivers + +# +# IXP4xx SoC drivers +# +# CONFIG_IXP4XX_QMGR is not set +# CONFIG_IXP4XX_NPE is not set +# end of IXP4xx SoC drivers + +# +# Qualcomm SoC drivers +# +# end of Qualcomm SoC drivers + +# CONFIG_SOC_TI is not set + +# +# Xilinx SoC drivers +# +# CONFIG_XILINX_VCU is not set +# end of Xilinx SoC drivers +# end of SOC (System On Chip) specific Drivers + +# CONFIG_PM_DEVFREQ is not set +# CONFIG_EXTCON is not set +# CONFIG_MEMORY is not set +CONFIG_IIO=y +CONFIG_IIO_BUFFER=y +# CONFIG_IIO_BUFFER_CB is not set +# CONFIG_IIO_BUFFER_HW_CONSUMER is not set +CONFIG_IIO_KFIFO_BUF=y +CONFIG_IIO_TRIGGERED_BUFFER=y +# CONFIG_IIO_CONFIGFS is not set +CONFIG_IIO_TRIGGER=y +CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 +# CONFIG_IIO_SW_DEVICE is not set +# CONFIG_IIO_SW_TRIGGER is not set + +# +# Accelerometers +# +# CONFIG_ADIS16201 is not set +# CONFIG_ADIS16209 is not set +# CONFIG_ADXL345_I2C is not set +# CONFIG_ADXL345_SPI is not set +# CONFIG_ADXL372_SPI is not set +# CONFIG_ADXL372_I2C is not set +# CONFIG_BMA180 is not set +# CONFIG_BMA220 is not set +# CONFIG_BMC150_ACCEL is not set +# CONFIG_DA280 is not set +# CONFIG_DA311 is not set +# CONFIG_DMARD09 is not set +# CONFIG_DMARD10 is not set +# CONFIG_IIO_CROS_EC_ACCEL_LEGACY is not set +# CONFIG_IIO_ST_ACCEL_3AXIS is not set +# CONFIG_KXSD9 is not set +# CONFIG_KXCJK1013 is not set +# CONFIG_MC3230 is not set +# CONFIG_MMA7455_I2C is not set +# CONFIG_MMA7455_SPI is not set +# CONFIG_MMA7660 is not set +# CONFIG_MMA8452 is not set +# CONFIG_MMA9551 is not set +# CONFIG_MMA9553 is not set +# CONFIG_MXC4005 is not set +# CONFIG_MXC6255 is not set +# CONFIG_SCA3000 is not set +# CONFIG_STK8312 is not set +# CONFIG_STK8BA50 is not set +# end of Accelerometers + +# +# Analog to digital converters +# +# CONFIG_AD7124 is not set +# CONFIG_AD7266 is not set +# CONFIG_AD7291 is not set +# CONFIG_AD7298 is not set +# CONFIG_AD7476 is not set +# CONFIG_AD7606_IFACE_PARALLEL is not set +# CONFIG_AD7606_IFACE_SPI is not set +# CONFIG_AD7766 is not set +# CONFIG_AD7768_1 is not set +# CONFIG_AD7780 is not set +# CONFIG_AD7791 is not set +# CONFIG_AD7793 is not set +# CONFIG_AD7887 is not set +# CONFIG_AD7923 is not set +# CONFIG_AD7949 is not set +# CONFIG_AD799X is not set +# CONFIG_HI8435 is not set +# CONFIG_HX711 is not set +# CONFIG_INA2XX_ADC is not set +# CONFIG_LTC2471 is not set +# CONFIG_LTC2485 is not set +# CONFIG_LTC2497 is not set +# CONFIG_MAX1027 is not set +# CONFIG_MAX11100 is not set +# CONFIG_MAX1118 is not set +CONFIG_MAX1363=y +# CONFIG_MAX9611 is not set +# CONFIG_MCP320X is not set +# CONFIG_MCP3422 is not set +# CONFIG_MCP3911 is not set +# CONFIG_NAU7802 is not set +# CONFIG_TI_ADC081C is not set +# CONFIG_TI_ADC0832 is not set +# CONFIG_TI_ADC084S021 is not set +# CONFIG_TI_ADC12138 is not set +# CONFIG_TI_ADC108S102 is not set +# CONFIG_TI_ADC128S052 is not set +# CONFIG_TI_ADC161S626 is not set +# CONFIG_TI_ADS1015 is not set +# CONFIG_TI_ADS7950 is not set +# CONFIG_TI_TLC4541 is not set +# end of Analog to digital converters + +# +# Analog Front Ends +# +# end of Analog Front Ends + +# +# Amplifiers +# +# CONFIG_AD8366 is not set +# end of Amplifiers + +# +# Chemical Sensors +# +# CONFIG_ATLAS_PH_SENSOR is not set +# CONFIG_BME680 is not set +# CONFIG_CCS811 is not set +# CONFIG_IAQCORE is not set +# CONFIG_SENSIRION_SGP30 is not set +# CONFIG_SPS30 is not set +# CONFIG_VZ89X is not set +# end of Chemical Sensors + +# +# Hid Sensor IIO Common +# +# end of Hid Sensor IIO Common + +# +# SSP Sensor Common +# +# CONFIG_IIO_SSP_SENSORHUB is not set +# end of SSP Sensor Common + +# +# Digital to analog converters +# +# CONFIG_AD5064 is not set +# CONFIG_AD5360 is not set +# CONFIG_AD5380 is not set +# CONFIG_AD5421 is not set +# CONFIG_AD5446 is not set +# CONFIG_AD5449 is not set +# CONFIG_AD5592R is not set +# CONFIG_AD5593R is not set +# CONFIG_AD5504 is not set +# CONFIG_AD5624R_SPI is not set +# CONFIG_LTC1660 is not set +# CONFIG_LTC2632 is not set +# CONFIG_AD5686_SPI is not set +# CONFIG_AD5696_I2C is not set +# CONFIG_AD5755 is not set +# CONFIG_AD5758 is not set +# CONFIG_AD5761 is not set +# CONFIG_AD5764 is not set +# CONFIG_AD5791 is not set +# CONFIG_AD7303 is not set +# CONFIG_AD8801 is not set +# CONFIG_DS4424 is not set +# CONFIG_M62332 is not set +# CONFIG_MAX517 is not set +# CONFIG_MCP4725 is not set +# CONFIG_MCP4922 is not set +# CONFIG_TI_DAC082S085 is not set +# CONFIG_TI_DAC5571 is not set +# CONFIG_TI_DAC7311 is not set +# CONFIG_TI_DAC7612 is not set +# end of Digital to analog converters + +# +# IIO dummy driver +# +# end of IIO dummy driver + +# +# Frequency Synthesizers DDS/PLL +# + +# +# Clock Generator/Distribution +# +# CONFIG_AD9523 is not set +# end of Clock Generator/Distribution + +# +# Phase-Locked Loop (PLL) frequency synthesizers +# +# CONFIG_ADF4350 is not set +# end of Phase-Locked Loop (PLL) frequency synthesizers +# end of Frequency Synthesizers DDS/PLL + +# +# Digital gyroscope sensors +# +# CONFIG_ADIS16080 is not set +# CONFIG_ADIS16130 is not set +# CONFIG_ADIS16136 is not set +# CONFIG_ADIS16260 is not set +# CONFIG_ADXRS450 is not set +# CONFIG_BMG160 is not set +# CONFIG_FXAS21002C is not set +# CONFIG_MPU3050_I2C is not set +# CONFIG_IIO_ST_GYRO_3AXIS is not set +# CONFIG_ITG3200 is not set +# end of Digital gyroscope sensors + +# +# Health Sensors +# + +# +# Heart Rate Monitors +# +# CONFIG_AFE4403 is not set +# CONFIG_AFE4404 is not set +# CONFIG_MAX30100 is not set +# CONFIG_MAX30102 is not set +# end of Heart Rate Monitors +# end of Health Sensors + +# +# Humidity sensors +# +# CONFIG_AM2315 is not set +# CONFIG_DHT11 is not set +# CONFIG_HDC100X is not set +# CONFIG_HTS221 is not set +# CONFIG_HTU21 is not set +# CONFIG_SI7005 is not set +# CONFIG_SI7020 is not set +# end of Humidity sensors + +# +# Inertial measurement units +# +# CONFIG_ADIS16400 is not set +# CONFIG_ADIS16480 is not set +# CONFIG_BMI160_I2C is not set +# CONFIG_BMI160_SPI is not set +# CONFIG_KMX61 is not set +# CONFIG_INV_MPU6050_I2C is not set +# CONFIG_INV_MPU6050_SPI is not set +# CONFIG_IIO_ST_LSM6DSX is not set +# end of Inertial measurement units + +# +# Light sensors +# +# CONFIG_ACPI_ALS is not set +# CONFIG_ADJD_S311 is not set +# CONFIG_AL3320A is not set +# CONFIG_APDS9300 is not set +# CONFIG_APDS9960 is not set +# CONFIG_BH1750 is not set +# CONFIG_BH1780 is not set +# CONFIG_CM32181 is not set +# CONFIG_CM3232 is not set +# CONFIG_CM3323 is not set +# CONFIG_CM36651 is not set +# CONFIG_GP2AP020A00F is not set +# CONFIG_SENSORS_ISL29018 is not set +# CONFIG_SENSORS_ISL29028 is not set +# CONFIG_ISL29125 is not set +# CONFIG_JSA1212 is not set +# CONFIG_RPR0521 is not set +# CONFIG_LTR501 is not set +# CONFIG_LV0104CS is not set +# CONFIG_MAX44000 is not set +# CONFIG_MAX44009 is not set +# CONFIG_OPT3001 is not set +# CONFIG_PA12203001 is not set +# CONFIG_SI1133 is not set +# CONFIG_SI1145 is not set +# CONFIG_STK3310 is not set +# CONFIG_ST_UVIS25 is not set +# CONFIG_TCS3414 is not set +# CONFIG_TCS3472 is not set +# CONFIG_SENSORS_TSL2563 is not set +# CONFIG_TSL2583 is not set +# CONFIG_TSL2772 is not set +# CONFIG_TSL4531 is not set +# CONFIG_US5182D is not set +# CONFIG_VCNL4000 is not set +# CONFIG_VCNL4035 is not set +# CONFIG_VEML6070 is not set +# CONFIG_VL6180 is not set +# CONFIG_ZOPT2201 is not set +# end of Light sensors + +# +# Magnetometer sensors +# +# CONFIG_AK8975 is not set +# CONFIG_AK09911 is not set +# CONFIG_BMC150_MAGN_I2C is not set +# CONFIG_BMC150_MAGN_SPI is not set +# CONFIG_MAG3110 is not set +# CONFIG_MMC35240 is not set +# CONFIG_IIO_ST_MAGN_3AXIS is not set +# CONFIG_SENSORS_HMC5843_I2C is not set +# CONFIG_SENSORS_HMC5843_SPI is not set +# CONFIG_SENSORS_RM3100_I2C is not set +# CONFIG_SENSORS_RM3100_SPI is not set +# end of Magnetometer sensors + +# +# Multiplexers +# +# end of Multiplexers + +# +# Inclinometer sensors +# +# end of Inclinometer sensors + +# +# Triggers - standalone +# +# CONFIG_IIO_INTERRUPT_TRIGGER is not set +# CONFIG_IIO_SYSFS_TRIGGER is not set +# end of Triggers - standalone + +# +# Digital potentiometers +# +# CONFIG_AD5272 is not set +# CONFIG_DS1803 is not set +# CONFIG_MAX5481 is not set +# CONFIG_MAX5487 is not set +# CONFIG_MCP4018 is not set +# CONFIG_MCP4131 is not set +# CONFIG_MCP4531 is not set +# CONFIG_MCP41010 is not set +# CONFIG_TPL0102 is not set +# end of Digital potentiometers + +# +# Digital potentiostats +# +# CONFIG_LMP91000 is not set +# end of Digital potentiostats + +# +# Pressure sensors +# +# CONFIG_ABP060MG is not set +# CONFIG_BMP280 is not set +# CONFIG_HP03 is not set +# CONFIG_MPL115_I2C is not set +# CONFIG_MPL115_SPI is not set +# CONFIG_MPL3115 is not set +# CONFIG_MS5611 is not set +# CONFIG_MS5637 is not set +# CONFIG_IIO_ST_PRESS is not set +# CONFIG_T5403 is not set +# CONFIG_HP206C is not set +# CONFIG_ZPA2326 is not set +# end of Pressure sensors + +# +# Lightning sensors +# +# CONFIG_AS3935 is not set +# end of Lightning sensors + +# +# Proximity and distance sensors +# +# CONFIG_ISL29501 is not set +# CONFIG_LIDAR_LITE_V2 is not set +# CONFIG_MB1232 is not set +# CONFIG_RFD77402 is not set +# CONFIG_SRF04 is not set +# CONFIG_SX9500 is not set +# CONFIG_SRF08 is not set +# CONFIG_VL53L0X_I2C is not set +# end of Proximity and distance sensors + +# +# Resolver to digital converters +# +# CONFIG_AD2S90 is not set +# CONFIG_AD2S1200 is not set +# end of Resolver to digital converters + +# +# Temperature sensors +# +# CONFIG_MAXIM_THERMOCOUPLE is not set +# CONFIG_MLX90614 is not set +# CONFIG_MLX90632 is not set +# CONFIG_TMP006 is not set +# CONFIG_TMP007 is not set +# CONFIG_TSYS01 is not set +# CONFIG_TSYS02D is not set +# CONFIG_MAX31856 is not set +# end of Temperature sensors + +# CONFIG_NTB is not set +# CONFIG_VME_BUS is not set +# CONFIG_PWM is not set + +# +# IRQ chip support +# +# end of IRQ chip support + +# CONFIG_IPACK_BUS is not set +# CONFIG_RESET_CONTROLLER is not set + +# +# PHY Subsystem +# +# CONFIG_GENERIC_PHY is not set +# CONFIG_BCM_KONA_USB2_PHY is not set +# CONFIG_PHY_PXA_28NM_HSIC is not set +# CONFIG_PHY_PXA_28NM_USB2 is not set +# CONFIG_PHY_CPCAP_USB is not set +# end of PHY Subsystem + +# CONFIG_POWERCAP is not set +# CONFIG_MCB is not set + +# +# Performance monitor support +# +# end of Performance monitor support + +CONFIG_RAS=y +# CONFIG_USB4 is not set + +# CONFIG_LIBNVDIMM is not set +# CONFIG_DAX is not set +CONFIG_NVMEM=y +CONFIG_NVMEM_SYSFS=y + +# +# HW tracing support +# +# CONFIG_STM is not set +# CONFIG_INTEL_TH is not set +# end of HW tracing support + +# CONFIG_FPGA is not set +# CONFIG_SIOX is not set +# CONFIG_SLIMBUS is not set +# CONFIG_INTERCONNECT is not set +# CONFIG_COUNTER is not set +# end of Device Drivers + +# +# File systems +# +CONFIG_DCACHE_WORD_ACCESS=y +# CONFIG_VALIDATE_FS_PARSER is not set +CONFIG_FS_IOMAP=y +CONFIG_JBD2=y +# CONFIG_JBD2_DEBUG is not set +CONFIG_FS_MBCACHE=y +# CONFIG_REISERFS_FS is not set +# CONFIG_JFS_FS is not set +# CONFIG_XFS_FS is not set +# CONFIG_GFS2_FS is not set +# CONFIG_BTRFS_FS is not set +# CONFIG_NILFS2_FS is not set +# CONFIG_F2FS_FS is not set +# CONFIG_FS_DAX is not set +CONFIG_FS_POSIX_ACL=y +CONFIG_EXPORTFS=y +# CONFIG_EXPORTFS_BLOCK_OPS is not set +CONFIG_FILE_LOCKING=y +# CONFIG_FS_ENCRYPTION is not set +CONFIG_FSNOTIFY=y +CONFIG_DNOTIFY=y +CONFIG_INOTIFY_USER=y +# CONFIG_FANOTIFY is not set +CONFIG_QUOTA=y +CONFIG_QUOTA_NETLINK_INTERFACE=y +# CONFIG_PRINT_QUOTA_WARNING is not set +# CONFIG_QUOTA_DEBUG is not set +CONFIG_QUOTA_TREE=y +# CONFIG_QFMT_V1 is not set +CONFIG_QFMT_V2=y +CONFIG_QUOTACTL=y +CONFIG_AUTOFS_FS=y +# CONFIG_FUSE_FS is not set + +# +# Caches +# +# CONFIG_FSCACHE is not set +# end of Caches + +# +# CD-ROM/DVD Filesystems +# +CONFIG_ISO9660_FS=y +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +# CONFIG_UDF_FS is not set +# end of CD-ROM/DVD Filesystems + +# +# DOS/FAT/NT Filesystems +# +CONFIG_FAT_FS=y +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +# CONFIG_FAT_DEFAULT_UTF8 is not set +# CONFIG_NTFS_FS is not set +# end of DOS/FAT/NT Filesystems + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +CONFIG_PROC_KCORE=y +CONFIG_PROC_VMCORE=y +# CONFIG_PROC_VMCORE_DEVICE_DUMP is not set +CONFIG_PROC_SYSCTL=y +CONFIG_PROC_PAGE_MONITOR=y +CONFIG_KERNFS=y +CONFIG_SYSFS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_TMPFS_XATTR=y +CONFIG_HUGETLBFS=y +CONFIG_HUGETLB_PAGE=y +CONFIG_MEMFD_CREATE=y +CONFIG_ARCH_HAS_GIGANTIC_PAGE=y +# CONFIG_CONFIGFS_FS is not set +CONFIG_EFIVAR_FS=y +# end of Pseudo filesystems + +CONFIG_MISC_FILESYSTEMS=y +# CONFIG_ORANGEFS_FS is not set +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set +CONFIG_ECRYPT_FS=y +# CONFIG_ECRYPT_FS_MESSAGING is not set +# CONFIG_HFS_FS is not set +# CONFIG_HFSPLUS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EFS_FS is not set +# CONFIG_CRAMFS is not set +CONFIG_SQUASHFS=y +# CONFIG_SQUASHFS_FILE_CACHE is not set +CONFIG_SQUASHFS_FILE_DIRECT=y +CONFIG_SQUASHFS_DECOMP_MULTI=y +# CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU is not set +# CONFIG_SQUASHFS_COMPILE_DECOMP_SINGLE is not set +CONFIG_SQUASHFS_COMPILE_DECOMP_MULTI=y +# CONFIG_SQUASHFS_COMPILE_DECOMP_MULTI_PERCPU is not set +CONFIG_SQUASHFS_XATTR=y +CONFIG_SQUASHFS_ZLIB=y +CONFIG_SQUASHFS_LZ4=y +CONFIG_SQUASHFS_LZO=y +CONFIG_SQUASHFS_XZ=y +# CONFIG_SQUASHFS_ZSTD is not set +# CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set +CONFIG_SQUASHFS_EMBEDDED=y +CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 +# CONFIG_VXFS_FS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_OMFS_FS is not set +# CONFIG_HPFS_FS is not set +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX6FS_FS is not set +# CONFIG_ROMFS_FS is not set +# CONFIG_PSTORE is not set +# CONFIG_SYSV_FS is not set +# CONFIG_UFS_FS is not set +CONFIG_NETWORK_FILESYSTEMS=y +CONFIG_NFS_FS=y +CONFIG_NFS_V2=y +CONFIG_NFS_V3=y +CONFIG_NFS_V3_ACL=y +CONFIG_NFS_V4=y +# CONFIG_NFS_SWAP is not set +# CONFIG_NFS_V4_1 is not set +CONFIG_ROOT_NFS=y +# CONFIG_NFS_USE_LEGACY_DNS is not set +CONFIG_NFS_USE_KERNEL_DNS=y +# CONFIG_NFSD is not set +CONFIG_GRACE_PERIOD=y +CONFIG_LOCKD=y +CONFIG_LOCKD_V4=y +CONFIG_NFS_ACL_SUPPORT=y +CONFIG_NFS_COMMON=y +CONFIG_SUNRPC=y +CONFIG_SUNRPC_GSS=y +# CONFIG_SUNRPC_DEBUG is not set +# CONFIG_CEPH_FS is not set +# CONFIG_CIFS is not set +# CONFIG_CODA_FS is not set +# CONFIG_AFS_FS is not set +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="utf8" +CONFIG_NLS_CODEPAGE_437=y +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +CONFIG_NLS_ASCII=y +CONFIG_NLS_ISO8859_1=y +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_MAC_ROMAN is not set +# CONFIG_NLS_MAC_CELTIC is not set +# CONFIG_NLS_MAC_CENTEURO is not set +# CONFIG_NLS_MAC_CROATIAN is not set +# CONFIG_NLS_MAC_CYRILLIC is not set +# CONFIG_NLS_MAC_GAELIC is not set +# CONFIG_NLS_MAC_GREEK is not set +# CONFIG_NLS_MAC_ICELAND is not set +# CONFIG_NLS_MAC_INUIT is not set +# CONFIG_NLS_MAC_ROMANIAN is not set +# CONFIG_NLS_MAC_TURKISH is not set +CONFIG_NLS_UTF8=y +# CONFIG_UNICODE is not set +# end of File systems + +# +# Security options +# +CONFIG_KEYS=y +# CONFIG_PERSISTENT_KEYRINGS is not set +# CONFIG_BIG_KEYS is not set +# CONFIG_ENCRYPTED_KEYS is not set +# CONFIG_KEY_DH_OPERATIONS is not set +# CONFIG_SECURITY_DMESG_RESTRICT is not set +CONFIG_SECURITY=y +# CONFIG_SECURITYFS is not set +CONFIG_SECURITY_NETWORK=y +CONFIG_MITIGATION_PAGE_TABLE_ISOLATION=y +# CONFIG_SECURITY_NETWORK_XFRM is not set +# CONFIG_SECURITY_PATH is not set +# CONFIG_INTEL_TXT is not set +# CONFIG_HARDENED_USERCOPY is not set +# CONFIG_FORTIFY_SOURCE is not set +# CONFIG_STATIC_USERMODEHELPER is not set +# CONFIG_SECURITY_SELINUX is not set +# CONFIG_SECURITY_SMACK is not set +# CONFIG_SECURITY_TOMOYO is not set +# CONFIG_SECURITY_APPARMOR is not set +# CONFIG_SECURITY_LOADPIN is not set +# CONFIG_SECURITY_YAMA is not set +# CONFIG_SECURITY_SAFESETID is not set +CONFIG_INTEGRITY=y +# CONFIG_INTEGRITY_SIGNATURE is not set +CONFIG_INTEGRITY_AUDIT=y +# CONFIG_IMA is not set +# CONFIG_EVM is not set +CONFIG_DEFAULT_SECURITY_DAC=y +CONFIG_LSM="yama,loadpin,safesetid,integrity" + +# +# Kernel hardening options +# + +# +# Memory initialization +# +CONFIG_INIT_STACK_NONE=y +# end of Memory initialization +# end of Kernel hardening options +# end of Security options + +CONFIG_CRYPTO=y + +# +# Crypto core or helper +# +CONFIG_CRYPTO_MANAGER=y +# CONFIG_CRYPTO_USER is not set +CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y +CONFIG_CRYPTO_NULL=y +# CONFIG_CRYPTO_PCRYPT is not set +# CONFIG_CRYPTO_CRYPTD is not set +CONFIG_CRYPTO_AUTHENC=y +# CONFIG_CRYPTO_TEST is not set + +# +# Public-key cryptography +# +CONFIG_CRYPTO_RSA=y +# CONFIG_CRYPTO_ECDH is not set +# CONFIG_CRYPTO_ECRDSA is not set + +# +# Authenticated Encryption with Associated Data +# +CONFIG_CRYPTO_CCM=y +CONFIG_CRYPTO_GCM=y +# CONFIG_CRYPTO_CHACHA20POLY1305 is not set +# CONFIG_CRYPTO_AEGIS128 is not set +# CONFIG_CRYPTO_AEGIS128_SIMD is not set +# CONFIG_CRYPTO_AEGIS128_AESNI_SSE2 is not set +CONFIG_CRYPTO_SEQIV=y + +# +# Block modes +# +CONFIG_CRYPTO_CBC=y +CONFIG_CRYPTO_CTR=y +# CONFIG_CRYPTO_CTS is not set +CONFIG_CRYPTO_ECB=y +# CONFIG_CRYPTO_LRW is not set +# CONFIG_CRYPTO_PCBC is not set +# CONFIG_CRYPTO_XTS is not set +# CONFIG_CRYPTO_KEYWRAP is not set +# CONFIG_CRYPTO_NHPOLY1305_SSE2 is not set +# CONFIG_CRYPTO_NHPOLY1305_AVX2 is not set +# CONFIG_CRYPTO_ADIANTUM is not set + +# +# Hash modes +# +CONFIG_CRYPTO_CMAC=y +CONFIG_CRYPTO_HMAC=y +# CONFIG_CRYPTO_VMAC is not set + +# +# Digest +# +CONFIG_CRYPTO_CRC32C=y +# CONFIG_CRYPTO_CRC32C_INTEL is not set +# CONFIG_CRYPTO_CRC32 is not set +# CONFIG_CRYPTO_CRC32_PCLMUL is not set +# CONFIG_CRYPTO_CRCT10DIF is not set +CONFIG_CRYPTO_GHASH=y +# CONFIG_CRYPTO_POLY1305 is not set +# CONFIG_CRYPTO_POLY1305_X86_64 is not set +# CONFIG_CRYPTO_MD4 is not set +CONFIG_CRYPTO_MD5=y +# CONFIG_CRYPTO_MICHAEL_MIC is not set +CONFIG_CRYPTO_SHA1=y +# CONFIG_CRYPTO_SHA1_SSSE3 is not set +# CONFIG_CRYPTO_SHA256_SSSE3 is not set +# CONFIG_CRYPTO_SHA512_SSSE3 is not set +CONFIG_CRYPTO_SHA512=y +CONFIG_CRYPTO_SHA3=y +# CONFIG_CRYPTO_SM3 is not set +# CONFIG_CRYPTO_STREEBOG is not set +# CONFIG_CRYPTO_WP512 is not set +# CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL is not set + +# +# Ciphers +# +CONFIG_CRYPTO_AES=y +# CONFIG_CRYPTO_AES_TI is not set +# CONFIG_CRYPTO_AES_NI_INTEL is not set +# CONFIG_CRYPTO_ANUBIS is not set +# CONFIG_CRYPTO_BLOWFISH is not set +# CONFIG_CRYPTO_BLOWFISH_X86_64 is not set +# CONFIG_CRYPTO_CAST5 is not set +# CONFIG_CRYPTO_CAST5_AVX_X86_64 is not set +# CONFIG_CRYPTO_CAST6 is not set +# CONFIG_CRYPTO_CAST6_AVX_X86_64 is not set +CONFIG_CRYPTO_DES=y +# CONFIG_CRYPTO_DES3_EDE_X86_64 is not set +# CONFIG_CRYPTO_FCRYPT is not set +# CONFIG_CRYPTO_KHAZAD is not set +# CONFIG_CRYPTO_CHACHA20 is not set +# CONFIG_CRYPTO_CHACHA20_X86_64 is not set +# CONFIG_CRYPTO_SEED is not set +# CONFIG_CRYPTO_SERPENT is not set +# CONFIG_CRYPTO_SERPENT_SSE2_X86_64 is not set +# CONFIG_CRYPTO_SERPENT_AVX_X86_64 is not set +# CONFIG_CRYPTO_SERPENT_AVX2_X86_64 is not set +# CONFIG_CRYPTO_SM4 is not set +# CONFIG_CRYPTO_TEA is not set +# CONFIG_CRYPTO_TWOFISH is not set +# CONFIG_CRYPTO_TWOFISH_X86_64 is not set +# CONFIG_CRYPTO_TWOFISH_X86_64_3WAY is not set +# CONFIG_CRYPTO_TWOFISH_AVX_X86_64 is not set + +# +# Compression +# +# CONFIG_CRYPTO_842 is not set +# CONFIG_CRYPTO_LZ4 is not set +# CONFIG_CRYPTO_LZ4HC is not set +# CONFIG_CRYPTO_ZSTD is not set + +# +# Random Number Generation +# +# CONFIG_CRYPTO_ANSI_CPRNG is not set +CONFIG_CRYPTO_DRBG_MENU=y +CONFIG_CRYPTO_DRBG_HMAC=y +# CONFIG_CRYPTO_DRBG_HASH is not set +# CONFIG_CRYPTO_DRBG_CTR is not set +CONFIG_CRYPTO_DRBG=y +CONFIG_CRYPTO_JITTERENTROPY=y +# CONFIG_CRYPTO_USER_API_HASH is not set +# CONFIG_CRYPTO_USER_API_SKCIPHER is not set +# CONFIG_CRYPTO_USER_API_RNG is not set +# CONFIG_CRYPTO_USER_API_AEAD is not set +CONFIG_CRYPTO_HASH_INFO=y +CONFIG_CRYPTO_HW=y +# CONFIG_CRYPTO_DEV_PADLOCK is not set +# CONFIG_CRYPTO_DEV_CCP is not set +# CONFIG_CRYPTO_DEV_QAT_DH895xCC is not set +# CONFIG_CRYPTO_DEV_QAT_C3XXX is not set +CONFIG_CRYPTO_DEV_QAT_C62X=m +# CONFIG_CRYPTO_DEV_QAT_DH895xCCVF is not set +# CONFIG_CRYPTO_DEV_QAT_C3XXXVF is not set +CONFIG_CRYPTO_DEV_QAT_C62XVF=m +# CONFIG_CRYPTO_DEV_NITROX_CNN55XX is not set +CONFIG_CRYPTO_DEV_VIRTIO=m +CONFIG_ASYMMETRIC_KEY_TYPE=y +CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y +CONFIG_X509_CERTIFICATE_PARSER=y +# CONFIG_PKCS8_PRIVATE_KEY_PARSER is not set +CONFIG_PKCS7_MESSAGE_PARSER=y + +# +# Certificates for signature checking +# +CONFIG_SYSTEM_TRUSTED_KEYRING=y +CONFIG_SYSTEM_TRUSTED_KEYS="" +# CONFIG_SYSTEM_EXTRA_CERTIFICATE is not set +# CONFIG_SECONDARY_TRUSTED_KEYRING is not set +# CONFIG_SYSTEM_BLACKLIST_KEYRING is not set +# end of Certificates for signature checking + +CONFIG_BINARY_PRINTF=y + +# +# Library routines +# +# CONFIG_PACKING is not set +CONFIG_BITREVERSE=y +CONFIG_GENERIC_STRNCPY_FROM_USER=y +CONFIG_GENERIC_STRNLEN_USER=y +CONFIG_GENERIC_NET_UTILS=y +# CONFIG_CORDIC is not set +CONFIG_RATIONAL=y +CONFIG_GENERIC_PCI_IOMAP=y +CONFIG_GENERIC_IOMAP=y +CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y +CONFIG_ARCH_HAS_FAST_MULTIPLIER=y +CONFIG_CRC_CCITT=y +CONFIG_CRC16=y +# CONFIG_CRC_T10DIF is not set +# CONFIG_CRC_ITU_T is not set +CONFIG_CRC32=y +# CONFIG_CRC32_SELFTEST is not set +CONFIG_CRC32_SLICEBY8=y +# CONFIG_CRC32_SLICEBY4 is not set +# CONFIG_CRC32_SARWATE is not set +# CONFIG_CRC32_BIT is not set +# CONFIG_CRC64 is not set +# CONFIG_CRC4 is not set +# CONFIG_CRC7 is not set +# CONFIG_RANDOM32_SELFTEST is not set +CONFIG_ZLIB_INFLATE=y +CONFIG_LZO_COMPRESS=y +CONFIG_LZO_DECOMPRESS=y +CONFIG_LZ4_DECOMPRESS=y +CONFIG_XZ_DEC=y +CONFIG_XZ_DEC_X86=y +CONFIG_XZ_DEC_POWERPC=y +CONFIG_XZ_DEC_ARM=y +CONFIG_XZ_DEC_ARMTHUMB=y +CONFIG_XZ_DEC_SPARC=y +CONFIG_XZ_DEC_BCJ=y +# CONFIG_XZ_DEC_TEST is not set +CONFIG_DECOMPRESS_GZIP=y +CONFIG_DECOMPRESS_BZIP2=y +CONFIG_DECOMPRESS_LZMA=y +CONFIG_DECOMPRESS_XZ=y +CONFIG_DECOMPRESS_LZO=y +CONFIG_DECOMPRESS_LZ4=y +CONFIG_GENERIC_ALLOCATOR=y +CONFIG_ASSOCIATIVE_ARRAY=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT_MAP=y +CONFIG_HAS_DMA=y +CONFIG_NEED_SG_DMA_LENGTH=y +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_ARCH_DMA_ADDR_T_64BIT=y +CONFIG_SWIOTLB=y +# CONFIG_DMA_API_DEBUG is not set +CONFIG_SGL_ALLOC=y +CONFIG_CHECK_SIGNATURE=y +CONFIG_CPU_RMAP=y +CONFIG_DQL=y +CONFIG_GLOB=y +# CONFIG_GLOB_SELFTEST is not set +CONFIG_NLATTR=y +CONFIG_CLZ_TAB=y +# CONFIG_DDR is not set +# CONFIG_IRQ_POLL is not set +CONFIG_MPILIB=y +CONFIG_OID_REGISTRY=y +CONFIG_UCS2_STRING=y +CONFIG_FONT_SUPPORT=y +# CONFIG_FONTS is not set +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +CONFIG_SG_POOL=y +CONFIG_ARCH_HAS_PMEM_API=y +CONFIG_ARCH_HAS_UACCESS_FLUSHCACHE=y +CONFIG_ARCH_HAS_COPY_MC=y +CONFIG_ARCH_STACKWALK=y +CONFIG_SBITMAP=y +# CONFIG_STRING_KUNIT_TEST is not set +# end of Library routines + +# +# Kernel hacking +# + +# +# printk and dmesg options +# +CONFIG_PRINTK_TIME=y +# CONFIG_PRINTK_CALLER is not set +CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7 +CONFIG_CONSOLE_LOGLEVEL_QUIET=4 +CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4 +# CONFIG_BOOT_PRINTK_DELAY is not set +CONFIG_DYNAMIC_DEBUG=y +# end of printk and dmesg options + +# +# Compile-time checks and compiler options +# +# CONFIG_DEBUG_INFO is not set +CONFIG_FRAME_WARN=2048 +# CONFIG_STRIP_ASM_SYMS is not set +# CONFIG_READABLE_ASM is not set +CONFIG_DEBUG_FS=y +# CONFIG_DEBUG_SECTION_MISMATCH is not set +CONFIG_SECTION_MISMATCH_WARN_ONLY=y +CONFIG_OBJTOOL=y +# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set +# end of Compile-time checks and compiler options + +CONFIG_MAGIC_SYSRQ=y +CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1 +CONFIG_MAGIC_SYSRQ_SERIAL=y +CONFIG_DEBUG_KERNEL=y +CONFIG_DEBUG_MISC=y + +# +# Memory Debugging +# +# CONFIG_PAGE_EXTENSION is not set +# CONFIG_DEBUG_PAGEALLOC is not set +# CONFIG_PAGE_OWNER is not set +# CONFIG_PAGE_POISONING is not set +# CONFIG_DEBUG_PAGE_REF is not set +# CONFIG_DEBUG_RODATA_TEST is not set +# CONFIG_DEBUG_OBJECTS is not set +# CONFIG_SLUB_DEBUG_ON is not set +# CONFIG_SLUB_STATS is not set +CONFIG_HAVE_DEBUG_KMEMLEAK=y +# CONFIG_DEBUG_KMEMLEAK is not set +# CONFIG_DEBUG_STACK_USAGE is not set +# CONFIG_DEBUG_VM is not set +CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y +# CONFIG_DEBUG_VIRTUAL is not set +CONFIG_DEBUG_MEMORY_INIT=y +# CONFIG_DEBUG_PER_CPU_MAPS is not set +CONFIG_HAVE_ARCH_KASAN=y +CONFIG_CC_HAS_KASAN_GENERIC=y +# CONFIG_KASAN is not set +# end of Memory Debugging + +CONFIG_ARCH_HAS_KCOV=y +CONFIG_CC_HAS_SANCOV_TRACE_PC=y +# CONFIG_KCOV is not set +# CONFIG_DEBUG_SHIRQ is not set + +# +# Debug Lockups and Hangs +# +# CONFIG_SOFTLOCKUP_DETECTOR is not set +CONFIG_HARDLOCKUP_CHECK_TIMESTAMP=y +# CONFIG_HARDLOCKUP_DETECTOR is not set +# CONFIG_DETECT_HUNG_TASK is not set +# CONFIG_WQ_WATCHDOG is not set +# end of Debug Lockups and Hangs + +# CONFIG_PANIC_ON_OOPS is not set +CONFIG_PANIC_ON_OOPS_VALUE=0 +CONFIG_PANIC_TIMEOUT=0 +# CONFIG_SCHED_DEBUG is not set +CONFIG_SCHED_INFO=y +CONFIG_SCHEDSTATS=y +# CONFIG_SCHED_STACK_END_CHECK is not set + +# +# Lock Debugging (spinlocks, mutexes, etc...) +# +CONFIG_LOCK_DEBUGGING_SUPPORT=y +# CONFIG_PROVE_LOCKING is not set +# CONFIG_LOCK_STAT is not set +# CONFIG_DEBUG_RT_MUTEXES is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_MUTEXES is not set +# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set +# CONFIG_DEBUG_RWSEMS is not set +# CONFIG_DEBUG_LOCK_ALLOC is not set +# CONFIG_DEBUG_ATOMIC_SLEEP is not set +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +# CONFIG_LOCK_TORTURE_TEST is not set +# CONFIG_WW_MUTEX_SELFTEST is not set +# end of Lock Debugging (spinlocks, mutexes, etc...) + +CONFIG_STACKTRACE=y +# CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set +# CONFIG_DEBUG_KOBJECT is not set +CONFIG_DEBUG_BUGVERBOSE=y +# CONFIG_DEBUG_LIST is not set +# CONFIG_DEBUG_PLIST is not set +# CONFIG_DEBUG_SG is not set +# CONFIG_DEBUG_NOTIFIERS is not set + +# +# RCU Debugging +# +# CONFIG_RCU_SCALE_TEST is not set +# CONFIG_RCU_TORTURE_TEST is not set +CONFIG_RCU_CPU_STALL_TIMEOUT=21 +# CONFIG_RCU_TRACE is not set +# CONFIG_RCU_EQS_DEBUG is not set +# end of RCU Debugging + +# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set +# CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set +# CONFIG_NOTIFIER_ERROR_INJECTION is not set +CONFIG_FUNCTION_ERROR_INJECTION=y +# CONFIG_FAULT_INJECTION is not set +# CONFIG_LATENCYTOP is not set +CONFIG_USER_STACKTRACE_SUPPORT=y +CONFIG_NOP_TRACER=y +CONFIG_HAVE_FUNCTION_TRACER=y +CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y +CONFIG_HAVE_DYNAMIC_FTRACE=y +CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y +CONFIG_HAVE_SYSCALL_TRACEPOINTS=y +CONFIG_HAVE_FENTRY=y +CONFIG_HAVE_C_RECORDMCOUNT=y +CONFIG_TRACE_CLOCK=y +CONFIG_RING_BUFFER=y +CONFIG_EVENT_TRACING=y +CONFIG_CONTEXT_SWITCH_TRACER=y +CONFIG_TRACING=y +CONFIG_GENERIC_TRACER=y +CONFIG_TRACING_SUPPORT=y +CONFIG_FTRACE=y +CONFIG_FUNCTION_TRACER=y +CONFIG_FUNCTION_GRAPH_TRACER=y +CONFIG_DYNAMIC_FTRACE=y +# CONFIG_IRQSOFF_TRACER is not set +# CONFIG_SCHED_TRACER is not set +# CONFIG_HWLAT_TRACER is not set +# CONFIG_FTRACE_SYSCALLS is not set +# CONFIG_TRACER_SNAPSHOT is not set +CONFIG_BRANCH_PROFILE_NONE=y +# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set +# CONFIG_PROFILE_ALL_BRANCHES is not set +# CONFIG_STACK_TRACER is not set +CONFIG_BLK_DEV_IO_TRACE=y +CONFIG_KPROBE_EVENTS=y +CONFIG_UPROBE_EVENTS=y +CONFIG_DYNAMIC_EVENTS=y +CONFIG_PROBE_EVENTS=y +# CONFIG_FTRACE_STARTUP_TEST is not set +# CONFIG_MMIOTRACE is not set +# CONFIG_HIST_TRIGGERS is not set +# CONFIG_TRACEPOINT_BENCHMARK is not set +# CONFIG_RING_BUFFER_BENCHMARK is not set +# CONFIG_RING_BUFFER_STARTUP_TEST is not set +# CONFIG_PREEMPTIRQ_DELAY_TEST is not set +# CONFIG_TRACE_EVAL_MAP_FILE is not set +CONFIG_PROVIDE_OHCI1394_DMA_INIT=y +CONFIG_RUNTIME_TESTING_MENU=y +# CONFIG_LKDTM is not set +# CONFIG_TEST_LIST_SORT is not set +# CONFIG_TEST_SORT is not set +# CONFIG_KPROBES_SANITY_TEST is not set +# CONFIG_BACKTRACE_SELF_TEST is not set +# CONFIG_RBTREE_TEST is not set +# CONFIG_INTERVAL_TREE_TEST is not set +# CONFIG_PERCPU_TEST is not set +# CONFIG_ATOMIC64_SELFTEST is not set +# CONFIG_TEST_HEXDUMP is not set +# CONFIG_STRING_HELPERS_KUNIT_TEST is not set +# CONFIG_TEST_KSTRTOX is not set +# CONFIG_TEST_PRINTF is not set +# CONFIG_TEST_BITMAP is not set +# CONFIG_TEST_UUID is not set +# CONFIG_TEST_XARRAY is not set +# CONFIG_TEST_RHASHTABLE is not set +# CONFIG_TEST_IDA is not set +# CONFIG_TEST_LKM is not set +# CONFIG_TEST_VMALLOC is not set +# CONFIG_TEST_BPF is not set +# CONFIG_FIND_BIT_BENCHMARK is not set +# CONFIG_TEST_FIRMWARE is not set +# CONFIG_TEST_SYSCTL is not set +# CONFIG_USERCOPY_KUNIT_TEST is not set +# CONFIG_TEST_UDELAY is not set +# CONFIG_TEST_STATIC_KEYS is not set +# CONFIG_TEST_KMOD is not set +# CONFIG_TEST_MEMCAT_P is not set +# CONFIG_MEMTEST is not set +# CONFIG_BUG_ON_DATA_CORRUPTION is not set +# CONFIG_SAMPLES is not set +CONFIG_HAVE_ARCH_KGDB=y +# CONFIG_KGDB is not set +# CONFIG_UBSAN is not set +CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y +# CONFIG_STRICT_DEVMEM is not set +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +CONFIG_EARLY_PRINTK_USB=y +CONFIG_X86_VERBOSE_BOOTUP=y +CONFIG_EARLY_PRINTK=y +CONFIG_EARLY_PRINTK_DBGP=y +# CONFIG_EARLY_PRINTK_USB_XDBC is not set +# CONFIG_EFI_PGT_DUMP is not set +# CONFIG_DEBUG_WX is not set +# CONFIG_DEBUG_TLBFLUSH is not set +CONFIG_HAVE_MMIOTRACE_SUPPORT=y +# CONFIG_X86_DECODER_SELFTEST is not set +CONFIG_IO_DELAY_0X80=y +# CONFIG_IO_DELAY_0XED is not set +# CONFIG_IO_DELAY_UDELAY is not set +# CONFIG_IO_DELAY_NONE is not set +CONFIG_DEBUG_BOOT_PARAMS=y +# CONFIG_CPA_DEBUG is not set +# CONFIG_DEBUG_ENTRY is not set +# CONFIG_DEBUG_NMI_SELFTEST is not set +CONFIG_X86_DEBUG_FPU=y +# CONFIG_PUNIT_ATOM_DEBUG is not set +CONFIG_UNWINDER_ORC=y +# CONFIG_UNWINDER_FRAME_POINTER is not set +# end of Kernel hacking diff --git a/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/x86_64-intel/x86_64-intel.scc b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/x86_64-intel/x86_64-intel.scc new file mode 100644 index 00000000..2693c9e1 --- /dev/null +++ b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/bsp/x86_64-intel/x86_64-intel.scc @@ -0,0 +1,17 @@ +define KMACHINE x86_64-intel +define KTYPE standard +define KARCH x86 + +patch 0002-driver-support-intel-igb-bcm5461S-phy.patch +patch igb-setup-Broadcom-54616-PHY-when-no-EEPROM-present.patch +patch igb_print_mac_phy_type.patch + +include cfg/bisdn-linux.scc + +kconf hardware x86_64-intel.cfg + +include features/dca/dca.scc +include features/ice/ice.scc +include features/mei/mei-me.scc +include features/usb/xhci-hcd.scc +include features/x2apic/x2apic.scc diff --git a/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/cfg/0001-net-bridge-ensure-that-link-local-traffic-cannot-unl.patch b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/cfg/0001-net-bridge-ensure-that-link-local-traffic-cannot-unl.patch new file mode 100644 index 00000000..e259dd16 --- /dev/null +++ b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/cfg/0001-net-bridge-ensure-that-link-local-traffic-cannot-unl.patch @@ -0,0 +1,48 @@ +From 6a8ebc2f5476c218a359687a1423e86f744857e4 Mon Sep 17 00:00:00 2001 +From: Hans Schultz +Date: Thu, 30 Jun 2022 13:16:34 +0200 +Subject: [PATCH] net: bridge: ensure that link-local traffic cannot unlock a + locked port + +Especially since adding MAB support with a35ec8e38cdd ("bridge: Add MAC +Authentication Bypass (MAB) support") there are legitimate use cases for +enabling learning on a locked port. Likewise, if userspace uses dynamic +FDB entries learning needs to be enabled as well. + +Currently, by default, the bridge will autonomously populate its FDB +with addresses learned from link-local frames. This is true even when a +port is locked, which defeats the purpose of the "locked" bridge port +option. + +The behavior can be controlled by the "no_linklocal_learn" bridge +option, but it is easy to miss, which leads to insecure configurations. +Additionally, it also disables this for unlocked bridge ports, where +the behavior may be desired. + +Fix this by skipping learning from link-local frames when a port is +locked. + +Fixes: a21d9a670d81 ("net: bridge: Add support for bridge port in locked mode") +Upstream-Status: Pending [net-next is closed until feb 3rd] +Signed-off-by: Hans Schultz +[jonas.gorski: reworded the commit message] +Signed-off-by: Jonas Gorski +--- + net/bridge/br_input.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/net/bridge/br_input.c b/net/bridge/br_input.c +index c729528b5e85..152ff3d85eb5 100644 +--- a/net/bridge/br_input.c ++++ b/net/bridge/br_input.c +@@ -232,6 +232,7 @@ static void __br_handle_local_finish(struct sk_buff *skb) + if ((p->flags & BR_LEARNING) && + nbp_state_should_learn(p) && + !br_opt_get(p->br, BROPT_NO_LL_LEARN) && ++ !(p->flags & BR_PORT_LOCKED) && + br_should_learn(p, skb, &vid)) + br_fdb_update(p->br, p, eth_hdr(skb)->h_source, vid, 0); + } +-- +2.47.1 + diff --git a/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/cfg/0001-net-ipv6-apply-IFLA_INET6_ADDR_GEN_MODE-immediately.patch b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/cfg/0001-net-ipv6-apply-IFLA_INET6_ADDR_GEN_MODE-immediately.patch new file mode 100644 index 00000000..24effd9d --- /dev/null +++ b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/cfg/0001-net-ipv6-apply-IFLA_INET6_ADDR_GEN_MODE-immediately.patch @@ -0,0 +1,36 @@ +From b432419f4ac060e238991272eee98e3b23f26dcf Mon Sep 17 00:00:00 2001 +From: Jonas Gorski +Date: Fri, 23 Jul 2021 17:00:59 +0200 +Subject: [PATCH] net: ipv6: apply IFLA_INET6_ADDR_GEN_MODE immediately + +Apply IFLA_INET6_ADDR_GEN_MODE directly instead of just updating the +configuration. This allows changing IPv6 address generation at runtime +like it is possible through sysctl / procfs. + +This aligns the way addr_gen_mode changes are handled, regardless of the +source of the change. + +Signed-off-by: Jonas Gorski +--- + net/ipv6/addrconf.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c +index f7c17388ff6a..26194ec62802 100644 +--- a/net/ipv6/addrconf.c ++++ b/net/ipv6/addrconf.c +@@ -6055,7 +6055,10 @@ static int inet6_set_link_af(struct net_device *dev, const struct nlattr *nla, + if (tb[IFLA_INET6_ADDR_GEN_MODE]) { + u8 mode = nla_get_u8(tb[IFLA_INET6_ADDR_GEN_MODE]); + +- WRITE_ONCE(idev->cnf.addr_gen_mode, mode); ++ if (idev->cnf.addr_gen_mode != mode) { ++ WRITE_ONCE(idev->cnf.addr_gen_mode, mode); ++ addrconf_init_auto_addrs(idev->dev); ++ } + } + + return 0; +-- +2.47.1 + diff --git a/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/cfg/0001-net-rtnetlink-send-BONDING_INFO-events-down-to-users.patch b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/cfg/0001-net-rtnetlink-send-BONDING_INFO-events-down-to-users.patch new file mode 100644 index 00000000..e60bb844 --- /dev/null +++ b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/cfg/0001-net-rtnetlink-send-BONDING_INFO-events-down-to-users.patch @@ -0,0 +1,25 @@ +From 2e7a80aada3f557cfb29dc23d3b16c5cd0b1389a Mon Sep 17 00:00:00 2001 +From: Jonas Gorski +Date: Thu, 8 Oct 2020 10:28:38 +0200 +Subject: [PATCH] net: rtnetlink: send BONDING_INFO events down to userspace + +Signed-off-by: Jonas Gorski +--- + net/core/rtnetlink.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c +index 2ba5cd965d3f..5ef61bd8ba2a 100644 +--- a/net/core/rtnetlink.c ++++ b/net/core/rtnetlink.c +@@ -6721,6 +6721,7 @@ static int rtnetlink_event(struct notifier_block *this, unsigned long event, voi + case NETDEV_CHANGEUPPER: + case NETDEV_RESEND_IGMP: + case NETDEV_CHANGEINFODATA: ++ case NETDEV_BONDING_INFO: + case NETDEV_CHANGELOWERSTATE: + case NETDEV_CHANGE_TX_QUEUE_LEN: + rtmsg_ifinfo_event(RTM_NEWLINK, dev, 0, rtnl_get_event(event), +-- +2.47.1 + diff --git a/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/cfg/0001-tun-allow-setting-hwaddr-on-tap-interface-creation.patch b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/cfg/0001-tun-allow-setting-hwaddr-on-tap-interface-creation.patch new file mode 100644 index 00000000..48030b2b --- /dev/null +++ b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/cfg/0001-tun-allow-setting-hwaddr-on-tap-interface-creation.patch @@ -0,0 +1,42 @@ +From fe9830c8669dba03f2e2dc60e30775fb88749159 Mon Sep 17 00:00:00 2001 +From: Jonas Gorski +Date: Tue, 19 Jul 2022 14:44:05 +0200 +Subject: [PATCH] tun: allow setting hwaddr on tap interface creation + +Sometimes using a fixed mac address on tap interfaces is desired, but +setting it after creation may race with e.g. a network manager trying to +set its own mac address (*cough* systemd-networkd) or configuring / +enabling the interface. + +So allow passing a mac address in the ifreq by (ab)using the fact that +the sa_family field of the sockaddr matches the ifr_flags, so we can +just use the sa_data field of ifr_hwaddr for passing it. + +To avoid assigning unexpected mac addresses, do a validity check before +trying to use it. + +Upstream-Status: undecided if suitable [rather hackish, but also simple] +Signed-off-by: Jonas Gorski +--- + drivers/net/tun.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/drivers/net/tun.c b/drivers/net/tun.c +index 03fe9e3ee7af..dacd55c72e45 100644 +--- a/drivers/net/tun.c ++++ b/drivers/net/tun.c +@@ -1394,7 +1394,10 @@ static void tun_net_initialize(struct net_device *dev) + dev->priv_flags &= ~IFF_TX_SKB_SHARING; + dev->priv_flags |= IFF_LIVE_ADDR_CHANGE; + +- eth_hw_addr_random(dev); ++ if (is_valid_ether_addr(tun->ifr->ifr_hwaddr.sa_data)) ++ eth_hw_addr_set(dev, tun->ifr->ifr_hwaddr.sa_data); ++ else ++ eth_hw_addr_random(dev); + + /* Currently tun does not support XDP, only tap does. */ + dev->xdp_features = NETDEV_XDP_ACT_BASIC | +-- +2.47.1 + diff --git a/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/cfg/bisdn-linux.scc b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/cfg/bisdn-linux.scc new file mode 100644 index 00000000..a034a6f0 --- /dev/null +++ b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/cfg/bisdn-linux.scc @@ -0,0 +1,20 @@ +# SPDX-License-Identifier: MIT + +patch 0001-net-rtnetlink-send-BONDING_INFO-events-down-to-users.patch +patch 0001-net-ipv6-apply-IFLA_INET6_ADDR_GEN_MODE-immediately.patch +patch 0001-tun-allow-setting-hwaddr-on-tap-interface-creation.patch +patch 0001-net-bridge-ensure-that-link-local-traffic-cannot-unl.patch + +# https://git.yoctoproject.org/yocto-kernel-cache/tree/ +include features/bpf/bpf.scc +include features/cgroups/cgroups.scc +include features/tun/tun.scc +include features/vrf/vrf.scc +include cfg/fs/ext4.scc +include cfg/net/bridge.scc +include cfg/net/ipsec.scc +include cfg/net/ipsec6.scc +include cgl/cfg/net/ip_vs.scc + +# in recipes-kernel/linux/linux-yocto-onl-linux-*/bisdn-kmeta/cfg/ +include docker-extra.scc diff --git a/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/cfg/docker-extra.cfg b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/cfg/docker-extra.cfg new file mode 100644 index 00000000..300d18b5 --- /dev/null +++ b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/cfg/docker-extra.cfg @@ -0,0 +1,18 @@ +# Linux kernel config flags to support docker/moby as recommended by +# https://github.com/moby/moby/raw/master/contrib/check-config.sh +# (only flags missing and not available when including already existing kernel +# config snippets from upstream yocto) +CONFIG_BLK_DEV_THROTTLING=y +CONFIG_CFS_BANDWIDTH=y +CONFIG_DUMMY=m +CONFIG_INET_ESP=m +CONFIG_IPVLAN=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_IP_VS_NFCT=y +CONFIG_NETFILTER_XT_MATCH_IPVS=m +CONFIG_NETFILTER_XT_MARK=m +CONFIG_POSIX_MQUEUE=y +# Disable RT_GROUP_SCHED following to avoid issues with systemd cgroups needed +# for docker following the suggestion here: +# https://github.com/systemd/systemd/blob/main/README#L125-L132 +# CONFIG_RT_GROUP_SCHED is not set diff --git a/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/cfg/docker-extra.scc b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/cfg/docker-extra.scc new file mode 100644 index 00000000..d60cadcd --- /dev/null +++ b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/bisdn-kmeta/cfg/docker-extra.scc @@ -0,0 +1,4 @@ +define KFEATURE_DESCRIPTION "Enable additional features needed by docker" +define KFEATURE_COMPATIBILITY board + +kconf non-hardware docker-extra.cfg diff --git a/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/kernel-meta/cfg/virtio.cfg b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/kernel-meta/cfg/virtio.cfg new file mode 100644 index 00000000..938d2da5 --- /dev/null +++ b/recipes-kernel/linux/linux-yocto-onl-linux-6.12.y/kernel-meta/cfg/virtio.cfg @@ -0,0 +1,18 @@ +# SPDX-License-Identifier: MIT +CONFIG_VIRTIO=y +CONFIG_VIRTIO_PCI=y +CONFIG_VIRTIO_BALLOON=y +CONFIG_VIRTIO_NET=y +CONFIG_VIRTIO_BLK=y +CONFIG_VIRTIO_CONSOLE=y +CONFIG_VIRTIO_MMIO=y +CONFIG_VIRTIO_INPUT=m +CONFIG_HW_RANDOM=y +CONFIG_HW_RANDOM_VIRTIO=y +CONFIG_SCSI_VIRTIO=y +CONFIG_CRYPTO_DEV_VIRTIO=y +CONFIG_DRM_VIRTIO_GPU=y +CONFIG_VSOCKETS=y +CONFIG_VSOCKETS_DIAG=y +CONFIG_VIRTIO_VSOCKETS=y +CONFIG_VIRTIO_VSOCKETS_COMMON=y diff --git a/recipes-kernel/linux/linux-yocto-onl_6.12.bb b/recipes-kernel/linux/linux-yocto-onl_6.12.bb new file mode 100644 index 00000000..deadd705 --- /dev/null +++ b/recipes-kernel/linux/linux-yocto-onl_6.12.bb @@ -0,0 +1,51 @@ +KBRANCH ?= "linux-6.12.y" + +require linux-yocto-onl.inc +include cve-exclusion_6.12.inc + +KCONF_BSP_AUDIT_LEVEL = "1" + +LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" + +LINUX_VERSION ?= "6.12.54" +# https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/log/?h=linux-6.12.y +SRCREV_machine ?= "c1859a8cfe840386e199c43d5eda79cc692009e4" + +# Use commit for kver matching (or close to) LINUX_VERSION +# https://git.yoctoproject.org/yocto-kernel-cache/log/kver?h=yocto-6.12 +SRCREV_meta ?= "85715aeb30d5d82a7886c148632e13dc4426c72d" + +SRC_URI += "\ + git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-6.12;destsuffix=kernel-meta \ + file://bisdn-kmeta;type=kmeta;name=bisdn-kmeta;destsuffix=bisdn-kmeta \ +" + +# "Revert" 917043019b46 ("virtio: Add prereqs for tiny") from yocto-kernel-cache +# as it forces several subsystems like DRM on, which we do not need since none +# of our devices have a GPU. +# We cannot use patches for that since patches are applied after parsing meta, +# so the next best thing is copying a pre-commit version of the file. +SRC_URI += "\ + file://0001-Revert-virtio-Add-prereqs-for-tiny.patch;patchdir=kernel-meta \ +" + +DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}" +DEPENDS += "openssl-native util-linux-native" +DEPENDS += "gmp-native libmpc-native" + +# With i2c-i801 and i2c-ismt built as modules there is no guarantee one or the +# other will be probed first and gets bus 0, but platforms use hardcoded paths +# assuming bus 0 is i2c-i801. +# So blacklist i2c-ismt to load it via platform code once i2c-i801 finished +# registering its i2c bus. +KERNEL_MODULE_PROBECONF:append:x86-64 = " i2c-ismt" +module_conf_i2c-ismt = "blacklist i2c-ismt" + +# The i2c-i801 reserves resources that may be meant for another driver. +# Blacklist i2c-i801 and only load it as needed. +KERNEL_MODULE_PROBECONF:append:x86-64 = " i2c-i801" +module_conf_i2c-i801 = "blacklist i2c-i801" + +# meta-virtualization does not provide a linux-yocto_6.12_virtualization.inc, +# so we need to include it directly. +include ${@bb.utils.contains('DISTRO_FEATURES', 'virtualization', 'recipes-kernel/linux/linux-yocto_virtualization.inc', '', d)} From 56fb2774d5fb2e95150802aa32a965edda3328e0 Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Thu, 20 Feb 2025 16:29:13 +0100 Subject: [PATCH 5/6] linux-libc-headers: update to 6.12 Update linux-libc-headers to 6.12 matching our kernel version. Signed-off-by: Jonas Gorski --- conf/layer.conf | 2 +- ...eaders.sh-Strip-_UAPI-from-if-define.patch | 38 ------------------- ...ders_6.6.bb => linux-libc-headers_6.12.bb} | 7 +--- 3 files changed, 2 insertions(+), 45 deletions(-) delete mode 100644 recipes-kernel/linux-libc-headers/linux-libc-headers/0001-kbuild-install_headers.sh-Strip-_UAPI-from-if-define.patch rename recipes-kernel/linux-libc-headers/{linux-libc-headers_6.6.bb => linux-libc-headers_6.12.bb} (66%) diff --git a/conf/layer.conf b/conf/layer.conf index a59f1760..88e541a2 100644 --- a/conf/layer.conf +++ b/conf/layer.conf @@ -11,4 +11,4 @@ BBFILE_PRIORITY_open-network-linux = "6" LAYERSERIES_COMPAT_open-network-linux = "scarthgap" -PREFERRED_VERSION_linux-libc-headers ?= "6.6%" +PREFERRED_VERSION_linux-libc-headers ?= "6.12%" diff --git a/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-kbuild-install_headers.sh-Strip-_UAPI-from-if-define.patch b/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-kbuild-install_headers.sh-Strip-_UAPI-from-if-define.patch deleted file mode 100644 index 54528b6e..00000000 --- a/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-kbuild-install_headers.sh-Strip-_UAPI-from-if-define.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 9ca6c6a510bda90954aa2532711200b89dd1df89 Mon Sep 17 00:00:00 2001 -From: Dave Martin -Date: Tue, 11 Dec 2018 19:26:45 +0000 -Subject: [PATCH 1/3] kbuild: install_headers.sh: Strip _UAPI from - #if-defined() guards - -install_headers.sh knows how to strip the _UAPI prefix from #ifdef/ -ifndef and #define directives used to guard headers against multiple -or inappropriate inclusion. Currently this does not work for guards -in the "#if defined()" style, which may be needed for non-trivial -cases. - -This patch adds similar logic so that the _UAPI prefix is also -stripped from guard directives written using "#if defined()" etc. - -This is not completely foolproof, but will work for simple cases of -using #if defined() to guard against inappropriate header inclusion. - -Signed-off-by: Dave Martin -Signed-off-by: Bruce Ashfield - -Upstream-Status: Submitted [https://www.spinics.net/lists/arm-kernel/msg694800.html] ---- - scripts/headers_install.sh | 1 + - 1 file changed, 1 insertion(+) - -Index: linux-5.4/scripts/headers_install.sh -=================================================================== ---- linux-5.4.orig/scripts/headers_install.sh -+++ linux-5.4/scripts/headers_install.sh -@@ -36,6 +36,7 @@ - s/(^|[^a-zA-Z0-9])__packed([^a-zA-Z0-9_]|$)/\1__attribute__((packed))\2/g - s/(^|[[:space:](])(inline|asm|volatile)([[:space:](]|$)/\1__\2__\3/g - s@#(ifndef|define|endif[[:space:]]*/[*])[[:space:]]*_UAPI@#\1 @ -+ :1;s/(#(if|elif)(.*[^A-Za-z0-9_])defined\([[:space:]]*)_UAPI/\1/;t1 - ' $INFILE > $TMPFILE || exit 1 - - scripts/unifdef -U__KERNEL__ -D__EXPORTED_HEADERS__ $TMPFILE > $OUTFILE diff --git a/recipes-kernel/linux-libc-headers/linux-libc-headers_6.6.bb b/recipes-kernel/linux-libc-headers/linux-libc-headers_6.12.bb similarity index 66% rename from recipes-kernel/linux-libc-headers/linux-libc-headers_6.6.bb rename to recipes-kernel/linux-libc-headers/linux-libc-headers_6.12.bb index d68de6ec..dd6add38 100644 --- a/recipes-kernel/linux-libc-headers/linux-libc-headers_6.6.bb +++ b/recipes-kernel/linux-libc-headers/linux-libc-headers_6.12.bb @@ -6,12 +6,7 @@ SRC_URI:append:libc-musl = "\ file://0001-libc-compat.h-musl-_does_-define-IFF_LOWER_UP-DORMAN.patch \ " -SRC_URI += "\ - file://0001-kbuild-install_headers.sh-Strip-_UAPI-from-if-define.patch \ -" - LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" -SRC_URI[sha256sum] = "d926a06c63dd8ac7df3f86ee1ffc2ce2a3b81a2d168484e76b5b389aba8e56d0" - +SRC_URI[sha256sum] = "b1a2562be56e42afb3f8489d4c2a7ac472ac23098f1ef1c1e40da601f54625eb" From 9a50a30b15c038a7f63099cc7f759fc0c47f894d Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Tue, 18 Feb 2025 15:49:16 +0000 Subject: [PATCH 6/6] conf/machine: switch to kernel 6.12 Now that kernel 6.12 is available, switch to it. Signed-off-by: Jonas Gorski --- conf/machine/generic-armel-iproc.conf | 2 +- conf/machine/generic-x86-64.conf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/conf/machine/generic-armel-iproc.conf b/conf/machine/generic-armel-iproc.conf index e2b836be..3f25203a 100644 --- a/conf/machine/generic-armel-iproc.conf +++ b/conf/machine/generic-armel-iproc.conf @@ -4,7 +4,7 @@ #@DESCRIPTION: Machine configuration for generic armel iProc ONL image PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto-onl" -PREFERRED_VERSION_linux-yocto-onl ?= "6.6%" +PREFERRED_VERSION_linux-yocto-onl ?= "6.12%" KMACHINE:generic-armel-iproc = "armel-iproc" KERNEL_FEATURES += "bsp/armel-iproc" diff --git a/conf/machine/generic-x86-64.conf b/conf/machine/generic-x86-64.conf index 893f3a0a..d03a86c7 100644 --- a/conf/machine/generic-x86-64.conf +++ b/conf/machine/generic-x86-64.conf @@ -4,7 +4,7 @@ #@DESCRIPTION: Machine configuration for generic x86-64 ONL image PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto-onl" -PREFERRED_VERSION_linux-yocto-onl ?= "6.6%" +PREFERRED_VERSION_linux-yocto-onl ?= "6.12%" KMACHINE:generic-x86-64 = "x86_64-intel" KERNEL_FEATURES += "bsp/x86_64-intel"