public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org, "stable@vger.kernel.org,
	linux-can@vger.kernel.org,
	Marc Kleine-Budde"  <mkl@pengutronix.de>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	stable@vger.kernel.org, Jimmy Assarsson <extja@kvaser.com>
Subject: [PATCH 5.15 168/230] can: kvaser_usb: replace run-time checks with struct kvaser_usb_driver_info
Date: Mon, 11 Jul 2022 11:07:04 +0200	[thread overview]
Message-ID: <20220711090608.825628533@linuxfoundation.org> (raw)
In-Reply-To: <20220711090604.055883544@linuxfoundation.org>

From: Jimmy Assarsson <extja@kvaser.com>

commit 49f274c72357d2d74cba70b172cf369768909707 upstream.

Unify and move compile-time known information into new struct
kvaser_usb_driver_info, in favor of run-time checks.

All Kvaser USBcanII supports listen-only mode and error counter
reporting.

Link: https://lore.kernel.org/all/20220603083820.800246-2-extja@kvaser.com
Suggested-by: Marc Kleine-Budde <mkl@pengutronix.de>
Cc: stable@vger.kernel.org
Signed-off-by: Jimmy Assarsson <extja@kvaser.com>
[mkl: move struct kvaser_usb_driver_info into kvaser_usb_core.c]
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/net/can/usb/kvaser_usb/kvaser_usb.h      |   22 +
 drivers/net/can/usb/kvaser_usb/kvaser_usb_core.c |  275 ++++++++++++-----------
 drivers/net/can/usb/kvaser_usb/kvaser_usb_leaf.c |   24 +-
 3 files changed, 173 insertions(+), 148 deletions(-)

--- a/drivers/net/can/usb/kvaser_usb/kvaser_usb.h
+++ b/drivers/net/can/usb/kvaser_usb/kvaser_usb.h
@@ -35,9 +35,9 @@
 #define KVASER_USB_RX_BUFFER_SIZE		3072
 #define KVASER_USB_MAX_NET_DEVICES		5
 
-/* USB devices features */
-#define KVASER_USB_HAS_SILENT_MODE		BIT(0)
-#define KVASER_USB_HAS_TXRX_ERRORS		BIT(1)
+/* Kvaser USB device quirks */
+#define KVASER_USB_QUIRK_HAS_SILENT_MODE	BIT(0)
+#define KVASER_USB_QUIRK_HAS_TXRX_ERRORS	BIT(1)
 
 /* Device capabilities */
 #define KVASER_USB_CAP_BERR_CAP			0x01
