diff --git a/patches/5.10/0001-surface3-oemb.patch b/patches/5.10/0001-surface3-oemb.patch index 0a06cf99d..31a98e0ea 100644 --- a/patches/5.10/0001-surface3-oemb.patch +++ b/patches/5.10/0001-surface3-oemb.patch @@ -1,4 +1,4 @@ -From 506896a98b63d0140af0bea7ebc792e5caee90f7 Mon Sep 17 00:00:00 2001 +From 08cb56fa8fbb1064fc7efd978a20656ac45d519a Mon Sep 17 00:00:00 2001 From: Tsuchiya Yuto Date: Sun, 18 Oct 2020 16:42:44 +0900 Subject: [PATCH] (surface3-oemb) add DMI matches for Surface 3 with broken DMI diff --git a/patches/5.10/0002-wifi.patch b/patches/5.10/0002-wifi.patch index f2e655572..46bfbff69 100644 --- a/patches/5.10/0002-wifi.patch +++ b/patches/5.10/0002-wifi.patch @@ -1,4 +1,4 @@ -From 11bafb58ced525bdeed30b86b8468e7b5c2ca3d8 Mon Sep 17 00:00:00 2001 +From a594c31b570422c096a578e4bfbfc56c47888ca9 Mon Sep 17 00:00:00 2001 From: Tsuchiya Yuto Date: Mon, 28 Sep 2020 17:46:49 +0900 Subject: [PATCH] mwifiex: pcie: add DMI-based quirk impl for Surface devices @@ -206,7 +206,7 @@ index 000000000000..5326ae7e5671 -- 2.31.1 -From 5afa7f01a3a98c2c2afcf0094695efa06d607991 Mon Sep 17 00:00:00 2001 +From e19fa367a39bcb4ded1e7693836c23ee1cb97e12 Mon Sep 17 00:00:00 2001 From: Tsuchiya Yuto Date: Tue, 29 Sep 2020 17:25:22 +0900 Subject: [PATCH] mwifiex: pcie: add reset_d3cold quirk for Surface gen4+ @@ -407,7 +407,7 @@ index 5326ae7e5671..8b9dcb5070d8 100644 -- 2.31.1 -From dbefffc465af15ff3dde325598d9659dd447366c Mon Sep 17 00:00:00 2001 +From e8503bbda9db2fff6c2df6bc5586e59deb148616 Mon Sep 17 00:00:00 2001 From: Tsuchiya Yuto Date: Tue, 29 Sep 2020 17:32:22 +0900 Subject: [PATCH] mwifiex: pcie: add reset_wsid quirk for Surface 3 @@ -586,7 +586,7 @@ index 8b9dcb5070d8..3ef7440418e3 100644 -- 2.31.1 -From c7cc58eba7170e9f18f05e283bbd1291f9976a7f Mon Sep 17 00:00:00 2001 +From 0ed189695d49db80ff8a0258f1d79714ea4a27bc Mon Sep 17 00:00:00 2001 From: Tsuchiya Yuto Date: Wed, 30 Sep 2020 18:08:24 +0900 Subject: [PATCH] mwifiex: pcie: (OEMB) add quirk for Surface 3 with broken DMI @@ -648,7 +648,7 @@ index f0a6fa0a7ae5..34dcd84f02a6 100644 -- 2.31.1 -From 9b98474bde6e620e772347e301480ce2b517e6cc Mon Sep 17 00:00:00 2001 +From 95c12491ec02c55b8caee85a94986e91d152ec61 Mon Sep 17 00:00:00 2001 From: Tsuchiya Yuto Date: Sun, 4 Oct 2020 00:11:49 +0900 Subject: [PATCH] mwifiex: pcie: disable bridge_d3 for Surface gen4+ @@ -803,7 +803,7 @@ index 3ef7440418e3..a95ebac06e13 100644 -- 2.31.1 -From 131f45f4d314b2128f8d6034e68d9685874cbba1 Mon Sep 17 00:00:00 2001 +From f53aa8df83b54040a73489c7b7ea593ef4b613f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= Date: Tue, 10 Nov 2020 12:49:56 +0100 Subject: [PATCH] mwifiex: Use non-posted PCI register writes @@ -860,7 +860,7 @@ index fcedc663ccc7..5eea6cb73fb7 100644 -- 2.31.1 -From e60591d36fb99f2bc47e5e9e0f9be88b9e4ea741 Mon Sep 17 00:00:00 2001 +From c5d2f830cfa1e779011227e775847eb62b96c66e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= Date: Tue, 3 Nov 2020 13:28:04 +0100 Subject: [PATCH] mwifiex: Add quirk resetting the PCI bridge on MS Surface @@ -1027,7 +1027,7 @@ index a95ebac06e13..4ec2ae72f632 100644 -- 2.31.1 -From 7a8615547b88d5d1941fec46ecb1fc179b54cd01 Mon Sep 17 00:00:00 2001 +From 50394e114554a1c7b4ff3a1504bae2fea394a80f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= Date: Sun, 28 Mar 2021 21:10:06 +0200 Subject: [PATCH] mwifiex: Try waking the firmware until we get an interrupt @@ -1116,7 +1116,7 @@ index 7dc54c446559..505a90743f2f 100644 -- 2.31.1 -From 255142e35f342350c2cf26957038105618e90f26 Mon Sep 17 00:00:00 2001 +From 894daf5af768aef41c93b4c90c041c8462ce3e17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= Date: Thu, 25 Mar 2021 11:33:02 +0100 Subject: [PATCH] Bluetooth: btusb: Lower passive lescan interval on Marvell @@ -1194,7 +1194,7 @@ index 175cb1c0d569..5592f855258c 100644 -- 2.31.1 -From 9196c20e3ceb56002ce0793285ddadc4b98b2244 Mon Sep 17 00:00:00 2001 +From ebefad353a61c73797e38418e0f578a1eb00195d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= Date: Wed, 11 Nov 2020 12:31:26 +0100 Subject: [PATCH] mwifiex: Small cleanup for handling virtual interface type @@ -1295,7 +1295,7 @@ index a6b9dc6700b1..d50fd8570475 100644 -- 2.31.1 -From e271d6ad3fbada9b4f78e13442d29d4083bbb1dc Mon Sep 17 00:00:00 2001 +From 34f1326e91b3871c7771e9563eace0de4e6346aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= Date: Wed, 11 Nov 2020 12:44:39 +0100 Subject: [PATCH] mwifiex: Use function to check whether interface type change @@ -1528,7 +1528,7 @@ index d50fd8570475..3a79a55bbfd2 100644 -- 2.31.1 -From 095bc2a0688dd26ecf8120ba057213a570217cba Mon Sep 17 00:00:00 2001 +From 3b3d6eb300246cb6ee84f21d23c51db47e0ae825 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= Date: Wed, 11 Nov 2020 13:33:04 +0100 Subject: [PATCH] mwifiex: Run SET_BSS_MODE when changing from P2P to STATION @@ -1596,7 +1596,7 @@ index 3a79a55bbfd2..66e978088061 100644 -- 2.31.1 -From 1b900b35f4fdd25fb1384ba6b394826312b17a07 Mon Sep 17 00:00:00 2001 +From 7e6432d9d62ccf7249c6da0da674851a2f4dd787 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= Date: Wed, 11 Nov 2020 14:42:54 +0100 Subject: [PATCH] mwifiex: Use helper function for counting interface types @@ -1772,7 +1772,7 @@ index 66e978088061..db30f595e9f9 100644 -- 2.31.1 -From c5f4f35368e8f7b7e2b8a4349e0055bae0f33507 Mon Sep 17 00:00:00 2001 +From 61151db698ba12217bbdc16e26fc5a217c4267b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= Date: Fri, 26 Mar 2021 15:56:58 +0100 Subject: [PATCH] mwifiex: Update virtual interface counters right after @@ -1875,7 +1875,7 @@ index db30f595e9f9..60de1cec77c7 100644 -- 2.31.1 -From f48c63990b92f0072cf3997f9b00b49b3162f252 Mon Sep 17 00:00:00 2001 +From cf0b3ff065925210757774760e855b300f7633a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= Date: Wed, 11 Nov 2020 13:42:40 +0100 Subject: [PATCH] mwifiex: Allow switching interface type from P2P_CLIENT to @@ -1964,7 +1964,7 @@ index 60de1cec77c7..a37b504bd084 100644 -- 2.31.1 -From 797c673f5d1c4f07c796497e3464d06d6c6b5c79 Mon Sep 17 00:00:00 2001 +From e0b615fe1d65473fa4f8fd227bfc9bf5ed55741b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= Date: Fri, 26 Mar 2021 15:31:08 +0100 Subject: [PATCH] mwifiex: Handle interface type changes from AP to STATION @@ -1991,7 +1991,7 @@ index a37b504bd084..e65f285e3efe 100644 -- 2.31.1 -From 718846171f5e0a826995bb5bbd13693b2e56a7fc Mon Sep 17 00:00:00 2001 +From adca3f09fb5ed7720b3bfe676e40ebd81a1d8f5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= Date: Fri, 26 Mar 2021 15:32:16 +0100 Subject: [PATCH] mwifiex: Properly initialize private structure on interface @@ -2046,7 +2046,7 @@ index e65f285e3efe..a290312313f3 100644 -- 2.31.1 -From fe973bbfd5122ebdaf963a0597389361dc61db93 Mon Sep 17 00:00:00 2001 +From faaa6d19859436629e44b23db9b34482368c9771 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= Date: Sat, 27 Mar 2021 12:19:14 +0100 Subject: [PATCH] mwifiex: Fix copy-paste mistake when creating virtual @@ -2078,7 +2078,7 @@ index a290312313f3..1e1cf523e228 100644 -- 2.31.1 -From 97e4f632d8e195bd5dbb592c617bc9df61c01e1e Mon Sep 17 00:00:00 2001 +From 27bec794c07f3f1cc05c376c8a9dacb13376d41b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= Date: Tue, 13 Apr 2021 14:30:28 +0200 Subject: [PATCH] mwifiex: Deactive host sleep using HSCFG after it was @@ -2234,7 +2234,7 @@ index d3a968ef21ef..76db9a7b8199 100644 -- 2.31.1 -From b4cf82824ae927f25c104d6d4a1b36b523316d72 Mon Sep 17 00:00:00 2001 +From 32e896507a2ad9e47fcdbecdfbffedc79ae02499 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= Date: Tue, 13 Apr 2021 14:23:05 +0200 Subject: [PATCH] mwifiex: Add quirk to disable deep sleep with certain @@ -2337,7 +2337,7 @@ index 119ccacd1fcc..fb245adba19f 100644 -- 2.31.1 -From ecf16b6eb12ada95c4faf0c9a2d22476c3ee3880 Mon Sep 17 00:00:00 2001 +From 64708f6e646e81a3a5594c9939cbc892aefd3c61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= Date: Wed, 11 Nov 2020 15:17:07 +0100 Subject: [PATCH] mwifiex: Don't log error on suspend if wake-on-wlan is @@ -2369,7 +2369,7 @@ index 1e1cf523e228..1cdd66c37cfc 100644 -- 2.31.1 -From 711d60ed7b0bae7bd3ae2d953a45964f516ac592 Mon Sep 17 00:00:00 2001 +From 988253c60aab2d13242efdf0b44781bce62c8e78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= Date: Sun, 28 Mar 2021 21:42:54 +0200 Subject: [PATCH] mwifiex: Log an error on command failure during key-material @@ -2409,7 +2409,7 @@ index 1cdd66c37cfc..6ad935c1bb47 100644 -- 2.31.1 -From 27f34274fe0a0f2c4a501f1a6c5752b845b75deb Mon Sep 17 00:00:00 2001 +From 7c81b0fb0bf545fb34aff3475e2a3fef31b28b64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= Date: Tue, 13 Apr 2021 12:44:03 +0200 Subject: [PATCH] mwifiex: Fix an incorrect comment @@ -2437,7 +2437,7 @@ index 6696bce56178..b0695432b26a 100644 -- 2.31.1 -From 6ebd4064a75d09f9e0699bb31bc1c869e32b9ba0 Mon Sep 17 00:00:00 2001 +From 74baa679ee85dd85c170011d30bc9cc25e99eee6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= Date: Tue, 13 Apr 2021 12:45:59 +0200 Subject: [PATCH] mwifiex: Send DELBA requests according to spec @@ -2480,7 +2480,7 @@ index b0695432b26a..9ff2058bcd7e 100644 -- 2.31.1 -From 5af86f9d4b191b025e5903c5c03386f01d9804d9 Mon Sep 17 00:00:00 2001 +From 8332e36907fe5e9b9270f389a0f5ad409be9de0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= Date: Tue, 13 Apr 2021 12:57:41 +0200 Subject: [PATCH] mwifiex: Ignore BTCOEX events from the firmware diff --git a/patches/5.10/0003-ipts.patch b/patches/5.10/0003-ipts.patch index 298467b0c..1785662b4 100644 --- a/patches/5.10/0003-ipts.patch +++ b/patches/5.10/0003-ipts.patch @@ -1,4 +1,4 @@ -From 0d44abd87b312996131ffd1c1d8eacc36e5f1214 Mon Sep 17 00:00:00 2001 +From 9f2ce23ad1f92d5cf080866a9d18ac6075572d8b Mon Sep 17 00:00:00 2001 From: Dorian Stoll Date: Thu, 30 Jul 2020 13:21:53 +0200 Subject: [PATCH] misc: mei: Add missing IPTS device IDs @@ -36,7 +36,7 @@ index c3393b383e59..0098f98426c1 100644 -- 2.31.1 -From cb31c7fc41a0c658fe9def29484c79ed91169a62 Mon Sep 17 00:00:00 2001 +From c86ba1ff2ce78e289349694ec794bfaa4733df14 Mon Sep 17 00:00:00 2001 From: Dorian Stoll Date: Thu, 25 Feb 2021 09:37:47 +0100 Subject: [PATCH] misc: mei: Remove client devices before shutting down bus @@ -65,7 +65,7 @@ index bcee77768b91..21ed765003e1 100644 -- 2.31.1 -From 0f95ea4c3650a226d3a6d99cb6740e91839f69bd Mon Sep 17 00:00:00 2001 +From cb4a827e9e5398226aa2990983a34d0208cce2cd Mon Sep 17 00:00:00 2001 From: Dorian Stoll Date: Thu, 6 Aug 2020 11:20:41 +0200 Subject: [PATCH] misc: Add support for Intel Precise Touch & Stylus diff --git a/patches/5.10/0004-surface-gpe.patch b/patches/5.10/0004-surface-gpe.patch index dea033360..f68f06dd4 100644 --- a/patches/5.10/0004-surface-gpe.patch +++ b/patches/5.10/0004-surface-gpe.patch @@ -1,4 +1,4 @@ -From f8009f02042d78dc194842a45682eaf515a7ca08 Mon Sep 17 00:00:00 2001 +From ef2ad1982ad0a1b99c6b4ab89de6cb090ca9f3bf Mon Sep 17 00:00:00 2001 From: Maximilian Luz Date: Sun, 16 Aug 2020 23:39:56 +0200 Subject: [PATCH] platform/x86: Add Driver to set up lid GPEs on MS Surface diff --git a/patches/5.10/0005-surface-sam-over-hid.patch b/patches/5.10/0005-surface-sam-over-hid.patch index 6a812a015..a06851a04 100644 --- a/patches/5.10/0005-surface-sam-over-hid.patch +++ b/patches/5.10/0005-surface-sam-over-hid.patch @@ -1,4 +1,4 @@ -From 48afb558c35e7a141946c92364227e022b264f3d Mon Sep 17 00:00:00 2001 +From 86c27bca6d283e7a951745dc7aa14fc174fca66c Mon Sep 17 00:00:00 2001 From: Maximilian Luz Date: Sat, 25 Jul 2020 17:19:53 +0200 Subject: [PATCH] i2c: acpi: Implement RawBytes read access @@ -110,7 +110,7 @@ index 37c510d9347a..aed579942436 100644 -- 2.31.1 -From 24730dc998be554b5a049092d09cec84b2be96f7 Mon Sep 17 00:00:00 2001 +From 35e4ff2e243508ec9eee56388f316a85a4688c08 Mon Sep 17 00:00:00 2001 From: Maximilian Luz Date: Sun, 6 Sep 2020 04:01:19 +0200 Subject: [PATCH] platform/x86: Add driver for Surface Book 1 dGPU switch diff --git a/patches/5.10/0006-surface-sam.patch b/patches/5.10/0006-surface-sam.patch index e4b96a8d4..f75f2bd70 100644 --- a/patches/5.10/0006-surface-sam.patch +++ b/patches/5.10/0006-surface-sam.patch @@ -1,4 +1,4 @@ -From adb894593798f74723c07c5b7e31206b2c698e7b Mon Sep 17 00:00:00 2001 +From 2599d912bd105f53b28d905e144fe36e07a4b984 Mon Sep 17 00:00:00 2001 From: Maximilian Luz Date: Mon, 17 Aug 2020 01:23:20 +0200 Subject: [PATCH] Add file2alias support for Surface Aggregator Module devices @@ -99,7 +99,7 @@ index 2417dd1dee33..a6c583362b92 100644 -- 2.31.1 -From ef8704e7ffff7ba7df374f10a0abcedf7f3214a6 Mon Sep 17 00:00:00 2001 +From 497b0492c30f18635429da68acb4b3ceecaf5ad0 Mon Sep 17 00:00:00 2001 From: Maximilian Luz Date: Mon, 17 Aug 2020 01:44:30 +0200 Subject: [PATCH] platform/x86: Add support for Surface System Aggregator @@ -120,7 +120,7 @@ Patchset: surface-sam Documentation/driver-api/index.rst | 1 + .../surface_aggregator/client-api.rst | 38 + .../driver-api/surface_aggregator/client.rst | 393 +++ - .../surface_aggregator/clients/cdev.rst | 87 + + .../surface_aggregator/clients/cdev.rst | 204 ++ .../surface_aggregator/clients/dtx.rst | 712 +++++ .../surface_aggregator/clients/index.rst | 22 + .../surface_aggregator/clients/san.rst | 44 + @@ -129,8 +129,7 @@ Patchset: surface-sam .../surface_aggregator/internal.rst | 577 ++++ .../surface_aggregator/overview.rst | 77 + .../driver-api/surface_aggregator/ssh.rst | 344 +++ - arch/x86/kernel/acpi/boot.c | 17 + - drivers/acpi/acpi_apd.c | 1 + + arch/x86/kernel/acpi/boot.c | 24 + drivers/hid/Kconfig | 4 +- drivers/hid/Makefile | 2 + drivers/hid/surface-hid/Kconfig | 42 + @@ -147,9 +146,9 @@ Patchset: surface-sam .../platform/x86/surface_aggregator/Makefile | 17 + drivers/platform/x86/surface_aggregator/bus.c | 415 +++ drivers/platform/x86/surface_aggregator/bus.h | 27 + - .../x86/surface_aggregator/controller.c | 2579 +++++++++++++++++ + .../x86/surface_aggregator/controller.c | 2727 +++++++++++++++++ .../x86/surface_aggregator/controller.h | 285 ++ - .../platform/x86/surface_aggregator/core.c | 839 ++++++ + .../platform/x86/surface_aggregator/core.c | 839 +++++ .../x86/surface_aggregator/ssh_msgb.h | 205 ++ .../x86/surface_aggregator/ssh_packet_layer.c | 2074 +++++++++++++ .../x86/surface_aggregator/ssh_packet_layer.h | 190 ++ @@ -158,7 +157,7 @@ Patchset: surface-sam .../surface_aggregator/ssh_request_layer.c | 1263 ++++++++ .../surface_aggregator/ssh_request_layer.h | 143 + .../platform/x86/surface_aggregator/trace.h | 632 ++++ - .../platform/x86/surface_aggregator_cdev.c | 322 ++ + .../platform/x86/surface_aggregator_cdev.c | 804 +++++ .../x86/surface_aggregator_registry.c | 606 ++++ drivers/platform/x86/surface_dtx.c | 1283 ++++++++ drivers/platform/x86/surface_perfmode.c | 122 + @@ -166,17 +165,16 @@ Patchset: surface-sam drivers/power/supply/Makefile | 2 + drivers/power/supply/surface_battery.c | 875 ++++++ drivers/power/supply/surface_charger.c | 282 ++ - drivers/tty/serial/8250/8250_dw.c | 1 + include/linux/mod_devicetable.h | 5 +- include/linux/surface_acpi_notify.h | 39 + - include/linux/surface_aggregator/controller.h | 824 ++++++ + include/linux/surface_aggregator/controller.h | 849 +++++ include/linux/surface_aggregator/device.h | 424 +++ - include/linux/surface_aggregator/serial_hub.h | 672 +++++ - include/uapi/linux/surface_aggregator/cdev.h | 78 + + include/linux/surface_aggregator/serial_hub.h | 672 ++++ + include/uapi/linux/surface_aggregator/cdev.h | 147 + include/uapi/linux/surface_aggregator/dtx.h | 146 + scripts/mod/devicetable-offsets.c | 3 +- scripts/mod/file2alias.c | 10 +- - 59 files changed, 19192 insertions(+), 8 deletions(-) + 57 files changed, 20038 insertions(+), 8 deletions(-) create mode 100644 Documentation/driver-api/surface_aggregator/client-api.rst create mode 100644 Documentation/driver-api/surface_aggregator/client.rst create mode 100644 Documentation/driver-api/surface_aggregator/clients/cdev.rst @@ -680,16 +678,15 @@ index 000000000000..e519d374c378 +with the same flag and it is considered a bug to do otherwise. diff --git a/Documentation/driver-api/surface_aggregator/clients/cdev.rst b/Documentation/driver-api/surface_aggregator/clients/cdev.rst new file mode 100644 -index 000000000000..248c1372d879 +index 000000000000..0134a841a079 --- /dev/null +++ b/Documentation/driver-api/surface_aggregator/clients/cdev.rst -@@ -0,0 +1,87 @@ +@@ -0,0 +1,204 @@ +.. SPDX-License-Identifier: GPL-2.0+ + -+.. |u8| replace:: :c:type:`u8 ` -+.. |u16| replace:: :c:type:`u16 ` +.. |ssam_cdev_request| replace:: :c:type:`struct ssam_cdev_request ` +.. |ssam_cdev_request_flags| replace:: :c:type:`enum ssam_cdev_request_flags ` ++.. |ssam_cdev_event| replace:: :c:type:`struct ssam_cdev_event ` + +============================== +User-Space EC Interface (cdev) @@ -709,6 +706,40 @@ index 000000000000..248c1372d879 +A small python library and scripts for accessing this interface can be found +at https://github.com/linux-surface/surface-aggregator-module/tree/master/scripts/ssam. + ++.. contents:: ++ ++ ++Receiving Events ++================ ++ ++Events can be received by reading from the device-file. The are represented by ++the |ssam_cdev_event| datatype. ++ ++Before events are available to be read, however, the desired notifiers must be ++registered via the ``SSAM_CDEV_NOTIF_REGISTER`` IOCTL. Notifiers are, in ++essence, callbacks, called when the EC sends an event. They are, in this ++interface, associated with a specific target category and device-file-instance. ++They forward any event of this category to the buffer of the corresponding ++instance, from which it can then be read. ++ ++Notifiers themselves do not enable events on the EC. Thus, it may additionally ++be necessary to enable events via the ``SSAM_CDEV_EVENT_ENABLE`` IOCTL. While ++notifiers work per-client (i.e. per-device-file-instance), events are enabled ++globally, for the EC and all of its clients (regardless of userspace or ++non-userspace). The ``SSAM_CDEV_EVENT_ENABLE`` and ``SSAM_CDEV_EVENT_DISABLE`` ++IOCTLs take care of reference counting the events, such that an event is ++enabled as long as there is a client that has requested it. ++ ++Note that enabled events are not automatically disabled once the client ++instance is closed. Therefore any client process (or group of processes) should ++balance their event enable calls with the corresponding event disable calls. It ++is, however, perfectly valid to enable and disable events on different client ++instances. For example, it is valid to set up notifiers and read events on ++client instance ``A``, enable those events on instance ``B`` (note that these ++will also be received by A since events are enabled/disabled globally), and ++after no more events are desired, disable the previously enabled events via ++instance ``C``. ++ + +Controller IOCTLs +================= @@ -731,9 +762,33 @@ index 000000000000..248c1372d879 + - ``REQUEST`` + - Perform synchronous SAM request. + ++ * - ``0xA5`` ++ - ``2`` ++ - ``W`` ++ - ``NOTIF_REGISTER`` ++ - Register event notifier. + -+``REQUEST`` -+----------- ++ * - ``0xA5`` ++ - ``3`` ++ - ``W`` ++ - ``NOTIF_UNREGISTER`` ++ - Unregister event notifier. ++ ++ * - ``0xA5`` ++ - ``4`` ++ - ``W`` ++ - ``EVENT_ENABLE`` ++ - Enable event source. ++ ++ * - ``0xA5`` ++ - ``5`` ++ - ``W`` ++ - ``EVENT_DISABLE`` ++ - Disable event source. ++ ++ ++``SSAM_CDEV_REQUEST`` ++--------------------- + +Defined as ``_IOWR(0xA5, 1, struct ssam_cdev_request)``. + @@ -768,7 +823,67 @@ index 000000000000..248c1372d879 +inside the IOCTL, but the request ``status`` member may still be negative in +case the actual execution of the request failed after it has been submitted. + -+A full definition of the argument struct is provided below: ++A full definition of the argument struct is provided below. ++ ++``SSAM_CDEV_NOTIF_REGISTER`` ++---------------------------- ++ ++Defined as ``_IOW(0xA5, 2, struct ssam_cdev_notifier_desc)``. ++ ++Register a notifier for the event target category specified in the given ++notifier description with the specified priority. Notifiers registration is ++required to receive events, but does not enable events themselves. After a ++notifier for a specific target category has been registered, all events of that ++category will be forwarded to the userspace client and can then be read from ++the device file instance. Note that events may have to be enabled, e.g. via the ++``SSAM_CDEV_EVENT_ENABLE`` IOCTL, before the EC will send them. ++ ++Only one notifier can be registered per target category and client instance. If ++a notifier has already been registered, this IOCTL will fail with ``-EEXIST``. ++ ++Notifiers will automatically be removed when the device file instance is ++closed. ++ ++``SSAM_CDEV_NOTIF_UNREGISTER`` ++------------------------------ ++ ++Defined as ``_IOW(0xA5, 3, struct ssam_cdev_notifier_desc)``. ++ ++Unregisters the notifier associated with the specified target category. The ++priority field will be ignored by this IOCTL. If no notifier has been ++registered for this client instance and the given category, this IOCTL will ++fail with ``-ENOENT``. ++ ++``SSAM_CDEV_EVENT_ENABLE`` ++-------------------------- ++ ++Defined as ``_IOW(0xA5, 4, struct ssam_cdev_event_desc)``. ++ ++Enable the event associated with the given event descriptor. ++ ++Note that this call will not register a notifier itself, it will only enable ++events on the controller. If you want to receive events by reading from the ++device file, you will need to register the corresponding notifier(s) on that ++instance. ++ ++Events are not automatically disabled when the device file is closed. This must ++be done manually, via a call to the ``SSAM_CDEV_EVENT_DISABLE`` IOCTL. ++ ++``SSAM_CDEV_EVENT_DISABLE`` ++--------------------------- ++ ++Defined as ``_IOW(0xA5, 5, struct ssam_cdev_event_desc)``. ++ ++Disable the event associated with the given event descriptor. ++ ++Note that this will not unregister any notifiers. Events may still be received ++and forwarded to user-space after this call. The only safe way of stopping ++events from being received is unregistering all previously registered ++notifiers. ++ ++ ++Structures and Enums ++==================== + +.. kernel-doc:: include/uapi/linux/surface_aggregator/cdev.h diff --git a/Documentation/driver-api/surface_aggregator/clients/dtx.rst b/Documentation/driver-api/surface_aggregator/clients/dtx.rst @@ -2684,7 +2799,7 @@ index 000000000000..bf007d6c9873 +frames) and at most three pending commands. The limit to synchronous frame +transfers seems to be consistent with behavior observed on Windows. diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c -index 14cd3186dc77..ab3ba60cb6da 100644 +index 14cd3186dc77..fa1dcdd119e5 100644 --- a/arch/x86/kernel/acpi/boot.c +++ b/arch/x86/kernel/acpi/boot.c @@ -21,6 +21,7 @@ @@ -2695,25 +2810,32 @@ index 14cd3186dc77..ab3ba60cb6da 100644 #include #include -@@ -1155,6 +1156,17 @@ static void __init mp_config_acpi_legacy_irqs(void) +@@ -1155,6 +1156,24 @@ static void __init mp_config_acpi_legacy_irqs(void) } } +static const struct dmi_system_id surface_quirk[] __initconst = { + { -+ .ident = "Microsoft Surface Laptop 4 (AMD)", ++ .ident = "Microsoft Surface Laptop 4 (AMD 15\")", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Microsoft Corporation"), + DMI_MATCH(DMI_PRODUCT_SKU, "Surface_Laptop_4_1952:1953") + }, + }, ++ { ++ .ident = "Microsoft Surface Laptop 4 (AMD 13\")", ++ .matches = { ++ DMI_MATCH(DMI_SYS_VENDOR, "Microsoft Corporation"), ++ DMI_MATCH(DMI_PRODUCT_SKU, "Surface_Laptop_4_1958:1959") ++ }, ++ }, + {} +}; + /* * Parse IOAPIC related entries in MADT * returns 0 on success, < 0 on error -@@ -1212,6 +1224,11 @@ static int __init acpi_parse_madt_ioapic_entries(void) +@@ -1212,6 +1231,11 @@ static int __init acpi_parse_madt_ioapic_entries(void) acpi_sci_ioapic_setup(acpi_gbl_FADT.sci_interrupt, 0, 0, acpi_gbl_FADT.sci_interrupt); @@ -2725,18 +2847,6 @@ index 14cd3186dc77..ab3ba60cb6da 100644 /* Fill in identity legacy mappings where no override */ mp_config_acpi_legacy_irqs(); -diff --git a/drivers/acpi/acpi_apd.c b/drivers/acpi/acpi_apd.c -index 39359ce0eb2c..645e82a66bb0 100644 ---- a/drivers/acpi/acpi_apd.c -+++ b/drivers/acpi/acpi_apd.c -@@ -226,6 +226,7 @@ static const struct acpi_device_id acpi_apd_device_ids[] = { - { "AMDI0010", APD_ADDR(wt_i2c_desc) }, - { "AMD0020", APD_ADDR(cz_uart_desc) }, - { "AMDI0020", APD_ADDR(cz_uart_desc) }, -+ { "AMDI0022", APD_ADDR(cz_uart_desc) }, - { "AMD0030", }, - { "AMD0040", APD_ADDR(fch_misc_desc)}, - { "HYGO0010", APD_ADDR(wt_i2c_desc) }, diff --git a/drivers/hid/Kconfig b/drivers/hid/Kconfig index 9b56226ce0d1..ee04d30d6d39 100644 --- a/drivers/hid/Kconfig @@ -4791,12 +4901,12 @@ index 000000000000..ef9c1f8e8336 +MODULE_LICENSE("GPL"); diff --git a/drivers/platform/x86/surface_aggregator/Kconfig b/drivers/platform/x86/surface_aggregator/Kconfig new file mode 100644 -index 000000000000..44c2493706bc +index 000000000000..cab020324256 --- /dev/null +++ b/drivers/platform/x86/surface_aggregator/Kconfig @@ -0,0 +1,69 @@ +# SPDX-License-Identifier: GPL-2.0+ -+# Copyright (C) 2019-2020 Maximilian Luz ++# Copyright (C) 2019-2021 Maximilian Luz + +menuconfig SURFACE_AGGREGATOR + tristate "Microsoft Surface System Aggregator Module Subsystem and Drivers" @@ -4866,12 +4976,12 @@ index 000000000000..44c2493706bc + Intended for development and debugging. diff --git a/drivers/platform/x86/surface_aggregator/Makefile b/drivers/platform/x86/surface_aggregator/Makefile new file mode 100644 -index 000000000000..c112e2c7112b +index 000000000000..c8498c41e758 --- /dev/null +++ b/drivers/platform/x86/surface_aggregator/Makefile @@ -0,0 +1,17 @@ +# SPDX-License-Identifier: GPL-2.0+ -+# Copyright (C) 2019-2020 Maximilian Luz ++# Copyright (C) 2019-2021 Maximilian Luz + +# For include/trace/define_trace.h to include trace.h +CFLAGS_core.o = -I$(src) @@ -4889,7 +4999,7 @@ index 000000000000..c112e2c7112b +endif diff --git a/drivers/platform/x86/surface_aggregator/bus.c b/drivers/platform/x86/surface_aggregator/bus.c new file mode 100644 -index 000000000000..a9b660af0917 +index 000000000000..0169677c243e --- /dev/null +++ b/drivers/platform/x86/surface_aggregator/bus.c @@ -0,0 +1,415 @@ @@ -4897,7 +5007,7 @@ index 000000000000..a9b660af0917 +/* + * Surface System Aggregator Module bus and device integration. + * -+ * Copyright (C) 2019-2020 Maximilian Luz ++ * Copyright (C) 2019-2021 Maximilian Luz + */ + +#include @@ -5310,7 +5420,7 @@ index 000000000000..a9b660af0917 +} diff --git a/drivers/platform/x86/surface_aggregator/bus.h b/drivers/platform/x86/surface_aggregator/bus.h new file mode 100644 -index 000000000000..7712baaed6a5 +index 000000000000..ed032c2cbdb2 --- /dev/null +++ b/drivers/platform/x86/surface_aggregator/bus.h @@ -0,0 +1,27 @@ @@ -5318,7 +5428,7 @@ index 000000000000..7712baaed6a5 +/* + * Surface System Aggregator Module bus and device integration. + * -+ * Copyright (C) 2019-2020 Maximilian Luz ++ * Copyright (C) 2019-2021 Maximilian Luz + */ + +#ifndef _SURFACE_AGGREGATOR_BUS_H @@ -5343,15 +5453,15 @@ index 000000000000..7712baaed6a5 +#endif /* _SURFACE_AGGREGATOR_BUS_H */ diff --git a/drivers/platform/x86/surface_aggregator/controller.c b/drivers/platform/x86/surface_aggregator/controller.c new file mode 100644 -index 000000000000..88ec47cae5bf +index 000000000000..dec92cbe47fa --- /dev/null +++ b/drivers/platform/x86/surface_aggregator/controller.c -@@ -0,0 +1,2579 @@ +@@ -0,0 +1,2727 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Main SSAM/SSH controller structure and functionality. + * -+ * Copyright (C) 2019-2020 Maximilian Luz ++ * Copyright (C) 2019-2021 Maximilian Luz + */ + +#include @@ -7256,7 +7366,7 @@ index 000000000000..88ec47cae5bf +{ + int status; + -+ status = __ssam_ssh_event_request(ctrl, reg, reg.cid_enable, id, flags); ++ status = __ssam_ssh_event_request(ctrl, reg, reg.cid_disable, id, flags); + + if (status < 0 && status != -EINVAL) { + ssam_err(ctrl, @@ -7476,9 +7586,15 @@ index 000000000000..88ec47cae5bf + * @ctrl: The controller to register the notifier on. + * @n: The event notifier to register. + * -+ * Register an event notifier and increment the usage counter of the -+ * associated SAM event. If the event was previously not enabled, it will be -+ * enabled during this call. ++ * Register an event notifier. Increment the usage counter of the associated ++ * SAM event if the notifier is not marked as an observer. If the event is not ++ * marked as an observer and is currently not enabled, it will be enabled ++ * during this call. If the notifier is marked as an observer, no attempt will ++ * be made at enabling any event and no reference count will be modified. ++ * ++ * Notifiers marked as observers do not need to be associated with one specific ++ * event, i.e. as long as no event matching is performed, only the event target ++ * category needs to be set. + * + * Return: Returns zero on success, %-ENOSPC if there have already been + * %INT_MAX notifiers for the event ID/type associated with the notifier block @@ -7487,11 +7603,10 @@ index 000000000000..88ec47cae5bf + * for the specific associated event, returns the status of the event-enable + * EC-command. + */ -+int ssam_notifier_register(struct ssam_controller *ctrl, -+ struct ssam_event_notifier *n) ++int ssam_notifier_register(struct ssam_controller *ctrl, struct ssam_event_notifier *n) +{ + u16 rqid = ssh_tc_to_rqid(n->event.id.target_category); -+ struct ssam_nf_refcount_entry *entry; ++ struct ssam_nf_refcount_entry *entry = NULL; + struct ssam_nf_head *nf_head; + struct ssam_nf *nf; + int status; @@ -7504,29 +7619,32 @@ index 000000000000..88ec47cae5bf + + mutex_lock(&nf->lock); + -+ entry = ssam_nf_refcount_inc(nf, n->event.reg, n->event.id); -+ if (IS_ERR(entry)) { -+ mutex_unlock(&nf->lock); -+ return PTR_ERR(entry); -+ } ++ if (!(n->flags & SSAM_EVENT_NOTIFIER_OBSERVER)) { ++ entry = ssam_nf_refcount_inc(nf, n->event.reg, n->event.id); ++ if (IS_ERR(entry)) { ++ mutex_unlock(&nf->lock); ++ return PTR_ERR(entry); ++ } + -+ ssam_dbg(ctrl, "enabling event (reg: %#04x, tc: %#04x, iid: %#04x, rc: %d)\n", -+ n->event.reg.target_category, n->event.id.target_category, -+ n->event.id.instance, entry->refcount); ++ ssam_dbg(ctrl, "enabling event (reg: %#04x, tc: %#04x, iid: %#04x, rc: %d)\n", ++ n->event.reg.target_category, n->event.id.target_category, ++ n->event.id.instance, entry->refcount); ++ } + + status = ssam_nfblk_insert(nf_head, &n->base); + if (status) { -+ entry = ssam_nf_refcount_dec(nf, n->event.reg, n->event.id); -+ if (entry->refcount == 0) -+ kfree(entry); ++ if (entry) { ++ entry = ssam_nf_refcount_dec(nf, n->event.reg, n->event.id); ++ if (entry->refcount == 0) ++ kfree(entry); ++ } + + mutex_unlock(&nf->lock); + return status; + } + -+ if (entry->refcount == 1) { -+ status = ssam_ssh_event_enable(ctrl, n->event.reg, n->event.id, -+ n->event.flags); ++ if (entry && entry->refcount == 1) { ++ status = ssam_ssh_event_enable(ctrl, n->event.reg, n->event.id, n->event.flags); + if (status) { + ssam_nfblk_remove(&n->base); + kfree(ssam_nf_refcount_dec(nf, n->event.reg, n->event.id)); @@ -7537,7 +7655,7 @@ index 000000000000..88ec47cae5bf + + entry->flags = n->event.flags; + -+ } else if (entry->flags != n->event.flags) { ++ } else if (entry && entry->flags != n->event.flags) { + ssam_warn(ctrl, + "inconsistent flags when enabling event: got %#04x, expected %#04x (reg: %#04x, tc: %#04x, iid: %#04x)\n", + n->event.flags, entry->flags, n->event.reg.target_category, @@ -7554,17 +7672,16 @@ index 000000000000..88ec47cae5bf + * @ctrl: The controller the notifier has been registered on. + * @n: The event notifier to unregister. + * -+ * Unregister an event notifier and decrement the usage counter of the -+ * associated SAM event. If the usage counter reaches zero, the event will be -+ * disabled. ++ * Unregister an event notifier. Decrement the usage counter of the associated ++ * SAM event if the notifier is not marked as an observer. If the usage counter ++ * reaches zero, the event will be disabled. + * + * Return: Returns zero on success, %-ENOENT if the given notifier block has + * not been registered on the controller. If the given notifier block was the + * last one associated with its specific event, returns the status of the + * event-disable EC-command. + */ -+int ssam_notifier_unregister(struct ssam_controller *ctrl, -+ struct ssam_event_notifier *n) ++int ssam_notifier_unregister(struct ssam_controller *ctrl, struct ssam_event_notifier *n) +{ + u16 rqid = ssh_tc_to_rqid(n->event.id.target_category); + struct ssam_nf_refcount_entry *entry; @@ -7585,6 +7702,13 @@ index 000000000000..88ec47cae5bf + return -ENOENT; + } + ++ /* ++ * If this is an observer notifier, do not attempt to disable the ++ * event, just remove it. ++ */ ++ if (n->flags & SSAM_EVENT_NOTIFIER_OBSERVER) ++ goto remove; ++ + entry = ssam_nf_refcount_dec(nf, n->event.reg, n->event.id); + if (WARN_ON(!entry)) { + /* @@ -7609,8 +7733,7 @@ index 000000000000..88ec47cae5bf + } + + if (entry->refcount == 0) { -+ status = ssam_ssh_event_disable(ctrl, n->event.reg, n->event.id, -+ n->event.flags); ++ status = ssam_ssh_event_disable(ctrl, n->event.reg, n->event.id, n->event.flags); + kfree(entry); + } + @@ -7624,6 +7747,141 @@ index 000000000000..88ec47cae5bf +EXPORT_SYMBOL_GPL(ssam_notifier_unregister); + +/** ++ * ssam_controller_event_enable() - Enable the specified event. ++ * @ctrl: The controller to enable the event for. ++ * @reg: The event registry to use for enabling the event. ++ * @id: The event ID specifying the event to be enabled. ++ * @flags: The SAM event flags used for enabling the event. ++ * ++ * Increment the event reference count of the specified event. If the event has ++ * not been enabled previously, it will be enabled by this call. ++ * ++ * Note: In general, ssam_notifier_register() with a non-observer notifier ++ * should be preferred for enabling/disabling events, as this will guarantee ++ * proper ordering and event forwarding in case of errors during event ++ * enabling/disabling. ++ * ++ * Return: Returns zero on success, %-ENOSPC if the reference count for the ++ * specified event has reached its maximum, %-ENOMEM if the corresponding event ++ * entry could not be allocated. If this is the first time that this event has ++ * been enabled (i.e. the reference count was incremented from zero to one by ++ * this call), returns the status of the event-enable EC-command. ++ */ ++int ssam_controller_event_enable(struct ssam_controller *ctrl, ++ struct ssam_event_registry reg, ++ struct ssam_event_id id, u8 flags) ++{ ++ u16 rqid = ssh_tc_to_rqid(id.target_category); ++ struct ssam_nf_refcount_entry *entry; ++ struct ssam_nf_head *nf_head; ++ struct ssam_nf *nf; ++ int status; ++ ++ if (!ssh_rqid_is_event(rqid)) ++ return -EINVAL; ++ ++ nf = &ctrl->cplt.event.notif; ++ nf_head = &nf->head[ssh_rqid_to_event(rqid)]; ++ ++ mutex_lock(&nf->lock); ++ ++ entry = ssam_nf_refcount_inc(nf, reg, id); ++ if (IS_ERR(entry)) { ++ mutex_unlock(&nf->lock); ++ return PTR_ERR(entry); ++ } ++ ++ ssam_dbg(ctrl, "enabling event (reg: %#04x, tc: %#04x, iid: %#04x, rc: %d)\n", ++ reg.target_category, id.target_category, id.instance, ++ entry->refcount); ++ ++ if (entry->refcount == 1) { ++ status = ssam_ssh_event_enable(ctrl, reg, id, flags); ++ if (status) { ++ kfree(ssam_nf_refcount_dec(nf, reg, id)); ++ mutex_unlock(&nf->lock); ++ return status; ++ } ++ ++ entry->flags = flags; ++ ++ } else if (entry->flags != flags) { ++ ssam_warn(ctrl, ++ "inconsistent flags when enabling event: got %#04x, expected %#04x (reg: %#04x, tc: %#04x, iid: %#04x)\n", ++ flags, entry->flags, reg.target_category, ++ id.target_category, id.instance); ++ } ++ ++ mutex_unlock(&nf->lock); ++ return 0; ++} ++EXPORT_SYMBOL_GPL(ssam_controller_event_enable); ++ ++/** ++ * ssam_controller_event_disable() - Disable the specified event. ++ * @ctrl: The controller to disable the event for. ++ * @reg: The event registry to use for disabling the event. ++ * @id: The event ID specifying the event to be disabled. ++ * @flags: The flags used when enabling the event. ++ * ++ * Decrement the reference count of the specified event. If the reference count ++ * reaches zero, the event will be disabled. ++ * ++ * Note: In general, ssam_notifier_register()/ssam_notifier_unregister() with a ++ * non-observer notifier should be preferred for enabling/disabling events, as ++ * this will guarantee proper ordering and event forwarding in case of errors ++ * during event enabling/disabling. ++ * ++ * Return: Returns zero on success, %-ENOENT if the given event has not been ++ * enabled on the controller. If the reference count of the event reaches zero ++ * during this call, returns the status of the event-disable EC-command. ++ */ ++int ssam_controller_event_disable(struct ssam_controller *ctrl, ++ struct ssam_event_registry reg, ++ struct ssam_event_id id, u8 flags) ++{ ++ u16 rqid = ssh_tc_to_rqid(id.target_category); ++ struct ssam_nf_refcount_entry *entry; ++ struct ssam_nf_head *nf_head; ++ struct ssam_nf *nf; ++ int status = 0; ++ ++ if (!ssh_rqid_is_event(rqid)) ++ return -EINVAL; ++ ++ nf = &ctrl->cplt.event.notif; ++ nf_head = &nf->head[ssh_rqid_to_event(rqid)]; ++ ++ mutex_lock(&nf->lock); ++ ++ entry = ssam_nf_refcount_dec(nf, reg, id); ++ if (WARN_ON(!entry)) { ++ mutex_unlock(&nf->lock); ++ return -ENOENT; ++ } ++ ++ ssam_dbg(ctrl, "disabling event (reg: %#04x, tc: %#04x, iid: %#04x, rc: %d)\n", ++ reg.target_category, id.target_category, id.instance, ++ entry->refcount); ++ ++ if (entry->flags != flags) { ++ ssam_warn(ctrl, ++ "inconsistent flags when disabling event: got %#04x, expected %#04x (reg: %#04x, tc: %#04x, iid: %#04x)\n", ++ flags, entry->flags, reg.target_category, ++ id.target_category, id.instance); ++ } ++ ++ if (entry->refcount == 0) { ++ status = ssam_ssh_event_disable(ctrl, reg, id, flags); ++ kfree(entry); ++ } ++ ++ mutex_unlock(&nf->lock); ++ return status; ++} ++EXPORT_SYMBOL_GPL(ssam_controller_event_disable); ++ ++/** + * ssam_notifier_disable_registered() - Disable events for all registered + * notifiers. + * @ctrl: The controller for which to disable the notifiers/events. @@ -7928,7 +8186,7 @@ index 000000000000..88ec47cae5bf +} diff --git a/drivers/platform/x86/surface_aggregator/controller.h b/drivers/platform/x86/surface_aggregator/controller.h new file mode 100644 -index 000000000000..8297d34e7489 +index 000000000000..a0963c3562ff --- /dev/null +++ b/drivers/platform/x86/surface_aggregator/controller.h @@ -0,0 +1,285 @@ @@ -7936,7 +8194,7 @@ index 000000000000..8297d34e7489 +/* + * Main SSAM/SSH controller structure and functionality. + * -+ * Copyright (C) 2019-2020 Maximilian Luz ++ * Copyright (C) 2019-2021 Maximilian Luz + */ + +#ifndef _SURFACE_AGGREGATOR_CONTROLLER_H @@ -8219,7 +8477,7 @@ index 000000000000..8297d34e7489 +#endif /* _SURFACE_AGGREGATOR_CONTROLLER_H */ diff --git a/drivers/platform/x86/surface_aggregator/core.c b/drivers/platform/x86/surface_aggregator/core.c new file mode 100644 -index 000000000000..8dc2c267bcd6 +index 000000000000..5d780e55f4a1 --- /dev/null +++ b/drivers/platform/x86/surface_aggregator/core.c @@ -0,0 +1,839 @@ @@ -8232,7 +8490,7 @@ index 000000000000..8dc2c267bcd6 + * Handles communication via requests as well as enabling, disabling, and + * relaying of events. + * -+ * Copyright (C) 2019-2020 Maximilian Luz ++ * Copyright (C) 2019-2021 Maximilian Luz + */ + +#include @@ -9064,7 +9322,7 @@ index 000000000000..8dc2c267bcd6 +MODULE_LICENSE("GPL"); diff --git a/drivers/platform/x86/surface_aggregator/ssh_msgb.h b/drivers/platform/x86/surface_aggregator/ssh_msgb.h new file mode 100644 -index 000000000000..1221f642dda1 +index 000000000000..e562958ffdf0 --- /dev/null +++ b/drivers/platform/x86/surface_aggregator/ssh_msgb.h @@ -0,0 +1,205 @@ @@ -9072,7 +9330,7 @@ index 000000000000..1221f642dda1 +/* + * SSH message builder functions. + * -+ * Copyright (C) 2019-2020 Maximilian Luz ++ * Copyright (C) 2019-2021 Maximilian Luz + */ + +#ifndef _SURFACE_AGGREGATOR_SSH_MSGB_H @@ -9275,7 +9533,7 @@ index 000000000000..1221f642dda1 +#endif /* _SURFACE_AGGREGATOR_SSH_MSGB_H */ diff --git a/drivers/platform/x86/surface_aggregator/ssh_packet_layer.c b/drivers/platform/x86/surface_aggregator/ssh_packet_layer.c new file mode 100644 -index 000000000000..15d96eac6811 +index 000000000000..5e08049fc3ac --- /dev/null +++ b/drivers/platform/x86/surface_aggregator/ssh_packet_layer.c @@ -0,0 +1,2074 @@ @@ -9283,7 +9541,7 @@ index 000000000000..15d96eac6811 +/* + * SSH packet transport layer. + * -+ * Copyright (C) 2019-2020 Maximilian Luz ++ * Copyright (C) 2019-2021 Maximilian Luz + */ + +#include @@ -11355,7 +11613,7 @@ index 000000000000..15d96eac6811 +} diff --git a/drivers/platform/x86/surface_aggregator/ssh_packet_layer.h b/drivers/platform/x86/surface_aggregator/ssh_packet_layer.h new file mode 100644 -index 000000000000..e8757d03f279 +index 000000000000..2eb329f0b91a --- /dev/null +++ b/drivers/platform/x86/surface_aggregator/ssh_packet_layer.h @@ -0,0 +1,190 @@ @@ -11363,7 +11621,7 @@ index 000000000000..e8757d03f279 +/* + * SSH packet transport layer. + * -+ * Copyright (C) 2019-2020 Maximilian Luz ++ * Copyright (C) 2019-2021 Maximilian Luz + */ + +#ifndef _SURFACE_AGGREGATOR_SSH_PACKET_LAYER_H @@ -11551,7 +11809,7 @@ index 000000000000..e8757d03f279 +#endif /* _SURFACE_AGGREGATOR_SSH_PACKET_LAYER_H */ diff --git a/drivers/platform/x86/surface_aggregator/ssh_parser.c b/drivers/platform/x86/surface_aggregator/ssh_parser.c new file mode 100644 -index 000000000000..e2dead8de94a +index 000000000000..b77912f8f13b --- /dev/null +++ b/drivers/platform/x86/surface_aggregator/ssh_parser.c @@ -0,0 +1,228 @@ @@ -11559,7 +11817,7 @@ index 000000000000..e2dead8de94a +/* + * SSH message parser. + * -+ * Copyright (C) 2019-2020 Maximilian Luz ++ * Copyright (C) 2019-2021 Maximilian Luz + */ + +#include @@ -11785,7 +12043,7 @@ index 000000000000..e2dead8de94a +} diff --git a/drivers/platform/x86/surface_aggregator/ssh_parser.h b/drivers/platform/x86/surface_aggregator/ssh_parser.h new file mode 100644 -index 000000000000..63c38d350988 +index 000000000000..3bd6e180fd16 --- /dev/null +++ b/drivers/platform/x86/surface_aggregator/ssh_parser.h @@ -0,0 +1,154 @@ @@ -11793,7 +12051,7 @@ index 000000000000..63c38d350988 +/* + * SSH message parser. + * -+ * Copyright (C) 2019-2020 Maximilian Luz ++ * Copyright (C) 2019-2021 Maximilian Luz + */ + +#ifndef _SURFACE_AGGREGATOR_SSH_PARSER_H @@ -11945,7 +12203,7 @@ index 000000000000..63c38d350988 +#endif /* _SURFACE_AGGREGATOR_SSH_PARSER_h */ diff --git a/drivers/platform/x86/surface_aggregator/ssh_request_layer.c b/drivers/platform/x86/surface_aggregator/ssh_request_layer.c new file mode 100644 -index 000000000000..52a83a8fcf82 +index 000000000000..bfe1aaf38065 --- /dev/null +++ b/drivers/platform/x86/surface_aggregator/ssh_request_layer.c @@ -0,0 +1,1263 @@ @@ -11953,7 +12211,7 @@ index 000000000000..52a83a8fcf82 +/* + * SSH request transport layer. + * -+ * Copyright (C) 2019-2020 Maximilian Luz ++ * Copyright (C) 2019-2021 Maximilian Luz + */ + +#include @@ -13214,7 +13472,7 @@ index 000000000000..52a83a8fcf82 +} diff --git a/drivers/platform/x86/surface_aggregator/ssh_request_layer.h b/drivers/platform/x86/surface_aggregator/ssh_request_layer.h new file mode 100644 -index 000000000000..cb35815858d1 +index 000000000000..9c3cbae2d4bd --- /dev/null +++ b/drivers/platform/x86/surface_aggregator/ssh_request_layer.h @@ -0,0 +1,143 @@ @@ -13222,7 +13480,7 @@ index 000000000000..cb35815858d1 +/* + * SSH request transport layer. + * -+ * Copyright (C) 2019-2020 Maximilian Luz ++ * Copyright (C) 2019-2021 Maximilian Luz + */ + +#ifndef _SURFACE_AGGREGATOR_SSH_REQUEST_LAYER_H @@ -13363,7 +13621,7 @@ index 000000000000..cb35815858d1 +#endif /* _SURFACE_AGGREGATOR_SSH_REQUEST_LAYER_H */ diff --git a/drivers/platform/x86/surface_aggregator/trace.h b/drivers/platform/x86/surface_aggregator/trace.h new file mode 100644 -index 000000000000..eb332bb53ae4 +index 000000000000..de64cf169060 --- /dev/null +++ b/drivers/platform/x86/surface_aggregator/trace.h @@ -0,0 +1,632 @@ @@ -13371,7 +13629,7 @@ index 000000000000..eb332bb53ae4 +/* + * Trace points for SSAM/SSH. + * -+ * Copyright (C) 2020 Maximilian Luz ++ * Copyright (C) 2020-2021 Maximilian Luz + */ + +#undef TRACE_SYSTEM @@ -14001,38 +14259,77 @@ index 000000000000..eb332bb53ae4 +#include diff --git a/drivers/platform/x86/surface_aggregator_cdev.c b/drivers/platform/x86/surface_aggregator_cdev.c new file mode 100644 -index 000000000000..79e28fab7e40 +index 000000000000..2cad4147645c --- /dev/null +++ b/drivers/platform/x86/surface_aggregator_cdev.c -@@ -0,0 +1,322 @@ +@@ -0,0 +1,804 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Provides user-space access to the SSAM EC via the /dev/surface/aggregator + * misc device. Intended for debugging and development. + * -+ * Copyright (C) 2020 Maximilian Luz ++ * Copyright (C) 2020-2021 Maximilian Luz + */ + +#include ++#include +#include ++#include +#include +#include +#include +#include ++#include +#include +#include +#include ++#include + +#include +#include + +#define SSAM_CDEV_DEVICE_NAME "surface_aggregator_cdev" + ++ ++/* -- Main structures. ------------------------------------------------------ */ ++ ++enum ssam_cdev_device_state { ++ SSAM_CDEV_DEVICE_SHUTDOWN_BIT = BIT(0), ++}; ++ +struct ssam_cdev { + struct kref kref; + struct rw_semaphore lock; ++ ++ struct device *dev; + struct ssam_controller *ctrl; + struct miscdevice mdev; ++ unsigned long flags; ++ ++ struct rw_semaphore client_lock; /* Guards client list. */ ++ struct list_head client_list; ++}; ++ ++struct ssam_cdev_client; ++ ++struct ssam_cdev_notifier { ++ struct ssam_cdev_client *client; ++ struct ssam_event_notifier nf; ++}; ++ ++struct ssam_cdev_client { ++ struct ssam_cdev *cdev; ++ struct list_head node; ++ ++ struct mutex notifier_lock; /* Guards notifier access for registration */ ++ struct ssam_cdev_notifier *notifier[SSH_NUM_EVENTS]; ++ ++ struct mutex read_lock; /* Guards FIFO buffer read access */ ++ struct mutex write_lock; /* Guards FIFO buffer write access */ ++ DECLARE_KFIFO(buffer, u8, 4096); ++ ++ wait_queue_head_t waitq; ++ struct fasync_struct *fasync; +}; + +static void __ssam_cdev_release(struct kref *kref) @@ -14054,24 +14351,171 @@ index 000000000000..79e28fab7e40 + kref_put(&cdev->kref, __ssam_cdev_release); +} + -+static int ssam_cdev_device_open(struct inode *inode, struct file *filp) -+{ -+ struct miscdevice *mdev = filp->private_data; -+ struct ssam_cdev *cdev = container_of(mdev, struct ssam_cdev, mdev); + -+ filp->private_data = ssam_cdev_get(cdev); -+ return stream_open(inode, filp); -+} ++/* -- Notifier handling. ---------------------------------------------------- */ + -+static int ssam_cdev_device_release(struct inode *inode, struct file *filp) ++static u32 ssam_cdev_notifier(struct ssam_event_notifier *nf, const struct ssam_event *in) +{ -+ ssam_cdev_put(filp->private_data); ++ struct ssam_cdev_notifier *cdev_nf = container_of(nf, struct ssam_cdev_notifier, nf); ++ struct ssam_cdev_client *client = cdev_nf->client; ++ struct ssam_cdev_event event; ++ size_t n = struct_size(&event, data, in->length); ++ ++ /* Translate event. */ ++ event.target_category = in->target_category; ++ event.target_id = in->target_id; ++ event.command_id = in->command_id; ++ event.instance_id = in->instance_id; ++ event.length = in->length; ++ ++ mutex_lock(&client->write_lock); ++ ++ /* Make sure we have enough space. */ ++ if (kfifo_avail(&client->buffer) < n) { ++ dev_warn(client->cdev->dev, ++ "buffer full, dropping event (tc: %#04x, tid: %#04x, cid: %#04x, iid: %#04x)\n", ++ in->target_category, in->target_id, in->command_id, in->instance_id); ++ mutex_unlock(&client->write_lock); ++ return 0; ++ } ++ ++ /* Copy event header and payload. */ ++ kfifo_in(&client->buffer, (const u8 *)&event, struct_size(&event, data, 0)); ++ kfifo_in(&client->buffer, &in->data[0], in->length); ++ ++ mutex_unlock(&client->write_lock); ++ ++ /* Notify waiting readers. */ ++ kill_fasync(&client->fasync, SIGIO, POLL_IN); ++ wake_up_interruptible(&client->waitq); ++ ++ /* ++ * Don't mark events as handled, this is the job of a proper driver and ++ * not the debugging interface. ++ */ + return 0; +} + -+static long ssam_cdev_request(struct ssam_cdev *cdev, unsigned long arg) ++static int ssam_cdev_notifier_register(struct ssam_cdev_client *client, u8 category, int priority) ++{ ++ struct ssam_cdev_notifier *nf; ++ int index = ((int)category) - 1; ++ int status; ++ ++ lockdep_assert_held_read(&client->cdev->lock); ++ ++ /* Validate notifier target category. */ ++ if (index < 0 || index >= SSH_NUM_EVENTS) ++ return -EINVAL; ++ ++ mutex_lock(&client->notifier_lock); ++ ++ /* Check if the notifier has already been registered. */ ++ if (client->notifier[index]) { ++ mutex_unlock(&client->notifier_lock); ++ return -EEXIST; ++ } ++ ++ /* Allocate new notifier. */ ++ nf = kzalloc(sizeof(*nf), GFP_KERNEL); ++ if (!nf) { ++ mutex_unlock(&client->notifier_lock); ++ return -ENOMEM; ++ } ++ ++ /* ++ * Create a dummy notifier with the minimal required fields for ++ * observer registration. Note that we can skip fully specifying event ++ * and registry here as we do not need any matching and use silent ++ * registration, which does not enable the corresponding event. ++ */ ++ nf->client = client; ++ nf->nf.base.fn = ssam_cdev_notifier; ++ nf->nf.base.priority = priority; ++ nf->nf.event.id.target_category = category; ++ nf->nf.event.mask = 0; /* Do not do any matching. */ ++ nf->nf.flags = SSAM_EVENT_NOTIFIER_OBSERVER; ++ ++ /* Register notifier. */ ++ status = ssam_notifier_register(client->cdev->ctrl, &nf->nf); ++ if (status) ++ kfree(nf); ++ else ++ client->notifier[index] = nf; ++ ++ mutex_unlock(&client->notifier_lock); ++ return status; ++} ++ ++static int ssam_cdev_notifier_unregister(struct ssam_cdev_client *client, u8 category) ++{ ++ int index = ((int)category) - 1; ++ int status; ++ ++ lockdep_assert_held_read(&client->cdev->lock); ++ ++ /* Validate notifier target category. */ ++ if (index < 0 || index >= SSH_NUM_EVENTS) ++ return -EINVAL; ++ ++ mutex_lock(&client->notifier_lock); ++ ++ /* Check if the notifier is currently registered. */ ++ if (!client->notifier[index]) { ++ mutex_unlock(&client->notifier_lock); ++ return -ENOENT; ++ } ++ ++ /* Unregister and free notifier. */ ++ status = ssam_notifier_unregister(client->cdev->ctrl, &client->notifier[index]->nf); ++ kfree(client->notifier[index]); ++ client->notifier[index] = NULL; ++ ++ mutex_unlock(&client->notifier_lock); ++ return status; ++} ++ ++static void ssam_cdev_notifier_unregister_all(struct ssam_cdev_client *client) ++{ ++ int i; ++ ++ down_read(&client->cdev->lock); ++ ++ /* ++ * This function may be used during shutdown, thus we need to test for ++ * cdev->ctrl instead of the SSAM_CDEV_DEVICE_SHUTDOWN_BIT bit. ++ */ ++ if (client->cdev->ctrl) { ++ for (i = 0; i < SSH_NUM_EVENTS; i++) ++ ssam_cdev_notifier_unregister(client, i + 1); ++ ++ } else { ++ int count = 0; ++ ++ /* ++ * Device has been shut down. Any notifier remaining is a bug, ++ * so warn about that as this would otherwise hardly be ++ * noticeable. Nevertheless, free them as well. ++ */ ++ mutex_lock(&client->notifier_lock); ++ for (i = 0; i < SSH_NUM_EVENTS; i++) { ++ count += !!(client->notifier[i]); ++ kfree(client->notifier[i]); ++ client->notifier[i] = NULL; ++ } ++ mutex_unlock(&client->notifier_lock); ++ ++ WARN_ON(count > 0); ++ } ++ ++ up_read(&client->cdev->lock); ++} ++ ++ ++/* -- IOCTL functions. ------------------------------------------------------ */ ++ ++static long ssam_cdev_request(struct ssam_cdev_client *client, struct ssam_cdev_request __user *r) +{ -+ struct ssam_cdev_request __user *r; + struct ssam_cdev_request rqst; + struct ssam_request spec = {}; + struct ssam_response rsp = {}; @@ -14079,7 +14523,8 @@ index 000000000000..79e28fab7e40 + void __user *rspdata; + int status = 0, ret = 0, tmp; + -+ r = (struct ssam_cdev_request __user *)arg; ++ lockdep_assert_held_read(&client->cdev->lock); ++ + ret = copy_struct_from_user(&rqst, sizeof(rqst), r, sizeof(*r)); + if (ret) + goto out; @@ -14159,7 +14604,7 @@ index 000000000000..79e28fab7e40 + } + + /* Perform request. */ -+ status = ssam_request_sync(cdev->ctrl, &spec, &rsp); ++ status = ssam_request_sync(client->cdev->ctrl, &spec, &rsp); + if (status) + goto out; + @@ -14184,48 +14629,312 @@ index 000000000000..79e28fab7e40 + return ret; +} + -+static long __ssam_cdev_device_ioctl(struct ssam_cdev *cdev, unsigned int cmd, ++static long ssam_cdev_notif_register(struct ssam_cdev_client *client, ++ const struct ssam_cdev_notifier_desc __user *d) ++{ ++ struct ssam_cdev_notifier_desc desc; ++ long ret; ++ ++ lockdep_assert_held_read(&client->cdev->lock); ++ ++ ret = copy_struct_from_user(&desc, sizeof(desc), d, sizeof(*d)); ++ if (ret) ++ return ret; ++ ++ return ssam_cdev_notifier_register(client, desc.target_category, desc.priority); ++} ++ ++static long ssam_cdev_notif_unregister(struct ssam_cdev_client *client, ++ const struct ssam_cdev_notifier_desc __user *d) ++{ ++ struct ssam_cdev_notifier_desc desc; ++ long ret; ++ ++ lockdep_assert_held_read(&client->cdev->lock); ++ ++ ret = copy_struct_from_user(&desc, sizeof(desc), d, sizeof(*d)); ++ if (ret) ++ return ret; ++ ++ return ssam_cdev_notifier_unregister(client, desc.target_category); ++} ++ ++static long ssam_cdev_event_enable(struct ssam_cdev_client *client, ++ const struct ssam_cdev_event_desc __user *d) ++{ ++ struct ssam_cdev_event_desc desc; ++ struct ssam_event_registry reg; ++ struct ssam_event_id id; ++ long ret; ++ ++ lockdep_assert_held_read(&client->cdev->lock); ++ ++ /* Read descriptor from user-space. */ ++ ret = copy_struct_from_user(&desc, sizeof(desc), d, sizeof(*d)); ++ if (ret) ++ return ret; ++ ++ /* Translate descriptor. */ ++ reg.target_category = desc.reg.target_category; ++ reg.target_id = desc.reg.target_id; ++ reg.cid_enable = desc.reg.cid_enable; ++ reg.cid_disable = desc.reg.cid_disable; ++ ++ id.target_category = desc.id.target_category; ++ id.instance = desc.id.instance; ++ ++ /* Disable event. */ ++ return ssam_controller_event_enable(client->cdev->ctrl, reg, id, desc.flags); ++} ++ ++static long ssam_cdev_event_disable(struct ssam_cdev_client *client, ++ const struct ssam_cdev_event_desc __user *d) ++{ ++ struct ssam_cdev_event_desc desc; ++ struct ssam_event_registry reg; ++ struct ssam_event_id id; ++ long ret; ++ ++ lockdep_assert_held_read(&client->cdev->lock); ++ ++ /* Read descriptor from user-space. */ ++ ret = copy_struct_from_user(&desc, sizeof(desc), d, sizeof(*d)); ++ if (ret) ++ return ret; ++ ++ /* Translate descriptor. */ ++ reg.target_category = desc.reg.target_category; ++ reg.target_id = desc.reg.target_id; ++ reg.cid_enable = desc.reg.cid_enable; ++ reg.cid_disable = desc.reg.cid_disable; ++ ++ id.target_category = desc.id.target_category; ++ id.instance = desc.id.instance; ++ ++ /* Disable event. */ ++ return ssam_controller_event_disable(client->cdev->ctrl, reg, id, desc.flags); ++} ++ ++ ++/* -- File operations. ------------------------------------------------------ */ ++ ++static int ssam_cdev_device_open(struct inode *inode, struct file *filp) ++{ ++ struct miscdevice *mdev = filp->private_data; ++ struct ssam_cdev_client *client; ++ struct ssam_cdev *cdev = container_of(mdev, struct ssam_cdev, mdev); ++ ++ /* Initialize client */ ++ client = vzalloc(sizeof(*client)); ++ if (!client) ++ return -ENOMEM; ++ ++ client->cdev = ssam_cdev_get(cdev); ++ ++ INIT_LIST_HEAD(&client->node); ++ ++ mutex_init(&client->notifier_lock); ++ ++ mutex_init(&client->read_lock); ++ mutex_init(&client->write_lock); ++ INIT_KFIFO(client->buffer); ++ init_waitqueue_head(&client->waitq); ++ ++ filp->private_data = client; ++ ++ /* Attach client. */ ++ down_write(&cdev->client_lock); ++ ++ if (test_bit(SSAM_CDEV_DEVICE_SHUTDOWN_BIT, &cdev->flags)) { ++ up_write(&cdev->client_lock); ++ ssam_cdev_put(client->cdev); ++ vfree(client); ++ return -ENODEV; ++ } ++ list_add_tail(&client->node, &cdev->client_list); ++ ++ up_write(&cdev->client_lock); ++ ++ stream_open(inode, filp); ++ return 0; ++} ++ ++static int ssam_cdev_device_release(struct inode *inode, struct file *filp) ++{ ++ struct ssam_cdev_client *client = filp->private_data; ++ ++ /* Force-unregister all remaining notifiers of this client. */ ++ ssam_cdev_notifier_unregister_all(client); ++ ++ /* Detach client. */ ++ down_write(&client->cdev->client_lock); ++ list_del(&client->node); ++ up_write(&client->cdev->client_lock); ++ ++ /* Free client. */ ++ mutex_destroy(&client->write_lock); ++ mutex_destroy(&client->read_lock); ++ ++ mutex_destroy(&client->notifier_lock); ++ ++ ssam_cdev_put(client->cdev); ++ vfree(client); ++ ++ return 0; ++} ++ ++static long __ssam_cdev_device_ioctl(struct ssam_cdev_client *client, unsigned int cmd, + unsigned long arg) +{ ++ lockdep_assert_held_read(&client->cdev->lock); ++ + switch (cmd) { + case SSAM_CDEV_REQUEST: -+ return ssam_cdev_request(cdev, arg); ++ return ssam_cdev_request(client, (struct ssam_cdev_request __user *)arg); ++ ++ case SSAM_CDEV_NOTIF_REGISTER: ++ return ssam_cdev_notif_register(client, ++ (struct ssam_cdev_notifier_desc __user *)arg); ++ ++ case SSAM_CDEV_NOTIF_UNREGISTER: ++ return ssam_cdev_notif_unregister(client, ++ (struct ssam_cdev_notifier_desc __user *)arg); ++ ++ case SSAM_CDEV_EVENT_ENABLE: ++ return ssam_cdev_event_enable(client, (struct ssam_cdev_event_desc __user *)arg); ++ ++ case SSAM_CDEV_EVENT_DISABLE: ++ return ssam_cdev_event_disable(client, (struct ssam_cdev_event_desc __user *)arg); + + default: + return -ENOTTY; + } +} + -+static long ssam_cdev_device_ioctl(struct file *file, unsigned int cmd, -+ unsigned long arg) ++static long ssam_cdev_device_ioctl(struct file *file, unsigned int cmd, unsigned long arg) +{ -+ struct ssam_cdev *cdev = file->private_data; ++ struct ssam_cdev_client *client = file->private_data; + long status; + + /* Ensure that controller is valid for as long as we need it. */ ++ if (down_read_killable(&client->cdev->lock)) ++ return -ERESTARTSYS; ++ ++ if (test_bit(SSAM_CDEV_DEVICE_SHUTDOWN_BIT, &client->cdev->flags)) { ++ up_read(&client->cdev->lock); ++ return -ENODEV; ++ } ++ ++ status = __ssam_cdev_device_ioctl(client, cmd, arg); ++ ++ up_read(&client->cdev->lock); ++ return status; ++} ++ ++static ssize_t ssam_cdev_read(struct file *file, char __user *buf, size_t count, loff_t *offs) ++{ ++ struct ssam_cdev_client *client = file->private_data; ++ struct ssam_cdev *cdev = client->cdev; ++ unsigned int copied; ++ int status = 0; ++ + if (down_read_killable(&cdev->lock)) + return -ERESTARTSYS; + -+ if (!cdev->ctrl) { ++ /* Make sure we're not shut down. */ ++ if (test_bit(SSAM_CDEV_DEVICE_SHUTDOWN_BIT, &cdev->flags)) { + up_read(&cdev->lock); + return -ENODEV; + } + -+ status = __ssam_cdev_device_ioctl(cdev, cmd, arg); ++ do { ++ /* Check availability, wait if necessary. */ ++ if (kfifo_is_empty(&client->buffer)) { ++ up_read(&cdev->lock); ++ ++ if (file->f_flags & O_NONBLOCK) ++ return -EAGAIN; ++ ++ status = wait_event_interruptible(client->waitq, ++ !kfifo_is_empty(&client->buffer) || ++ test_bit(SSAM_CDEV_DEVICE_SHUTDOWN_BIT, ++ &cdev->flags)); ++ if (status < 0) ++ return status; ++ ++ if (down_read_killable(&cdev->lock)) ++ return -ERESTARTSYS; ++ ++ /* Need to check that we're not shut down again. */ ++ if (test_bit(SSAM_CDEV_DEVICE_SHUTDOWN_BIT, &cdev->flags)) { ++ up_read(&cdev->lock); ++ return -ENODEV; ++ } ++ } ++ ++ /* Try to read from FIFO. */ ++ if (mutex_lock_interruptible(&client->read_lock)) { ++ up_read(&cdev->lock); ++ return -ERESTARTSYS; ++ } ++ ++ status = kfifo_to_user(&client->buffer, buf, count, &copied); ++ mutex_unlock(&client->read_lock); ++ ++ if (status < 0) { ++ up_read(&cdev->lock); ++ return status; ++ } ++ ++ /* We might not have gotten anything, check this here. */ ++ if (copied == 0 && (file->f_flags & O_NONBLOCK)) { ++ up_read(&cdev->lock); ++ return -EAGAIN; ++ } ++ } while (copied == 0); + + up_read(&cdev->lock); -+ return status; ++ return copied; ++} ++ ++static __poll_t ssam_cdev_poll(struct file *file, struct poll_table_struct *pt) ++{ ++ struct ssam_cdev_client *client = file->private_data; ++ __poll_t events = 0; ++ ++ if (test_bit(SSAM_CDEV_DEVICE_SHUTDOWN_BIT, &client->cdev->flags)) ++ return EPOLLHUP | EPOLLERR; ++ ++ poll_wait(file, &client->waitq, pt); ++ ++ if (!kfifo_is_empty(&client->buffer)) ++ events |= EPOLLIN | EPOLLRDNORM; ++ ++ return events; ++} ++ ++static int ssam_cdev_fasync(int fd, struct file *file, int on) ++{ ++ struct ssam_cdev_client *client = file->private_data; ++ ++ return fasync_helper(fd, file, on, &client->fasync); +} + +static const struct file_operations ssam_controller_fops = { + .owner = THIS_MODULE, + .open = ssam_cdev_device_open, + .release = ssam_cdev_device_release, ++ .read = ssam_cdev_read, ++ .poll = ssam_cdev_poll, ++ .fasync = ssam_cdev_fasync, + .unlocked_ioctl = ssam_cdev_device_ioctl, + .compat_ioctl = ssam_cdev_device_ioctl, -+ .llseek = noop_llseek, ++ .llseek = no_llseek, +}; + ++ ++/* -- Device and driver setup ----------------------------------------------- */ ++ +static int ssam_dbg_device_probe(struct platform_device *pdev) +{ + struct ssam_controller *ctrl; @@ -14243,6 +14952,7 @@ index 000000000000..79e28fab7e40 + kref_init(&cdev->kref); + init_rwsem(&cdev->lock); + cdev->ctrl = ctrl; ++ cdev->dev = &pdev->dev; + + cdev->mdev.parent = &pdev->dev; + cdev->mdev.minor = MISC_DYNAMIC_MINOR; @@ -14250,6 +14960,9 @@ index 000000000000..79e28fab7e40 + cdev->mdev.nodename = "surface/aggregator"; + cdev->mdev.fops = &ssam_controller_fops; + ++ init_rwsem(&cdev->client_lock); ++ INIT_LIST_HEAD(&cdev->client_list); ++ + status = misc_register(&cdev->mdev); + if (status) { + kfree(cdev); @@ -14263,8 +14976,32 @@ index 000000000000..79e28fab7e40 +static int ssam_dbg_device_remove(struct platform_device *pdev) +{ + struct ssam_cdev *cdev = platform_get_drvdata(pdev); ++ struct ssam_cdev_client *client; + -+ misc_deregister(&cdev->mdev); ++ /* ++ * Mark device as shut-down. Prevent new clients from being added and ++ * new operations from being executed. ++ */ ++ set_bit(SSAM_CDEV_DEVICE_SHUTDOWN_BIT, &cdev->flags); ++ ++ down_write(&cdev->client_lock); ++ ++ /* Remove all notifiers registered by us. */ ++ list_for_each_entry(client, &cdev->client_list, node) { ++ ssam_cdev_notifier_unregister_all(client); ++ } ++ ++ /* Wake up async clients. */ ++ list_for_each_entry(client, &cdev->client_list, node) { ++ kill_fasync(&client->fasync, SIGIO, POLL_HUP); ++ } ++ ++ /* Wake up blocking clients. */ ++ list_for_each_entry(client, &cdev->client_list, node) { ++ wake_up_interruptible(&client->waitq); ++ } ++ ++ up_write(&cdev->client_lock); + + /* + * The controller is only guaranteed to be valid for as long as the @@ -14273,8 +15010,11 @@ index 000000000000..79e28fab7e40 + */ + down_write(&cdev->lock); + cdev->ctrl = NULL; ++ cdev->dev = NULL; + up_write(&cdev->lock); + ++ misc_deregister(&cdev->mdev); ++ + ssam_cdev_put(cdev); + return 0; +} @@ -17576,18 +18316,6 @@ index 000000000000..a060c36c7766 +MODULE_AUTHOR("Maximilian Luz "); +MODULE_DESCRIPTION("AC driver for Surface System Aggregator Module"); +MODULE_LICENSE("GPL"); -diff --git a/drivers/tty/serial/8250/8250_dw.c b/drivers/tty/serial/8250/8250_dw.c -index 9e204f9b799a..a3a0154da567 100644 ---- a/drivers/tty/serial/8250/8250_dw.c -+++ b/drivers/tty/serial/8250/8250_dw.c -@@ -714,6 +714,7 @@ static const struct acpi_device_id dw8250_acpi_match[] = { - { "APMC0D08", 0}, - { "AMD0020", 0 }, - { "AMDI0020", 0 }, -+ { "AMDI0022", 0 }, - { "BRCM2032", 0 }, - { "HISI0031", 0 }, - { }, diff --git a/include/linux/mod_devicetable.h b/include/linux/mod_devicetable.h index ef64063fac30..0b8f1feefe0e 100644 --- a/include/linux/mod_devicetable.h @@ -17658,10 +18386,10 @@ index 000000000000..8e3e86c7d78c +#endif /* _LINUX_SURFACE_ACPI_NOTIFY_H */ diff --git a/include/linux/surface_aggregator/controller.h b/include/linux/surface_aggregator/controller.h new file mode 100644 -index 000000000000..0806796eabcb +index 000000000000..068e1982ad37 --- /dev/null +++ b/include/linux/surface_aggregator/controller.h -@@ -0,0 +1,824 @@ +@@ -0,0 +1,849 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Surface System Aggregator Module (SSAM) controller interface. @@ -17670,7 +18398,7 @@ index 000000000000..0806796eabcb + * managing access and communication to and from the SSAM EC, as well as main + * communication structures and definitions. + * -+ * Copyright (C) 2019-2020 Maximilian Luz ++ * Copyright (C) 2019-2021 Maximilian Luz + */ + +#ifndef _LINUX_SURFACE_AGGREGATOR_CONTROLLER_H @@ -18460,6 +19188,20 @@ index 000000000000..0806796eabcb + SSAM_EVENT_REGISTRY(SSAM_SSH_TC_REG, 0x02, 0x01, 0x02) + +/** ++ * enum ssam_event_notifier_flags - Flags for event notifiers. ++ * @SSAM_EVENT_NOTIFIER_OBSERVER: ++ * The corresponding notifier acts as observer. Registering a notifier ++ * with this flag set will not attempt to enable any event. Equally, ++ * unregistering will not attempt to disable any event. Note that a ++ * notifier with this flag may not even correspond to a certain event at ++ * all, only to a specific event target category. Event matching will not ++ * be influenced by this flag. ++ */ ++enum ssam_event_notifier_flags { ++ SSAM_EVENT_NOTIFIER_OBSERVER = BIT(0), ++}; ++ ++/** + * struct ssam_event_notifier - Notifier block for SSAM events. + * @base: The base notifier block with callback function and priority. + * @event: The event for which this block will receive notifications. @@ -18467,6 +19209,7 @@ index 000000000000..0806796eabcb + * @event.id: ID specifying the event. + * @event.mask: Flags determining how events are matched to the notifier. + * @event.flags: Flags used for enabling the event. ++ * @flags: Notifier flags (see &enum ssam_event_notifier_flags). + */ +struct ssam_event_notifier { + struct ssam_notifier_block base; @@ -18477,6 +19220,8 @@ index 000000000000..0806796eabcb + enum ssam_event_mask mask; + u8 flags; + } event; ++ ++ unsigned long flags; +}; + +int ssam_notifier_register(struct ssam_controller *ctrl, @@ -18485,10 +19230,18 @@ index 000000000000..0806796eabcb +int ssam_notifier_unregister(struct ssam_controller *ctrl, + struct ssam_event_notifier *n); + ++int ssam_controller_event_enable(struct ssam_controller *ctrl, ++ struct ssam_event_registry reg, ++ struct ssam_event_id id, u8 flags); ++ ++int ssam_controller_event_disable(struct ssam_controller *ctrl, ++ struct ssam_event_registry reg, ++ struct ssam_event_id id, u8 flags); ++ +#endif /* _LINUX_SURFACE_AGGREGATOR_CONTROLLER_H */ diff --git a/include/linux/surface_aggregator/device.h b/include/linux/surface_aggregator/device.h new file mode 100644 -index 000000000000..6ff9c58b3e17 +index 000000000000..f636c5310321 --- /dev/null +++ b/include/linux/surface_aggregator/device.h @@ -0,0 +1,424 @@ @@ -18501,7 +19254,7 @@ index 000000000000..6ff9c58b3e17 + * Provides support for non-platform/non-ACPI SSAM clients via dedicated + * subsystem. + * -+ * Copyright (C) 2019-2020 Maximilian Luz ++ * Copyright (C) 2019-2021 Maximilian Luz + */ + +#ifndef _LINUX_SURFACE_AGGREGATOR_DEVICE_H @@ -18918,7 +19671,7 @@ index 000000000000..6ff9c58b3e17 +#endif /* _LINUX_SURFACE_AGGREGATOR_DEVICE_H */ diff --git a/include/linux/surface_aggregator/serial_hub.h b/include/linux/surface_aggregator/serial_hub.h new file mode 100644 -index 000000000000..64276fbfa1d5 +index 000000000000..c3de43edcffa --- /dev/null +++ b/include/linux/surface_aggregator/serial_hub.h @@ -0,0 +1,672 @@ @@ -18930,7 +19683,7 @@ index 000000000000..64276fbfa1d5 + * Surface System Aggregator Module (SSAM). Provides the interface for basic + * packet- and request-based communication with the SSAM EC via SSH. + * -+ * Copyright (C) 2019-2020 Maximilian Luz ++ * Copyright (C) 2019-2021 Maximilian Luz + */ + +#ifndef _LINUX_SURFACE_AGGREGATOR_SERIAL_HUB_H @@ -19596,10 +20349,10 @@ index 000000000000..64276fbfa1d5 +#endif /* _LINUX_SURFACE_AGGREGATOR_SERIAL_HUB_H */ diff --git a/include/uapi/linux/surface_aggregator/cdev.h b/include/uapi/linux/surface_aggregator/cdev.h new file mode 100644 -index 000000000000..fbcce04abfe9 +index 000000000000..08f46b60b151 --- /dev/null +++ b/include/uapi/linux/surface_aggregator/cdev.h -@@ -0,0 +1,78 @@ +@@ -0,0 +1,147 @@ +/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */ +/* + * Surface System Aggregator Module (SSAM) user-space EC interface. @@ -19608,7 +20361,7 @@ index 000000000000..fbcce04abfe9 + * device. This device provides direct user-space access to the SSAM EC. + * Intended for debugging and development. + * -+ * Copyright (C) 2020 Maximilian Luz ++ * Copyright (C) 2020-2021 Maximilian Luz + */ + +#ifndef _UAPI_LINUX_SURFACE_AGGREGATOR_CDEV_H @@ -19675,7 +20428,76 @@ index 000000000000..fbcce04abfe9 + } response; +} __attribute__((__packed__)); + -+#define SSAM_CDEV_REQUEST _IOWR(0xA5, 1, struct ssam_cdev_request) ++/** ++ * struct ssam_cdev_notifier_desc - Notifier descriptor. ++ * @priority: Priority value determining the order in which notifier ++ * callbacks will be called. A higher value means higher ++ * priority, i.e. the associated callback will be executed ++ * earlier than other (lower priority) callbacks. ++ * @target_category: The event target category for which this notifier should ++ * receive events. ++ * ++ * Specifies the notifier that should be registered or unregistered, ++ * specifically with which priority and for which target category of events. ++ */ ++struct ssam_cdev_notifier_desc { ++ __s32 priority; ++ __u8 target_category; ++} __attribute__((__packed__)); ++ ++/** ++ * struct ssam_cdev_event_desc - Event descriptor. ++ * @reg: Registry via which the event will be enabled/disabled. ++ * @reg.target_category: Target category for the event registry requests. ++ * @reg.target_id: Target ID for the event registry requests. ++ * @reg.cid_enable: Command ID for the event-enable request. ++ * @reg.cid_disable: Command ID for the event-disable request. ++ * @id: ID specifying the event. ++ * @id.target_category: Target category of the event source. ++ * @id.instance: Instance ID of the event source. ++ * @flags: Flags used for enabling the event. ++ * ++ * Specifies which event should be enabled/disabled and how to do that. ++ */ ++struct ssam_cdev_event_desc { ++ struct { ++ __u8 target_category; ++ __u8 target_id; ++ __u8 cid_enable; ++ __u8 cid_disable; ++ } reg; ++ ++ struct { ++ __u8 target_category; ++ __u8 instance; ++ } id; ++ ++ __u8 flags; ++} __attribute__((__packed__)); ++ ++/** ++ * struct ssam_cdev_event - SSAM event sent by the EC. ++ * @target_category: Target category of the event source. See &enum ssam_ssh_tc. ++ * @target_id: Target ID of the event source. ++ * @command_id: Command ID of the event. ++ * @instance_id: Instance ID of the event source. ++ * @length: Length of the event payload in bytes. ++ * @data: Event payload data. ++ */ ++struct ssam_cdev_event { ++ __u8 target_category; ++ __u8 target_id; ++ __u8 command_id; ++ __u8 instance_id; ++ __u16 length; ++ __u8 data[]; ++} __attribute__((__packed__)); ++ ++#define SSAM_CDEV_REQUEST _IOWR(0xA5, 1, struct ssam_cdev_request) ++#define SSAM_CDEV_NOTIF_REGISTER _IOW(0xA5, 2, struct ssam_cdev_notifier_desc) ++#define SSAM_CDEV_NOTIF_UNREGISTER _IOW(0xA5, 3, struct ssam_cdev_notifier_desc) ++#define SSAM_CDEV_EVENT_ENABLE _IOW(0xA5, 4, struct ssam_cdev_event_desc) ++#define SSAM_CDEV_EVENT_DISABLE _IOW(0xA5, 5, struct ssam_cdev_event_desc) + +#endif /* _UAPI_LINUX_SURFACE_AGGREGATOR_CDEV_H */ diff --git a/include/uapi/linux/surface_aggregator/dtx.h b/include/uapi/linux/surface_aggregator/dtx.h diff --git a/patches/5.10/0007-surface-hotplug.patch b/patches/5.10/0007-surface-hotplug.patch index c875d6574..1dae34743 100644 --- a/patches/5.10/0007-surface-hotplug.patch +++ b/patches/5.10/0007-surface-hotplug.patch @@ -1,4 +1,4 @@ -From 3345bcc5949ec49413418e746fe983f87c9df276 Mon Sep 17 00:00:00 2001 +From 507101423da0c5f88d1a46c3c04fa38bb0ea4503 Mon Sep 17 00:00:00 2001 From: Maximilian Luz Date: Sat, 31 Oct 2020 20:46:33 +0100 Subject: [PATCH] PCI: Add sysfs attribute for PCI device power state @@ -71,7 +71,7 @@ index d15c881e2e7e..b15f754e6346 100644 -- 2.31.1 -From 6452abe90a33db6416420b7c8c795b7ab8e3b3eb Mon Sep 17 00:00:00 2001 +From 251a97f43789e49dcbdf165a356d12640fa2d050 Mon Sep 17 00:00:00 2001 From: Maximilian Luz Date: Mon, 14 Dec 2020 20:50:59 +0100 Subject: [PATCH] platform/x86: Add Surface Hotplug driver diff --git a/patches/5.10/0008-surface-typecover.patch b/patches/5.10/0008-surface-typecover.patch index ac73ae047..336fe146d 100644 --- a/patches/5.10/0008-surface-typecover.patch +++ b/patches/5.10/0008-surface-typecover.patch @@ -1,4 +1,4 @@ -From db55db5c754187549851886354286627690b1865 Mon Sep 17 00:00:00 2001 +From a854425a8a53d494c59976e9165e3cbc6d580964 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= Date: Thu, 5 Nov 2020 13:09:45 +0100 Subject: [PATCH] hid/multitouch: Turn off Type Cover keyboard backlight when diff --git a/patches/5.10/0009-surface-go-touchscreen.patch b/patches/5.10/0009-surface-go-touchscreen.patch new file mode 100644 index 000000000..eed42bfd9 --- /dev/null +++ b/patches/5.10/0009-surface-go-touchscreen.patch @@ -0,0 +1,39 @@ +From 23169cca47f8985ad3b925efc7c13a8674586961 Mon Sep 17 00:00:00 2001 +From: Zoltan Tamas Vajda +Date: Thu, 3 Jun 2021 10:50:55 +0200 +Subject: [PATCH] Added quirk for Surface Go touchscreen + +Patchset: surface-go-touchscreen +--- + drivers/hid/hid-ids.h | 1 + + drivers/hid/hid-input.c | 2 ++ + 2 files changed, 3 insertions(+) + +diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h +index e220a05a05b4..49a32614425e 100644 +--- a/drivers/hid/hid-ids.h ++++ b/drivers/hid/hid-ids.h +@@ -389,6 +389,7 @@ + #define USB_DEVICE_ID_HP_X2 0x074d + #define USB_DEVICE_ID_HP_X2_10_COVER 0x0755 + #define USB_DEVICE_ID_ASUS_UX550_TOUCHSCREEN 0x2706 ++#define I2C_DEVICE_ID_SURFACE_GO_TOUCHSCREEN 0x261A + + #define USB_VENDOR_ID_ELECOM 0x056e + #define USB_DEVICE_ID_ELECOM_BM084 0x0061 +diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c +index 32024905fd70..cfbb4ab4fd90 100644 +--- a/drivers/hid/hid-input.c ++++ b/drivers/hid/hid-input.c +@@ -324,6 +324,8 @@ static const struct hid_device_id hid_battery_quirks[] = { + HID_BATTERY_QUIRK_IGNORE }, + { HID_USB_DEVICE(USB_VENDOR_ID_ELAN, USB_DEVICE_ID_ASUS_UX550_TOUCHSCREEN), + HID_BATTERY_QUIRK_IGNORE }, ++ { HID_I2C_DEVICE(USB_VENDOR_ID_ELAN, I2C_DEVICE_ID_SURFACE_GO_TOUCHSCREEN), ++ HID_BATTERY_QUIRK_IGNORE }, + {} + }; + +-- +2.31.1 + diff --git a/patches/5.10/0009-surface-sensors.patch b/patches/5.10/0010-surface-sensors.patch similarity index 96% rename from patches/5.10/0009-surface-sensors.patch rename to patches/5.10/0010-surface-sensors.patch index 9380dd75d..a3e662b98 100644 --- a/patches/5.10/0009-surface-sensors.patch +++ b/patches/5.10/0010-surface-sensors.patch @@ -1,4 +1,4 @@ -From 8aff05c4b1dafbd263d9d5ecde325114dd2e5652 Mon Sep 17 00:00:00 2001 +From 1949ada3849490e13b7a8e45d6ef80bd96822056 Mon Sep 17 00:00:00 2001 From: Max Leiter Date: Sat, 19 Dec 2020 17:50:55 -0800 Subject: [PATCH] iio:light:apds9960 add detection for MSHW0184 ACPI device in diff --git a/patches/5.10/0010-cameras.patch b/patches/5.10/0011-cameras.patch similarity index 98% rename from patches/5.10/0010-cameras.patch rename to patches/5.10/0011-cameras.patch index 37d45141d..a4d653156 100644 --- a/patches/5.10/0010-cameras.patch +++ b/patches/5.10/0011-cameras.patch @@ -1,4 +1,4 @@ -From b82449b5d8b2e5b9204c7119638ca5fae1b13c3c Mon Sep 17 00:00:00 2001 +From 72c7c946570e318419decd064193c3197de55371 Mon Sep 17 00:00:00 2001 From: Sakari Ailus Date: Mon, 12 Oct 2020 21:04:11 +0300 Subject: [PATCH] ipu3-cio2: Use unsigned values where appropriate @@ -316,7 +316,7 @@ index 146492383aa5..7650d7998a3f 100644 -- 2.31.1 -From d84eb413e94cb25efca696e75fdc0ff8970196e8 Mon Sep 17 00:00:00 2001 +From d9aa146c372862b5eadada9784e2d5dcf889cb08 Mon Sep 17 00:00:00 2001 From: Sakari Ailus Date: Mon, 12 Oct 2020 21:04:12 +0300 Subject: [PATCH] ipu3-cio2: Remove explicit type from frame size checks @@ -350,7 +350,7 @@ index dcbfe8c9abc7..a1f574095acc 100644 -- 2.31.1 -From bc8631eec38b2f8831d5e66011a9c56a56501eba Mon Sep 17 00:00:00 2001 +From f61732bd739d5163afa6f0f72c3088b8e202e82a Mon Sep 17 00:00:00 2001 From: Sakari Ailus Date: Mon, 12 Oct 2020 21:04:13 +0300 Subject: [PATCH] ipu3-cio2: Rename CIO2_IMAGE_MAX_LENGTH as @@ -409,7 +409,7 @@ index 7650d7998a3f..ccf0b85ae36f 100644 -- 2.31.1 -From 4303cc94fa030efa8f7bf3459b5b2d676de24dac Mon Sep 17 00:00:00 2001 +From 00f93cdb3520944dcb3965e92b02b701a108ff7c Mon Sep 17 00:00:00 2001 From: Sakari Ailus Date: Tue, 13 Oct 2020 17:25:35 +0300 Subject: [PATCH] ipu3-cio2: Check receved the size against payload size, not @@ -463,7 +463,7 @@ index 93fd25a5a3e9..b244b9de142a 100644 -- 2.31.1 -From a6669883e37f7b784ff0d176372f1d0face08909 Mon Sep 17 00:00:00 2001 +From 6373aee3a8a2563b5c72320f9bec706ca6111a55 Mon Sep 17 00:00:00 2001 From: Andy Shevchenko Date: Wed, 30 Dec 2020 22:44:05 +0200 Subject: [PATCH] media: ipu3-cio2: Add headers that ipu3-cio2.h is direct user @@ -515,7 +515,7 @@ index ccf0b85ae36f..62187ab5ae43 100644 -- 2.31.1 -From 23a9b04c057eff28120700a3f9c31a9f0d5798dd Mon Sep 17 00:00:00 2001 +From 38ff42a7122f0f191a7330973e0bde3f2da24caf Mon Sep 17 00:00:00 2001 From: Daniel Scally Date: Sat, 24 Oct 2020 22:42:28 +0100 Subject: [PATCH] device property: Return true in fwnode_device_is_available @@ -560,7 +560,7 @@ index 4c43d30145c6..bc9c634df6df 100644 -- 2.31.1 -From 9e25ed98488a30173801e55992aab1c9577be4b3 Mon Sep 17 00:00:00 2001 +From 6b7655e71bcb794126b449b9a921cec2dde52908 Mon Sep 17 00:00:00 2001 From: Daniel Scally Date: Sat, 21 Nov 2020 22:06:38 +0000 Subject: [PATCH] device property: Call fwnode_graph_get_endpoint_by_id() for @@ -604,7 +604,7 @@ index bc9c634df6df..ddba75d90af2 100644 -- 2.31.1 -From 1a9f86d306664bdde52dbea47307a20379b34e8c Mon Sep 17 00:00:00 2001 +From f7801ce35dfa230703b43214b8a4aa851cb4a566 Mon Sep 17 00:00:00 2001 From: Daniel Scally Date: Sun, 25 Oct 2020 22:49:08 +0000 Subject: [PATCH] software_node: Enforce parent before child ordering of nodes @@ -707,7 +707,7 @@ index 206bd4d7d7e2..eb89bdb9232c 100644 -- 2.31.1 -From b52cfd2a5415b466646d1606d61fdaee1b33aab9 Mon Sep 17 00:00:00 2001 +From 33d65c9f6c967d25f9fbfb9e8d3efc1b10288cc0 Mon Sep 17 00:00:00 2001 From: Daniel Scally Date: Wed, 21 Oct 2020 22:25:03 +0100 Subject: [PATCH] software_node: unregister software_nodes in reverse order @@ -762,7 +762,7 @@ index eb89bdb9232c..032b24f60c78 100644 -- 2.31.1 -From 5888f375985777a0b7415ac49370bfaf98b3527f Mon Sep 17 00:00:00 2001 +From 4c87b6a4734d9629abaa3737f18bf564d0a4852e Mon Sep 17 00:00:00 2001 From: Daniel Scally Date: Tue, 22 Dec 2020 13:09:05 +0000 Subject: [PATCH] device property: Define format macros for ports and endpoints @@ -803,7 +803,7 @@ index 9506f8ec0974..72d36d46287d 100644 -- 2.31.1 -From 2f44c8c0c214eef713bb78d5f911c2d7184659df Mon Sep 17 00:00:00 2001 +From e864ead9ebbb63077cfdc0c695d744cd96978725 Mon Sep 17 00:00:00 2001 From: Heikki Krogerus Date: Tue, 15 Sep 2020 15:47:46 +0100 Subject: [PATCH] software_node: Add support for fwnode_graph*() family of @@ -971,7 +971,7 @@ index 032b24f60c78..7f056c5e0ed3 100644 -- 2.31.1 -From 10b421c1bba9d17d1225ee9ed0f6756a9d9f2751 Mon Sep 17 00:00:00 2001 +From 85aebfa83d8111ccb19588560561d887548e2254 Mon Sep 17 00:00:00 2001 From: Daniel Scally Date: Sat, 10 Oct 2020 23:07:22 +0100 Subject: [PATCH] lib/test_printf.c: Use helper function to unwind array of @@ -1009,7 +1009,7 @@ index 7ac87f18a10f..7d60f24240a4 100644 -- 2.31.1 -From 278b934335df19512ec0c43fc1016787d8c2b76e Mon Sep 17 00:00:00 2001 +From a866ae79b569d667717e1b7fc9d89e74810ad26a Mon Sep 17 00:00:00 2001 From: Daniel Scally Date: Sat, 10 Oct 2020 23:11:36 +0100 Subject: [PATCH] ipu3-cio2: Add T: entry to MAINTAINERS @@ -1040,7 +1040,7 @@ index 4fef10dd2975..7ac7d1ae8764 100644 -- 2.31.1 -From fe2688c68584f8619d6835ee3ca5c79036098512 Mon Sep 17 00:00:00 2001 +From 5caff052bb6157cfc8a52506285cd54220e498e2 Mon Sep 17 00:00:00 2001 From: Daniel Scally Date: Sat, 10 Oct 2020 22:47:21 +0100 Subject: [PATCH] ipu3-cio2: Rename ipu3-cio2.c @@ -1075,7 +1075,7 @@ rename to drivers/media/pci/intel/ipu3/ipu3-cio2-main.c -- 2.31.1 -From c551760d66b3d99532a4a6e05470d7102135fbf3 Mon Sep 17 00:00:00 2001 +From e36f28d5d30e50c733083da2e421ca8f35d6adf5 Mon Sep 17 00:00:00 2001 From: Daniel Scally Date: Wed, 21 Oct 2020 21:53:05 +0100 Subject: [PATCH] media: v4l2-core: v4l2-async: Check sd->fwnode->secondary in @@ -1116,7 +1116,7 @@ index e3ab003a6c85..9dd896d085ec 100644 -- 2.31.1 -From f703a1648c5d1139ae950e752411342fac6f6de0 Mon Sep 17 00:00:00 2001 +From 29d96d8f1d2e145985476e58fb18806467378e2a Mon Sep 17 00:00:00 2001 From: Daniel Scally Date: Sun, 15 Nov 2020 08:15:34 +0000 Subject: [PATCH] ACPI / bus: Add acpi_dev_get_next_match_dev() and helper @@ -1225,7 +1225,7 @@ index 37dac195adbb..f28b097c658f 100644 -- 2.31.1 -From 905bb4e70bd72e960d9c8a3cecf4c48bd2ebd9f6 Mon Sep 17 00:00:00 2001 +From d04cdac83e1d685531b29cb2270accd93052aba2 Mon Sep 17 00:00:00 2001 From: Daniel Scally Date: Sat, 19 Dec 2020 23:55:04 +0000 Subject: [PATCH] media: v4l2-fwnode: Include v4l2_fwnode_bus_type @@ -1302,7 +1302,7 @@ index ed0840f3d5df..6ca337c28b3c 100644 -- 2.31.1 -From d4759f603848429c076e56f7b23acc771b7d0d9a Mon Sep 17 00:00:00 2001 +From d718c386314e36faa1788c5072e46a2cfb1fc27e Mon Sep 17 00:00:00 2001 From: Daniel Scally Date: Wed, 21 Oct 2020 21:53:44 +0100 Subject: [PATCH] ipu3-cio2: Add cio2-bridge to ipu3-cio2 driver @@ -1900,7 +1900,7 @@ index 62187ab5ae43..dc3e343a37fb 100644 -- 2.31.1 -From 513ed6dafa374a1cfffe9f08ba4068ea89f1abe0 Mon Sep 17 00:00:00 2001 +From 7279aab5cb97cb59f12a2ab928a923cf9c8ea1c0 Mon Sep 17 00:00:00 2001 From: Daniel Scally Date: Wed, 2 Dec 2020 12:38:10 +0000 Subject: [PATCH] acpi: utils: move acpi_lpss_dep() to utils @@ -2002,7 +2002,7 @@ index ddca1550cce6..78b38775f18b 100644 -- 2.31.1 -From c9641927b19b0060d01fbf92246a7873216d6223 Mon Sep 17 00:00:00 2001 +From 60e395394d54d5e8f56b8ba26dbe74ed10e8a678 Mon Sep 17 00:00:00 2001 From: Daniel Scally Date: Thu, 26 Nov 2020 21:12:41 +0000 Subject: [PATCH] acpi: utils: Add function to fetch dependent acpi_devices @@ -2088,7 +2088,7 @@ index f28b097c658f..9bec3373f850 100644 -- 2.31.1 -From 438dfd5bbc2eb0ed29316c4ef8a9e80d778246bd Mon Sep 17 00:00:00 2001 +From 9f451eca1c77301234fb1070c1b331be833a4cb4 Mon Sep 17 00:00:00 2001 From: Daniel Scally Date: Mon, 16 Nov 2020 21:38:49 +0000 Subject: [PATCH] i2c: i2c-core-base: Use format macro in i2c_dev_set_name() @@ -2156,7 +2156,7 @@ index a670ae129f4b..b18172f240af 100644 -- 2.31.1 -From 4a23ab7b750a562a9b8d0a56800828943815c49b Mon Sep 17 00:00:00 2001 +From 4ce96887f2bcc2fd261baf8cb9c157290ba76860 Mon Sep 17 00:00:00 2001 From: Daniel Scally Date: Wed, 2 Dec 2020 16:41:42 +0000 Subject: [PATCH] i2c: i2c-core-acpi: Add i2c_acpi_dev_name() @@ -2214,7 +2214,7 @@ index b18172f240af..269a2009080c 100644 -- 2.31.1 -From 4fa29b754e543515cb5ba98be4d7cf014740ec47 Mon Sep 17 00:00:00 2001 +From 1ea3cc74c06de532e8d94ec330e78d34a69f889e Mon Sep 17 00:00:00 2001 From: Daniel Scally Date: Mon, 16 Nov 2020 00:16:56 +0000 Subject: [PATCH] gpio: gpiolib-acpi: Export acpi_get_gpiod() @@ -2278,7 +2278,7 @@ index fdb1d5262ce8..817f53506cfe 100644 -- 2.31.1 -From 79d68add6528351b1f0a14ebf64269e11051e6b7 Mon Sep 17 00:00:00 2001 +From d1362f8a46a3c98e376497c85f40b9855dad2e4b Mon Sep 17 00:00:00 2001 From: Daniel Scally Date: Sat, 12 Dec 2020 23:56:59 +0000 Subject: [PATCH] mfd: Remove tps68470 MFD driver @@ -2469,7 +2469,7 @@ index 4a4df4ffd18c..000000000000 -- 2.31.1 -From b73a919dbf240b2b630d4740947e20ad34d525e6 Mon Sep 17 00:00:00 2001 +From ce5a522fdd3f7ec7524927bab8f0ba1c13c68d2b Mon Sep 17 00:00:00 2001 From: Daniel Scally Date: Fri, 15 Jan 2021 12:37:31 +0000 Subject: [PATCH] platform: x86: Add intel_skl_int3472 driver @@ -3438,7 +3438,7 @@ index 000000000000..3fe27ec0caff -- 2.31.1 -From ff953e6e4886fc5761bf66e9056669439a15b855 Mon Sep 17 00:00:00 2001 +From 6dae4822587d147c175d81afde01addd751bd451 Mon Sep 17 00:00:00 2001 From: "Rafael J. Wysocki" Date: Fri, 11 Dec 2020 21:17:35 +0100 Subject: [PATCH] PCI: ACPI: Fix up ACPI companion lookup for device 0 on the @@ -3508,7 +3508,7 @@ index 745a4e0c4994..87e45a800919 100644 -- 2.31.1 -From 1a2a1d782367d5c0f508577357c396432714c0c5 Mon Sep 17 00:00:00 2001 +From 1eb9a156b3ffae11b2d85f1f34b899831593b8e6 Mon Sep 17 00:00:00 2001 From: Jake Day Date: Fri, 25 Sep 2020 10:24:53 -0400 Subject: [PATCH] media: i2c: Add support for the OV5693 image sensor @@ -6865,7 +6865,7 @@ index 000000000000..9a508e1f3624 -- 2.31.1 -From ca707ecc060c820dda128c291c9f9ae5a891245f Mon Sep 17 00:00:00 2001 +From 8abda27560ccb7fae1ae7694dff1dc11d0698c68 Mon Sep 17 00:00:00 2001 From: Daniel Scally Date: Sun, 17 Jan 2021 19:08:18 +0000 Subject: [PATCH] media: i2c: Add reset pin toggling to ov5693 @@ -6906,7 +6906,7 @@ index 32485e4ed42b..f9ced52ad37a 100644 -- 2.31.1 -From 441d81da381cdf667359d7255a066982317db6da Mon Sep 17 00:00:00 2001 +From c5979bea3a2c94ec2c40b0c211ee969e6cd8a7a7 Mon Sep 17 00:00:00 2001 From: Daniel Scally Date: Sun, 17 Jan 2021 21:39:15 +0000 Subject: [PATCH] media: i2c: Fix misnamed variable in power_down() for ov5693 @@ -6935,7 +6935,7 @@ index f9ced52ad37a..9fd44a3d1d85 100644 -- 2.31.1 -From 951151f816432207ae5725193f2da6c895fc9fe9 Mon Sep 17 00:00:00 2001 +From 68f3ba0117a5825767534b2bb977005231e2e3c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20W=C3=BCthrich?= Date: Fri, 22 Jan 2021 20:58:13 +0100 Subject: [PATCH] cio2-bridge: Parse sensor orientation and rotation @@ -7098,7 +7098,7 @@ index dd0ffcafa489..924d99d20328 100644 -- 2.31.1 -From 91ce6fb29d6afc8b1eee3087d1e6cac73639e390 Mon Sep 17 00:00:00 2001 +From 3c8ea6db7d503e8c952ce05d47cfd96e136e2215 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20W=C3=BCthrich?= Date: Fri, 22 Jan 2021 21:23:47 +0100 Subject: [PATCH] ov5693: Add orientation and rotation controls @@ -7154,7 +7154,7 @@ index 9fd44a3d1d85..1a85800df7ed 100644 -- 2.31.1 -From e1d1a8cbc4f19d803a3c85de4192ff9902a9f401 Mon Sep 17 00:00:00 2001 +From fa3fe24fa91baa96a3a36021146fd8ebab184521 Mon Sep 17 00:00:00 2001 From: Daniel Scally Date: Sat, 23 Jan 2021 00:28:32 +0000 Subject: [PATCH] platform: x86: Stylistic updates for intel-skl-int3472 @@ -7571,7 +7571,7 @@ index 3fe27ec0caff..40629291b339 100644 -- 2.31.1 -From 8698ed26f537eb9037021b741224b9c11f5aaa99 Mon Sep 17 00:00:00 2001 +From d1f598fd13b5d055a0d5e4e9bd1f186db5fe9933 Mon Sep 17 00:00:00 2001 From: Daniel Scally Date: Sat, 23 Jan 2021 00:30:15 +0000 Subject: [PATCH] platform: x86: Add recalc_rate opp to int3472-discrete clock @@ -7698,7 +7698,7 @@ index 42ae8396eb64..98eb1ec3399e 100644 -- 2.31.1 -From 152b629de557c5b59b7d4bbd74778236406639fe Mon Sep 17 00:00:00 2001 +From eb5de8b05f3adae60d5acbfa56fc876cac06f096 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20W=C3=BCthrich?= Date: Sun, 24 Jan 2021 11:07:42 +0100 Subject: [PATCH] cio2-bridge: Use macros and add warnings @@ -7802,7 +7802,7 @@ index 924d99d20328..e1e388cc9f45 100644 -- 2.31.1 -From e565001dbc2763ebb7a528a61092e6663ae217f3 Mon Sep 17 00:00:00 2001 +From b1b4f3518c02e23d6ca23442aa6d533e43431859 Mon Sep 17 00:00:00 2001 From: Daniel Scally Date: Mon, 8 Feb 2021 21:44:38 +0000 Subject: [PATCH] media: i2c: Tidy up ov5693_init_controls() @@ -7924,7 +7924,7 @@ index 9a508e1f3624..26819cf3f4d2 100644 -- 2.31.1 -From 102871aad7dc3ca1bc18b2e13c3d6626287630a7 Mon Sep 17 00:00:00 2001 +From 3f0eefb6e6572fa459d79649e8dc73c39ac96fee Mon Sep 17 00:00:00 2001 From: Daniel Scally Date: Mon, 8 Feb 2021 21:46:49 +0000 Subject: [PATCH] media: i2c: Remove OV5693_PPL_DEFAULT @@ -7962,7 +7962,7 @@ index a9747ab783d7..7fb368eec327 100644 -- 2.31.1 -From df3a704110925696faa67e5427c7206b74d4bdd1 Mon Sep 17 00:00:00 2001 +From 7c061c6b6fa86ab40b7757a1f91703f8c81138f6 Mon Sep 17 00:00:00 2001 From: Daniel Scally Date: Mon, 8 Feb 2021 22:53:02 +0000 Subject: [PATCH] media: i2c: Add vblank control to ov5693 driver @@ -8038,7 +8038,7 @@ index 26819cf3f4d2..9d7eed97963b 100644 -- 2.31.1 -From d736f430bd8da86db3bfa8c17c361f370d9d438a Mon Sep 17 00:00:00 2001 +From 80684fc2222913b5e05c4cf1b249564ea58074a7 Mon Sep 17 00:00:00 2001 From: Daniel Scally Date: Wed, 10 Feb 2021 00:36:32 +0000 Subject: [PATCH] media: i2c: update exposure control for ov5693 @@ -8113,7 +8113,7 @@ index 1950d7ac2d54..cea767230aa9 100644 -- 2.31.1 -From 04bd5a19dc839546ebb7d9b16ee20de6ec903450 Mon Sep 17 00:00:00 2001 +From d90e17f6438e1987f70a5b3a7a44bfbd95f26847 Mon Sep 17 00:00:00 2001 From: Daniel Scally Date: Wed, 10 Feb 2021 00:39:42 +0000 Subject: [PATCH] media: i2c: Fix incorrect bit-setting @@ -8149,7 +8149,7 @@ index cea767230aa9..f681dbfcec56 100644 -- 2.31.1 -From 37b5665f3529344e6a31760fce0d45057b0a159e Mon Sep 17 00:00:00 2001 +From da39b6e34fadf45a010d52ac1c4946da6f474831 Mon Sep 17 00:00:00 2001 From: Daniel Scally Date: Wed, 10 Feb 2021 16:25:48 +0000 Subject: [PATCH] media: i2c: Don't set stream on during mode config @@ -8299,7 +8299,7 @@ index 9d7eed97963b..965208078c2b 100644 -- 2.31.1 -From c0de55830ba2c7c5dc6ce33eecc12d7bbfe450e8 Mon Sep 17 00:00:00 2001 +From 17a6811e598982b5a6a56b304ab7617a072896b7 Mon Sep 17 00:00:00 2001 From: Daniel Scally Date: Wed, 10 Feb 2021 16:35:24 +0000 Subject: [PATCH] media: i2c: Update gain control for ov5693 @@ -8371,7 +8371,7 @@ index f681dbfcec56..51eb3b05d121 100644 -- 2.31.1 -From 572195c471807f742848635ee7809940a55b2f03 Mon Sep 17 00:00:00 2001 +From a4de43acabfc0fec1a68c9ccd89222b9bd5ae90d Mon Sep 17 00:00:00 2001 From: Daniel Scally Date: Wed, 10 Feb 2021 23:44:39 +0000 Subject: [PATCH] media: i2c: Fixup gain read @@ -8434,7 +8434,7 @@ index 51eb3b05d121..952558c4f33b 100644 -- 2.31.1 -From 598246942a1fb5e6ecdd1c4dfb0200371a25691b Mon Sep 17 00:00:00 2001 +From 99adb8d913ef4cd426168cd1c23621c2dda34341 Mon Sep 17 00:00:00 2001 From: Daniel Scally Date: Thu, 11 Feb 2021 00:40:10 +0000 Subject: [PATCH] media: i2c: Update controls on stream @@ -8469,7 +8469,7 @@ index 952558c4f33b..dd31083eeb7b 100644 -- 2.31.1 -From 07a401356f216746ae9fdecc865363e03d4f95eb Mon Sep 17 00:00:00 2001 +From 0f0e77aeb3ad8464bc0a6bfa7360bc6b48156f9a Mon Sep 17 00:00:00 2001 From: Daniel Scally Date: Thu, 11 Feb 2021 23:29:15 +0000 Subject: [PATCH] media: i2c: Correct link frequency value @@ -8508,7 +8508,7 @@ index 965208078c2b..7f1d31a82d3d 100644 -- 2.31.1 -From 9bbdb6e86e6f04c7c0ef8425395aae904f458508 Mon Sep 17 00:00:00 2001 +From 62f5c0b7546fc3264b424a1a0ac41135bb8f724e Mon Sep 17 00:00:00 2001 From: Daniel Scally Date: Mon, 25 Jan 2021 23:12:09 +0000 Subject: [PATCH] media: i2c: Cleanup ov5693 driver @@ -9429,7 +9429,7 @@ index 7f1d31a82d3d..70ccb3aae4c7 100644 -- 2.31.1 -From 5825f9103e117aec32bb8741b995bcb3c1c5f2ee Mon Sep 17 00:00:00 2001 +From 9e4dc97237c70fcad5811e57d2e3457ae34e9b66 Mon Sep 17 00:00:00 2001 From: Daniel Scally Date: Thu, 28 Jan 2021 12:04:38 +0000 Subject: [PATCH] media: i2c: Add pm_runtime support to ov5693 driver @@ -9774,7 +9774,7 @@ index 70ccb3aae4c7..b78d3b474a43 100644 -- 2.31.1 -From ffd9634c8516a4d1e1e7e6e458470937cf4ec0bd Mon Sep 17 00:00:00 2001 +From 650246fc29599f6dcdda8604b4518839c0380f98 Mon Sep 17 00:00:00 2001 From: Daniel Scally Date: Thu, 28 Jan 2021 12:07:36 +0000 Subject: [PATCH] media: i2c: Remove old power methods from ov5693 @@ -9945,7 +9945,7 @@ index f2eaa5f71a31..ce26ce86fbd5 100644 -- 2.31.1 -From ff3e57214d8bcfe1024a5f92005e7ac66840c06b Mon Sep 17 00:00:00 2001 +From c6d99805976f08c88879ffa261ff46edff08ee86 Mon Sep 17 00:00:00 2001 From: Daniel Scally Date: Thu, 28 Jan 2021 12:14:00 +0000 Subject: [PATCH] media: i2c: Trim unused headers from ov5693 @@ -9986,7 +9986,7 @@ index ce26ce86fbd5..b3b391a49fdb 100644 -- 2.31.1 -From d6fa7f5aa3a596e1ca43e10a027e6c2ecec20a0f Mon Sep 17 00:00:00 2001 +From d8fc2837967eeae3acc9344986ee956f3717b3f0 Mon Sep 17 00:00:00 2001 From: Daniel Scally Date: Sat, 13 Feb 2021 21:39:35 +0000 Subject: [PATCH] media: i2c: Remove VCM stuff @@ -10405,7 +10405,7 @@ index b3b391a49fdb..2c82b6578de9 100644 -- 2.31.1 -From 73f533dd4466252176e06baeaae86388d8340243 Mon Sep 17 00:00:00 2001 +From 70be51acbf829d64c93f8f15742966a0eeb2b1aa Mon Sep 17 00:00:00 2001 From: Daniel Scally Date: Sat, 13 Feb 2021 22:16:08 +0000 Subject: [PATCH] media: i2c: Tidy up ov5693 sensor init @@ -10561,7 +10561,7 @@ index 2c82b6578de9..313bc9177328 100644 -- 2.31.1 -From 1f87f6fffb0651570fc9669b9f0eb71884cba41c Mon Sep 17 00:00:00 2001 +From 0fdc128f2dc247b70b1f6ad3e57255174845cc0d Mon Sep 17 00:00:00 2001 From: Daniel Scally Date: Fri, 12 Feb 2021 16:14:04 +0000 Subject: [PATCH] media: i2c: cleanup macros in ov5693.h @@ -10707,7 +10707,7 @@ index b78d3b474a43..6502777eb5f3 100644 -- 2.31.1 -From b4c5c717e533b5766afa6404e7f1aae0146e689e Mon Sep 17 00:00:00 2001 +From 8bca0437a19e7dd1b23e34fb15c129fb279d989e Mon Sep 17 00:00:00 2001 From: Daniel Scally Date: Fri, 12 Feb 2021 16:19:09 +0000 Subject: [PATCH] media: i2c: use devm_kzalloc() to initialise ov5693 @@ -10737,7 +10737,7 @@ index 313bc9177328..d092ed698eb3 100644 -- 2.31.1 -From 435b9b1c95e1edb6b7d1bcda70f5d5e563434aff Mon Sep 17 00:00:00 2001 +From 8d163d7f85a79da5ab4ddbd9a3f07dcb6002353f Mon Sep 17 00:00:00 2001 From: Daniel Scally Date: Fri, 12 Feb 2021 16:26:21 +0000 Subject: [PATCH] media: i2c: Check for supported clk rate in probe @@ -10794,7 +10794,7 @@ index 6502777eb5f3..0dfbbe9a0ff2 100644 -- 2.31.1 -From 61e850ea5f6a07b715ea391454be20674401d249 Mon Sep 17 00:00:00 2001 +From cdca6c76396c6d22e160aa7a3b26f7964771afeb Mon Sep 17 00:00:00 2001 From: Daniel Scally Date: Sat, 13 Feb 2021 23:17:50 +0000 Subject: [PATCH] media: i2c: Use devres to fetch gpios @@ -10868,7 +10868,7 @@ index 8082d37841da..c580159079d2 100644 -- 2.31.1 -From 162dadbc4525397f97fe1de6bc1c19e352278c15 Mon Sep 17 00:00:00 2001 +From 5cfa65204983a478ab9675f0225c339381d3838e Mon Sep 17 00:00:00 2001 From: Daniel Scally Date: Sat, 13 Feb 2021 23:20:47 +0000 Subject: [PATCH] media: i2c: Use devres to fetch regulators @@ -10911,7 +10911,7 @@ index c580159079d2..9f61b470f8ba 100644 -- 2.31.1 -From 64ec10c6086b865fb7b3ad8357d73097a1f97eba Mon Sep 17 00:00:00 2001 +From 3582f5537b59a5317173e30f36bd1e13ead5e356 Mon Sep 17 00:00:00 2001 From: Daniel Scally Date: Sun, 14 Feb 2021 12:39:14 +0000 Subject: [PATCH] media: i2c: remove debug print @@ -10990,7 +10990,7 @@ index 9f61b470f8ba..622a7ddf4063 100644 -- 2.31.1 -From 54f2f2c2efff69cf0e43d4aa7b970763ea7cf347 Mon Sep 17 00:00:00 2001 +From 81774aff20cea424f25599c8028bbd2b9f183ac1 Mon Sep 17 00:00:00 2001 From: Daniel Scally Date: Sun, 14 Feb 2021 14:32:50 +0000 Subject: [PATCH] media: i2c: Remove unused resolutions from ov5693 @@ -11419,7 +11419,7 @@ index 0dfbbe9a0ff2..29e6735112da 100644 -- 2.31.1 -From 41648d045de3fed0ba7bd74cdd7756c7f3dd2794 Mon Sep 17 00:00:00 2001 +From 500091bb0a62242df3208c0d1094ef30a222c611 Mon Sep 17 00:00:00 2001 From: Daniel Scally Date: Sun, 14 Feb 2021 14:45:58 +0000 Subject: [PATCH] media: i2c: update set_fmt() for ov5693 diff --git a/patches/5.10/0011-ath10k-firmware-override.patch b/patches/5.10/0012-ath10k-firmware-override.patch similarity index 98% rename from patches/5.10/0011-ath10k-firmware-override.patch rename to patches/5.10/0012-ath10k-firmware-override.patch index 12dfd92bc..2f526378f 100644 --- a/patches/5.10/0011-ath10k-firmware-override.patch +++ b/patches/5.10/0012-ath10k-firmware-override.patch @@ -1,4 +1,4 @@ -From bcdcab9be50c3d4ad3667c1b962e9c84c896429c Mon Sep 17 00:00:00 2001 +From 821b9324a694af4520cfb25179bcb30494c2d1b4 Mon Sep 17 00:00:00 2001 From: Maximilian Luz Date: Sat, 27 Feb 2021 00:45:52 +0100 Subject: [PATCH] ath10k: Add module parameters to override board files