kernel: bump 5.15 to 5.15.140
authorJohn Audia <therealgraysky@proton.me>
Tue, 28 Nov 2023 22:08:16 +0000 (17:08 -0500)
committerHauke Mehrtens <hauke@hauke-m.de>
Wed, 29 Nov 2023 22:41:33 +0000 (23:41 +0100)
Changelog: https://cdn.kernel.org/pub/linux/kernel/v5.x/ChangeLog-5.15.140

Removed upstreamed:
mvebu/patches-5.15/106-Revert-i2c-pxa-move-to-generic-GPIO-recovery.patch[1]

All other patches automatically rebased.

1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v5.15.140&id=06d320ca170b4e59bb261e2ce3ffe84e9154d42b

Build system: x86_64
Build-tested: ramips/tplink_archer-a6-v3
Run-tested: ramips/tplink_archer-a6-v3

Signed-off-by: John Audia <therealgraysky@proton.me>
21 files changed:
include/kernel-5.15
target/linux/generic/backport-5.15/020-v6.1-05-mm-multi-gen-LRU-groundwork.patch
target/linux/generic/backport-5.15/020-v6.1-08-mm-multi-gen-LRU-support-page-table-walks.patch
target/linux/generic/backport-5.15/020-v6.3-26-mm-multi-gen-LRU-per-node-lru_gen_page-lists.patch
target/linux/generic/backport-5.15/703-08-v5.17-net-phylink-add-mac_select_pcs-method-to-phylink_mac.patch
target/linux/generic/backport-5.15/703-15-v5.18-net-phy-phylink-fix-DSA-mac_select_pcs-introduction.patch
target/linux/generic/backport-5.15/792-03-v6.6-net-phylink-add-pcs_enable-pcs_disable-methods.patch
target/linux/generic/backport-5.15/821-v5.16-Bluetooth-btusb-Support-public-address-configuration.patch
target/linux/generic/backport-5.15/822-v5.17-Bluetooth-btusb-Fix-application-of-sizeof-to-pointer.patch
target/linux/generic/backport-5.15/823-v5.18-Bluetooth-btusb-Add-a-new-PID-VID-13d3-3567-for-MT79.patch
target/linux/generic/backport-5.15/824-v5.19-Bluetooth-btusb-Add-a-new-PID-VID-0489-e0c8-for-MT79.patch
target/linux/generic/backport-5.15/825-v6.1-Bluetooth-btusb-Add-a-new-VID-PID-0e8d-0608-for-MT79.patch
target/linux/generic/hack-5.15/795-backport-phylink_pcs-helpers.patch
target/linux/generic/pending-5.15/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch
target/linux/lantiq/patches-5.15/0302-mtd-cfi_cmdset_0001-Disable-write-buffer-functions-i.patch
target/linux/mediatek/patches-5.15/850-v6.0-i2c-move-drivers-from-strlcpy-to-strscpy.patch
target/linux/mediatek/patches-5.15/901-arm-add-cmdline-override.patch
target/linux/mvebu/patches-5.15/106-Revert-i2c-pxa-move-to-generic-GPIO-recovery.patch [deleted file]
target/linux/octeontx/patches-5.15/0004-PCI-add-quirk-for-Gateworks-PLX-PEX860x-switch-with-.patch
target/linux/ramips/patches-5.15/720-Revert-net-phy-simplify-phy_link_change-arguments.patch
target/linux/realtek/patches-5.15/704-drivers-net-phy-eee-support-for-rtl838x.patch

