All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marc Kleine-Budde <mkl@pengutronix.de>
To: linux-can@vger.kernel.org
Cc: kernel@pengutronix.de, "Peter Fink" <pfink@christ-es.de>,
	"Ryan Edwards" <ryan.edwards@gmail.com>,
	"Christoph Möhring" <cmoehring@christ-es.de>,
	"Marc Kleine-Budde" <mkl@pengutronix.de>
Subject: [can-next-rfc 18/21] can: gs_usb: activate quirks for CANtact Pro unconditionally
Date: Wed,  9 Mar 2022 13:41:29 +0100	[thread overview]
Message-ID: <20220309124132.291861-19-mkl@pengutronix.de> (raw)
In-Reply-To: <20220309124132.291861-1-mkl@pengutronix.de>

From: Peter Fink <pfink@christ-es.de>

The CANtact Pro from LinkLayer Labs is based on the LPC54616 µC, which
is affected by the NXP LPC USB transfer erratum. However, the current
firmware (version 2) doesn't set the
GS_CAN_FEATURE_REQ_USB_QUIRK_LPC546XX bit.

This patch sets the feature GS_CAN_FEATURE_REQ_USB_QUIRK_LPC546XX to
workaround this issue.

For the GS_USB_BREQ_DATA_BITTIMING USB control message the CANtact Pro
firmware uses a request value, which is already used by the
candleLight firmware for a different purpose
(GS_USB_BREQ_GET_USER_ID).

This patch set the feature GS_CAN_FEATURE_QUIRK_BREQ_CANTACT_PRO to
workaround this issue.

Cc: Ryan Edwards <ryan.edwards@gmail.com>
Signed-off-by: Peter Fink <pfink@christ-es.de>
Signed-off-by: Christoph Möhring <cmoehring@christ-es.de>
[mkl: improve check for CANtact Pro and add GS_CAN_FEATURE_QUIRK_BREQ_OVERLAP quirk]
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
---
 drivers/net/can/usb/gs_usb.c | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/drivers/net/can/usb/gs_usb.c b/drivers/net/can/usb/gs_usb.c
index 1661b91de364..915c5dd8199b 100644
--- a/drivers/net/can/usb/gs_usb.c
+++ b/drivers/net/can/usb/gs_usb.c
@@ -993,6 +993,29 @@ static struct gs_can *gs_make_candev(unsigned int channel,
 		dev->can.do_set_data_bittiming = gs_usb_set_data_bittiming;
 	}
 
+	/* The CANtact Pro from LinkLayer Labs is based on the
+	 * LPC54616 µC, which is affected by the NXP LPC USB transfer
+	 * erratum. However, the current firmware (version 2) doesn't
+	 * set the GS_CAN_FEATURE_REQ_USB_QUIRK_LPC546XX bit. Set the
+	 * feature GS_CAN_FEATURE_REQ_USB_QUIRK_LPC546XX to workaround
+	 * this issue.
+	 *
+	 * For the GS_USB_BREQ_DATA_BITTIMING USB control message the
+	 * CANtact Pro firmware uses a request value, which is already
+	 * used by the candleLight firmware for a different purpose
+	 * (GS_USB_BREQ_GET_USER_ID). Set the feature
+	 * GS_CAN_FEATURE_QUIRK_BREQ_CANTACT_PRO to workaround this
+	 * issue.
+	 */
+	if (dev->udev->descriptor.idVendor == cpu_to_le16(USB_GSUSB_1_VENDOR_ID) &&
+	    dev->udev->descriptor.idProduct == cpu_to_le16(USB_GSUSB_1_PRODUCT_ID) &&
+	    dev->udev->manufacturer && dev->udev->product &&
+	    !strcmp(dev->udev->manufacturer, "LinkLayer Labs") &&
+	    !strcmp(dev->udev->product, "CANtact Pro") &&
+	    (le32_to_cpu(dconf->sw_version) <= 2))
+		dev->feature |= GS_CAN_FEATURE_REQ_USB_QUIRK_LPC546XX |
+			GS_CAN_FEATURE_QUIRK_BREQ_CANTACT_PRO;
+
 	if (le32_to_cpu(dconf->sw_version) > 1)
 		if (feature & GS_CAN_FEATURE_IDENTIFY)
 			netdev->ethtool_ops = &gs_usb_ethtool_ops;