@@ -65,12 +65,7 @@ struct kvaser_usb_dev_card_data_hydra {
 struct kvaser_usb_dev_card_data {
 	u32 ctrlmode_supported;
 	u32 capabilities;
-	union {
-		struct {
-			enum kvaser_usb_leaf_family family;
-		} leaf;
-		struct kvaser_usb_dev_card_data_hydra hydra;
-	};
+	struct kvaser_usb_dev_card_data_hydra hydra;
 };
 
 /* Context for an outstanding, not yet ACKed, transmission */
@@ -84,7 +79,7 @@ struct kvaser_usb {
 	struct usb_device *udev;
 	struct usb_interface *intf;
 	struct kvaser_usb_net_priv *nets[KVASER_USB_MAX_NET_DEVICES];
-	const struct kvaser_usb_dev_ops *ops;
+	const struct kvaser_usb_driver_info *driver_info;
 	const struct kvaser_usb_dev_cfg *cfg;
 
 	struct usb_endpoint_descriptor *bulk_in, *bulk_out;
@@ -166,6 +161,12 @@ struct kvaser_usb_dev_ops {
 				  int *cmd_len, u16 transid);
 };
 
+struct kvaser_usb_driver_info {
+	u32 quirks;
+	enum kvaser_usb_leaf_family family;
+	const struct kvaser_usb_dev_ops *ops;
+};
+
 struct kvaser_usb_dev_cfg {
 	const struct can_clock clock;
 	const unsigned int timestamp_freq;
@@ -185,4 +186,5 @@ int kvaser_usb_send_cmd_async(struct kva
 			      int len);
 
 int kvaser_usb_can_rx_over_error(struct net_device *netdev);
+
 #endif /* KVASER_USB_H */
--- a/drivers/net/can/usb/kvaser_usb/kvaser_usb_core.c
+++ b/drivers/net/can/usb/kvaser_usb/kvaser_usb_core.c
@@ -61,8 +61,6 @@
 #define USB_USBCAN_R_V2_PRODUCT_ID		294
 #define USB_LEAF_LIGHT_R_V2_PRODUCT_ID		295
 #define USB_LEAF_LIGHT_HS_V2_OEM2_PRODUCT_ID	296
-#define USB_LEAF_PRODUCT_ID_END \
-	USB_LEAF_LIGHT_HS_V2_OEM2_PRODUCT_ID
 
 /* Kvaser USBCan-II devices product ids */
 #define USB_USBCAN_REVB_PRODUCT_ID		2
@@ -89,116 +87,144 @@
 #define USB_USBCAN_PRO_4HS_PRODUCT_ID		276
 #define USB_HYBRID_CANLIN_PRODUCT_ID		277
 #define USB_HYBRID_PRO_CANLIN_PRODUCT_ID	278
-#define USB_HYDRA_PRODUCT_ID_END \
-	USB_HYBRID_PRO_CANLIN_PRODUCT_ID
 
-static inline bool kvaser_is_leaf(const struct usb_device_id *id)
-{
-	return (id->idProduct >= USB_LEAF_DEVEL_PRODUCT_ID &&
-		id->idProduct <= USB_CAN_R_PRODUCT_ID) ||
-		(id->idProduct >= USB_LEAF_LITE_V2_PRODUCT_ID &&
-		 id->idProduct <= USB_LEAF_PRODUCT_ID_END);
-}
+static const struct kvaser_usb_driver_info kvaser_usb_driver_info_hydra = {
+	.quirks = 0,
+	.ops = &kvaser_usb_hydra_dev_ops,
+};
 
-static inline bool kvaser_is_usbcan(const struct usb_device_id *id)
-{
-	return id->idProduct >= USB_USBCAN_REVB_PRODUCT_ID &&
-	       id->idProduct <= USB_MEMORATOR_PRODUCT_ID;
-}
+static const struct kvaser_usb_driver_info kvaser_usb_driver_info_usbcan = {
+	.quirks = KVASER_USB_QUIRK_HAS_TXRX_ERRORS |
+		  KVASER_USB_QUIRK_HAS_SILENT_MODE,
+	.family = KVASER_USBCAN,
+	.ops = &kvaser_usb_leaf_dev_ops,
+};
 
-static inline bool kvaser_is_hydra(const struct usb_device_id *id)
-{
-	return id->idProduct >= USB_BLACKBIRD_V2_PRODUCT_ID &&
-	       id->idProduct <= USB_HYDRA_PRODUCT_ID_END;
-}
+static const struct kvaser_usb_driver_info kvaser_usb_driver_info_leaf = {
+	.quirks = 0,
+	.family = KVASER_LEAF,
+	.ops = &kvaser_usb_leaf_dev_ops,
+};
+
+static const struct kvaser_usb_driver_info kvaser_usb_driver_info_leaf_err = {
+	.quirks = KVASER_USB_QUIRK_HAS_TXRX_ERRORS,
+	.family = KVASER_LEAF,
+	.ops = &kvaser_usb_leaf_dev_ops,
+};
+
+static const struct kvaser_usb_driver_info kvaser_usb_driver_info_leaf_err_listen = {
+	.quirks = KVASER_USB_QUIRK_HAS_TXRX_ERRORS |
+		  KVASER_USB_QUIRK_HAS_SILENT_MODE,
+	.family = KVASER_LEAF,
+	.ops = &kvaser_usb_leaf_dev_ops,
+};
 
 static const struct usb_device_id kvaser_usb_table[] = {
 	/* Leaf USB product IDs */
-	{ USB_DEVICE(KVASER_VENDOR_ID, USB_LEAF_DEVEL_PRODUCT_ID) },
-	{ USB_DEVICE(KVASER_VENDOR_ID, USB_LEAF_LITE_PRODUCT_ID) },
+	{ USB_DEVICE(KVASER_VENDOR_ID, USB_LEAF_DEVEL_PRODUCT_ID),
+		.driver_info = (kernel_ulong_t)&kvaser_usb_driver_info_leaf },
+	{ USB_DEVICE(KVASER_VENDOR_ID, USB_LEAF_LITE_PRODUCT_ID),
+		.driver_info = (kernel_ulong_t)&kvaser_usb_driver_info_leaf },
 	{ USB_DEVICE(KVASER_VENDOR_ID, USB_LEAF_PRO_PRODUCT_ID),
-		.driver_info = KVASER_USB_HAS_TXRX_ERRORS |
-			       KVASER_USB_HAS_SILENT_MODE },
+		.driver_info = (kernel_ulong_t)&kvaser_usb_driver_info_leaf_err_listen },
 	{ USB_DEVICE(KVASER_VENDOR_ID, USB_LEAF_SPRO_PRODUCT_ID),
-		.driver_info = KVASER_USB_HAS_TXRX_ERRORS |
-			       KVASER_USB_HAS_SILENT_MODE },
+		.driver_info = (kernel_ulong_t)&kvaser_usb_driver_info_leaf_err_listen },
 	{ USB_DEVICE(KVASER_VENDOR_ID, USB_LEAF_PRO_LS_PRODUCT_ID),
-		.driver_info = KVASER_USB_HAS_TXRX_ERRORS |
-			       KVASER_USB_HAS_SILENT_MODE },
+		.driver_info = (kernel_ulong_t)&kvaser_usb_driver_info_leaf_err_listen },
 	{ USB_DEVICE(KVASER_VENDOR_ID, USB_LEAF_PRO_SWC_PRODUCT_ID),
-		.driver_info = KVASER_USB_HAS_TXRX_ERRORS |
-			       KVASER_USB_HAS_SILENT_MODE },
+		.driver_info = (kernel_ulong_t)&kvaser_usb_driver_info_leaf_err_listen },
 	{ USB_DEVICE(KVASER_VENDOR_ID, USB_LEAF_PRO_LIN_PRODUCT_ID),
-		.driver_info = KVASER_USB_HAS_TXRX_ERRORS |
-			       KVASER_USB_HAS_SILENT_MODE },
+		.driver_info = (kernel_ulong_t)&kvaser_usb_driver_info_leaf_err_listen },
 	{ USB_DEVICE(KVASER_VENDOR_ID, USB_LEAF_SPRO_LS_PRODUCT_ID),
-		.driver_info = KVASER_USB_HAS_TXRX_ERRORS |
-			       KVASER_USB_HAS_SILENT_MODE },
+		.driver_info = (kernel_ulong_t)&kvaser_usb_driver_info_leaf_err_listen },
 	{ USB_DEVICE(KVASER_VENDOR_ID, USB_LEAF_SPRO_SWC_PRODUCT_ID),
-		.driver_info = KVASER_USB_HAS_TXRX_ERRORS |
-			       KVASER_USB_HAS_SILENT_MODE },
+		.driver_info = (kernel_ulong_t)&kvaser_usb_driver_info_leaf_err_listen },
 	{ USB_DEVICE(KVASER_VENDOR_ID, USB_MEMO2_DEVEL_PRODUCT_ID),
-		.driver_info = KVASER_USB_HAS_TXRX_ERRORS |
-			       KVASER_USB_HAS_SILENT_MODE },
+		.driver_info = (kernel_ulong_t)&kvaser_usb_driver_info_leaf_err_listen },
 	{ USB_DEVICE(KVASER_VENDOR_ID, USB_MEMO2_HSHS_PRODUCT_ID),
-		.driver_info = KVASER_USB_HAS_TXRX_ERRORS |
-			       KVASER_USB_HAS_SILENT_MODE },
+		.driver_info = (kernel_ulong_t)&kvaser_usb_driver_info_leaf_err_listen },
 	{ USB_DEVICE(KVASER_VENDOR_ID, USB_UPRO_HSHS_PRODUCT_ID),
-		.driver_info = KVASER_USB_HAS_TXRX_ERRORS },
-	{ USB_DEVICE(KVASER_VENDOR_ID, USB_LEAF_LITE_GI_PRODUCT_ID) },
+		.driver_info = (kernel_ulong_t)&kvaser_usb_driver_info_leaf_err },
+	{ USB_DEVICE(KVASER_VENDOR_ID, USB_LEAF_LITE_GI_PRODUCT_ID),
+		.driver_info = (kernel_ulong_t)&kvaser_usb_driver_info_leaf },
 	{ USB_DEVICE(KVASER_VENDOR_ID, USB_LEAF_PRO_OBDII_PRODUCT_ID),
-		.driver_info = KVASER_USB_HAS_TXRX_ERRORS |
-			       KVASER_USB_HAS_SILENT_MODE },
+		.driver_info = (kernel_ulong_t)&kvaser_usb_driver_info_leaf_err_listen },
 	{ USB_DEVICE(KVASER_VENDOR_ID, USB_MEMO2_HSLS_PRODUCT_ID),
-		.driver_info = KVASER_USB_HAS_TXRX_ERRORS },
+		.driver_info = (kernel_ulong_t)&kvaser_usb_driver_info_leaf_err },
 	{ USB_DEVICE(KVASER_VENDOR_ID, USB_LEAF_LITE_CH_PRODUCT_ID),
-		.driver_info = KVASER_USB_HAS_TXRX_ERRORS },
+		.driver_info = (kernel_ulong_t)&kvaser_usb_driver_info_leaf_err },
 	{ USB_DEVICE(KVASER_VENDOR_ID, USB_BLACKBIRD_SPRO_PRODUCT_ID),
-		.driver_info = KVASER_USB_HAS_TXRX_ERRORS },
+		.driver_info = (kernel_ulong_t)&kvaser_usb_driver_info_leaf_err },
 	{ USB_DEVICE(KVASER_VENDOR_ID, USB_OEM_MERCURY_PRODUCT_ID),
-		.driver_info = KVASER_USB_HAS_TXRX_ERRORS },
+		.driver_info = (kernel_ulong_t)&kvaser_usb_driver_info_leaf_err },
 	{ USB_DEVICE(KVASER_VENDOR_ID, USB_OEM_LEAF_PRODUCT_ID),
-		.driver_info = KVASER_USB_HAS_TXRX_ERRORS },
+		.driver_info = (kernel_ulong_t)&kvaser_usb_driver_info_leaf_err },
 	{ USB_DEVICE(KVASER_VENDOR_ID, USB_CAN_R_PRODUCT_ID),
-		.driver_info = KVASER_USB_HAS_TXRX_ERRORS },
-	{ USB_DEVICE(KVASER_VENDOR_ID, USB_LEAF_LITE_V2_PRODUCT_ID) },
-	{ USB_DEVICE(KVASER_VENDOR_ID, USB_MINI_PCIE_HS_PRODUCT_ID) },
-	{ USB_DEVICE(KVASER_VENDOR_ID, USB_LEAF_LIGHT_HS_V2_OEM_PRODUCT_ID) },
-	{ USB_DEVICE(KVASER_VENDOR_ID, USB_USBCAN_LIGHT_2HS_PRODUCT_ID) },
-	{ USB_DEVICE(KVASER_VENDOR_ID, USB_MINI_PCIE_2HS_PRODUCT_ID) },
-	{ USB_DEVICE(KVASER_VENDOR_ID, USB_USBCAN_R_V2_PRODUCT_ID) },
-	{ USB_DEVICE(KVASER_VENDOR_ID, USB_LEAF_LIGHT_R_V2_PRODUCT_ID) },
-	{ USB_DEVICE(KVASER_VENDOR_ID, USB_LEAF_LIGHT_HS_V2_OEM2_PRODUCT_ID) },
+		.driver_info = (kernel_ulong_t)&kvaser_usb_driver_info_leaf_err },
+	{ USB_DEVICE(KVASER_VENDOR_ID, USB_LEAF_LITE_V2_PRODUCT_ID),
+		.driver_info = (kernel_ulong_t)&kvaser_usb_driver_info_leaf },
+	{ USB_DEVICE(KVASER_VENDOR_ID, USB_MINI_PCIE_HS_PRODUCT_ID),
+		.driver_info = (kernel_ulong_t)&kvaser_usb_driver_info_leaf },
+	{ USB_DEVICE(KVASER_VENDOR_ID, USB_LEAF_LIGHT_HS_V2_OEM_PRODUCT_ID),
+		.driver_info = (kernel_ulong_t)&kvaser_usb_driver_info_leaf },
+	{ USB_DEVICE(KVASER_VENDOR_ID, USB_USBCAN_LIGHT_2HS_PRODUCT_ID),
+		.driver_info = (kernel_ulong_t)&kvaser_usb_driver_info_leaf },
+	{ USB_DEVICE(KVASER_VENDOR_ID, USB_MINI_PCIE_2HS_PRODUCT_ID),
+		.driver_info = (kernel_ulong_t)&kvaser_usb_driver_info_leaf },
+	{ USB_DEVICE(KVASER_VENDOR_ID, USB_USBCAN_R_V2_PRODUCT_ID),
+		.driver_info = (kernel_ulong_t)&kvaser_usb_driver_info_leaf },
+	{ USB_DEVICE(KVASER_VENDOR_ID, USB_LEAF_LIGHT_R_V2_PRODUCT_ID),
+		.driver_info = (kernel_ulong_t)&kvaser_usb_driver_info_leaf },
+	{ USB_DEVICE(KVASER_VENDOR_ID, USB_LEAF_LIGHT_HS_V2_OEM2_PRODUCT_ID),
+		.driver_info = (kernel_ulong_t)&kvaser_usb_driver_info_leaf },
 
 	/* USBCANII USB product IDs */
 	{ USB_DEVICE(KVASER_VENDOR_ID, USB_USBCAN2_PRODUCT_ID),
-		.driver_info = KVASER_USB_HAS_TXRX_ERRORS },
+		.driver_info = (kernel_ulong_t)&kvaser_usb_driver_info_usbcan },
 	{ USB_DEVICE(KVASER_VENDOR_ID, USB_USBCAN_REVB_PRODUCT_ID),
-		.driver_info = KVASER_USB_HAS_TXRX_ERRORS },
+		.driver_info = (kernel_ulong_t)&kvaser_usb_driver_info_usbcan },
 	{ USB_DEVICE(KVASER_VENDOR_ID, USB_MEMORATOR_PRODUCT_ID),
-		.driver_info = KVASER_USB_HAS_TXRX_ERRORS },
+		.driver_info = (kernel_ulong_t)&kvaser_usb_driver_info_usbcan },
 	{ USB_DEVICE(KVASER_VENDOR_ID, USB_VCI2_PRODUCT_ID),
-		.driver_info = KVASER_USB_HAS_TXRX_ERRORS },
+		.driver_info = (kernel_ulong_t)&kvaser_usb_driver_info_usbcan },
 
 	/* Minihydra USB product IDs */