index 30ee7cd866aac5ccfc8cef596d54992cdab700b9..8672e20f3eed3e7b574acb9c3bc2655163394d57 100644 (file)
@@ -1,2 +1,2 @@
-LINUX_VERSION-5.15 = .139
-LINUX_KERNEL_HASH-5.15.139 = 9c68c10dfe18e59b892e940436dea6a18d167160d55e62563cf7282244d8044e
+LINUX_VERSION-5.15 = .140
+LINUX_KERNEL_HASH-5.15.140 = be2bee8b346f3ccb35879f16c80a323edda571e36190403805c14a9ea24e4a47
index 25457926a489730051f06cc3a48eaef7f16e8915..769384f500f301a1eda295b721c6144199bac189 100644 (file)
@@ -594,7 +594,7 @@ Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
        VM_BUG_ON_PAGE(tail > 2 && page_tail->mapping != TAIL_MAPPING,
 --- a/mm/memcontrol.c
 +++ b/mm/memcontrol.c
-@@ -5178,6 +5178,7 @@ static void __mem_cgroup_free(struct mem
+@@ -5179,6 +5179,7 @@ static void __mem_cgroup_free(struct mem
  
  static void mem_cgroup_free(struct mem_cgroup *memcg)
  {
@@ -602,7 +602,7 @@ Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
        memcg_wb_domain_exit(memcg);
        __mem_cgroup_free(memcg);
  }
-@@ -5241,6 +5242,7 @@ static struct mem_cgroup *mem_cgroup_all
+@@ -5242,6 +5243,7 @@ static struct mem_cgroup *mem_cgroup_all
        memcg->deferred_split_queue.split_queue_len = 0;
  #endif
        idr_replace(&mem_cgroup_idr, memcg, memcg->id.id);
index 43fd69ae7944e5b486fc31423827e443a89c94bd..234dfd916f08871578172b452c49001e73e7c6a6 100644 (file)
@@ -424,7 +424,7 @@ Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
                        /* will mmdrop() in finish_task_switch(). */
 --- a/mm/memcontrol.c
 +++ b/mm/memcontrol.c
-@@ -6212,6 +6212,30 @@ static void mem_cgroup_move_task(void)
+@@ -6213,6 +6213,30 @@ static void mem_cgroup_move_task(void)
  }
  #endif
  
@@ -455,7 +455,7 @@ Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
  static int seq_puts_memcg_tunable(struct seq_file *m, unsigned long value)
  {
        if (value == PAGE_COUNTER_MAX)
-@@ -6555,6 +6579,7 @@ struct cgroup_subsys memory_cgrp_subsys
+@@ -6556,6 +6580,7 @@ struct cgroup_subsys memory_cgrp_subsys
        .css_reset = mem_cgroup_css_reset,
        .css_rstat_flush = mem_cgroup_css_rstat_flush,
        .can_attach = mem_cgroup_can_attach,
index 6010e617b863e40cd525f4f658549827ec502f31..8cc9abd84f09e2ab83160c3bbd4fec6efa777601 100644 (file)
@@ -318,7 +318,7 @@ Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
        mctz = soft_limit_tree_from_page(page);
        if (!mctz)
                return;
-@@ -3433,6 +3443,9 @@ unsigned long mem_cgroup_soft_limit_recl
+@@ -3434,6 +3444,9 @@ unsigned long mem_cgroup_soft_limit_recl
        unsigned long excess;
        unsigned long nr_scanned;
  
@@ -328,7 +328,7 @@ Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
        if (order > 0)
                return 0;
  
-@@ -5321,6 +5334,7 @@ static int mem_cgroup_css_online(struct
+@@ -5322,6 +5335,7 @@ static int mem_cgroup_css_online(struct
        if (unlikely(mem_cgroup_is_root(memcg)))
                queue_delayed_work(system_unbound_wq, &stats_flush_dwork,
                                   2UL*HZ);
@@ -336,7 +336,7 @@ Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
        return 0;
  }
  
-@@ -5347,6 +5361,7 @@ static void mem_cgroup_css_offline(struc
+@@ -5348,6 +5362,7 @@ static void mem_cgroup_css_offline(struc
        memcg_offline_kmem(memcg);
        reparent_shrinker_deferred(memcg);
        wb_memcg_offline(memcg);
@@ -344,7 +344,7 @@ Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
  
        drain_all_stock(memcg);
  
-@@ -5358,6 +5373,7 @@ static void mem_cgroup_css_released(stru
+@@ -5359,6 +5374,7 @@ static void mem_cgroup_css_released(stru
        struct mem_cgroup *memcg = mem_cgroup_from_css(css);
  
        invalidate_reclaim_iterators(memcg);
index d826877e7dc69315fc69af97642438f2f76e38a8..5d5ac4b009488777bb54569af40096dab332b099 100644 (file)
@@ -125,7 +125,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
        pl = kzalloc(sizeof(*pl), GFP_KERNEL);
        if (!pl)
                return ERR_PTR(-ENOMEM);
-@@ -946,9 +987,10 @@ EXPORT_SYMBOL_GPL(phylink_create);
+@@ -947,9 +988,10 @@ EXPORT_SYMBOL_GPL(phylink_create);
   * @pl: a pointer to a &struct phylink returned from phylink_create()
   * @pcs: a pointer to the &struct phylink_pcs
   *
@@ -139,7 +139,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
   *
   * Please note that there are behavioural changes with the mac_config()
   * callback if a PCS is present (denoting a newer setup) so removing a PCS
-@@ -959,6 +1001,14 @@ void phylink_set_pcs(struct phylink *pl,
+@@ -960,6 +1002,14 @@ void phylink_set_pcs(struct phylink *pl,
  {
        pl->pcs = pcs;
        pl->pcs_ops = pcs->ops;
index 9e5061aaed832b3f552c152701b27c6cf1746014..924d0e954a9079657119ebc67df7c780f42ed8d2 100644 (file)
@@ -66,7 +66,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
            phy_interface_empty(config->supported_interfaces)) {
                dev_err(config->dev,
                        "phylink: error: empty supported_interfaces but mac_select_pcs() method present\n");
-@@ -1220,6 +1227,7 @@ struct phylink *phylink_create(struct ph
+@@ -1221,6 +1228,7 @@ struct phylink *phylink_create(struct ph
                return ERR_PTR(-EINVAL);
        }
  
index ceec58466e19bfb5b3f139b3fad7d63e0707d3ba..c8176c90f526c15363d4155fe4c9ec75338dd820 100644 (file)
@@ -75,7 +75,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
        if (pl->pcs_ops) {
                err = pl->pcs_ops->pcs_config(pl->pcs, pl->cur_link_an_mode,
                                              state->interface,
-@@ -1260,6 +1285,7 @@ struct phylink *phylink_create(struct ph
+@@ -1261,6 +1286,7 @@ struct phylink *phylink_create(struct ph
        pl->link_config.speed = SPEED_UNKNOWN;
        pl->link_config.duplex = DUPLEX_UNKNOWN;
        pl->link_config.an_enabled = true;
@@ -83,7 +83,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
        pl->mac_ops = mac_ops;
        __set_bit(PHYLINK_DISABLE_STOPPED, &pl->phylink_disable_state);
        timer_setup(&pl->link_poll, phylink_fixed_poll, 0);
-@@ -1651,6 +1677,8 @@ void phylink_start(struct phylink *pl)
+@@ -1652,6 +1678,8 @@ void phylink_start(struct phylink *pl)
        if (pl->netdev)
                netif_carrier_off(pl->netdev);
  
@@ -92,7 +92,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
        /* Apply the link configuration to the MAC when starting. This allows
         * a fixed-link to start with the correct parameters, and also
         * ensures that we set the appropriate advertisement for Serdes links.
-@@ -1661,6 +1689,8 @@ void phylink_start(struct phylink *pl)
+@@ -1662,6 +1690,8 @@ void phylink_start(struct phylink *pl)
         */
        phylink_mac_initial_config(pl, true);
  
@@ -101,7 +101,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
        clear_bit(PHYLINK_DISABLE_STOPPED, &pl->phylink_disable_state);
        phylink_run_resolve(pl);
  
-@@ -1680,16 +1710,9 @@ void phylink_start(struct phylink *pl)
+@@ -1681,16 +1711,9 @@ void phylink_start(struct phylink *pl)
                        poll = true;
        }
  
@@ -120,7 +120,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
        if (poll)
                mod_timer(&pl->link_poll, jiffies + HZ);
        if (pl->phydev)
-@@ -1726,6 +1749,10 @@ void phylink_stop(struct phylink *pl)
+@@ -1727,6 +1750,10 @@ void phylink_stop(struct phylink *pl)
        }
  
        phylink_run_resolve_and_disable(pl, PHYLINK_DISABLE_STOPPED);
index b23f9a4b9e220599cb0c6c6b70f4a0296e83b1ba..725af4b52cf17993beb0a6e68f3478333f56f942 100644 (file)
@@ -17,7 +17,7 @@ Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
 
 --- a/drivers/bluetooth/btusb.c
 +++ b/drivers/bluetooth/btusb.c
-@@ -2275,6 +2275,23 @@ struct btmtk_section_map {
+@@ -2287,6 +2287,23 @@ struct btmtk_section_map {
        };
  } __packed;
  
@@ -41,7 +41,7 @@ Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
  static void btusb_mtk_wmt_recv(struct urb *urb)
  {
        struct hci_dev *hdev = urb->context;
-@@ -3926,6 +3943,7 @@ static int btusb_probe(struct usb_interf
+@@ -3941,6 +3958,7 @@ static int btusb_probe(struct usb_interf
                hdev->shutdown = btusb_mtk_shutdown;
                hdev->manufacturer = 70;
                hdev->cmd_timeout = btusb_mtk_cmd_timeout;
index 6fe61a9defecd67d90c71d58d7a861c19e679da8..d72866eabf14908215b23a96c80b986eae42713e 100644 (file)
@@ -18,7 +18,7 @@ Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
 
 --- a/drivers/bluetooth/btusb.c
 +++ b/drivers/bluetooth/btusb.c
-@@ -2280,7 +2280,7 @@ static int btusb_set_bdaddr_mtk(struct h
+@@ -2292,7 +2292,7 @@ static int btusb_set_bdaddr_mtk(struct h
        struct sk_buff *skb;
        long ret;
  
index d670195da1f2fa68f016d1ee41f0418a23493583..ebb6cc471768e50955c3e15a8eab82e190ce7b4b 100644 (file)
@@ -58,7 +58,7 @@ Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
 
 --- a/drivers/bluetooth/btusb.c
 +++ b/drivers/bluetooth/btusb.c
-@@ -464,6 +464,9 @@ static const struct usb_device_id blackl
+@@ -476,6 +476,9 @@ static const struct usb_device_id blackl
        { USB_DEVICE(0x13d3, 0x3564), .driver_info = BTUSB_MEDIATEK |
                                                     BTUSB_WIDEBAND_SPEECH |
                                                     BTUSB_VALID_LE_STATES },
index be9dc73421519452d51e9e7078e48d2857d97e5f..a8c7ca003a9cd8b62345859c3c0d365eaf359dec 100644 (file)
@@ -56,7 +56,7 @@ Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
 
 --- a/drivers/bluetooth/btusb.c
 +++ b/drivers/bluetooth/btusb.c
-@@ -455,6 +455,9 @@ static const struct usb_device_id blackl
+@@ -467,6 +467,9 @@ static const struct usb_device_id blackl
                                                     BTUSB_VALID_LE_STATES },
  
        /* Additional MediaTek MT7921 Bluetooth devices */
index 24ec68a2ca50b8d4e85cf54ac3f822a4e0841efb..b46e6926d1452e0627950175025a758a5e6be77b 100644 (file)
@@ -54,7 +54,7 @@ Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
 
 --- a/drivers/bluetooth/btusb.c
 +++ b/drivers/bluetooth/btusb.c
-@@ -473,6 +473,9 @@ static const struct usb_device_id blackl
+@@ -485,6 +485,9 @@ static const struct usb_device_id blackl
        { USB_DEVICE(0x0489, 0xe0cd), .driver_info = BTUSB_MEDIATEK |
                                                     BTUSB_WIDEBAND_SPEECH |
                                                     BTUSB_VALID_LE_STATES },
index 33c5c271212a3dc20aa60f22ef1a56e382f7e75e..a463bf7c4eb4d5545d14d959ad43daaef04bd3cf 100644 (file)
@@ -65,7 +65,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
  static void phylink_mac_pcs_get_state(struct phylink *pl,
                                      struct phylink_link_state *state)
  {
-@@ -3014,6 +3013,52 @@ void phylink_mii_c22_pcs_get_state(struc
+@@ -3015,6 +3014,52 @@ void phylink_mii_c22_pcs_get_state(struc
  EXPORT_SYMBOL_GPL(phylink_mii_c22_pcs_get_state);
  
  /**
@@ -118,7 +118,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
   * phylink_mii_c22_pcs_set_advertisement() - configure the clause 37 PCS
   *    advertisement
   * @pcs: a pointer to a &struct mdio_device.
-@@ -3085,6 +3130,46 @@ int phylink_mii_c22_pcs_set_advertisemen
+@@ -3086,6 +3131,46 @@ int phylink_mii_c22_pcs_set_advertisemen
  EXPORT_SYMBOL_GPL(phylink_mii_c22_pcs_set_advertisement);
  
  /**
index a15fc786a0ef880c47d751fa76e01866fd303d80..8743d7f3671bb6eee99eaad35a1fff7f6ec8a47b 100644 (file)
@@ -18,7 +18,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/net/netfilter/nf_tables_api.c
 +++ b/net/netfilter/nf_tables_api.c
-@@ -7703,7 +7703,7 @@ static int nft_register_flowtable_net_ho
+@@ -7708,7 +7708,7 @@ static int nft_register_flowtable_net_ho
                err = flowtable->data.type->setup(&flowtable->data,
                                                  hook->ops.dev,
                                                  FLOW_BLOCK_BIND);
index 741011039eeb21fe56d7af7d3463e7dc3c24da4d..c43d9d4b3550967c6cc94ffe5c3ce943e59112bc 100644 (file)
@@ -44,7 +44,7 @@ Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
  
  /*
   * Some chips power-up with all sectors locked by default.
-@@ -1703,6 +1707,7 @@ static int cfi_intelext_write_words (str
+@@ -1719,6 +1723,7 @@ static int cfi_intelext_write_words (str
  }
  
  
@@ -52,7 +52,7 @@ Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
  static int __xipram do_write_buffer(struct map_info *map, struct flchip *chip,
                                    unsigned long adr, const struct kvec **pvec,
                                    unsigned long *pvec_seek, int len)
-@@ -1931,6 +1936,7 @@ static int cfi_intelext_write_buffers (s
+@@ -1947,6 +1952,7 @@ static int cfi_intelext_write_buffers (s
  
        return cfi_intelext_writev(mtd, &vec, 1, to, retlen);
  }
index 0d9fa0550b23d18ee9fb9a6550aa80fdf9eab7c8..69f2d2a545dcf470c10766dda0906ed4173be3a6 100644 (file)
@@ -237,7 +237,7 @@ Signed-off-by: Wolfram Sang <wsa@kernel.org>
        priv->adap.algo = &hix5hd2_i2c_algorithm;
 --- a/drivers/i2c/busses/i2c-i801.c
 +++ b/drivers/i2c/busses/i2c-i801.c
-@@ -1111,7 +1111,7 @@ static void dmi_check_onboard_device(u8
+@@ -1110,7 +1110,7 @@ static void dmi_check_onboard_device(u8
  
                memset(&info, 0, sizeof(struct i2c_board_info));
                info.addr = dmi_devices[i].i2c_addr;
@@ -246,7 +246,7 @@ Signed-off-by: Wolfram Sang <wsa@kernel.org>
                i2c_new_client_device(adap, &info);
                break;
        }
-@@ -1267,7 +1267,7 @@ static void register_dell_lis3lv02d_i2c_
+@@ -1266,7 +1266,7 @@ static void register_dell_lis3lv02d_i2c_
  
        memset(&info, 0, sizeof(struct i2c_board_info));
        info.addr = dell_lis3lv02d_devices[i].i2c_addr;
@@ -403,7 +403,7 @@ Signed-off-by: Wolfram Sang <wsa@kernel.org>
        /* Slow down if we can't sense SCL */
 --- a/drivers/i2c/busses/i2c-pxa.c
 +++ b/drivers/i2c/busses/i2c-pxa.c
-@@ -1403,7 +1403,7 @@ static int i2c_pxa_probe(struct platform
+@@ -1463,7 +1463,7 @@ static int i2c_pxa_probe(struct platform
        spin_lock_init(&i2c->lock);
        init_waitqueue_head(&i2c->wait);
  
index 5ded06ff63f6178b64967246880259dc2562a0e9..54901f5549ef464bf68ac7b75fe6ef1e73dac70b 100644 (file)
@@ -37,7 +37,7 @@
         * managed to set the command line, unless CONFIG_CMDLINE_FORCE
 --- a/arch/arm64/Kconfig
 +++ b/arch/arm64/Kconfig
-@@ -2057,6 +2057,14 @@ config CMDLINE_FORCE
+@@ -2059,6 +2059,14 @@ config CMDLINE_FORCE
  
  endchoice
  
diff --git a/target/linux/mvebu/patches-5.15/106-Revert-i2c-pxa-move-to-generic-GPIO-recovery.patch b/target/linux/mvebu/patches-5.15/106-Revert-i2c-pxa-move-to-generic-GPIO-recovery.patch
deleted file mode 100644 (file)
index 7a0dc15..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-From ea8444b6fa5955c16b713dc83310882b93b44e62 Mon Sep 17 00:00:00 2001
-From: Robert Marko <robert.marko@sartura.hr>
-Date: Fri, 10 Nov 2023 10:10:29 +0100
-Subject: [PATCH] Revert "i2c: pxa: move to generic GPIO recovery"
-
-This reverts commit 0b01392c18b9993a584f36ace1d61118772ad0ca.
-
-Conversion of PXA to generic I2C recovery, makes the I2C bus completely
-lock up if recovery pinctrl is present in the DT and I2C recovery is
-enabled.
-
-So, until the generic I2C recovery can also work with PXA lets revert
-to have working I2C and I2C recovery again.
-
-Signed-off-by: Robert Marko <robert.marko@sartura.hr>
-Cc: stable@vger.kernel.org # 5.11+
----
- drivers/i2c/busses/i2c-pxa.c | 76 ++++++++++++++++++++++++++++++++----
- 1 file changed, 68 insertions(+), 8 deletions(-)
-
---- a/drivers/i2c/busses/i2c-pxa.c
-+++ b/drivers/i2c/busses/i2c-pxa.c
-@@ -264,6 +264,9 @@ struct pxa_i2c {
-       u32                     hs_mask;
-       struct i2c_bus_recovery_info recovery;
-+      struct pinctrl          *pinctrl;
-+      struct pinctrl_state    *pinctrl_default;
-+      struct pinctrl_state    *pinctrl_recovery;
- };
- #define _IBMR(i2c)    ((i2c)->reg_ibmr)
-@@ -1302,12 +1305,13 @@ static void i2c_pxa_prepare_recovery(str
-        */
-       gpiod_set_value(i2c->recovery.scl_gpiod, ibmr & IBMR_SCLS);
-       gpiod_set_value(i2c->recovery.sda_gpiod, ibmr & IBMR_SDAS);
-+
-+      WARN_ON(pinctrl_select_state(i2c->pinctrl, i2c->pinctrl_recovery));
- }
- static void i2c_pxa_unprepare_recovery(struct i2c_adapter *adap)
- {
-       struct pxa_i2c *i2c = adap->algo_data;
--      struct i2c_bus_recovery_info *bri = adap->bus_recovery_info;
-       u32 isr;
-       /*
-@@ -1321,7 +1325,7 @@ static void i2c_pxa_unprepare_recovery(s
-               i2c_pxa_do_reset(i2c);
-       }
--      WARN_ON(pinctrl_select_state(bri->pinctrl, bri->pins_default));
-+      WARN_ON(pinctrl_select_state(i2c->pinctrl, i2c->pinctrl_default));
-       dev_dbg(&i2c->adap.dev, "recovery: IBMR 0x%08x ISR 0x%08x\n",
-               readl(_IBMR(i2c)), readl(_ISR(i2c)));
-@@ -1343,20 +1347,76 @@ static int i2c_pxa_init_recovery(struct
-       if (IS_ENABLED(CONFIG_I2C_PXA_SLAVE))
-               return 0;
--      bri->pinctrl = devm_pinctrl_get(dev);
--      if (PTR_ERR(bri->pinctrl) == -ENODEV) {
--              bri->pinctrl = NULL;
-+      i2c->pinctrl = devm_pinctrl_get(dev);
-+      if (PTR_ERR(i2c->pinctrl) == -ENODEV)
-+              i2c->pinctrl = NULL;
-+      if (IS_ERR(i2c->pinctrl))
-+              return PTR_ERR(i2c->pinctrl);
-+
-+      if (!i2c->pinctrl)
-+              return 0;
-+
-+      i2c->pinctrl_default = pinctrl_lookup_state(i2c->pinctrl,
-+                                                  PINCTRL_STATE_DEFAULT);
-+      i2c->pinctrl_recovery = pinctrl_lookup_state(i2c->pinctrl, "recovery");
-+
-+      if (IS_ERR(i2c->pinctrl_default) || IS_ERR(i2c->pinctrl_recovery)) {
-+              dev_info(dev, "missing pinmux recovery information: %ld %ld\n",
-+                       PTR_ERR(i2c->pinctrl_default),
-+                       PTR_ERR(i2c->pinctrl_recovery));
-+              return 0;
-+      }
-+
-+      /*
-+       * Claiming GPIOs can influence the pinmux state, and may glitch the
-+       * I2C bus. Do this carefully.
-+       */
-+      bri->scl_gpiod = devm_gpiod_get(dev, "scl", GPIOD_OUT_HIGH_OPEN_DRAIN);
-+      if (bri->scl_gpiod == ERR_PTR(-EPROBE_DEFER))
-+              return -EPROBE_DEFER;
-+      if (IS_ERR(bri->scl_gpiod)) {
-+              dev_info(dev, "missing scl gpio recovery information: %pe\n",
-+                       bri->scl_gpiod);
-+              return 0;
-+      }
-+
-+      /*
-+       * We have SCL. Pull SCL low and wait a bit so that SDA glitches
-+       * have no effect.
-+       */
-+      gpiod_direction_output(bri->scl_gpiod, 0);
-+      udelay(10);
-+      bri->sda_gpiod = devm_gpiod_get(dev, "sda", GPIOD_OUT_HIGH_OPEN_DRAIN);
-+
-+      /* Wait a bit in case of a SDA glitch, and then release SCL. */
-+      udelay(10);
-+      gpiod_direction_output(bri->scl_gpiod, 1);
-+
-+      if (bri->sda_gpiod == ERR_PTR(-EPROBE_DEFER))
-+              return -EPROBE_DEFER;
-+
-+      if (IS_ERR(bri->sda_gpiod)) {
-+              dev_info(dev, "missing sda gpio recovery information: %pe\n",
-+                       bri->sda_gpiod);
-               return 0;
-       }
--      if (IS_ERR(bri->pinctrl))
--              return PTR_ERR(bri->pinctrl);
-       bri->prepare_recovery = i2c_pxa_prepare_recovery;
-       bri->unprepare_recovery = i2c_pxa_unprepare_recovery;
-+      bri->recover_bus = i2c_generic_scl_recovery;
-       i2c->adap.bus_recovery_info = bri;
--      return 0;
-+      /*
-+       * Claiming GPIOs can change the pinmux state, which confuses the
-+       * pinctrl since pinctrl's idea of the current setting is unaffected
-+       * by the pinmux change caused by claiming the GPIO. Work around that
-+       * by switching pinctrl to the GPIO state here. We do it this way to
-+       * avoid glitching the I2C bus.
-+       */
-+      pinctrl_select_state(i2c->pinctrl, i2c->pinctrl_recovery);
-+
-+      return pinctrl_select_state(i2c->pinctrl, i2c->pinctrl_default);
- }
- static int i2c_pxa_probe(struct platform_device *dev)
index 05eaa9aedfe7e8e31bc32a8640eb1ae43e5a12cc..0400d1e9ddc84174bb277cbfbfbe953668a8760a 100644 (file)
@@ -22,7 +22,7 @@ Signed-off-by: Tim Harvey <tharvey@gateworks.com>
  #include <linux/platform_data/x86/apple.h>
  #include <linux/pm_runtime.h>
  #include <linux/suspend.h>
-@@ -5858,3 +5859,34 @@ static void nvidia_ion_ahci_fixup(struct
+@@ -5879,3 +5880,34 @@ static void nvidia_ion_ahci_fixup(struct
        pdev->dev_flags |= PCI_DEV_FLAGS_HAS_MSI_MASKING;
  }
  DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_NVIDIA, 0x0ab8, nvidia_ion_ahci_fixup);
index b8461b0030ce160d999b7a26c5136bd0ccf2a27b..437c76113217650bf19fd176282088ae8d97362c 100644 (file)
@@ -95,7 +95,7 @@ still required by target/linux/ramips/files/drivers/net/ethernet/ralink/mdio.c
                phydev->mii_ts->link_state(phydev->mii_ts, phydev);
 --- a/drivers/net/phy/phylink.c
 +++ b/drivers/net/phy/phylink.c
-@@ -1369,7 +1369,8 @@ void phylink_destroy(struct phylink *pl)
+@@ -1370,7 +1370,8 @@ void phylink_destroy(struct phylink *pl)
  }
  EXPORT_SYMBOL_GPL(phylink_destroy);
  
index 183c9dda2fdae1f09621c0068f49a82557b52589..6b24df46748a69c1b356d7d7b8e123c317291c68 100644 (file)
@@ -21,7 +21,7 @@ Submitted-by: John Crispin <john@phrozen.org>
 
 --- a/drivers/net/phy/phylink.c
 +++ b/drivers/net/phy/phylink.c
-@@ -1990,6 +1990,11 @@ int phylink_ethtool_ksettings_set(struct
+@@ -1991,6 +1991,11 @@ int phylink_ethtool_ksettings_set(struct
                 *   the presence of a PHY, this should not be changed as that
                 *   should be determined from the media side advertisement.
                 */
@@ -33,7 +33,7 @@ Submitted-by: John Crispin <john@phrozen.org>
                return phy_ethtool_ksettings_set(pl->phydev, kset);
        }
  
-@@ -2293,8 +2298,11 @@ int phylink_ethtool_get_eee(struct phyli
+@@ -2294,8 +2299,11 @@ int phylink_ethtool_get_eee(struct phyli
  
        ASSERT_RTNL();
  
@@ -46,7 +46,7 @@ Submitted-by: John Crispin <john@phrozen.org>
  
        return ret;
  }
-@@ -2311,8 +2319,11 @@ int phylink_ethtool_set_eee(struct phyli
+@@ -2312,8 +2320,11 @@ int phylink_ethtool_set_eee(struct phyli
  
        ASSERT_RTNL();