]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
drop some sn65dsi86 patches from 5.14 queue
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 14 Sep 2021 16:28:26 +0000 (18:28 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 14 Sep 2021 16:28:26 +0000 (18:28 +0200)
queue-5.14/devlink-break-parameter-notification-sequence-to-be-.patch [deleted file]
queue-5.14/devlink-clear-whole-devlink_flash_notify-struct.patch
queue-5.14/drm-bridge-ti-sn65dsi86-add-some-100-us-delays.patch [deleted file]
queue-5.14/drm-bridge-ti-sn65dsi86-avoid-creating-multiple-conn.patch [deleted file]
queue-5.14/drm-bridge-ti-sn65dsi86-don-t-read-edid-blob-over-dd.patch [deleted file]
queue-5.14/drm-bridge-ti-sn65dsi86-fix-power-off-sequence.patch [deleted file]
queue-5.14/drm-bridge-ti-sn65dsi86-improve-probe-errors-with-de.patch [deleted file]
queue-5.14/drm-bridge-ti-sn65dsi86-wrap-panel-with-panel-bridge.patch [deleted file]
queue-5.14/series

diff --git a/queue-5.14/devlink-break-parameter-notification-sequence-to-be-.patch b/queue-5.14/devlink-break-parameter-notification-sequence-to-be-.patch
deleted file mode 100644 (file)
index abd6193..0000000
+++ /dev/null
@@ -1,260 +0,0 @@
-From 4728066867a2376366be8d627b5147870456556d Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Thu, 29 Jul 2021 20:19:24 +0300
-Subject: devlink: Break parameter notification sequence to be before/after
- unload/load driver
-
-From: Leon Romanovsky <leonro@nvidia.com>
-
-[ Upstream commit 05a7f4a8dff19999ca8a83a35ff4782689de7bfc ]
-
-The change of namespaces during devlink reload calls to driver unload
-before it accesses devlink parameters. The commands below causes to
-use-after-free bug when trying to get flow steering mode.
-
- * ip netns add n1
- * devlink dev reload pci/0000:00:09.0 netns n1
-
- ==================================================================
- BUG: KASAN: use-after-free in mlx5_devlink_fs_mode_get+0x96/0xa0 [mlx5_core]
- Read of size 4 at addr ffff888009d04308 by task devlink/275
-
- CPU: 6 PID: 275 Comm: devlink Not tainted 5.12.0-rc2+ #2853
- Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.13.0-0-gf21b5a4aeb02-prebuilt.qemu.org 04/01/2014
- Call Trace:
-  dump_stack+0x93/0xc2
-  print_address_description.constprop.0+0x18/0x140
-  ? mlx5_devlink_fs_mode_get+0x96/0xa0 [mlx5_core]
-  ? mlx5_devlink_fs_mode_get+0x96/0xa0 [mlx5_core]
-  kasan_report.cold+0x7c/0xd8
-  ? mlx5_devlink_fs_mode_get+0x96/0xa0 [mlx5_core]
-  mlx5_devlink_fs_mode_get+0x96/0xa0 [mlx5_core]
-  devlink_nl_param_fill+0x1c8/0xe80
-  ? __free_pages_ok+0x37a/0x8a0
-  ? devlink_flash_update_timeout_notify+0xd0/0xd0
-  ? lock_acquire+0x1a9/0x6d0
-  ? fs_reclaim_acquire+0xb7/0x160
-  ? lock_is_held_type+0x98/0x110
-  ? 0xffffffff81000000
-  ? lock_release+0x1f9/0x6c0
-  ? fs_reclaim_release+0xa1/0xf0
-  ? lock_downgrade+0x6d0/0x6d0
-  ? lock_is_held_type+0x98/0x110
-  ? lock_is_held_type+0x98/0x110
-  ? memset+0x20/0x40
-  ? __build_skb_around+0x1f8/0x2b0
-  devlink_param_notify+0x6d/0x180
-  devlink_reload+0x1c3/0x520
-  ? devlink_remote_reload_actions_performed+0x30/0x30
-  ? mutex_trylock+0x24b/0x2d0
-  ? devlink_nl_cmd_reload+0x62b/0x1070
-  devlink_nl_cmd_reload+0x66d/0x1070
-  ? devlink_reload+0x520/0x520
-  ? devlink_get_from_attrs+0x1bc/0x260
-  ? devlink_nl_pre_doit+0x64/0x4d0
-  genl_family_rcv_msg_doit+0x1e9/0x2f0
-  ? mutex_lock_io_nested+0x1130/0x1130
-  ? genl_family_rcv_msg_attrs_parse.constprop.0+0x240/0x240
-  ? security_capable+0x51/0x90
-  genl_rcv_msg+0x27f/0x4a0
-  ? genl_get_cmd+0x3c0/0x3c0
-  ? lock_acquire+0x1a9/0x6d0
-  ? devlink_reload+0x520/0x520
-  ? lock_release+0x6c0/0x6c0
-  netlink_rcv_skb+0x11d/0x340
-  ? genl_get_cmd+0x3c0/0x3c0
-  ? netlink_ack+0x9f0/0x9f0
-  ? lock_release+0x1f9/0x6c0
-  genl_rcv+0x24/0x40
-  netlink_unicast+0x433/0x700
-  ? netlink_attachskb+0x730/0x730
-  ? _copy_from_iter_full+0x178/0x650
-  ? __alloc_skb+0x113/0x2b0
-  netlink_sendmsg+0x6f1/0xbd0
-  ? netlink_unicast+0x700/0x700
-  ? lock_is_held_type+0x98/0x110
-  ? netlink_unicast+0x700/0x700
-  sock_sendmsg+0xb0/0xe0
-  __sys_sendto+0x193/0x240
-  ? __x64_sys_getpeername+0xb0/0xb0
-  ? do_sys_openat2+0x10b/0x370
-  ? __up_read+0x1a1/0x7b0
-  ? do_user_addr_fault+0x219/0xdc0
-  ? __x64_sys_openat+0x120/0x1d0
-  ? __x64_sys_open+0x1a0/0x1a0
-  __x64_sys_sendto+0xdd/0x1b0
-  ? syscall_enter_from_user_mode+0x1d/0x50
-  do_syscall_64+0x2d/0x40
-  entry_SYSCALL_64_after_hwframe+0x44/0xae
- RIP: 0033:0x7fc69d0af14a
- Code: d8 64 89 02 48 c7 c0 ff ff ff ff eb b8 0f 1f 00 f3 0f 1e fa 41 89 ca 64 8b 04 25 18 00 00 00 85 c0 75 15 b8 2c 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 76 c3 0f 1f 44 00 00 55 48 83 ec 30 44 89 4c
- RSP: 002b:00007ffc1d8292f8 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
- RAX: ffffffffffffffda RBX: 0000000000000005 RCX: 00007fc69d0af14a
- RDX: 0000000000000038 RSI: 0000555f57c56440 RDI: 0000000000000003
- RBP: 0000555f57c56410 R08: 00007fc69d17b200 R09: 000000000000000c
- R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
- R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
-
- Allocated by task 146:
-  kasan_save_stack+0x1b/0x40
-  __kasan_kmalloc+0x99/0xc0
-  mlx5_init_fs+0xf0/0x1c50 [mlx5_core]
-  mlx5_load+0xd2/0x180 [mlx5_core]
-  mlx5_init_one+0x2f6/0x450 [mlx5_core]
-  probe_one+0x47d/0x6e0 [mlx5_core]
-  pci_device_probe+0x2a0/0x4a0
-  really_probe+0x20a/0xc90
-  driver_probe_device+0xd8/0x380
-  device_driver_attach+0x1df/0x250
-  __driver_attach+0xff/0x240
-  bus_for_each_dev+0x11e/0x1a0
-  bus_add_driver+0x309/0x570
-  driver_register+0x1ee/0x380
-  0xffffffffa06b8062
-  do_one_initcall+0xd5/0x410
-  do_init_module+0x1c8/0x760
-  load_module+0x6d8b/0x9650
-  __do_sys_finit_module+0x118/0x1b0
-  do_syscall_64+0x2d/0x40
-  entry_SYSCALL_64_after_hwframe+0x44/0xae
-
- Freed by task 275:
-  kasan_save_stack+0x1b/0x40
-  kasan_set_track+0x1c/0x30
-  kasan_set_free_info+0x20/0x30
-  __kasan_slab_free+0x102/0x140
-  slab_free_freelist_hook+0x74/0x1b0
-  kfree+0xd7/0x2a0
-  mlx5_unload+0x16/0xb0 [mlx5_core]
-  mlx5_unload_one+0xae/0x120 [mlx5_core]
-  mlx5_devlink_reload_down+0x1bc/0x380 [mlx5_core]
-  devlink_reload+0x141/0x520
-  devlink_nl_cmd_reload+0x66d/0x1070
-  genl_family_rcv_msg_doit+0x1e9/0x2f0
-  genl_rcv_msg+0x27f/0x4a0
-  netlink_rcv_skb+0x11d/0x340
-  genl_rcv+0x24/0x40
-  netlink_unicast+0x433/0x700
-  netlink_sendmsg+0x6f1/0xbd0
-  sock_sendmsg+0xb0/0xe0
-  __sys_sendto+0x193/0x240
-  __x64_sys_sendto+0xdd/0x1b0
-  do_syscall_64+0x2d/0x40
-  entry_SYSCALL_64_after_hwframe+0x44/0xae
-
- The buggy address belongs to the object at ffff888009d04300
-  which belongs to the cache kmalloc-128 of size 128
- The buggy address is located 8 bytes inside of
-  128-byte region [ffff888009d04300, ffff888009d04380)
- The buggy address belongs to the page:
- page:0000000086a64ecc refcount:1 mapcount:0 mapping:0000000000000000 index:0xffff888009d04000 pfn:0x9d04
- head:0000000086a64ecc order:1 compound_mapcount:0
- flags: 0x4000000000010200(slab|head)
- raw: 4000000000010200 ffffea0000203980 0000000200000002 ffff8880050428c0
- raw: ffff888009d04000 000000008020001d 00000001ffffffff 0000000000000000
- page dumped because: kasan: bad access detected
-
- Memory state around the buggy address:
-  ffff888009d04200: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
-  ffff888009d04280: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
- >ffff888009d04300: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
-                       ^
-  ffff888009d04380: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
-  ffff888009d04400: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
- ==================================================================
-
-The right solution to devlink reload is to notify about deletion of
-parameters, unload driver, change net namespaces, load driver and notify
-about addition of parameters.
-
-Fixes: 070c63f20f6c ("net: devlink: allow to change namespaces during reload")
-Reviewed-by: Parav Pandit <parav@nvidia.com>
-Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
-Signed-off-by: Jakub Kicinski <kuba@kernel.org>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- net/core/devlink.c | 32 ++++++++++++++++++++------------
- 1 file changed, 20 insertions(+), 12 deletions(-)
-
-diff --git a/net/core/devlink.c b/net/core/devlink.c
-index 85032626de24..3963b1bc1e59 100644
---- a/net/core/devlink.c
-+++ b/net/core/devlink.c
-@@ -3801,10 +3801,12 @@ static void devlink_param_notify(struct devlink *devlink,
-                                struct devlink_param_item *param_item,
-                                enum devlink_command cmd);
--static void devlink_reload_netns_change(struct devlink *devlink,
--                                      struct net *dest_net)
-+static void devlink_ns_change_notify(struct devlink *devlink,
-+                                   struct net *dest_net, struct net *curr_net,
-+                                   bool new)
- {
-       struct devlink_param_item *param_item;
-+      enum devlink_command cmd;
-       /* Userspace needs to be notified about devlink objects
-        * removed from original and entering new network namespace.
-@@ -3812,17 +3814,18 @@ static void devlink_reload_netns_change(struct devlink *devlink,
-        * reload process so the notifications are generated separatelly.
-        */
--      list_for_each_entry(param_item, &devlink->param_list, list)
--              devlink_param_notify(devlink, 0, param_item,
--                                   DEVLINK_CMD_PARAM_DEL);
--      devlink_notify(devlink, DEVLINK_CMD_DEL);
-+      if (!dest_net || net_eq(dest_net, curr_net))
-+              return;
--      __devlink_net_set(devlink, dest_net);
-+      if (new)
-+              devlink_notify(devlink, DEVLINK_CMD_NEW);
--      devlink_notify(devlink, DEVLINK_CMD_NEW);
-+      cmd = new ? DEVLINK_CMD_PARAM_NEW : DEVLINK_CMD_PARAM_DEL;
-       list_for_each_entry(param_item, &devlink->param_list, list)
--              devlink_param_notify(devlink, 0, param_item,
--                                   DEVLINK_CMD_PARAM_NEW);
-+              devlink_param_notify(devlink, 0, param_item, cmd);
-+
-+      if (!new)
-+              devlink_notify(devlink, DEVLINK_CMD_DEL);
- }
- static bool devlink_reload_supported(const struct devlink_ops *ops)
-@@ -3902,6 +3905,7 @@ static int devlink_reload(struct devlink *devlink, struct net *dest_net,
-                         u32 *actions_performed, struct netlink_ext_ack *extack)
- {
-       u32 remote_reload_stats[DEVLINK_RELOAD_STATS_ARRAY_SIZE];
-+      struct net *curr_net;
-       int err;
-       if (!devlink->reload_enabled)
-@@ -3909,18 +3913,22 @@ static int devlink_reload(struct devlink *devlink, struct net *dest_net,
-       memcpy(remote_reload_stats, devlink->stats.remote_reload_stats,
-              sizeof(remote_reload_stats));
-+
-+      curr_net = devlink_net(devlink);
-+      devlink_ns_change_notify(devlink, dest_net, curr_net, false);
-       err = devlink->ops->reload_down(devlink, !!dest_net, action, limit, extack);
-       if (err)
-               return err;
--      if (dest_net && !net_eq(dest_net, devlink_net(devlink)))
--              devlink_reload_netns_change(devlink, dest_net);
-+      if (dest_net && !net_eq(dest_net, curr_net))
-+              __devlink_net_set(devlink, dest_net);
-       err = devlink->ops->reload_up(devlink, action, limit, actions_performed, extack);
-       devlink_reload_failed_set(devlink, !!err);
-       if (err)
-               return err;
-+      devlink_ns_change_notify(devlink, dest_net, curr_net, true);
-       WARN_ON(!(*actions_performed & BIT(action)));
-       /* Catch driver on updating the remote action within devlink reload */
-       WARN_ON(memcmp(remote_reload_stats, devlink->stats.remote_reload_stats,
--- 
-2.30.2
-
index 9845b1cd1d67d8201d1ddf11f4711876c8044b78..022dc1bae8f6aed0316eb4bd0f0b840dfdef068f 100644 (file)
@@ -20,14 +20,12 @@ Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
 Signed-off-by: David S. Miller <davem@davemloft.net>
 Signed-off-by: Sasha Levin <sashal@kernel.org>
 ---
- net/core/devlink.c | 4 ++--
+ net/core/devlink.c |    4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
-diff --git a/net/core/devlink.c b/net/core/devlink.c
-index 3963b1bc1e59..5a85a7b0feb2 100644
 --- a/net/core/devlink.c
 +++ b/net/core/devlink.c
-@@ -4125,7 +4125,7 @@ out_free_msg:
+@@ -4117,7 +4117,7 @@ out_free_msg:
  
  static void devlink_flash_update_begin_notify(struct devlink *devlink)
  {
@@ -36,7 +34,7 @@ index 3963b1bc1e59..5a85a7b0feb2 100644
  
        __devlink_flash_update_notify(devlink,
                                      DEVLINK_CMD_FLASH_UPDATE,
-@@ -4134,7 +4134,7 @@ static void devlink_flash_update_begin_notify(struct devlink *devlink)
+@@ -4126,7 +4126,7 @@ static void devlink_flash_update_begin_n
  
  static void devlink_flash_update_end_notify(struct devlink *devlink)
  {
@@ -45,6 +43,3 @@ index 3963b1bc1e59..5a85a7b0feb2 100644
  
        __devlink_flash_update_notify(devlink,
                                      DEVLINK_CMD_FLASH_UPDATE_END,
--- 
-2.30.2
-
diff --git a/queue-5.14/drm-bridge-ti-sn65dsi86-add-some-100-us-delays.patch b/queue-5.14/drm-bridge-ti-sn65dsi86-add-some-100-us-delays.patch
deleted file mode 100644 (file)
index 6daae73..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-From 4230a0fce84545a6e08a1348d584eae6f1ca7476 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Fri, 30 Jul 2021 08:46:02 -0700
-Subject: drm/bridge: ti-sn65dsi86: Add some 100 us delays
-
-From: Douglas Anderson <dianders@chromium.org>
-
-[ Upstream commit e183bf31cf0d3a05162e633e428350ed176ce926 ]
-
-The manual has always said that we need 100 us delays in a few
-places. Though it hasn't seemed to be a big deal to skip these, let's
-add them in case it makes something happier.
-
-NOTE: this fixes no known issues but it seems good to make it right.
-
-Fixes: a095f15c00e2 ("drm/bridge: add support for sn65dsi86 bridge driver")
-Signed-off-by: Douglas Anderson <dianders@chromium.org>
-Acked-by: Robert Foss <robert.foss@linaro.org>
-Reviewed-by: Sean Paul <seanpaul@chromium.org>
-Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
-Link: https://patchwork.freedesktop.org/patch/msgid/20210730084534.v2.3.I842d483139531aa4651da8338512fdf0171ff23c@changeid
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/gpu/drm/bridge/ti-sn65dsi86.c | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi86.c b/drivers/gpu/drm/bridge/ti-sn65dsi86.c
-index ecd4fa3a9a1d..c9cddf317c72 100644
---- a/drivers/gpu/drm/bridge/ti-sn65dsi86.c
-+++ b/drivers/gpu/drm/bridge/ti-sn65dsi86.c
-@@ -304,6 +304,9 @@ static int __maybe_unused ti_sn65dsi86_resume(struct device *dev)
-               return ret;
-       }
-+      /* td2: min 100 us after regulators before enabling the GPIO */
-+      usleep_range(100, 110);
-+
-       gpiod_set_value(pdata->enable_gpio, 1);
-       /*
-@@ -886,6 +889,9 @@ static void ti_sn_bridge_pre_enable(struct drm_bridge *bridge)
-       if (!pdata->refclk)
-               ti_sn65dsi86_enable_comms(pdata);
-+
-+      /* td7: min 100 us after enable before DSI data */
-+      usleep_range(100, 110);
- }
- static void ti_sn_bridge_post_disable(struct drm_bridge *bridge)
--- 
-2.30.2
-
diff --git a/queue-5.14/drm-bridge-ti-sn65dsi86-avoid-creating-multiple-conn.patch b/queue-5.14/drm-bridge-ti-sn65dsi86-avoid-creating-multiple-conn.patch
deleted file mode 100644 (file)
index be16788..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-From 8017943ec390b61b5dca817252a59aa51296aeac Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Wed, 11 Aug 2021 16:52:47 -0700
-Subject: drm/bridge: ti-sn65dsi86: Avoid creating multiple connectors
-
-From: Rob Clark <robdclark@chromium.org>
-
-[ Upstream commit c7782443a88926a4f938f0193041616328cf2db2 ]
-
-If we created our own connector because the driver does not support the
-NO_CONNECTOR flag, we don't want the downstream bridge to *also* create
-a connector.  And if this driver did pass the NO_CONNECTOR flag (and we
-supported that mode) this would change nothing.
-
-Fixes: 4e5763f03e10 ("drm/bridge: ti-sn65dsi86: Wrap panel with panel-bridge")
-Reported-by: Stephen Boyd <swboyd@chromium.org>
-Signed-off-by: Rob Clark <robdclark@chromium.org>
-Tested-by: Stephen Boyd <swboyd@chromium.org>
-Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
-Reviewed-by: Douglas Anderson <dianders@chromium.org>
-Tested-by: Douglas Anderson <dianders@chromium.org>
-Signed-off-by: Douglas Anderson <dianders@chromium.org>
-Link: https://patchwork.freedesktop.org/patch/msgid/20210811235253.924867-2-robdclark@gmail.com
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/gpu/drm/bridge/ti-sn65dsi86.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi86.c b/drivers/gpu/drm/bridge/ti-sn65dsi86.c
-index c9cddf317c72..3aeed2731945 100644
---- a/drivers/gpu/drm/bridge/ti-sn65dsi86.c
-+++ b/drivers/gpu/drm/bridge/ti-sn65dsi86.c
-@@ -531,6 +531,9 @@ static int ti_sn_bridge_attach(struct drm_bridge *bridge,
-       }
-       pdata->dsi = dsi;
-+      /* We never want the next bridge to *also* create a connector: */
-+      flags |= DRM_BRIDGE_ATTACH_NO_CONNECTOR;
-+
-       /* Attach the next bridge */
-       ret = drm_bridge_attach(bridge->encoder, pdata->next_bridge,
-                               &pdata->bridge, flags);
--- 
-2.30.2
-
diff --git a/queue-5.14/drm-bridge-ti-sn65dsi86-don-t-read-edid-blob-over-dd.patch b/queue-5.14/drm-bridge-ti-sn65dsi86-don-t-read-edid-blob-over-dd.patch
deleted file mode 100644 (file)
index 3cfd974..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-From c2b53f68f51e671442e2d75e0afbc8e49364f3b1 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Fri, 11 Jun 2021 10:17:45 -0700
-Subject: drm/bridge: ti-sn65dsi86: Don't read EDID blob over DDC
-
-From: Douglas Anderson <dianders@chromium.org>
-
-[ Upstream commit a70e558c151043ce46a5e5999f4310e0b3551f57 ]
-
-This is really just a revert of commit 58074b08c04a ("drm/bridge:
-ti-sn65dsi86: Read EDID blob over DDC"), resolving conflicts.
-
-The old code failed to read the EDID properly in a very important
-case: before the bridge's pre_enable() was called. The way things need
-to work:
-1. Read the EDID.
-2. Based on the EDID, decide on video settings and pixel clock.
-3. Enable the bridge w/ the desired settings.
-
-The way things were working:
-1. Try to read the EDID but fail; fall back to hardcoded values.
-2. Based on hardcoded values, decide on video settings and pixel clock.
-3. Enable the bridge w/ the desired settings.
-4. Try again to read the EDID, it works now!
-5. Realize that the hardcoded settings weren't quite right.
-6. Disable / reenable the bridge w/ the right settings.
-
-The reasons for the failures were twofold:
-a) Since we never ran the bridge chip's pre-enable then we never set
-   the bit to ignore HPD. This meant the bridge chip didn't even _try_
-   to go out on the bus and communicate with the panel.
-b) Even if we fixed things to ignore HPD, the EDID still wouldn't read
-   if the panel wasn't on.
-
-Instead of reverting the code, we could fix it to set the HPD bit and
-also power on the panel. However, it also works nicely to just let the
-panel code read the EDID. Now that we've split the driver up we can
-expose the DDC AUX channel bus to the panel node. The panel can take
-charge of reading the EDID.
-
-NOTE: in order for things to work, anyone that needs to read the EDID
-will need to instantiate their panel using the new DP AUX bus (AKA by
-listing their panel under the "aux-bus" node of the bridge chip in the
-device tree).
-
-In the future if we want to use the bridge chip to provide a full
-external DP port (which won't have a panel) then we will have to
-conditinally add EDID reading back in.
-
-Suggested-by: Andrzej Hajda <a.hajda@samsung.com>
-Signed-off-by: Douglas Anderson <dianders@chromium.org>
-Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
-Link: https://patchwork.freedesktop.org/patch/msgid/20210611101711.v10.9.I9330684c25f65bb318eff57f0616500f83eac3cc@changeid
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/gpu/drm/bridge/ti-sn65dsi86.c | 22 ----------------------
- 1 file changed, 22 deletions(-)
-
-diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi86.c b/drivers/gpu/drm/bridge/ti-sn65dsi86.c
-index 45a2969afb2b..aef850296756 100644
---- a/drivers/gpu/drm/bridge/ti-sn65dsi86.c
-+++ b/drivers/gpu/drm/bridge/ti-sn65dsi86.c
-@@ -124,7 +124,6 @@
-  * @connector:    Our connector.
-  * @host_node:    Remote DSI node.
-  * @dsi:          Our MIPI DSI source.
-- * @edid:         Detected EDID of eDP panel.
-  * @refclk:       Our reference clock.
-  * @panel:        Our panel.
-  * @enable_gpio:  The GPIO we toggle to enable the bridge.
-@@ -154,7 +153,6 @@ struct ti_sn65dsi86 {
-       struct drm_dp_aux               aux;
-       struct drm_bridge               bridge;
-       struct drm_connector            connector;
--      struct edid                     *edid;
-       struct device_node              *host_node;
-       struct mipi_dsi_device          *dsi;
-       struct clk                      *refclk;
-@@ -403,24 +401,6 @@ connector_to_ti_sn65dsi86(struct drm_connector *connector)
- static int ti_sn_bridge_connector_get_modes(struct drm_connector *connector)
- {
-       struct ti_sn65dsi86 *pdata = connector_to_ti_sn65dsi86(connector);
--      struct edid *edid = pdata->edid;
--      int num, ret;
--
--      if (!edid) {
--              pm_runtime_get_sync(pdata->dev);
--              edid = pdata->edid = drm_get_edid(connector, &pdata->aux.ddc);
--              pm_runtime_put_autosuspend(pdata->dev);
--      }
--
--      if (edid && drm_edid_is_valid(edid)) {
--              ret = drm_connector_update_edid_property(connector, edid);
--              if (!ret) {
--                      num = drm_add_edid_modes(connector, edid);
--                      if (num)
--                              return num;
--              }
--      }
--
-       return drm_panel_get_modes(pdata->panel, connector);
- }
-@@ -1358,8 +1338,6 @@ static void ti_sn_bridge_remove(struct auxiliary_device *adev)
-               mipi_dsi_device_unregister(pdata->dsi);
-       }
--      kfree(pdata->edid);
--
-       drm_bridge_remove(&pdata->bridge);
-       of_node_put(pdata->host_node);
--- 
-2.30.2
-
diff --git a/queue-5.14/drm-bridge-ti-sn65dsi86-fix-power-off-sequence.patch b/queue-5.14/drm-bridge-ti-sn65dsi86-fix-power-off-sequence.patch
deleted file mode 100644 (file)
index ad211ce..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-From b462a15bc3fc90a1e05d0f30da78353d1dc81b66 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Fri, 30 Jul 2021 08:46:01 -0700
-Subject: drm/bridge: ti-sn65dsi86: Fix power off sequence
-
-From: Douglas Anderson <dianders@chromium.org>
-
-[ Upstream commit acb06210b096830e28e9ffd2c6501fe99bdb10fd ]
-
-When testing with a panel that's apparently a little more persnickety
-about the correct power sequence (specifically Samsung ATNA33XC20), we
-found that the ti-sn65dsi86 was doing things just slightly wrong.
-
-Looking closely at the ti-sn65dsi86's datasheet, the power off
-sequence is supposed to be:
-1. Clear VSTREAM_ENABLE bit
-2. Stop DSI stream from GPU. DSI lanes must be placed in LP11 state.
-3. Program the ML_TX_MODE to 0x0 (OFF)
-4. Program the DP_NUM_LANES register to 0x0
-5. Clear the DP_PLL_EN bit.
-6. Deassert the EN pin.
-7. Remove power from supply pins
-
-Since we were doing the whole sequence in the "disable", I believe
-that step #2 (stopping the DSI stream from the GPU) wasn't
-happening. We also weren't setting DP_NUM_LANES to 0.
-
-Let's fix this.
-
-NOTE: things are a little asymmetric now. For instance, we turn the
-PLL on in "enable" but now we're not turning it off until
-"post_disable". It would seem to make sense to move the PLL turning on
-to "pre_enable" to match. Unfortunately, I don't believe that's
-allowed. It looks as if (in the non-refclk mode which probably nobody
-is using) we have to wait until the MIPI clock is there before we can
-enable the PLL. In any case, the way it is here won't really
-hurt--it'll just leave the PLL on a little longer.
-
-Fixes: a095f15c00e2 ("drm/bridge: add support for sn65dsi86 bridge driver")
-Signed-off-by: Douglas Anderson <dianders@chromium.org>
-Acked-by: Robert Foss <robert.foss@linaro.org>
-Reviewed-by: Sean Paul <seanpaul@chromium.org>
-Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
-Link: https://patchwork.freedesktop.org/patch/msgid/20210730084534.v2.2.If8a8ec3bf1855cf0dbb62c005a71d6698c99c125@changeid
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/gpu/drm/bridge/ti-sn65dsi86.c | 11 +++++++----
- 1 file changed, 7 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi86.c b/drivers/gpu/drm/bridge/ti-sn65dsi86.c
-index 970a4859eea3..ecd4fa3a9a1d 100644
---- a/drivers/gpu/drm/bridge/ti-sn65dsi86.c
-+++ b/drivers/gpu/drm/bridge/ti-sn65dsi86.c
-@@ -558,10 +558,6 @@ static void ti_sn_bridge_disable(struct drm_bridge *bridge)
-       /* disable video stream */
-       regmap_update_bits(pdata->regmap, SN_ENH_FRAME_REG, VSTREAM_ENABLE, 0);
--      /* semi auto link training mode OFF */
--      regmap_write(pdata->regmap, SN_ML_TX_MODE_REG, 0);
--      /* disable DP PLL */
--      regmap_write(pdata->regmap, SN_PLL_ENABLE_REG, 0);
- }
- static void ti_sn_bridge_set_dsi_rate(struct ti_sn65dsi86 *pdata)
-@@ -896,6 +892,13 @@ static void ti_sn_bridge_post_disable(struct drm_bridge *bridge)
- {
-       struct ti_sn65dsi86 *pdata = bridge_to_ti_sn65dsi86(bridge);
-+      /* semi auto link training mode OFF */
-+      regmap_write(pdata->regmap, SN_ML_TX_MODE_REG, 0);
-+      /* Num lanes to 0 as per power sequencing in data sheet */
-+      regmap_update_bits(pdata->regmap, SN_SSC_CONFIG_REG, DP_NUM_LANES_MASK, 0);
-+      /* disable DP PLL */
-+      regmap_write(pdata->regmap, SN_PLL_ENABLE_REG, 0);
-+
-       if (!pdata->refclk)
-               ti_sn65dsi86_disable_comms(pdata);
--- 
-2.30.2
-
diff --git a/queue-5.14/drm-bridge-ti-sn65dsi86-improve-probe-errors-with-de.patch b/queue-5.14/drm-bridge-ti-sn65dsi86-improve-probe-errors-with-de.patch
deleted file mode 100644 (file)
index ef12f74..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-From 98c53541766506c492cd97408ed6f2b1f7b1744a Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Fri, 11 Jun 2021 10:17:46 -0700
-Subject: drm/bridge: ti-sn65dsi86: Improve probe errors with dev_err_probe()
-
-From: Douglas Anderson <dianders@chromium.org>
-
-[ Upstream commit 4c1b3d94bf632c1420a5d4108199f55a5655831d ]
-
-As I was testing to make sure that the DEFER path worked well with my
-patch series, I got tired of seeing this scary message in my logs just
-because the panel needed to defer:
-  [drm:ti_sn_bridge_probe] *ERROR* could not find any panel node
-
-Let's use dev_err_probe() which nicely quiets this error and also
-simplifies the code a tiny bit. We'll also update other places in the
-file which can use dev_err_probe().
-
-Signed-off-by: Douglas Anderson <dianders@chromium.org>
-Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
-Link: https://patchwork.freedesktop.org/patch/msgid/20210611101711.v10.10.I24bba069e63b1eea84443eef0c8535fd032a6311@changeid
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/gpu/drm/bridge/ti-sn65dsi86.c | 31 +++++++++++----------------
- 1 file changed, 13 insertions(+), 18 deletions(-)
-
-diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi86.c b/drivers/gpu/drm/bridge/ti-sn65dsi86.c
-index aef850296756..4d1483cf7b58 100644
---- a/drivers/gpu/drm/bridge/ti-sn65dsi86.c
-+++ b/drivers/gpu/drm/bridge/ti-sn65dsi86.c
-@@ -1302,10 +1302,9 @@ static int ti_sn_bridge_probe(struct auxiliary_device *adev,
-       int ret;
-       ret = drm_of_find_panel_or_bridge(np, 1, 0, &pdata->panel, NULL);
--      if (ret) {
--              DRM_ERROR("could not find any panel node\n");
--              return ret;
--      }
-+      if (ret)
-+              return dev_err_probe(&adev->dev, ret,
-+                                   "could not find any panel node\n");
-       ti_sn_bridge_parse_lanes(pdata, np);
-@@ -1432,27 +1431,23 @@ static int ti_sn65dsi86_probe(struct i2c_client *client,
-       pdata->regmap = devm_regmap_init_i2c(client,
-                                            &ti_sn65dsi86_regmap_config);
--      if (IS_ERR(pdata->regmap)) {
--              DRM_ERROR("regmap i2c init failed\n");
--              return PTR_ERR(pdata->regmap);
--      }
-+      if (IS_ERR(pdata->regmap))
-+              return dev_err_probe(dev, PTR_ERR(pdata->regmap),
-+                                   "regmap i2c init failed\n");
-       pdata->enable_gpio = devm_gpiod_get(dev, "enable", GPIOD_OUT_LOW);
--      if (IS_ERR(pdata->enable_gpio)) {
--              DRM_ERROR("failed to get enable gpio from DT\n");
--              ret = PTR_ERR(pdata->enable_gpio);
--              return ret;
--      }
-+      if (IS_ERR(pdata->enable_gpio))
-+              return dev_err_probe(dev, PTR_ERR(pdata->enable_gpio),
-+                                   "failed to get enable gpio from DT\n");
-       ret = ti_sn65dsi86_parse_regulators(pdata);
--      if (ret) {
--              DRM_ERROR("failed to parse regulators\n");
--              return ret;
--      }
-+      if (ret)
-+              return dev_err_probe(dev, ret, "failed to parse regulators\n");
-       pdata->refclk = devm_clk_get_optional(dev, "refclk");
-       if (IS_ERR(pdata->refclk))
--              return PTR_ERR(pdata->refclk);
-+              return dev_err_probe(dev, PTR_ERR(pdata->refclk),
-+                                   "failed to get reference clock\n");
-       pm_runtime_enable(dev);
-       ret = devm_add_action_or_reset(dev, ti_sn65dsi86_runtime_disable, dev);
--- 
-2.30.2
-
diff --git a/queue-5.14/drm-bridge-ti-sn65dsi86-wrap-panel-with-panel-bridge.patch b/queue-5.14/drm-bridge-ti-sn65dsi86-wrap-panel-with-panel-bridge.patch
deleted file mode 100644 (file)
index 25faf73..0000000
+++ /dev/null
@@ -1,134 +0,0 @@
-From 0b42df64275a74e911144b697763fe60729970a1 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Thu, 24 Jun 2021 03:03:02 +0300
-Subject: drm/bridge: ti-sn65dsi86: Wrap panel with panel-bridge
-
-From: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
-
-[ Upstream commit 4e5763f03e105fedfcd7a83bec1dccae96e334dd ]
-
-To simplify interfacing with the panel, wrap it in a panel-bridge and
-let the DRM bridge helpers handle chaining of operations.
-
-This also prepares for support of DRM_BRIDGE_ATTACH_NO_CONNECTOR, which
-requires all components in the display pipeline to be represented by
-bridges.
-
-Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
-Reviewed-by: Jagan Teki <jagan@amarulasolutions.com>
-Signed-off-by: Robert Foss <robert.foss@linaro.org>
-Link: https://patchwork.freedesktop.org/patch/msgid/20210624000304.16281-5-laurent.pinchart+renesas@ideasonboard.com
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/gpu/drm/bridge/ti-sn65dsi86.c | 32 +++++++++++++++++----------
- 1 file changed, 20 insertions(+), 12 deletions(-)
-
-diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi86.c b/drivers/gpu/drm/bridge/ti-sn65dsi86.c
-index 4d1483cf7b58..970a4859eea3 100644
---- a/drivers/gpu/drm/bridge/ti-sn65dsi86.c
-+++ b/drivers/gpu/drm/bridge/ti-sn65dsi86.c
-@@ -125,7 +125,7 @@
-  * @host_node:    Remote DSI node.
-  * @dsi:          Our MIPI DSI source.
-  * @refclk:       Our reference clock.
-- * @panel:        Our panel.
-+ * @next_bridge:  The bridge on the eDP side.
-  * @enable_gpio:  The GPIO we toggle to enable the bridge.
-  * @supplies:     Data for bulk enabling/disabling our regulators.
-  * @dp_lanes:     Count of dp_lanes we're using.
-@@ -156,7 +156,7 @@ struct ti_sn65dsi86 {
-       struct device_node              *host_node;
-       struct mipi_dsi_device          *dsi;
-       struct clk                      *refclk;
--      struct drm_panel                *panel;
-+      struct drm_bridge               *next_bridge;
-       struct gpio_desc                *enable_gpio;
-       struct regulator_bulk_data      supplies[SN_REGULATOR_SUPPLY_NUM];
-       int                             dp_lanes;
-@@ -401,7 +401,8 @@ connector_to_ti_sn65dsi86(struct drm_connector *connector)
- static int ti_sn_bridge_connector_get_modes(struct drm_connector *connector)
- {
-       struct ti_sn65dsi86 *pdata = connector_to_ti_sn65dsi86(connector);
--      return drm_panel_get_modes(pdata->panel, connector);
-+
-+      return drm_bridge_get_modes(pdata->next_bridge, connector);
- }
- static enum drm_mode_status
-@@ -527,8 +528,16 @@ static int ti_sn_bridge_attach(struct drm_bridge *bridge,
-       }
-       pdata->dsi = dsi;
-+      /* Attach the next bridge */
-+      ret = drm_bridge_attach(bridge->encoder, pdata->next_bridge,
-+                              &pdata->bridge, flags);
-+      if (ret < 0)
-+              goto err_dsi_detach;
-+
-       return 0;
-+err_dsi_detach:
-+      mipi_dsi_detach(dsi);
- err_dsi_attach:
-       mipi_dsi_device_unregister(dsi);
- err_dsi_host:
-@@ -547,8 +556,6 @@ static void ti_sn_bridge_disable(struct drm_bridge *bridge)
- {
-       struct ti_sn65dsi86 *pdata = bridge_to_ti_sn65dsi86(bridge);
--      drm_panel_disable(pdata->panel);
--
-       /* disable video stream */
-       regmap_update_bits(pdata->regmap, SN_ENH_FRAME_REG, VSTREAM_ENABLE, 0);
-       /* semi auto link training mode OFF */
-@@ -873,8 +880,6 @@ static void ti_sn_bridge_enable(struct drm_bridge *bridge)
-       /* enable video stream */
-       regmap_update_bits(pdata->regmap, SN_ENH_FRAME_REG, VSTREAM_ENABLE,
-                          VSTREAM_ENABLE);
--
--      drm_panel_enable(pdata->panel);
- }
- static void ti_sn_bridge_pre_enable(struct drm_bridge *bridge)
-@@ -885,16 +890,12 @@ static void ti_sn_bridge_pre_enable(struct drm_bridge *bridge)
-       if (!pdata->refclk)
-               ti_sn65dsi86_enable_comms(pdata);
--
--      drm_panel_prepare(pdata->panel);
- }
- static void ti_sn_bridge_post_disable(struct drm_bridge *bridge)
- {
-       struct ti_sn65dsi86 *pdata = bridge_to_ti_sn65dsi86(bridge);
--      drm_panel_unprepare(pdata->panel);
--
-       if (!pdata->refclk)
-               ti_sn65dsi86_disable_comms(pdata);
-@@ -1299,13 +1300,20 @@ static int ti_sn_bridge_probe(struct auxiliary_device *adev,
- {
-       struct ti_sn65dsi86 *pdata = dev_get_drvdata(adev->dev.parent);
-       struct device_node *np = pdata->dev->of_node;
-+      struct drm_panel *panel;
-       int ret;
--      ret = drm_of_find_panel_or_bridge(np, 1, 0, &pdata->panel, NULL);
-+      ret = drm_of_find_panel_or_bridge(np, 1, 0, &panel, NULL);
-       if (ret)
-               return dev_err_probe(&adev->dev, ret,
-                                    "could not find any panel node\n");
-+      pdata->next_bridge = devm_drm_panel_bridge_add(pdata->dev, panel);
-+      if (IS_ERR(pdata->next_bridge)) {
-+              DRM_ERROR("failed to create panel bridge\n");
-+              return PTR_ERR(pdata->next_bridge);
-+      }
-+
-       ti_sn_bridge_parse_lanes(pdata, np);
-       ret = ti_sn_bridge_parse_dsi_host(pdata);
--- 
-2.30.2
-
index 5a8d8562f3ba7c7698eb77d96808e3b1b02a30bd..479dd7f159d94b75ab5ef95fe8543e66b759213a 100644 (file)
@@ -143,12 +143,6 @@ lib-test_scanf-handle-n_bits-0-in-random-tests.patch
 libbpf-return-non-null-error-on-failures-in-libbpf_f.patch
 tools-free-btf-objects-at-various-locations.patch
 arm64-dts-renesas-hihope-rzg2-ex-add-etheravb-intern.patch
-devlink-break-parameter-notification-sequence-to-be-.patch
-drm-bridge-ti-sn65dsi86-don-t-read-edid-blob-over-dd.patch
-drm-bridge-ti-sn65dsi86-improve-probe-errors-with-de.patch
-drm-bridge-ti-sn65dsi86-wrap-panel-with-panel-bridge.patch
-drm-bridge-ti-sn65dsi86-fix-power-off-sequence.patch
-drm-bridge-ti-sn65dsi86-add-some-100-us-delays.patch
 net-mlx5-fix-missing-return-value-in-mlx5_devlink_es.patch
 i2c-highlander-add-irq-check.patch
 leds-lgm-sso-put-fwnode-in-any-case-during-probe.patch
@@ -195,7 +189,6 @@ drm-msm-dsi-fix-some-reference-counted-resource-leak.patch
 drm-msm-dp-replug-event-is-converted-into-an-unplug-.patch
 net-mlx5-fix-unpublish-devlink-parameters.patch
 asoc-rt5682-properly-turn-off-regulators-if-wrong-de.patch
-drm-bridge-ti-sn65dsi86-avoid-creating-multiple-conn.patch
 usb-dwc3-meson-g12a-add-irq-check.patch
 usb-dwc3-qcom-add-irq-check.patch
 usb-gadget-udc-at91-add-irq-check.patch