From c296141d92b12154d6798e4ae1a69bcfb5952eea Mon Sep 17 00:00:00 2001 From: Zxl hhyccc Date: Thu, 15 Aug 2024 14:00:00 +0800 Subject: [PATCH] kernel: bump 6.1 to 6.1.105 https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.1.105 Removed upstreamed: generic/backport-6.1/860-v6.6-bus-mhi-host-pci_generic-add-support-for-Telit-FE990.patch See: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/diff/drivers/bus/mhi/host/pci_generic.c?h=v6.1.105&id=da578d3b2d236b50e356b1a9d770ad19165de31c All other patches automatically rebased. Build system: bcm4908 bcm53xx Adjusted generic/config-6.1 for new ksym: ARM64_ERRATUM_3194386 and 3312417[2] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/diff/arch/arm64/Kconfig?h=linux-6.1.y&id=286c8ca924b220212fdeab81cb652fdaa77e38fe Signed-off-by: Zxl hhyccc Link: https://github.com/openwrt/openwrt/pull/16174 Signed-off-by: Hauke Mehrtens --- include/kernel-6.1 | 4 +-- ...m_sf2-enable-GPHY-for-switch-probing.patch | 2 +- ...sf2-keep-GPHY-enabled-on-the-BCM4908.patch | 2 +- ...ilicon-Labs-SI3210-device-compatible.patch | 4 +-- ...ci_generic-Add-HP-variant-of-T99W175.patch | 2 +- ..._generic-Add-definition-for-some-VID.patch | 4 +-- ..._generic-Drop-redundant-pci_enable_p.patch | 6 ++-- ...-mhi-pci_generic-Add-Foxconn-T99W510.patch | 2 +- ..._generic-Add-support-for-Quectel-EM1.patch | 2 +- ..._generic-Add-support-for-Quectel-RM5.patch | 2 +- ..._generic-Add-support-for-Dell-DW5932.patch | 2 +- ..._generic-Add-support-for-Quectel-RM5.patch | 2 +- ..._generic-add-support-for-Telit-FE990.patch | 33 ------------------- target/linux/generic/config-6.1 | 2 ++ .../780-usb-net-MeigLink_modem_support.patch | 2 +- ...vert-driver-core-Set-fw_devlink-on-b.patch | 2 +- ...les-ignore-EOPNOTSUPP-on-flowtable-d.patch | 2 +- 17 files changed, 22 insertions(+), 53 deletions(-) delete mode 100644 target/linux/generic/backport-6.1/860-v6.6-bus-mhi-host-pci_generic-add-support-for-Telit-FE990.patch diff --git a/include/kernel-6.1 b/include/kernel-6.1 index d2746a37e3..d50abf7cbb 100644 --- a/include/kernel-6.1 +++ b/include/kernel-6.1 @@ -1,2 +1,2 @@ -LINUX_VERSION-6.1 = .104 -LINUX_KERNEL_HASH-6.1.104 = 5cfa326492241397e15c3601ccd3c9dfb72436674f364b470e9d1d5642759976 +LINUX_VERSION-6.1 = .105 +LINUX_KERNEL_HASH-6.1.105 = 23bfa8f698a1f4329a62d1ea13ec87f5434fb0ac5d86a6b99e5d342cc5f85e98 diff --git a/target/linux/bcm4908/patches-6.1/700-net-dsa-bcm_sf2-enable-GPHY-for-switch-probing.patch b/target/linux/bcm4908/patches-6.1/700-net-dsa-bcm_sf2-enable-GPHY-for-switch-probing.patch index cf089fec61..8961bb298c 100644 --- a/target/linux/bcm4908/patches-6.1/700-net-dsa-bcm_sf2-enable-GPHY-for-switch-probing.patch +++ b/target/linux/bcm4908/patches-6.1/700-net-dsa-bcm_sf2-enable-GPHY-for-switch-probing.patch @@ -29,7 +29,7 @@ Signed-off-by: Rafał Miłecki --- a/drivers/net/dsa/bcm_sf2.c +++ b/drivers/net/dsa/bcm_sf2.c -@@ -1522,10 +1522,14 @@ static int bcm_sf2_sw_probe(struct platf +@@ -1524,10 +1524,14 @@ static int bcm_sf2_sw_probe(struct platf rev = reg_readl(priv, REG_PHY_REVISION); priv->hw_params.gphy_rev = rev & PHY_REVISION_MASK; diff --git a/target/linux/bcm4908/patches-6.1/701-net-dsa-bcm_sf2-keep-GPHY-enabled-on-the-BCM4908.patch b/target/linux/bcm4908/patches-6.1/701-net-dsa-bcm_sf2-keep-GPHY-enabled-on-the-BCM4908.patch index 865eac729a..ff3f44910b 100644 --- a/target/linux/bcm4908/patches-6.1/701-net-dsa-bcm_sf2-keep-GPHY-enabled-on-the-BCM4908.patch +++ b/target/linux/bcm4908/patches-6.1/701-net-dsa-bcm_sf2-keep-GPHY-enabled-on-the-BCM4908.patch @@ -15,7 +15,7 @@ Signed-off-by: Rafał Miłecki --- a/drivers/net/dsa/bcm_sf2.c +++ b/drivers/net/dsa/bcm_sf2.c -@@ -1536,6 +1536,12 @@ static int bcm_sf2_sw_probe(struct platf +@@ -1538,6 +1538,12 @@ static int bcm_sf2_sw_probe(struct platf priv->hw_params.core_rev >> 8, priv->hw_params.core_rev & 0xff, priv->irq0, priv->irq1); diff --git a/target/linux/generic/backport-6.1/412-v6.3-02-spidev-Add-Silicon-Labs-SI3210-device-compatible.patch b/target/linux/generic/backport-6.1/412-v6.3-02-spidev-Add-Silicon-Labs-SI3210-device-compatible.patch index ffd7bb120a..1f8501dc1c 100644 --- a/target/linux/generic/backport-6.1/412-v6.3-02-spidev-Add-Silicon-Labs-SI3210-device-compatible.patch +++ b/target/linux/generic/backport-6.1/412-v6.3-02-spidev-Add-Silicon-Labs-SI3210-device-compatible.patch @@ -14,7 +14,7 @@ Signed-off-by: Mark Brown --- a/drivers/spi/spidev.c +++ b/drivers/spi/spidev.c -@@ -701,6 +701,7 @@ static const struct spi_device_id spidev +@@ -702,6 +702,7 @@ static const struct spi_device_id spidev { .name = "spi-petra" }, { .name = "spi-authenta" }, { .name = "em3581" }, @@ -22,7 +22,7 @@ Signed-off-by: Mark Brown {}, }; MODULE_DEVICE_TABLE(spi, spidev_spi_ids); -@@ -729,6 +730,7 @@ static const struct of_device_id spidev_ +@@ -730,6 +731,7 @@ static const struct of_device_id spidev_ { .compatible = "rohm,dh2228fv", .data = &spidev_of_check }, { .compatible = "semtech,sx1301", .data = &spidev_of_check }, { .compatible = "silabs,em3581", .data = &spidev_of_check }, diff --git a/target/linux/generic/backport-6.1/851-v6.2-bus-mhi-host-pci_generic-Add-HP-variant-of-T99W175.patch b/target/linux/generic/backport-6.1/851-v6.2-bus-mhi-host-pci_generic-Add-HP-variant-of-T99W175.patch index 0dabc48bfa..6f9fc71a71 100644 --- a/target/linux/generic/backport-6.1/851-v6.2-bus-mhi-host-pci_generic-Add-HP-variant-of-T99W175.patch +++ b/target/linux/generic/backport-6.1/851-v6.2-bus-mhi-host-pci_generic-Add-HP-variant-of-T99W175.patch @@ -22,7 +22,7 @@ Signed-off-by: Manivannan Sadhasivam --- a/drivers/bus/mhi/host/pci_generic.c +++ b/drivers/bus/mhi/host/pci_generic.c -@@ -596,6 +596,9 @@ static const struct pci_device_id mhi_pc +@@ -599,6 +599,9 @@ static const struct pci_device_id mhi_pc /* MV32-WB (Cinterion) */ { PCI_DEVICE(0x1269, 0x00bb), .driver_data = (kernel_ulong_t) &mhi_mv32_info }, diff --git a/target/linux/generic/backport-6.1/852-v6.2-bus-mhi-host-pci_generic-Add-definition-for-some-VID.patch b/target/linux/generic/backport-6.1/852-v6.2-bus-mhi-host-pci_generic-Add-definition-for-some-VID.patch index fbf6c8a501..12419fbe39 100644 --- a/target/linux/generic/backport-6.1/852-v6.2-bus-mhi-host-pci_generic-Add-definition-for-some-VID.patch +++ b/target/linux/generic/backport-6.1/852-v6.2-bus-mhi-host-pci_generic-Add-definition-for-some-VID.patch @@ -28,7 +28,7 @@ Signed-off-by: Manivannan Sadhasivam /** * struct mhi_pci_dev_info - MHI PCI device specific information * @config: MHI controller configuration -@@ -557,11 +561,11 @@ static const struct pci_device_id mhi_pc +@@ -560,11 +564,11 @@ static const struct pci_device_id mhi_pc .driver_data = (kernel_ulong_t) &mhi_telit_fn990_info }, { PCI_DEVICE(PCI_VENDOR_ID_QCOM, 0x0308), .driver_data = (kernel_ulong_t) &mhi_qcom_sdx65_info }, @@ -43,7 +43,7 @@ Signed-off-by: Manivannan Sadhasivam .driver_data = (kernel_ulong_t) &mhi_quectel_em1xx_info }, /* T99W175 (sdx55), Both for eSIM and Non-eSIM */ { PCI_DEVICE(PCI_VENDOR_ID_FOXCONN, 0xe0ab), -@@ -585,16 +589,16 @@ static const struct pci_device_id mhi_pc +@@ -588,16 +592,16 @@ static const struct pci_device_id mhi_pc { PCI_DEVICE(PCI_VENDOR_ID_FOXCONN, 0xe0d9), .driver_data = (kernel_ulong_t) &mhi_foxconn_sdx65_info }, /* MV31-W (Cinterion) */ diff --git a/target/linux/generic/backport-6.1/853-v6.2-bus-mhi-host-pci_generic-Drop-redundant-pci_enable_p.patch b/target/linux/generic/backport-6.1/853-v6.2-bus-mhi-host-pci_generic-Drop-redundant-pci_enable_p.patch index 2f5a0ac11d..943227d2a8 100644 --- a/target/linux/generic/backport-6.1/853-v6.2-bus-mhi-host-pci_generic-Drop-redundant-pci_enable_p.patch +++ b/target/linux/generic/backport-6.1/853-v6.2-bus-mhi-host-pci_generic-Drop-redundant-pci_enable_p.patch @@ -36,7 +36,7 @@ Signed-off-by: Manivannan Sadhasivam #include #include #include -@@ -901,11 +900,9 @@ static int mhi_pci_probe(struct pci_dev +@@ -904,11 +903,9 @@ static int mhi_pci_probe(struct pci_dev mhi_pdev->pci_state = pci_store_saved_state(pdev); pci_load_saved_state(pdev, NULL); @@ -49,7 +49,7 @@ Signed-off-by: Manivannan Sadhasivam /* MHI bus does not power up the controller by default */ err = mhi_prepare_for_power_up(mhi_cntrl); -@@ -939,8 +936,6 @@ err_unprepare: +@@ -942,8 +939,6 @@ err_unprepare: mhi_unprepare_after_power_down(mhi_cntrl); err_unregister: mhi_unregister_controller(mhi_cntrl); @@ -58,7 +58,7 @@ Signed-off-by: Manivannan Sadhasivam return err; } -@@ -963,7 +958,6 @@ static void mhi_pci_remove(struct pci_de +@@ -966,7 +961,6 @@ static void mhi_pci_remove(struct pci_de pm_runtime_get_noresume(&pdev->dev); mhi_unregister_controller(mhi_cntrl); diff --git a/target/linux/generic/backport-6.1/854-v6.4-bus-mhi-pci_generic-Add-Foxconn-T99W510.patch b/target/linux/generic/backport-6.1/854-v6.4-bus-mhi-pci_generic-Add-Foxconn-T99W510.patch index f757ca28e5..8ec6f3e76f 100644 --- a/target/linux/generic/backport-6.1/854-v6.4-bus-mhi-pci_generic-Add-Foxconn-T99W510.patch +++ b/target/linux/generic/backport-6.1/854-v6.4-bus-mhi-pci_generic-Add-Foxconn-T99W510.patch @@ -31,7 +31,7 @@ Signed-off-by: Manivannan Sadhasivam static const struct mhi_pci_dev_info mhi_foxconn_sdx55_info = { .name = "foxconn-sdx55", .fw = "qcom/sdx55m/sbl1.mbn", -@@ -587,6 +596,15 @@ static const struct pci_device_id mhi_pc +@@ -590,6 +599,15 @@ static const struct pci_device_id mhi_pc /* T99W373 (sdx62) */ { PCI_DEVICE(PCI_VENDOR_ID_FOXCONN, 0xe0d9), .driver_data = (kernel_ulong_t) &mhi_foxconn_sdx65_info }, diff --git a/target/linux/generic/backport-6.1/856-v6.6-bus-mhi-host-pci_generic-Add-support-for-Quectel-EM1.patch b/target/linux/generic/backport-6.1/856-v6.6-bus-mhi-host-pci_generic-Add-support-for-Quectel-EM1.patch index 5c15eec712..2e01d4fd65 100644 --- a/target/linux/generic/backport-6.1/856-v6.6-bus-mhi-host-pci_generic-Add-support-for-Quectel-EM1.patch +++ b/target/linux/generic/backport-6.1/856-v6.6-bus-mhi-host-pci_generic-Add-support-for-Quectel-EM1.patch @@ -23,7 +23,7 @@ Signed-off-by: Manivannan Sadhasivam --- a/drivers/bus/mhi/host/pci_generic.c +++ b/drivers/bus/mhi/host/pci_generic.c -@@ -591,6 +591,8 @@ static const struct pci_device_id mhi_pc +@@ -594,6 +594,8 @@ static const struct pci_device_id mhi_pc .driver_data = (kernel_ulong_t) &mhi_quectel_em1xx_info }, { PCI_DEVICE(PCI_VENDOR_ID_QUECTEL, 0x1002), /* EM160R-GL (sdx24) */ .driver_data = (kernel_ulong_t) &mhi_quectel_em1xx_info }, diff --git a/target/linux/generic/backport-6.1/857-v6.6-bus-mhi-host-pci_generic-Add-support-for-Quectel-RM5.patch b/target/linux/generic/backport-6.1/857-v6.6-bus-mhi-host-pci_generic-Add-support-for-Quectel-RM5.patch index 5922207e29..f547eb972f 100644 --- a/target/linux/generic/backport-6.1/857-v6.6-bus-mhi-host-pci_generic-Add-support-for-Quectel-RM5.patch +++ b/target/linux/generic/backport-6.1/857-v6.6-bus-mhi-host-pci_generic-Add-support-for-Quectel-RM5.patch @@ -37,7 +37,7 @@ Signed-off-by: Manivannan Sadhasivam static const struct mhi_channel_config mhi_foxconn_sdx55_channels[] = { MHI_CHANNEL_CONFIG_UL(0, "LOOPBACK", 32, 0), MHI_CHANNEL_CONFIG_DL(1, "LOOPBACK", 32, 0), -@@ -591,6 +601,9 @@ static const struct pci_device_id mhi_pc +@@ -594,6 +604,9 @@ static const struct pci_device_id mhi_pc .driver_data = (kernel_ulong_t) &mhi_quectel_em1xx_info }, { PCI_DEVICE(PCI_VENDOR_ID_QUECTEL, 0x1002), /* EM160R-GL (sdx24) */ .driver_data = (kernel_ulong_t) &mhi_quectel_em1xx_info }, diff --git a/target/linux/generic/backport-6.1/858-v6.6-bus-mhi-host-pci_generic-Add-support-for-Dell-DW5932.patch b/target/linux/generic/backport-6.1/858-v6.6-bus-mhi-host-pci_generic-Add-support-for-Dell-DW5932.patch index bb7b3c3ffc..ba0e156a8c 100644 --- a/target/linux/generic/backport-6.1/858-v6.6-bus-mhi-host-pci_generic-Add-support-for-Dell-DW5932.patch +++ b/target/linux/generic/backport-6.1/858-v6.6-bus-mhi-host-pci_generic-Add-support-for-Dell-DW5932.patch @@ -19,7 +19,7 @@ Signed-off-by: Manivannan Sadhasivam --- a/drivers/bus/mhi/host/pci_generic.c +++ b/drivers/bus/mhi/host/pci_generic.c -@@ -638,6 +638,12 @@ static const struct pci_device_id mhi_pc +@@ -641,6 +641,12 @@ static const struct pci_device_id mhi_pc /* T99W510 (sdx24), variant 3 */ { PCI_DEVICE(PCI_VENDOR_ID_FOXCONN, 0xe0f2), .driver_data = (kernel_ulong_t) &mhi_foxconn_sdx24_info }, diff --git a/target/linux/generic/backport-6.1/859-v6.6-bus-mhi-host-pci_generic-Add-support-for-Quectel-RM5.patch b/target/linux/generic/backport-6.1/859-v6.6-bus-mhi-host-pci_generic-Add-support-for-Quectel-RM5.patch index c0dfe01e32..a09ae6fa47 100644 --- a/target/linux/generic/backport-6.1/859-v6.6-bus-mhi-host-pci_generic-Add-support-for-Quectel-RM5.patch +++ b/target/linux/generic/backport-6.1/859-v6.6-bus-mhi-host-pci_generic-Add-support-for-Quectel-RM5.patch @@ -24,7 +24,7 @@ Signed-off-by: Manivannan Sadhasivam --- a/drivers/bus/mhi/host/pci_generic.c +++ b/drivers/bus/mhi/host/pci_generic.c -@@ -604,6 +604,9 @@ static const struct pci_device_id mhi_pc +@@ -607,6 +607,9 @@ static const struct pci_device_id mhi_pc /* RM520N-GL (sdx6x), eSIM */ { PCI_DEVICE(PCI_VENDOR_ID_QUECTEL, 0x1004), .driver_data = (kernel_ulong_t) &mhi_quectel_rm5xx_info }, diff --git a/target/linux/generic/backport-6.1/860-v6.6-bus-mhi-host-pci_generic-add-support-for-Telit-FE990.patch b/target/linux/generic/backport-6.1/860-v6.6-bus-mhi-host-pci_generic-add-support-for-Telit-FE990.patch deleted file mode 100644 index 40fdfc613b..0000000000 --- a/target/linux/generic/backport-6.1/860-v6.6-bus-mhi-host-pci_generic-add-support-for-Telit-FE990.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 30001cf3a19a2f676a0e23c2c3a511c4a8903284 Mon Sep 17 00:00:00 2001 -From: Daniele Palmas -Date: Fri, 4 Aug 2023 11:40:39 +0200 -Subject: [PATCH 11/13] bus: mhi: host: pci_generic: add support for Telit - FE990 modem - -Add support for Telit FE990 that has the same configuration as FN990: - -$ lspci -vv -04:00.0 Unassigned class [ff00]: Qualcomm Device 0308 - Subsystem: Device 1c5d:2015 - -Signed-off-by: Daniele Palmas -Reviewed-by: Manivannan Sadhasivam -Link: https://lore.kernel.org/r/20230804094039.365102-1-dnlplm@gmail.com -[mani: minor update to commit subject and adjusted comment] -Signed-off-by: Manivannan Sadhasivam ---- - drivers/bus/mhi/host/pci_generic.c | 3 +++ - 1 file changed, 3 insertions(+) - ---- a/drivers/bus/mhi/host/pci_generic.c -+++ b/drivers/bus/mhi/host/pci_generic.c -@@ -595,6 +595,9 @@ static const struct pci_device_id mhi_pc - /* Telit FN990 */ - { PCI_DEVICE_SUB(PCI_VENDOR_ID_QCOM, 0x0308, 0x1c5d, 0x2010), - .driver_data = (kernel_ulong_t) &mhi_telit_fn990_info }, -+ /* Telit FE990 */ -+ { PCI_DEVICE_SUB(PCI_VENDOR_ID_QCOM, 0x0308, 0x1c5d, 0x2015), -+ .driver_data = (kernel_ulong_t) &mhi_telit_fn990_info }, - { PCI_DEVICE(PCI_VENDOR_ID_QCOM, 0x0308), - .driver_data = (kernel_ulong_t) &mhi_qcom_sdx65_info }, - { PCI_DEVICE(PCI_VENDOR_ID_QUECTEL, 0x1001), /* EM120R-GL (sdx24) */ diff --git a/target/linux/generic/config-6.1 b/target/linux/generic/config-6.1 index 80dcb54683..3460be73b1 100644 --- a/target/linux/generic/config-6.1 +++ b/target/linux/generic/config-6.1 @@ -368,6 +368,8 @@ CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=8 # CONFIG_ARM64_ERRATUM_2441009 is not set # CONFIG_ARM64_ERRATUM_2658417 is not set # CONFIG_ARM64_ERRATUM_2966298 is not set +# CONFIG_ARM64_ERRATUM_3194386 is not set +# CONFIG_ARM64_ERRATUM_3312417 is not set # CONFIG_ARM64_ERRATUM_819472 is not set # CONFIG_ARM64_ERRATUM_824069 is not set # CONFIG_ARM64_ERRATUM_826319 is not set diff --git a/target/linux/generic/hack-6.1/780-usb-net-MeigLink_modem_support.patch b/target/linux/generic/hack-6.1/780-usb-net-MeigLink_modem_support.patch index 2729a0ec38..d010231e49 100644 --- a/target/linux/generic/hack-6.1/780-usb-net-MeigLink_modem_support.patch +++ b/target/linux/generic/hack-6.1/780-usb-net-MeigLink_modem_support.patch @@ -10,7 +10,7 @@ Subject: [PATCH] net/usb/qmi_wwan: add MeigLink modem support --- a/drivers/net/usb/qmi_wwan.c +++ b/drivers/net/usb/qmi_wwan.c -@@ -1082,12 +1082,18 @@ static const struct usb_device_id produc +@@ -1083,12 +1083,18 @@ static const struct usb_device_id produc USB_DEVICE_AND_INTERFACE_INFO(0x03f0, 0x581d, USB_CLASS_VENDOR_SPEC, 1, 7), .driver_info = (unsigned long)&qmi_wwan_info, }, diff --git a/target/linux/generic/hack-6.1/930-Revert-Revert-Revert-driver-core-Set-fw_devlink-on-b.patch b/target/linux/generic/hack-6.1/930-Revert-Revert-Revert-driver-core-Set-fw_devlink-on-b.patch index f2ae028aa1..3476aa6edb 100644 --- a/target/linux/generic/hack-6.1/930-Revert-Revert-Revert-driver-core-Set-fw_devlink-on-b.patch +++ b/target/linux/generic/hack-6.1/930-Revert-Revert-Revert-driver-core-Set-fw_devlink-on-b.patch @@ -19,7 +19,7 @@ Signed-off-by: Rafał Miłecki --- a/drivers/base/core.c +++ b/drivers/base/core.c -@@ -1717,7 +1717,7 @@ static void device_links_purge(struct de +@@ -1718,7 +1718,7 @@ static void device_links_purge(struct de #define FW_DEVLINK_FLAGS_RPM (FW_DEVLINK_FLAGS_ON | \ DL_FLAG_PM_RUNTIME) diff --git a/target/linux/generic/pending-6.1/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch b/target/linux/generic/pending-6.1/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch index 916b6bc6a0..b3503993f6 100644 --- a/target/linux/generic/pending-6.1/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch +++ b/target/linux/generic/pending-6.1/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch @@ -18,7 +18,7 @@ Signed-off-by: Felix Fietkau --- a/net/netfilter/nf_tables_api.c +++ b/net/netfilter/nf_tables_api.c -@@ -7958,7 +7958,7 @@ static int nft_register_flowtable_net_ho +@@ -7969,7 +7969,7 @@ static int nft_register_flowtable_net_ho err = flowtable->data.type->setup(&flowtable->data, hook->ops.dev, FLOW_BLOCK_BIND); -- 2.30.2