-	{ USB_DEVICE(KVASER_VENDOR_ID, USB_BLACKBIRD_V2_PRODUCT_ID) },
-	{ USB_DEVICE(KVASER_VENDOR_ID, USB_MEMO_PRO_5HS_PRODUCT_ID) },
-	{ USB_DEVICE(KVASER_VENDOR_ID, USB_USBCAN_PRO_5HS_PRODUCT_ID) },
-	{ USB_DEVICE(KVASER_VENDOR_ID, USB_USBCAN_LIGHT_4HS_PRODUCT_ID) },
-	{ USB_DEVICE(KVASER_VENDOR_ID, USB_LEAF_PRO_HS_V2_PRODUCT_ID) },
-	{ USB_DEVICE(KVASER_VENDOR_ID, USB_USBCAN_PRO_2HS_V2_PRODUCT_ID) },
-	{ USB_DEVICE(KVASER_VENDOR_ID, USB_MEMO_2HS_PRODUCT_ID) },
-	{ USB_DEVICE(KVASER_VENDOR_ID, USB_MEMO_PRO_2HS_V2_PRODUCT_ID) },
-	{ USB_DEVICE(KVASER_VENDOR_ID, USB_HYBRID_2CANLIN_PRODUCT_ID) },
-	{ USB_DEVICE(KVASER_VENDOR_ID, USB_ATI_USBCAN_PRO_2HS_V2_PRODUCT_ID) },
-	{ USB_DEVICE(KVASER_VENDOR_ID, USB_ATI_MEMO_PRO_2HS_V2_PRODUCT_ID) },
-	{ USB_DEVICE(KVASER_VENDOR_ID, USB_HYBRID_PRO_2CANLIN_PRODUCT_ID) },
-	{ USB_DEVICE(KVASER_VENDOR_ID, USB_U100_PRODUCT_ID) },
-	{ USB_DEVICE(KVASER_VENDOR_ID, USB_U100P_PRODUCT_ID) },
-	{ USB_DEVICE(KVASER_VENDOR_ID, USB_U100S_PRODUCT_ID) },
-	{ USB_DEVICE(KVASER_VENDOR_ID, USB_USBCAN_PRO_4HS_PRODUCT_ID) },
-	{ USB_DEVICE(KVASER_VENDOR_ID, USB_HYBRID_CANLIN_PRODUCT_ID) },
-	{ USB_DEVICE(KVASER_VENDOR_ID, USB_HYBRID_PRO_CANLIN_PRODUCT_ID) },
+	{ USB_DEVICE(KVASER_VENDOR_ID, USB_BLACKBIRD_V2_PRODUCT_ID),
+		.driver_info = (kernel_ulong_t)&kvaser_usb_driver_info_hydra },
+	{ USB_DEVICE(KVASER_VENDOR_ID, USB_MEMO_PRO_5HS_PRODUCT_ID),
+		.driver_info = (kernel_ulong_t)&kvaser_usb_driver_info_hydra },
+	{ USB_DEVICE(KVASER_VENDOR_ID, USB_USBCAN_PRO_5HS_PRODUCT_ID),
+		.driver_info = (kernel_ulong_t)&kvaser_usb_driver_info_hydra },
+	{ USB_DEVICE(KVASER_VENDOR_ID, USB_USBCAN_LIGHT_4HS_PRODUCT_ID),
+		.driver_info = (kernel_ulong_t)&kvaser_usb_driver_info_hydra },
+	{ USB_DEVICE(KVASER_VENDOR_ID, USB_LEAF_PRO_HS_V2_PRODUCT_ID),
+		.driver_info = (kernel_ulong_t)&kvaser_usb_driver_info_hydra },
+	{ USB_DEVICE(KVASER_VENDOR_ID, USB_USBCAN_PRO_2HS_V2_PRODUCT_ID),
+		.driver_info = (kernel_ulong_t)&kvaser_usb_driver_info_hydra },
+	{ USB_DEVICE(KVASER_VENDOR_ID, USB_MEMO_2HS_PRODUCT_ID),
+		.driver_info = (kernel_ulong_t)&kvaser_usb_driver_info_hydra },
+	{ USB_DEVICE(KVASER_VENDOR_ID, USB_MEMO_PRO_2HS_V2_PRODUCT_ID),
+		.driver_info = (kernel_ulong_t)&kvaser_usb_driver_info_hydra },
+	{ USB_DEVICE(KVASER_VENDOR_ID, USB_HYBRID_2CANLIN_PRODUCT_ID),
+		.driver_info = (kernel_ulong_t)&kvaser_usb_driver_info_hydra },
+	{ USB_DEVICE(KVASER_VENDOR_ID, USB_ATI_USBCAN_PRO_2HS_V2_PRODUCT_ID),
+		.driver_info = (kernel_ulong_t)&kvaser_usb_driver_info_hydra },
+	{ USB_DEVICE(KVASER_VENDOR_ID, USB_ATI_MEMO_PRO_2HS_V2_PRODUCT_ID),
+		.driver_info = (kernel_ulong_t)&kvaser_usb_driver_info_hydra },
+	{ USB_DEVICE(KVASER_VENDOR_ID, USB_HYBRID_PRO_2CANLIN_PRODUCT_ID),
+		.driver_info = (kernel_ulong_t)&kvaser_usb_driver_info_hydra },
+	{ USB_DEVICE(KVASER_VENDOR_ID, USB_U100_PRODUCT_ID),
+		.driver_info = (kernel_ulong_t)&kvaser_usb_driver_info_hydra },
+	{ USB_DEVICE(KVASER_VENDOR_ID, USB_U100P_PRODUCT_ID),
+		.driver_info = (kernel_ulong_t)&kvaser_usb_driver_info_hydra },
+	{ USB_DEVICE(KVASER_VENDOR_ID, USB_U100S_PRODUCT_ID),
+		.driver_info = (kernel_ulong_t)&kvaser_usb_driver_info_hydra },
+	{ USB_DEVICE(KVASER_VENDOR_ID, USB_USBCAN_PRO_4HS_PRODUCT_ID),
+		.driver_info = (kernel_ulong_t)&kvaser_usb_driver_info_hydra },
+	{ USB_DEVICE(KVASER_VENDOR_ID, USB_HYBRID_CANLIN_PRODUCT_ID),
+		.driver_info = (kernel_ulong_t)&kvaser_usb_driver_info_hydra },
+	{ USB_DEVICE(KVASER_VENDOR_ID, USB_HYBRID_PRO_CANLIN_PRODUCT_ID),
+		.driver_info = (kernel_ulong_t)&kvaser_usb_driver_info_hydra },
 	{ }
 };
 MODULE_DEVICE_TABLE(usb, kvaser_usb_table);
