Update v5.10 patches

Changes:
 - General:
   - Update patches to latest minor version, drop redundant/integrated
     patches

 - Cameras:
   - Add user controls to flip image
   - Cleanup

Links:
 - kernel: ba33f9c529
This commit is contained in:
Maximilian Luz 2021-01-08 00:15:52 +01:00
parent 386375860a
commit de9f918138
No known key found for this signature in database
GPG key ID: 70EC0937F6C26F02
9 changed files with 324 additions and 680 deletions

View file

@ -1,4 +1,4 @@
From 30db822f5c6bf7c8affc922a78c434e42f966ae7 Mon Sep 17 00:00:00 2001
From 0785a8725a66c868c5f08ce100ee08e2af26e015 Mon Sep 17 00:00:00 2001
From: Tsuchiya Yuto <kitakar@gmail.com>
Date: Sun, 18 Oct 2020 16:42:44 +0900
Subject: [PATCH] (surface3-oemb) add DMI matches for Surface 3 with broken DMI
@ -97,5 +97,5 @@ index 2752dc955733..ef36a316e2ed 100644
};
--
2.29.2
2.30.0

View file

@ -1,4 +1,4 @@
From f33474ca8096f89895a1fcef8a7699a132cd58cb Mon Sep 17 00:00:00 2001
From 3fa477daf29bddc5b4b38cca44619ae9e4b4e7f8 Mon Sep 17 00:00:00 2001
From: Tsuchiya Yuto <kitakar@gmail.com>
Date: Thu, 24 Sep 2020 18:02:06 +0900
Subject: [PATCH] mwifiex: pcie: skip cancel_work_sync() on reset failure path
@ -154,9 +154,9 @@ index 843d57eda820..5ed613d65709 100644
static inline int
--
2.29.2
2.30.0
From 6e2dd25cff000c2d9068ddaa804e23410da323a2 Mon Sep 17 00:00:00 2001
From c21eee9f32323450b793375bbc0d5454013940d2 Mon Sep 17 00:00:00 2001
From: Tsuchiya Yuto <kitakar@gmail.com>
Date: Mon, 28 Sep 2020 17:46:49 +0900
Subject: [PATCH] mwifiex: pcie: add DMI-based quirk impl for Surface devices
@ -362,9 +362,9 @@ index 000000000000..5326ae7e5671
+
+void mwifiex_initialize_quirks(struct pcie_service_card *card);
--
2.29.2
2.30.0
From 4e4837cc5265fac81384f88f2008aa9078795221 Mon Sep 17 00:00:00 2001
From e90039b0852fd01960492eed7d97cbb9f53107fe Mon Sep 17 00:00:00 2001
From: Tsuchiya Yuto <kitakar@gmail.com>
Date: Tue, 29 Sep 2020 17:25:22 +0900
Subject: [PATCH] mwifiex: pcie: add reset_d3cold quirk for Surface gen4+
@ -563,9 +563,9 @@ index 5326ae7e5671..8b9dcb5070d8 100644
void mwifiex_initialize_quirks(struct pcie_service_card *card);
+int mwifiex_pcie_reset_d3cold_quirk(struct pci_dev *pdev);
--
2.29.2
2.30.0
From 3b55ac7957893878dfa730d3e7068b15a583e69e Mon Sep 17 00:00:00 2001
From 9a6f3f243387eadbfce6945c98d3ace2b3dd23c0 Mon Sep 17 00:00:00 2001
From: Tsuchiya Yuto <kitakar@gmail.com>
Date: Tue, 29 Sep 2020 17:32:22 +0900
Subject: [PATCH] mwifiex: pcie: add reset_wsid quirk for Surface 3
@ -742,9 +742,9 @@ index 8b9dcb5070d8..3ef7440418e3 100644
int mwifiex_pcie_reset_d3cold_quirk(struct pci_dev *pdev);
+int mwifiex_pcie_reset_wsid_quirk(struct pci_dev *pdev);
--
2.29.2
2.30.0
From ac37ee44eb36b38f61ad5dbd359e5e79477bbca5 Mon Sep 17 00:00:00 2001
From 10c87526cbae4ad49f858974ff8259e4799dcceb Mon Sep 17 00:00:00 2001
From: Tsuchiya Yuto <kitakar@gmail.com>
Date: Wed, 30 Sep 2020 18:08:24 +0900
Subject: [PATCH] mwifiex: pcie: (OEMB) add quirk for Surface 3 with broken DMI
@ -804,86 +804,9 @@ index f0a6fa0a7ae5..34dcd84f02a6 100644
.ident = "Surface Pro 3",
.matches = {
--
2.29.2
2.30.0
From 5818b71cf20ec3fd1a56c1fe08596d9330f5b02f Mon Sep 17 00:00:00 2001
From: Tsuchiya Yuto <kitakar@gmail.com>
Date: Thu, 24 Sep 2020 01:56:29 +0900
Subject: [PATCH] mwifiex: fix mwifiex_shutdown_sw() causing sw reset failure
When FLR is performed but without fw reset for some reasons (e.g. on
Surface devices, fw reset requires another quirk), it fails to reset
properly. You can trigger the issue on such devices via debugfs entry
for reset:
$ echo 1 | sudo tee /sys/kernel/debug/mwifiex/mlan0/reset
and the resulting dmesg log:
mwifiex_pcie 0000:03:00.0: Resetting per request
mwifiex_pcie 0000:03:00.0: info: successfully disconnected from [BSSID]: reason code 3
mwifiex_pcie 0000:03:00.0: PREP_CMD: card is removed
mwifiex_pcie 0000:03:00.0: deleting the crypto keys
mwifiex_pcie 0000:03:00.0: PREP_CMD: card is removed
mwifiex_pcie 0000:03:00.0: deleting the crypto keys
mwifiex_pcie 0000:03:00.0: PREP_CMD: card is removed
mwifiex_pcie 0000:03:00.0: deleting the crypto keys
mwifiex_pcie 0000:03:00.0: PREP_CMD: card is removed
mwifiex_pcie 0000:03:00.0: deleting the crypto keys
mwifiex_pcie 0000:03:00.0: PREP_CMD: card is removed
mwifiex_pcie 0000:03:00.0: deleting the crypto keys
mwifiex_pcie 0000:03:00.0: PREP_CMD: card is removed
mwifiex_pcie 0000:03:00.0: deleting the crypto keys
mwifiex_pcie 0000:03:00.0: info: shutdown mwifiex...
mwifiex_pcie 0000:03:00.0: PREP_CMD: card is removed
mwifiex_pcie 0000:03:00.0: PREP_CMD: card is removed
mwifiex_pcie 0000:03:00.0: WLAN FW already running! Skip FW dnld
mwifiex_pcie 0000:03:00.0: WLAN FW is active
mwifiex_pcie 0000:03:00.0: Unknown api_id: 4
mwifiex_pcie 0000:03:00.0: info: MWIFIEX VERSION: mwifiex 1.0 (15.68.19.p21)
mwifiex_pcie 0000:03:00.0: driver_version = mwifiex 1.0 (15.68.19.p21)
mwifiex_pcie 0000:03:00.0: info: trying to associate to '[SSID]' bssid [BSSID]
mwifiex_pcie 0000:03:00.0: info: associated to bssid [BSSID] successfully
mwifiex_pcie 0000:03:00.0: cmd_wait_q terminated: -110
mwifiex_pcie 0000:03:00.0: info: successfully disconnected from [BSSID]: reason code 15
mwifiex_pcie 0000:03:00.0: cmd_wait_q terminated: -110
mwifiex_pcie 0000:03:00.0: deleting the crypto keys
mwifiex_pcie 0000:03:00.0: cmd_wait_q terminated: -110
mwifiex_pcie 0000:03:00.0: deleting the crypto keys
mwifiex_pcie 0000:03:00.0: cmd_wait_q terminated: -110
mwifiex_pcie 0000:03:00.0: deleting the crypto keys
[...]
When comparing mwifiex_shutdown_sw() with mwifiex_pcie_remove(), it
lacks mwifiex_init_shutdown_fw().
This commit fixes mwifiex_shutdown_sw() by adding the missing
mwifiex_init_shutdown_fw().
Fixes: 4c5dae59d2e9 ("mwifiex: add PCIe function level reset support")
Signed-off-by: Tsuchiya Yuto <kitakar@gmail.com>
Patchset: wifi
---
drivers/net/wireless/marvell/mwifiex/main.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/net/wireless/marvell/mwifiex/main.c b/drivers/net/wireless/marvell/mwifiex/main.c
index 9ba8a8f64976..6283df5aaaf8 100644
--- a/drivers/net/wireless/marvell/mwifiex/main.c
+++ b/drivers/net/wireless/marvell/mwifiex/main.c
@@ -1471,6 +1471,8 @@ int mwifiex_shutdown_sw(struct mwifiex_adapter *adapter)
priv = mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_ANY);
mwifiex_deauthenticate(priv, NULL);
+ mwifiex_init_shutdown_fw(priv, MWIFIEX_FUNC_SHUTDOWN);
+
mwifiex_uninit_sw(adapter);
adapter->is_up = false;
--
2.29.2
From 2ee99cf85e62bd8226e8d0b405779781cb07abd3 Mon Sep 17 00:00:00 2001
From 07cb2de05444afaa155babe3b441db3c6ad1521e Mon Sep 17 00:00:00 2001
From: Tsuchiya Yuto <kitakar@gmail.com>
Date: Thu, 24 Sep 2020 01:56:34 +0900
Subject: [PATCH] mwifiex: pcie: use shutdown_sw()/reinit_sw() on
@ -1023,9 +946,9 @@ index 94561ddaf126..7b25335f1df3 100644
return 0;
}
--
2.29.2
2.30.0
From d01e1a6c07a5c8402a2193890280e3a1c5309898 Mon Sep 17 00:00:00 2001
From 81a335766a264983d5d4952d17ee4c6874a390ab Mon Sep 17 00:00:00 2001
From: Tsuchiya Yuto <kitakar@gmail.com>
Date: Mon, 24 Aug 2020 17:11:35 +0900
Subject: [PATCH] mwifiex: pcie: add enable_device_dump module parameter
@ -1072,9 +995,9 @@ index 7b25335f1df3..f7e0b86eb553 100644
if (!adapter->devdump_data) {
mwifiex_dbg(adapter, ERROR,
--
2.29.2
2.30.0
From 552e0749f9eed307e8776d5859e5a2bd4b09976b Mon Sep 17 00:00:00 2001
From b3932f90d70e5008a0e5e8d9c46eee56dda3ea2d Mon Sep 17 00:00:00 2001
From: Tsuchiya Yuto <kitakar@gmail.com>
Date: Sun, 4 Oct 2020 00:11:49 +0900
Subject: [PATCH] mwifiex: pcie: disable bridge_d3 for Surface gen4+
@ -1227,9 +1150,9 @@ index 3ef7440418e3..a95ebac06e13 100644
void mwifiex_initialize_quirks(struct pcie_service_card *card);
int mwifiex_pcie_reset_d3cold_quirk(struct pci_dev *pdev);
--
2.29.2
2.30.0
From 47fd5e97de1b6d2e5cf5db786ac8e91a48c56925 Mon Sep 17 00:00:00 2001
From 383566809fd6ed44fb08f6a99ce4ed9da4ad1978 Mon Sep 17 00:00:00 2001
From: Tsuchiya Yuto <kitakar@gmail.com>
Date: Sun, 4 Oct 2020 00:25:48 +0900
Subject: [PATCH] mwifiex: add allow_ps_mode module parameter
@ -1289,9 +1212,9 @@ index a6b9dc6700b1..943bc1e8ceae 100644
}
--
2.29.2
2.30.0
From 5b66d3d049c4dc5a16712f409c88ba58ae59ff7e Mon Sep 17 00:00:00 2001
From 5e4d61a2f464f86943f160bf135e33cf9b579e4f Mon Sep 17 00:00:00 2001
From: Tsuchiya Yuto <kitakar@gmail.com>
Date: Sun, 4 Oct 2020 00:38:48 +0900
Subject: [PATCH] mwifiex: print message when changing ps_mode
@ -1324,9 +1247,9 @@ index 943bc1e8ceae..a2eb8df8d385 100644
}
--
2.29.2
2.30.0
From bfff63e6ae5011022893dddab976610407f23b5f Mon Sep 17 00:00:00 2001
From 65ef427dd95762e9c129fb657306df97b518e64e Mon Sep 17 00:00:00 2001
From: Tsuchiya Yuto <kitakar@gmail.com>
Date: Sun, 4 Oct 2020 00:59:37 +0900
Subject: [PATCH] mwifiex: disable ps_mode explicitly by default instead
@ -1372,5 +1295,5 @@ index d3a968ef21ef..9b7b52fbc9c4 100644
if (drcs) {
--
2.29.2
2.30.0

View file

@ -1,4 +1,4 @@
From 4e9bc5faefbcd5720184644492d2edf6a51a3173 Mon Sep 17 00:00:00 2001
From cc266a643cfcd4ba732024ddebeb5fd4d795b9f4 Mon Sep 17 00:00:00 2001
From: Dorian Stoll <dorian.stoll@tmsp.io>
Date: Fri, 25 Sep 2020 18:06:05 +0200
Subject: [PATCH] mei: Remove client devices before shutting down
@ -25,9 +25,9 @@ index bcee77768b91..21ed765003e1 100644
mei_cancel_work(dev);
--
2.29.2
2.30.0
From 27e4a2fd137f757ea71e93756832c979a51767fd Mon Sep 17 00:00:00 2001
From 4b200361320c36d70644eb7f0eef9b389159cada Mon Sep 17 00:00:00 2001
From: Dorian Stoll <dorian.stoll@tmsp.io>
Date: Thu, 30 Jul 2020 13:21:53 +0200
Subject: [PATCH] misc: mei: Add missing IPTS device IDs
@ -63,9 +63,9 @@ index 1de9ef7a272b..e12484840f88 100644
{MEI_PCI_DEVICE(MEI_DEV_ID_TGP_LP, MEI_ME_PCH15_CFG)},
{MEI_PCI_DEVICE(MEI_DEV_ID_TGP_H, MEI_ME_PCH15_SPS_CFG)},
--
2.29.2
2.30.0
From 58f18dea491b8f210c6b66621fd94d7a27270e8d Mon Sep 17 00:00:00 2001
From b96d9f6408baa9c9a0f4d3547cbe6f0e53b3b898 Mon Sep 17 00:00:00 2001
From: Dorian Stoll <dorian.stoll@tmsp.io>
Date: Thu, 6 Aug 2020 11:20:41 +0200
Subject: [PATCH] misc: Add support for Intel Precise Touch & Stylus
@ -1412,5 +1412,5 @@ index 000000000000..4c667bb6a7f2
+#endif /* _IPTS_UAPI_H_ */
+
--
2.29.2
2.30.0

View file

@ -1,4 +1,4 @@
From f85420b78206233f47b19200ec09acf06a8836bb Mon Sep 17 00:00:00 2001
From d1090d0401f8a893366ba6f98056c1ed52a64595 Mon Sep 17 00:00:00 2001
From: Maximilian Luz <luzmaximilian@gmail.com>
Date: Sun, 16 Aug 2020 23:39:56 +0200
Subject: [PATCH] platform/x86: Add Driver to set up lid GPEs on MS Surface
@ -397,5 +397,5 @@ index 000000000000..573dc52f568f
+MODULE_LICENSE("GPL");
+MODULE_ALIAS("dmi:*:svnMicrosoftCorporation:pnSurface*:*");
--
2.29.2
2.30.0

View file

@ -1,4 +1,4 @@
From 1d5b4473063525822fbbd111efcd4ea3f387058f Mon Sep 17 00:00:00 2001
From b8aed8d33836af83212c203d6dd7b88eaa8246b3 Mon Sep 17 00:00:00 2001
From: Maximilian Luz <luzmaximilian@gmail.com>
Date: Sat, 25 Jul 2020 17:19:53 +0200
Subject: [PATCH] i2c: acpi: Implement RawBytes read access
@ -108,9 +108,9 @@ index 37c510d9347a..aed579942436 100644
dev_warn(&adapter->dev, "protocol 0x%02x not supported for client 0x%02x\n",
accessor_type, client->addr);
--
2.29.2
2.30.0
From 94f72ec4114bc660578c66bf88db5a7022235015 Mon Sep 17 00:00:00 2001
From ffcb62de7f27deae5c0313c6f165c70a2e9d36e8 Mon Sep 17 00:00:00 2001
From: Maximilian Luz <luzmaximilian@gmail.com>
Date: Sun, 6 Sep 2020 04:01:19 +0200
Subject: [PATCH] platform/x86: Add driver for Surface Book 1 dGPU switch
@ -331,5 +331,5 @@ index 000000000000..8c66ed5110fd
+MODULE_DESCRIPTION("Discrete GPU Power-Switch for Surface Book 1");
+MODULE_LICENSE("GPL");
--
2.29.2
2.30.0

View file

@ -1,4 +1,4 @@
From 147884c84c057b3dd1cdb8a028919f201e6f2862 Mon Sep 17 00:00:00 2001
From 1dbfc49cd901dfa219c3e0278d515cba81d00b98 Mon Sep 17 00:00:00 2001
From: Maximilian Luz <luzmaximilian@gmail.com>
Date: Mon, 17 Aug 2020 01:23:20 +0200
Subject: [PATCH] misc: surface_sam: Add file2alias support for Surface SAM
@ -98,9 +98,9 @@ index 2417dd1dee33..a6c583362b92 100644
/* Create MODULE_ALIAS() statements.
--
2.29.2
2.30.0
From cf285846d8242d9956a7d5ca78cf58066d6d5196 Mon Sep 17 00:00:00 2001
From c272728a1daf62feceacaaa1d67eeff91e626e2a Mon Sep 17 00:00:00 2001
From: Maximilian Luz <luzmaximilian@gmail.com>
Date: Mon, 17 Aug 2020 01:44:30 +0200
Subject: [PATCH] misc: Add support for Surface System Aggregator Module
@ -19714,5 +19714,5 @@ index a6c583362b92..5b79fdc42641 100644
ADD(alias, "f", match_flags & SSAM_MATCH_FUNCTION, function);
--
2.29.2
2.30.0

View file

@ -1,89 +1,4 @@
From 7013eb7abf78f68124b4f1822610e1c8a954dc66 Mon Sep 17 00:00:00 2001
From: Maximilian Luz <luzmaximilian@gmail.com>
Date: Thu, 29 Oct 2020 22:04:38 +0100
Subject: [PATCH] PCI: Allow D3cold for hot-plug ports on Surface Books
The Microsoft Surface Book series of devices have a tablet part (so
called clipboard) that can be detached from the base of the device.
While the clipboard contains the CPU, the base can contain a discrete
GPU (dGPU). This dGPU is connected via a PCIe hot-plug port.
Currently D3cold is disallowed for all hot-plug ports. On the Surface
Book 2 and 3, this leads to increased power consumption during suspend
and when the dGPU is not used (i.e. runtime suspended). This can be
observed not only in battery drain, but also by the dGPU getting notably
warm while suspended and not in D3cold.
Testing shows that the Surface Books behave well with D3cold enabled for
hot-plug ports, alleviating the aforementioned issues. Thus white-list
D3cold for hot-plug ports on those devices.
Note: PCIe hot-plug signalling while the device is in D3cold is handled
via ACPI, out-of-band interrupts, and the surface_hotplug driver
(combined). The device will work without the surface_hotplug driver,
however, device removal/addition will only be detected on device resume.
Signed-off-by: Maximilian Luz <luzmaximilian@gmail.com>
Patchset: surface-hotplug
---
drivers/pci/pci.c | 31 +++++++++++++++++++++++++++++--
1 file changed, 29 insertions(+), 2 deletions(-)
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index e578d34095e9..01734e413102 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -2827,6 +2827,32 @@ static const struct dmi_system_id bridge_d3_blacklist[] = {
{ }
};
+static const struct dmi_system_id bridge_d3_hotplug_whitelist[] = {
+#ifdef CONFIG_X86
+ {
+ /*
+ * Microsoft Surface Books have a hot-plug root port for the
+ * discrete GPU (the device containing it can be detached form
+ * the top-part, containing the cpu).
+ *
+ * If this discrete GPU is not transitioned into D3cold for
+ * suspend, the device will become notably warm and also
+ * consume a lot more power than desirable.
+ *
+ * We assume that since those devices have been confirmed
+ * working with D3, future Surface devices will too. So let's
+ * keep this match generic.
+ */
+ .ident = "Microsoft Surface",
+ .matches = {
+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Microsoft Corporation"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "Surface"),
+ },
+ },
+#endif
+ { }
+};
+
/**
* pci_bridge_d3_possible - Is it possible to put the bridge into D3
* @bridge: Bridge to check
@@ -2867,10 +2893,11 @@ bool pci_bridge_d3_possible(struct pci_dev *bridge)
/*
* Hotplug ports handled natively by the OS were not validated
* by vendors for runtime D3 at least until 2018 because there
- * was no OS support.
+ * was no OS support. Explicitly whitelist systems that have
+ * been confirmed working.
*/
if (bridge->is_hotplug_bridge)
- return false;
+ return dmi_check_system(bridge_d3_hotplug_whitelist);
if (dmi_check_system(bridge_d3_blacklist))
return false;
--
2.29.2
From 160f2f5c028248e39fb74e76f2e37a08980fb34e Mon Sep 17 00:00:00 2001
From 3a8f566913304b60290abdcfa616f7180dbae74a Mon Sep 17 00:00:00 2001
From: Maximilian Luz <luzmaximilian@gmail.com>
Date: Mon, 9 Nov 2020 14:23:00 +0100
Subject: [PATCH] PCI: Run platform power transition on initial D0 entry
@ -128,7 +43,7 @@ Patchset: surface-hotplug
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index 01734e413102..05cb31b64c14 100644
index 6427cbd0a5be..3200afed2604 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -1804,7 +1804,7 @@ static int do_pci_enable_device(struct pci_dev *dev, int bars)
@ -141,9 +56,9 @@ index 01734e413102..05cb31b64c14 100644
return err;
--
2.29.2
2.30.0
From 61d2b10012ac5dea690affbd7d608c03e96eba38 Mon Sep 17 00:00:00 2001
From 29ec20b0936cd1fe938d4ef02c3dd779f739f2bf Mon Sep 17 00:00:00 2001
From: Maximilian Luz <luzmaximilian@gmail.com>
Date: Sat, 31 Oct 2020 20:46:33 +0100
Subject: [PATCH] PCI: Add sysfs attribute for PCI device power state
@ -214,9 +129,9 @@ index d15c881e2e7e..b15f754e6346 100644
&dev_attr_vendor.attr,
&dev_attr_device.attr,
--
2.29.2
2.30.0
From 03040ac65d5c89628338fff1a73a4c42e42e0862 Mon Sep 17 00:00:00 2001
From d47cb9b5fa8704709618b4d0a183cf5b5dbfa75a Mon Sep 17 00:00:00 2001
From: Maximilian Luz <luzmaximilian@gmail.com>
Date: Mon, 14 Dec 2020 20:50:59 +0100
Subject: [PATCH] platform/x86: Add Surface Hotplug driver
@ -544,5 +459,5 @@ index 000000000000..572fba30cd77
+MODULE_DESCRIPTION("Surface Hot-Plug Signaling Driver for Surface Book Devices");
+MODULE_LICENSE("GPL");
--
2.29.2
2.30.0

View file

@ -1,4 +1,4 @@
From 40b847e2217c860e1a33b8825bf4abf175ba6df9 Mon Sep 17 00:00:00 2001
From 8f7822534af5e10e5f7e394ee988bc90234dfb00 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= <verdre@v0yd.nl>
Date: Thu, 5 Nov 2020 13:09:45 +0100
Subject: [PATCH] hid/multitouch: Turn off Type Cover keyboard backlight when
@ -229,5 +229,5 @@ index d670bcd57bde..ca7544bf876e 100644
{ .driver_data = MT_CLS_GOOGLE,
HID_DEVICE(HID_BUS_ANY, HID_GROUP_ANY, USB_VENDOR_ID_GOOGLE,
--
2.29.2
2.30.0

File diff suppressed because it is too large Load diff