-- 
2.34.1



  parent reply	other threads:[~2022-03-09 12:41 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-09 12:41 [RFC]: can-next gs-usb Marc Kleine-Budde
2022-03-09 12:41 ` [can-next-rfc 01/21] can: gs_usb: use consistent one space indention Marc Kleine-Budde
2022-03-09 12:41 ` [can-next-rfc 02/21] can: gs_usb: fix checkpatch warning Marc Kleine-Budde
2022-03-09 12:41 ` [can-next-rfc 03/21] can: gs_usb: sort include files alphabetically Marc Kleine-Budde
2022-03-09 12:41 ` [can-next-rfc 04/21] can: gs_usb: GS_CAN_FLAG_OVERFLOW: make use of BIT() Marc Kleine-Budde
2022-03-09 12:41 ` [can-next-rfc 05/21] can: gs_usb: rewrap error messages Marc Kleine-Budde
2022-03-09 12:41 ` [can-next-rfc 06/21] can: gs_usb: rewrap usb_control_msg() and usb_fill_bulk_urb() Marc Kleine-Budde
2022-03-09 12:41 ` [can-next-rfc 07/21] can: gs_usb: gs_make_candev(): call SET_NETDEV_DEV() after handling all bt_const->feature Marc Kleine-Budde
2022-03-09 12:41 ` [can-next-rfc 08/21] can: gs_usb: add HW timestamp mode bit Marc Kleine-Budde
2022-03-09 12:41 ` [can-next-rfc 09/21] can: gs_usb: update GS_CAN_FEATURE_IDENTIFY documentation Marc Kleine-Budde
2022-03-09 12:41 ` [can-next-rfc 10/21] can: gs_usb: document the USER_ID feature Marc Kleine-Budde
2022-03-09 12:41 ` [can-next-rfc 11/21] can: gs_usb: document the PAD_PKTS_TO_MAX_PKT_SIZE feature Marc Kleine-Budde
2022-03-09 12:41 ` [can-next-rfc 12/21] can: gs_usb: gs_usb_probe(): introduce udev and make use of it Marc Kleine-Budde
2022-03-09 12:41 ` [can-next-rfc 13/21] can: gs_usb: support up to 3 channels per device Marc Kleine-Budde
2022-03-09 12:41 ` [can-next-rfc 14/21] can: gs_usb: use union and FLEX_ARRAY for data in struct gs_host_frame Marc Kleine-Budde
2022-03-09 14:05   ` Vincent Mailhol
2022-03-09 14:16     ` Vincent Mailhol
2022-03-09 14:20       ` Marc Kleine-Budde
2022-03-09 14:18     ` Marc Kleine-Budde
2022-03-09 12:41 ` [can-next-rfc 15/21] can: gs_usb: add CAN-FD support Marc Kleine-Budde
2022-03-09 12:41 ` [can-next-rfc 16/21] can: gs_usb: add usb quirk for NXP LPC546xx controllers Marc Kleine-Budde
2022-03-09 12:41 ` [can-next-rfc 17/21] can: gs_usb: add quirk for CANtact Pro overlapping GS_USB_BREQ value Marc Kleine-Budde
2022-03-09 12:41 ` Marc Kleine-Budde [this message]
2022-03-09 12:41 ` [can-next-rfc 19/21] can: gs_usb: add extended bt_const feature Marc Kleine-Budde
2022-03-09 12:41 ` [can-next-rfc 20/21] can: gs_usb: add VID/PID for CES CANext FD devices Marc Kleine-Budde
2022-03-09 12:41 ` [can-next-rfc 21/21] can: gs_usb: add VID/PID for ABE CAN Debugger devices Marc Kleine-Budde

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=20220309124132.291861-19-mkl@pengutronix.de \
    --to=mkl@pengutronix.de \
    --cc=cmoehring@christ-es.de \
    --cc=kernel@pengutronix.de \
    --cc=linux-can@vger.kernel.org \
    --cc=pfink@christ-es.de \
    --cc=ryan.edwards@gmail.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.