@@ -289,6 +315,7 @@ int kvaser_usb_can_rx_over_error(struct
 static void kvaser_usb_read_bulk_callback(struct urb *urb)
 {
 	struct kvaser_usb *dev = urb->context;
+	const struct kvaser_usb_dev_ops *ops = dev->driver_info->ops;
 	int err;
 	unsigned int i;
 
@@ -305,8 +332,8 @@ static void kvaser_usb_read_bulk_callbac
 		goto resubmit_urb;
 	}
 
-	dev->ops->dev_read_bulk_callback(dev, urb->transfer_buffer,
-					 urb->actual_length);
+	ops->dev_read_bulk_callback(dev, urb->transfer_buffer,
+				    urb->actual_length);
 
 resubmit_urb:
 	usb_fill_bulk_urb(urb, dev->udev,
@@ -400,6 +427,7 @@ static int kvaser_usb_open(struct net_de
 {
 	struct kvaser_usb_net_priv *priv = netdev_priv(netdev);
 	struct kvaser_usb *dev = priv->dev;
+	const struct kvaser_usb_dev_ops *ops = dev->driver_info->ops;
 	int err;
 
 	err = open_candev(netdev);
@@ -410,11 +438,11 @@ static int kvaser_usb_open(struct net_de
 	if (err)
 		goto error;
 
-	err = dev->ops->dev_set_opt_mode(priv);
+	err = ops->dev_set_opt_mode(priv);
 	if (err)
 		goto error;
 
-	err = dev->ops->dev_start_chip(priv);
+	err = ops->dev_start_chip(priv);
 	if (err) {
 		netdev_warn(netdev, "Cannot start device, error %d\n", err);
 		goto error;
@@ -471,22 +499,23 @@ static int kvaser_usb_close(struct net_d
 {
 	struct kvaser_usb_net_priv *priv = netdev_priv(netdev);
 	struct kvaser_usb *dev = priv->dev;
+	const struct kvaser_usb_dev_ops *ops = dev->driver_info->ops;
 	int err;
 
 	netif_stop_queue(netdev);
 
-	err = dev->ops->dev_flush_queue(priv);
+	err = ops->dev_flush_queue(priv);
 	if (err)
 		netdev_warn(netdev, "Cannot flush queue, error %d\n", err);
 
-	if (dev->ops->dev_reset_chip) {
-		err = dev->ops->dev_reset_chip(dev, priv->channel);
+	if (ops->dev_reset_chip) {
+		err = ops->dev_reset_chip(dev, priv->channel);
 		if (err)
 			netdev_warn(netdev, "Cannot reset card, error %d\n",
 				    err);
 	}
 
-	err = dev->ops->dev_stop_chip(priv);
+	err = ops->dev_stop_chip(priv);
 	if (err)
 		netdev_warn(netdev, "Cannot stop device, error %d\n", err);
 
@@ -525,6 +554,7 @@ static netdev_tx_t kvaser_usb_start_xmit
 {
 	struct kvaser_usb_net_priv *priv = netdev_priv(netdev);
 	struct kvaser_usb *dev = priv->dev;
+	const struct kvaser_usb_dev_ops *ops = dev->driver_info->ops;
 	struct net_device_stats *stats = &netdev->stats;
 	struct kvaser_usb_tx_urb_context *context = NULL;
 	struct urb *urb;
@@ -567,8 +597,8 @@ static netdev_tx_t kvaser_usb_start_xmit
 		goto freeurb;
 	}
 
-	buf = dev->ops->dev_frame_to_cmd(priv, skb, &context->dlc, &cmd_len,
-					 context->echo_index);
+	buf = ops->dev_frame_to_cmd(priv, skb, &context->dlc, &cmd_len,
+				    context->echo_index);
 	if (!buf) {
 		stats->tx_dropped++;
 		dev_kfree_skb(skb);
@@ -652,15 +682,16 @@ static void kvaser_usb_remove_interfaces
 	}
 }
 
-static int kvaser_usb_init_one(struct kvaser_usb *dev,
-			       const struct usb_device_id *id, int channel)
+static int kvaser_usb_init_one(struct kvaser_usb *dev, int channel)
 {
 	struct net_device *netdev;
 	struct kvaser_usb_net_priv *priv;
+	const struct kvaser_usb_driver_info *driver_info = dev->driver_info;
+	const struct kvaser_usb_dev_ops *ops = driver_info->ops;
 	int err;
 
-	if (dev->ops->dev_reset_chip) {
-		err = dev->ops->dev_reset_chip(dev, channel);
+	if (ops->dev_reset_chip) {
+		err = ops->dev_reset_chip(dev, channel);
 		if (err)
 			return err;
 	}
@@ -689,20 +720,19 @@ static int kvaser_usb_init_one(struct kv
 	priv->can.state = CAN_STATE_STOPPED;
 	priv->can.clock.freq = dev->cfg->clock.freq;
 	priv->can.bittiming_const = dev->cfg->bittiming_const;
-	priv->can.do_set_bittiming = dev->ops->dev_set_bittiming;
-	priv->can.do_set_mode = dev->ops->dev_set_mode;
-	if ((id->driver_info & KVASER_USB_HAS_TXRX_ERRORS) ||
+	priv->can.do_set_bittiming = ops->dev_set_bittiming;
+	priv->can.do_set_mode = ops->dev_set_mode;
+	if ((driver_info->quirks & KVASER_USB_QUIRK_HAS_TXRX_ERRORS) ||
 	    (priv->dev->card_data.capabilities & KVASER_USB_CAP_BERR_CAP))
-		priv->can.do_get_berr_counter = dev->ops->dev_get_berr_counter;
-	if (id->driver_info & KVASER_USB_HAS_SILENT_MODE)
+		priv->can.do_get_berr_counter = ops->dev_get_berr_counter;
+	if (driver_info->quirks & KVASER_USB_QUIRK_HAS_SILENT_MODE)
 		priv->can.ctrlmode_supported |= CAN_CTRLMODE_LISTENONLY;
 
 	priv->can.ctrlmode_supported |= dev->card_data.ctrlmode_supported;
 
 	if (priv->can.ctrlmode_supported & CAN_CTRLMODE_FD) {
 		priv->can.data_bittiming_const = dev->cfg->data_bittiming_const;
-		priv->can.do_set_data_bittiming =
-					dev->ops->dev_set_data_bittiming;
+		priv->can.do_set_data_bittiming = ops->dev_set_data_bittiming;
 	}
 
 	netdev->flags |= IFF_ECHO;
@@ -733,29 +763,22 @@ static int kvaser_usb_probe(struct usb_i
 	struct kvaser_usb *dev;
 	int err;
 	int i;
+	const struct kvaser_usb_driver_info *driver_info;
+	const struct kvaser_usb_dev_ops *ops;
+
+	driver_info = (const struct kvaser_usb_driver_info *)id->driver_info;
+	if (!driver_info)
+		return -ENODEV;
 
 	dev = devm_kzalloc(&intf->dev, sizeof(*dev), GFP_KERNEL);
 	if (!dev)
 		return -ENOMEM;
 
-	if (kvaser_is_leaf(id)) {
-		dev->card_data.leaf.family = KVASER_LEAF;
-		dev->ops = &kvaser_usb_leaf_dev_ops;
-	} else if (kvaser_is_usbcan(id)) {
-		dev->card_data.leaf.family = KVASER_USBCAN;
-		dev->ops = &kvaser_usb_leaf_dev_ops;
-	} else if (kvaser_is_hydra(id)) {
-		dev->ops = &kvaser_usb_hydra_dev_ops;
-	} else {
-		dev_err(&intf->dev,
-			"Product ID (%d) is not a supported Kvaser USB device\n",
-			id->idProduct);
-		return -ENODEV;
-	}
-
 	dev->intf = intf;
+	dev->driver_info = driver_info;
+	ops = driver_info->ops;
 
-	err = dev->ops->dev_setup_endpoints(dev);
+	err = ops->dev_setup_endpoints(dev);
 	if (err) {
 		dev_err(&intf->dev, "Cannot get usb endpoint(s)");
 		return err;
@@ -769,22 +792,22 @@ static int kvaser_usb_probe(struct usb_i
 
 	dev->card_data.ctrlmode_supported = 0;
 	dev->card_data.capabilities = 0;
-	err = dev->ops->dev_init_card(dev);
+	err = ops->dev_init_card(dev);
 	if (err) {
 		dev_err(&intf->dev,
 			"Failed to initialize card, error %d\n", err);
 		return err;
 	}
 
-	err = dev->ops->dev_get_software_info(dev);
+	err = ops->dev_get_software_info(dev);
 	if (err) {
 		dev_err(&intf->dev,
 			"Cannot get software info, error %d\n", err);
 		return err;
 	}
 
-	if (dev->ops->dev_get_software_details) {
-		err = dev->ops->dev_get_software_details(dev);
+	if (ops->dev_get_software_details) {
+		err = ops->dev_get_software_details(dev);
 		if (err) {
 			dev_err(&intf->dev,
 				"Cannot get software details, error %d\n", err);
@@ -802,14 +825,14 @@ static int kvaser_usb_probe(struct usb_i
 
 	dev_dbg(&intf->dev, "Max outstanding tx = %d URBs\n", dev->max_tx_urbs);
 
-	err = dev->ops->dev_get_card_info(dev);
+	err = ops->dev_get_card_info(dev);
 	if (err) {
 		dev_err(&intf->dev, "Cannot get card info, error %d\n", err);
 		return err;
 	}
 
-	if (dev->ops->dev_get_capabilities) {
-		err = dev->ops->dev_get_capabilities(dev);
+	if (ops->dev_get_capabilities) {
+		err = ops->dev_get_capabilities(dev);
 		if (err) {
 			dev_err(&intf->dev,
 				"Cannot get capabilities, error %d\n", err);
@@ -819,7 +842,7 @@ static int kvaser_usb_probe(struct usb_i
 	}
 
 	for (i = 0; i < dev->nchannels; i++) {
-		err = kvaser_usb_init_one(dev, id, i);
+		err = kvaser_usb_init_one(dev, i);
 		if (err) {
 			kvaser_usb_remove_interfaces(dev);
 			return err;
--- a/drivers/net/can/usb/kvaser_usb/kvaser_usb_leaf.c
+++ b/drivers/net/can/usb/kvaser_usb/kvaser_usb_leaf.c
@@ -405,7 +405,7 @@ kvaser_usb_leaf_frame_to_cmd(const struc
 				      sizeof(struct kvaser_cmd_tx_can);
 		cmd->u.tx_can.channel = priv->channel;
 
-		switch (dev->card_data.leaf.family) {
+		switch (dev->driver_info->family) {
 		case KVASER_LEAF:
 			cmd_tx_can_flags = &cmd->u.tx_can.leaf.flags;
 			break;
@@ -551,7 +551,7 @@ static int kvaser_usb_leaf_get_software_
 	if (err)
 		return err;
 
-	switch (dev->card_data.leaf.family) {
+	switch (dev->driver_info->family) {
 	case KVASER_LEAF:
 		kvaser_usb_leaf_get_software_info_leaf(dev, &cmd.u.leaf.softinfo);
 		break;
@@ -598,7 +598,7 @@ static int kvaser_usb_leaf_get_card_info
 
 	dev->nchannels = cmd.u.cardinfo.nchannels;
 	if (dev->nchannels > KVASER_USB_MAX_NET_DEVICES ||
-	    (dev->card_data.leaf.family == KVASER_USBCAN &&
+	    (dev->driver_info->family == KVASER_USBCAN &&
 	     dev->nchannels > MAX_USBCAN_NET_DEVICES))
 		return -EINVAL;
 
@@ -734,7 +734,7 @@ kvaser_usb_leaf_rx_error_update_can_stat
 	    new_state < CAN_STATE_BUS_OFF)
 		priv->can.can_stats.restarts++;
 
-	switch (dev->card_data.leaf.family) {
+	switch (dev->driver_info->family) {
 	case KVASER_LEAF:
 		if (es->leaf.error_factor) {
 			priv->can.can_stats.bus_error++;
@@ -813,7 +813,7 @@ static void kvaser_usb_leaf_rx_error(con
 		}
 	}
 
-	switch (dev->card_data.leaf.family) {
+	switch (dev->driver_info->family) {
 	case KVASER_LEAF:
 		if (es->leaf.error_factor) {
 			cf->can_id |= CAN_ERR_BUSERROR | CAN_ERR_PROT;
@@ -1005,7 +1005,7 @@ static void kvaser_usb_leaf_rx_can_msg(c
 	stats = &priv->netdev->stats;
 
 	if ((cmd->u.rx_can_header.flag & MSG_FLAG_ERROR_FRAME) &&
-	    (dev->card_data.leaf.family == KVASER_LEAF &&
+	    (dev->driver_info->family == KVASER_LEAF &&
 	     cmd->id == CMD_LEAF_LOG_MESSAGE)) {
 		kvaser_usb_leaf_leaf_rx_error(dev, cmd);
 		return;
@@ -1021,7 +1021,7 @@ static void kvaser_usb_leaf_rx_can_msg(c
 		return;
 	}
 
-	switch (dev->card_data.leaf.family) {
+	switch (dev->driver_info->family) {
 	case KVASER_LEAF:
 		rx_data = cmd->u.leaf.rx_can.data;
 		break;
@@ -1036,7 +1036,7 @@ static void kvaser_usb_leaf_rx_can_msg(c
 		return;
 	}
 
-	if (dev->card_data.leaf.family == KVASER_LEAF && cmd->id ==
+	if (dev->driver_info->family == KVASER_LEAF && cmd->id ==
 	    CMD_LEAF_LOG_MESSAGE) {
 		cf->can_id = le32_to_cpu(cmd->u.leaf.log_message.id);
 		if (cf->can_id & KVASER_EXTENDED_FRAME)
@@ -1133,14 +1133,14 @@ static void kvaser_usb_leaf_handle_comma
 		break;
 
 	case CMD_LEAF_LOG_MESSAGE:
-		if (dev->card_data.leaf.family != KVASER_LEAF)
+		if (dev->driver_info->family != KVASER_LEAF)
 			goto warn;
 		kvaser_usb_leaf_rx_can_msg(dev, cmd);
 		break;
 
 	case CMD_CHIP_STATE_EVENT:
 	case CMD_CAN_ERROR_EVENT:
-		if (dev->card_data.leaf.family == KVASER_LEAF)
+		if (dev->driver_info->family == KVASER_LEAF)
 			kvaser_usb_leaf_leaf_rx_error(dev, cmd);
 		else
 			kvaser_usb_leaf_usbcan_rx_error(dev, cmd);
@@ -1152,12 +1152,12 @@ static void kvaser_usb_leaf_handle_comma
 
 	/* Ignored commands */
 	case CMD_USBCAN_CLOCK_OVERFLOW_EVENT:
-		if (dev->card_data.leaf.family != KVASER_USBCAN)
+		if (dev->driver_info->family != KVASER_USBCAN)
 			goto warn;
 		break;
 
 	case CMD_FLUSH_QUEUE_REPLY:
-		if (dev->card_data.leaf.family != KVASER_LEAF)
+		if (dev->driver_info->family != KVASER_LEAF)
 			goto warn;
 		break;
 



  parent reply	other threads:[~2022-07-11  9:57 UTC|newest]

Thread overview: 244+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-11  9:04 [PATCH 5.15 000/230] 5.15.54-rc1 review Greg Kroah-Hartman
2022-07-11  9:04 ` [PATCH 5.15 001/230] mm/slub: add missing TID updates on slab deactivation Greg Kroah-Hartman
2022-07-11  9:04 ` [PATCH 5.15 002/230] mm/filemap: fix UAF in find_lock_entries Greg Kroah-Hartman
2022-07-11  9:04 ` [PATCH 5.15 003/230] Revert "selftests/bpf: Add test for bpf_timer overwriting crash" Greg Kroah-Hartman
2022-07-11  9:04 ` [PATCH 5.15 004/230] ALSA: usb-audio: Workarounds for Behringer UMC 204/404 HD Greg Kroah-Hartman
2022-07-11  9:04 ` [PATCH 5.15 005/230] ALSA: hda/realtek: Add quirk for Clevo L140PU Greg Kroah-Hartman
2022-07-11  9:04 ` [PATCH 5.15 006/230] ALSA: cs46xx: Fix missing snd_card_free() call at probe error Greg Kroah-Hartman
2022-07-11  9:04 ` [PATCH 5.15 007/230] can: bcm: use call_rcu() instead of costly synchronize_rcu() Greg Kroah-Hartman
2022-07-11  9:04 ` [PATCH 5.15 008/230] can: grcan: grcan_probe(): remove extra of_node_get() Greg Kroah-Hartman
2022-07-11  9:04 ` [PATCH 5.15 009/230] can: gs_usb: gs_usb_open/close(): fix memory leak Greg Kroah-Hartman
2022-07-11  9:04 ` [PATCH 5.15 010/230] can: m_can: m_can_chip_config(): actually enable internal timestamping Greg Kroah-Hartman
2022-07-11  9:04 ` [PATCH 5.15 011/230] can: m_can: m_can_{read_fifo,echo_tx_event}(): shift timestamp to full 32 bits Greg Kroah-Hartman
2022-07-11  9:04 ` [PATCH 5.15 012/230] can: mcp251xfd: mcp251xfd_regmap_crc_read(): improve workaround handling for mcp2517fd Greg Kroah-Hartman
2022-07-11  9:04 ` [PATCH 5.15 013/230] can: mcp251xfd: mcp251xfd_regmap_crc_read(): update workaround broken CRC on TBC register Greg Kroah-Hartman
2022-07-11  9:04 ` [PATCH 5.15 014/230] bpf: Fix incorrect verifier simulation around jmp32s jeq/jne Greg Kroah-Hartman
2022-07-11  9:04 ` [PATCH 5.15 015/230] bpf: Fix insufficient bounds propagation from adjust_scalar_min_max_vals Greg Kroah-Hartman
2022-07-11  9:04 ` [PATCH 5.15 016/230] usbnet: fix memory leak in error case Greg Kroah-Hartman
2022-07-11  9:04 ` [PATCH 5.15 017/230] net: rose: fix UAF bug caused by rose_t0timer_expiry Greg Kroah-Hartman
2022-07-11  9:04 ` [PATCH 5.15 018/230] netfilter: nft_set_pipapo: release elements in clone from abort path Greg Kroah-Hartman
2022-07-11  9:04 ` [PATCH 5.15 019/230] netfilter: nf_tables: stricter validation of element data Greg Kroah-Hartman
2022-07-11  9:04 ` [PATCH 5.15 020/230] btrfs: rename btrfs_alloc_chunk to btrfs_create_chunk Greg Kroah-Hartman
2022-07-11  9:04 ` [PATCH 5.15 021/230] btrfs: add additional parameters to btrfs_init_tree_ref/btrfs_init_data_ref Greg Kroah-Hartman
2022-07-11  9:04 ` [PATCH 5.15 022/230] btrfs: fix invalid delayed ref after subvolume creation failure Greg Kroah-Hartman
2022-07-11  9:04 ` [PATCH 5.15 023/230] btrfs: fix warning when freeing leaf " Greg Kroah-Hartman
2022-07-11  9:04 ` [PATCH 5.15 024/230] Input: cpcap-pwrbutton - handle errors from platform_get_irq() Greg Kroah-Hartman
2022-07-11  9:04 ` [PATCH 5.15 025/230] Input: goodix - change goodix_i2c_write() len parameter type to int Greg Kroah-Hartman
2022-07-11  9:04 ` [PATCH 5.15 026/230] Input: goodix - add a goodix.h header file Greg Kroah-Hartman
2022-07-11  9:04 ` [PATCH 5.15 027/230] Input: goodix - refactor reset handling Greg Kroah-Hartman
2022-07-11  9:04 ` [PATCH 5.15 028/230] Input: goodix - try not to touch the reset-pin on x86/ACPI devices Greg Kroah-Hartman
2022-07-11  9:04 ` [PATCH 5.15 029/230] dma-buf/poll: Get a file reference for outstanding fence callbacks Greg Kroah-Hartman
2022-07-11  9:04 ` [PATCH 5.15 030/230] btrfs: fix deadlock between chunk allocation and chunk btree modifications Greg Kroah-Hartman
2022-07-11  9:04 ` [PATCH 5.15 031/230] drm/i915: Disable bonding on gen12+ platforms Greg Kroah-Hartman
2022-07-11  9:04 ` [PATCH 5.15 032/230] drm/i915/gt: Register the migrate contexts with their engines Greg Kroah-Hartman
2022-07-11  9:04 ` [PATCH 5.15 033/230] drm/i915: Replace the unconditional clflush with drm_clflush_virt_range() Greg Kroah-Hartman
2022-07-11  9:04 ` [PATCH 5.15 034/230] PCI/portdrv: Rename pm_iter() to pcie_port_device_iter() Greg Kroah-Hartman
2022-07-11  9:04 ` [PATCH 5.15 035/230] PCI: pciehp: Ignore Link Down/Up caused by error-induced Hot Reset Greg Kroah-Hartman
2022-07-11  9:04 ` [PATCH 5.15 036/230] media: ir_toy: prevent device from hanging during transmit Greg Kroah-Hartman
2022-07-11  9:04 ` [PATCH 5.15 037/230] memory: renesas-rpc-if: Avoid unaligned bus access for HyperFlash Greg Kroah-Hartman
2022-07-11  9:04 ` [PATCH 5.15 038/230] ath11k: add hw_param for wakeup_mhi Greg Kroah-Hartman
2022-07-11  9:04 ` [PATCH 5.15 039/230] qed: Improve the stack space of filter_config() Greg Kroah-Hartman
2022-07-11  9:04 ` [PATCH 5.15 040/230] platform/x86: wmi: introduce helper to convert driver to WMI driver Greg Kroah-Hartman
2022-07-11  9:04 ` [PATCH 5.15 041/230] platform/x86: wmi: Replace read_takes_no_args with a flags field Greg Kroah-Hartman
2022-07-11  9:04 ` [PATCH 5.15 042/230] platform/x86: wmi: Fix driver->notify() vs ->probe() race Greg Kroah-Hartman
2022-07-11  9:04 ` [PATCH 5.15 043/230] mt76: mt7921: get rid of mt7921_mac_set_beacon_filter Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 044/230] mt76: mt7921: introduce mt7921_mcu_set_beacon_filter utility routine Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 045/230] mt76: mt7921: fix a possible race enabling/disabling runtime-pm Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 046/230] bpf, arm64: Use emit_addr_mov_i64() for BPF_PSEUDO_FUNC Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 047/230] riscv: defconfig: enable DRM_NOUVEAU Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 048/230] RISC-V: defconfigs: Set CONFIG_FB=y, for FB console Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 049/230] net/mlx5e: Check action fwd/drop flag exists also for nic flows Greg Kroah-Hartman
2023-01-12 22:07   ` dann frazier
2023-01-14 13:49     ` Greg Kroah-Hartman
2023-01-15  8:10       ` Roi Dayan
2022-07-11  9:05 ` [PATCH 5.15 050/230] net/mlx5e: Split actions_match_supported() into a sub function Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 051/230] net/mlx5e: TC, Reject rules with drop and modify hdr action Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 052/230] net/mlx5e: TC, Reject rules with forward and drop actions Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 053/230] ASoC: rt5682: Avoid the unexpected IRQ event during going to suspend Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 054/230] ASoC: rt5682: Re-detect the combo jack after resuming Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 055/230] ASoC: rt5682: Fix deadlock on resume Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 056/230] netfilter: nf_tables: convert pktinfo->tprot_set to flags field Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 057/230] netfilter: nft_payload: support for inner header matching / mangling Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 058/230] netfilter: nft_payload: dont allow th access for fragments Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 059/230] s390/boot: allocate amode31 section in decompressor Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 060/230] s390/setup: use physical pointers for memblock_reserve() Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 061/230] s390/setup: preserve memory at OLDMEM_BASE and OLDMEM_SIZE Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 062/230] ibmvnic: init init_done_rc earlier Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 063/230] ibmvnic: clear fop when retrying probe Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 064/230] ibmvnic: Allow queueing resets during probe Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 065/230] virtio-blk: avoid preallocating big SGL for data Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 066/230] io_uring: ensure that fsnotify is always called Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 067/230] block: use bdev_get_queue() in bio.c Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 068/230] block: only mark bio as tracked if it really is tracked Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 069/230] block: fix rq-qos breakage from skipping rq_qos_done_bio() Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 070/230] stddef: Introduce struct_group() helper macro Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 071/230] media: omap3isp: Use struct_group() for memcpy() region Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 072/230] media: davinci: vpif: fix use-after-free on driver unbind Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 073/230] mt76: mt76_connac: fix MCU_CE_CMD_SET_ROC definition error Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 074/230] mt76: mt7921: do not always disable fw runtime-pm Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 075/230] cxl/port: Hold port reference until decoder release Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 076/230] clk: renesas: r9a07g044: Update multiplier and divider values for PLL2/3 Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 077/230] KVM: x86/mmu: Use yield-safe TDP MMU root iter in MMU notifier unmapping Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 078/230] KVM: x86/mmu: Use common TDP MMU zap helper for MMU notifier unmap hook Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 079/230] scsi: qla2xxx: Move heartbeat handling from DPC thread to workqueue Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 080/230] scsi: qla2xxx: Fix laggy FC remote port session recovery Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 081/230] scsi: qla2xxx: edif: Replace list_for_each_safe with list_for_each_entry_safe Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 082/230] scsi: qla2xxx: Fix crash during module load unload test Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 083/230] gfs2: Fix gfs2_file_buffered_write endless loop workaround Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 084/230] vdpa/mlx5: Avoid processing works if workqueue was destroyed Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 085/230] btrfs: handle device lookup with btrfs_dev_lookup_args Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 086/230] btrfs: add a btrfs_get_dev_args_from_path helper Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 087/230] btrfs: use btrfs_get_dev_args_from_path in dev removal ioctls Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 088/230] btrfs: remove device item and update super block in the same transaction Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 089/230] drbd: add error handling support for add_disk() Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 090/230] drbd: Fix double free problem in drbd_create_device Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 091/230] drbd: fix an invalid memory access caused by incorrect use of list iterator Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 092/230] drm/amd/display: Set min dcfclk if pipe count is 0 Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 093/230] drm/amd/display: Fix by adding FPU protection for dcn30_internal_validate_bw Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 094/230] NFSD: De-duplicate net_generic(nf->nf_net, nfsd_net_id) Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 095/230] NFSD: COMMIT operations must not return NFS?ERR_INVAL Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 096/230] riscv/mm: Add XIP_FIXUP for riscv_pfn_base Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 097/230] iio: accel: mma8452: use the correct logic to get mma8452_data Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 098/230] batman-adv: Use netif_rx() Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 099/230] mtd: spi-nor: Skip erase logic when SPI_NOR_NO_ERASE is set Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 100/230] Compiler Attributes: add __alloc_size() for better bounds checking Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 101/230] mm: vmalloc: introduce array allocation functions Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 102/230] KVM: use __vcalloc for very large allocations Greg Kroah-Hartman
2022-07-11  9:05 ` [PATCH 5.15 103/230] btrfs: dont access possibly stale fs_info data in device_list_add Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 104/230] KVM: s390x: fix SCK locking Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 105/230] scsi: qla2xxx: Fix loss of NVMe namespaces after driver reload test Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 106/230] powerpc/32: Dont use lmw/stmw for saving/restoring non volatile regs Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 107/230] powerpc: flexible GPR range save/restore macros Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 108/230] powerpc/tm: Fix more userspace r13 corruption Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 109/230] serial: sc16is7xx: Clear RS485 bits in the shutdown Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 110/230] bus: mhi: core: Use correctly sized arguments for bit field Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 111/230] bus: mhi: Fix pm_state conversion to string Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 112/230] stddef: Introduce DECLARE_FLEX_ARRAY() helper Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 113/230] uapi/linux/stddef.h: Add include guards Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 114/230] ASoC: rt5682: move clk related code to rt5682_i2c_probe Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 115/230] ASoC: rt5682: fix an incorrect NULL check on list iterator Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 116/230] drm/amd/vcn: fix an error msg on vcn 3.0 Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 117/230] KVM: Dont create VM debugfs files outside of the VM directory Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 118/230] tty: n_gsm: Modify CR,PF bit when config requester Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 119/230] tty: n_gsm: Save dlci address open status " Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 120/230] tty: n_gsm: fix frame reception handling Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 121/230] ALSA: usb-audio: add mapping for MSI MPG X570S Carbon Max Wifi Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 122/230] ALSA: usb-audio: add mapping for MSI MAG X570S Torpedo MAX Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 123/230] tty: n_gsm: fix missing update of modem controls after DLCI open Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 124/230] btrfs: zoned: encapsulate inode locking for zoned relocation Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 125/230] btrfs: zoned: use dedicated lock for data relocation Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 126/230] KVM: Initialize debugfs_dentry when a VM is created to avoid NULL deref Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 127/230] mm/hwpoison: mf_mutex for soft offline and unpoison Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 128/230] mm/hwpoison: avoid the impact of hwpoison_filter() return value on mce handler Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 129/230] mm/memory-failure.c: fix race with changing page compound again Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 130/230] mm/hwpoison: fix race between hugetlb free/demotion and memory_failure_hugetlb() Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 131/230] tty: n_gsm: fix invalid use of MSC in advanced option Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 132/230] tty: n_gsm: fix sometimes uninitialized warning in gsm_dlci_modem_output() Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 133/230] powerpc/vdso: Remove cvdso_call_time macro Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 134/230] powerpc/vdso: Move cvdso_call macro into gettimeofday.S Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 135/230] powerpc/vdso: Fix incorrect CFI in gettimeofday.S Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 136/230] serial: 8250_mtk: Make sure to select the right FEATURE_SEL Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 137/230] tty: n_gsm: fix invalid gsmtty_write_room() result Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 138/230] drm/amdgpu: bind to any 0x1002 PCI diplay class device Greg Kroah-Hartman
2022-07-11  9:29   ` Christian König
2022-07-11  9:37     ` Greg Kroah-Hartman
2022-07-11  9:50       ` Christian König
2022-07-11 14:01     ` Deucher, Alexander
2022-07-11 14:48       ` Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 139/230] drm/amdgpu: Fix rejecting Tahiti GPUs Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 140/230] drm/amdgpu: drop flags check for CHIP_IP_DISCOVERY Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 141/230] drm/amd: Refactor `amdgpu_aspm` to be evaluated per device Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 142/230] drm/amdgpu: vi: disable ASPM on Intel Alder Lake based systems Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 143/230] drm/i915: Fix a race between vma / object destruction and unbinding Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 144/230] drm/mediatek: Use mailbox rx_callback instead of cmdq_task_cb Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 145/230] drm/mediatek: Remove the pointer of struct cmdq_client Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 146/230] drm/mediatek: Detect CMDQ execution timeout Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 147/230] drm/mediatek: Add cmdq_handle in mtk_crtc Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 148/230] drm/mediatek: Add vblank register/unregister callback functions Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 149/230] Bluetooth: protect le accept and resolv lists with hdev->lock Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 150/230] Bluetooth: btmtksdio: fix use-after-free at btmtksdio_recv_event Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 151/230] io_uring: avoid io-wq -EAGAIN looping for !IOPOLL Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 152/230] irqchip/gic-v3: Ensure pseudo-NMIs have an ISB between ack and handling Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 153/230] rxrpc: Fix locking issue Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 154/230] dt-bindings: soc: qcom: smd-rpm: Add compatible for MSM8953 SoC Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 155/230] dt-bindings: soc: qcom: smd-rpm: Fix missing MSM8936 compatible Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 156/230] module: change to print useful messages from elf_validity_check() Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 157/230] module: fix [e_shstrndx].sh_size=0 OOB access Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 158/230] iommu/vt-d: Fix PCI bus rescan device hot add Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 159/230] fbdev: fbmem: Fix logo center image dx issue Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 160/230] fbmem: Check virtual screen sizes in fb_set_var() Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 161/230] fbcon: Disallow setting font bigger than screen size Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 162/230] fbcon: Prevent that screen size is smaller than font size Greg Kroah-Hartman
2022-07-11  9:06 ` [PATCH 5.15 163/230] PM: runtime: Redefine pm_runtime_release_supplier() Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 164/230] memregion: Fix memregion_free() fallback definition Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 165/230] video: of_display_timing.h: include errno.h Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 166/230] powerpc/powernv: delay rng platform device creation until later in boot Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 167/230] net: dsa: qca8k: reset cpu port on MTU change Greg Kroah-Hartman
2022-07-11  9:07 ` Greg Kroah-Hartman [this message]
2022-07-11  9:07 ` [PATCH 5.15 169/230] can: kvaser_usb: kvaser_usb_leaf: fix CAN clock frequency regression Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 170/230] can: kvaser_usb: kvaser_usb_leaf: fix bittiming limits Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 171/230] xfs: remove incorrect ASSERT in xfs_rename Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 172/230] Revert "serial: sc16is7xx: Clear RS485 bits in the shutdown" Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 173/230] btrfs: fix error pointer dereference in btrfs_ioctl_rm_dev_v2() Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 174/230] virtio-blk: modify the value type of num in virtio_queue_rq() Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 175/230] btrfs: fix use of uninitialized variable at rm device ioctl Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 176/230] tty: n_gsm: fix encoding of command/response bit Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 177/230] ARM: meson: Fix refcount leak in meson_smp_prepare_cpus Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 178/230] pinctrl: sunxi: a83t: Fix NAND function name for some pins Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 179/230] ASoC: rt711: Add endianness flag in snd_soc_component_driver Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 180/230] ASoC: rt711-sdca: " Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 181/230] ASoC: codecs: rt700/rt711/rt711-sdca: resume bus/codec in .set_jack_detect Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 182/230] arm64: dts: qcom: msm8994: Fix CPU6/7 reg values Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 183/230] arm64: dts: qcom: sdm845: use dispcc AHB clock for mdss node Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 184/230] ARM: mxs_defconfig: Enable the framebuffer Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 185/230] arm64: dts: imx8mp-evk: correct mmc pad settings Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 186/230] arm64: dts: imx8mp-evk: correct the uart2 pinctl value Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 187/230] arm64: dts: imx8mp-evk: correct gpio-led pad settings Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 188/230] arm64: dts: imx8mp-evk: correct vbus " Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 189/230] arm64: dts: imx8mp-evk: correct eqos " Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 190/230] arm64: dts: imx8mp-evk: correct I2C1 " Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 191/230] arm64: dts: imx8mp-evk: correct I2C3 " Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 192/230] arm64: dts: imx8mp-phyboard-pollux-rdk: correct uart " Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 193/230] arm64: dts: imx8mp-phyboard-pollux-rdk: correct eqos " Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 194/230] arm64: dts: imx8mp-phyboard-pollux-rdk: correct i2c2 & mmc settings Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 195/230] pinctrl: sunxi: sunxi_pconf_set: use correct offset Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 196/230] arm64: dts: qcom: msm8992-*: Fix vdd_lvs1_2-supply typo Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 197/230] ARM: at91: pm: use proper compatible for sama5d2s rtc Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 198/230] ARM: at91: pm: use proper compatibles for sam9x60s rtc and rtt Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 199/230] ARM: at91: pm: use proper compatibles for sama7g5s " Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 200/230] ARM: dts: at91: sam9x60ek: fix eeprom compatible and size Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 201/230] ARM: dts: at91: sama5d2_icp: fix eeprom compatibles Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 202/230] ARM: at91: fix soc detection for SAM9X60 SiPs Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 203/230] xsk: Clear page contiguity bit when unmapping pool Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 204/230] i2c: piix4: Fix a memory leak in the EFCH MMIO support Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 205/230] i40e: Fix dropped jumbo frames statistics Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 206/230] i40e: Fix VFs MAC Address change on VM Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 207/230] ARM: dts: stm32: use usbphyc ck_usbo_48m as USBH OHCI clock on stm32mp151 Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 208/230] ARM: dts: stm32: add missing usbh clock and fix clk order on stm32mp15 Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 209/230] ibmvnic: Properly dispose of all skbs during a failover Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 210/230] selftests: forwarding: fix flood_unicast_test when h2 supports IFF_UNICAST_FLT Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 211/230] selftests: forwarding: fix learning_test when h1 " Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 212/230] selftests: forwarding: fix error message in learning_test Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 213/230] r8169: fix accessing unset transport header Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 214/230] i2c: cadence: Unregister the clk notifier in error path Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 215/230] dmaengine: imx-sdma: Allow imx8m for imx7 FW revs Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 216/230] misc: rtsx_usb: fix use of dma mapped buffer for usb bulk transfer Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 217/230] misc: rtsx_usb: use separate command and response buffers Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 218/230] misc: rtsx_usb: set return value in rsp_buf alloc err path Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 219/230] Revert "mm/memory-failure.c: fix race with changing page compound again" Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 220/230] Revert "serial: 8250_mtk: Make sure to select the right FEATURE_SEL" Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 221/230] dt-bindings: dma: allwinner,sun50i-a64-dma: Fix min/max typo Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 222/230] ida: dont use BUG_ON() for debugging Greg Kroah-Hartman
2022-07-11  9:07 ` [PATCH 5.15 223/230] dmaengine: pl330: Fix lockdep warning about non-static key Greg Kroah-Hartman
2022-07-11  9:08 ` [PATCH 5.15 224/230] dmaengine: lgm: Fix an error handling path in intel_ldma_probe() Greg Kroah-Hartman
2022-07-11  9:08 ` [PATCH 5.15 225/230] dmaengine: at_xdma: handle errors of at_xdmac_alloc_desc() correctly Greg Kroah-Hartman
2022-07-11  9:08 ` [PATCH 5.15 226/230] dmaengine: ti: Fix refcount leak in ti_dra7_xbar_route_allocate Greg Kroah-Hartman
2022-07-11  9:08 ` [PATCH 5.15 227/230] dmaengine: qcom: bam_dma: fix runtime PM underflow Greg Kroah-Hartman
2022-07-11  9:08 ` [PATCH 5.15 228/230] dmaengine: ti: Add missing put_device in ti_dra7_xbar_route_allocate Greg Kroah-Hartman
2022-07-11  9:08 ` [PATCH 5.15 229/230] dmaengine: idxd: force wq context cleanup on device disable path Greg Kroah-Hartman
2022-07-11  9:08 ` [PATCH 5.15 230/230] selftests/net: fix section name when using xdp_dummy.o Greg Kroah-Hartman
2022-07-11 12:43 ` [PATCH 5.15 000/230] 5.15.54-rc1 review Jon Hunter
2022-07-11 14:30   ` Naresh Kamboju
2022-07-11 14:36   ` Greg Kroah-Hartman
2022-07-12  3:26 ` Bagas Sanjaya
2022-07-12  8:13   ` Bagas Sanjaya

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220711090608.825628533@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=extja@kvaser.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mkl@pengutronix.de \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox