linux-usb.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] NDI FTDI USB driver support
@ 2025-07-03 18:51 Ryan Mann
  0 siblings, 0 replies; 7+ messages in thread
From: Ryan Mann @ 2025-07-03 18:51 UTC (permalink / raw)
  To: johan@kernel.org, gregkh@linuxfoundation.org
  Cc: linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org

Hi John and Greg,
Tag: ndi-usb-serial-ftdi-6.16-rc4
Public branch: https://github.com/rmann-ndi/linux-kernel/tree/ndi_usb_serial_ftdi
This represents changes to the FTDI USB serial device drivers to support a new NDI (Northern Digital Inc.) product called the EMGUIDE GEMINI. The EMGUIDE GEMINI will support 1.2Mbaud the same as other NDI FTDI virtual COM port devices. It was noticed in making this change that the NDI Aurora was included in this "quirk", but it does not support rates as high as 1.2Mbaud, so it was replaced by the EMGUIDE.
Previous FTDI devices produced by NDI all used the FTDI VID (0x0403) and a very limited set of PIDs that Future Technology Devices allowed NDI to use (0xda70 to 0xda74). Since then, NDI has reserved its own VID (0x23f2), and used two of the PIDs for two experimental, non-production products that didn't use the FTDI chip for USB connection.
This patch adds the new VID as "FTDI_NDI_VID" in the ftdi_sio_ids.h header file. It also reserves PID 0x0003 for the EMGUIDE GEMINI, as well as stubbing out PIDs 0x0004 through 0x0009 for "future" NDI devices. In the unlikely event that the NDI hardware team chooses to implement the USB functionality using something other than FTDI chips, those "future device" lines may need to get removed.
As the EMGUIDE GEMINI product development has not been completed and the step to write over the default VID and PID has not been completed, these code changes have not been tested with an EMGUIDE GEMINI. However, the code changes were compiled successfully using Ubuntu 24.04 locally and tested as a module using an NDI Aurora system.
Thanks,
-------------------------------------
Ryan Mann
Software Development Lead
103 Randall Drive
Waterloo, ON, Canada N2V 1C5
www.ndigital.com

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH] NDI FTDI USB driver support
@ 2025-07-03 18:53 Ryan Mann
  2025-07-03 19:08 ` gregkh
  0 siblings, 1 reply; 7+ messages in thread
From: Ryan Mann @ 2025-07-03 18:53 UTC (permalink / raw)
  To: johan@kernel.org, gregkh@linuxfoundation.org
  Cc: linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org

[-- Attachment #1: Type: text/plain, Size: 1774 bytes --]

Hi John and Greg,
Tag: ndi-usb-serial-ftdi-6.16-rc4
Public branch: https://github.com/rmann-ndi/linux-kernel/tree/ndi_usb_serial_ftdi
This represents changes to the FTDI USB serial device drivers to support a new NDI (Northern Digital Inc.) product called the EMGUIDE GEMINI. The EMGUIDE GEMINI will support 1.2Mbaud the same as other NDI FTDI virtual COM port devices. It was noticed in making this change that the NDI Aurora was included in this "quirk", but it does not support rates as high as 1.2Mbaud, so it was replaced by the EMGUIDE.
Previous FTDI devices produced by NDI all used the FTDI VID (0x0403) and a very limited set of PIDs that Future Technology Devices allowed NDI to use (0xda70 to 0xda74). Since then, NDI has reserved its own VID (0x23f2), and used two of the PIDs for two experimental, non-production products that didn't use the FTDI chip for USB connection.
This patch adds the new VID as "FTDI_NDI_VID" in the ftdi_sio_ids.h header file. It also reserves PID 0x0003 for the EMGUIDE GEMINI, as well as stubbing out PIDs 0x0004 through 0x0009 for "future" NDI devices. In the unlikely event that the NDI hardware team chooses to implement the USB functionality using something other than FTDI chips, those "future device" lines may need to get removed.
As the EMGUIDE GEMINI product development has not been completed and the step to write over the default VID and PID has not been completed, these code changes have not been tested with an EMGUIDE GEMINI. However, the code changes were compiled successfully using Ubuntu 24.04 locally and tested as a module using an NDI Aurora system.
Thanks,
-------------------------------------
Ryan Mann
Software Development Lead
103 Randall Drive
Waterloo, ON, Canada N2V 1C5
www.ndigital.com

[-- Attachment #2: 0001-NDI-FTDI-driver-support.patch --]
[-- Type: application/octet-stream, Size: 5145 bytes --]

From 27b24d9f84d089cceea87ccb3566dcd1075d5228 Mon Sep 17 00:00:00 2001
From: rmann-ndi <rmann@ndigital.com>
Date: Thu, 3 Jul 2025 13:50:02 -0400
Subject: [PATCH] NDI FTDI driver support

Added support for new NDI FTDI USB VCP device: EMGUIDE.
This represents changes to the usb-serial-ftdi drivers to support a new NDI product called the EMGUIDE GEMINI. The EMGUIDE GEMINI will support 1.2Mbaud the same as other NDI FTDI virtual COM port devices. It was noticed in making this change that the NDI Aurora was included in this "quirk", but it does not support rates as high as 1.2Mbaud, so it was replaced by the EMGUIDE.
Previous FTDI devices produced by NDI all used the FTDI VID (0x0403) and a very limited set of PIDs that Future Technology Devices allowed NDI to use (0xda70 to 0xda74). Since then, NDI has reserved its own VID (0x23f2), and used two of the PIDs for two experimental, non-production products that didn't use the FTDI chip for USB connection.
This pull request adds the new VID as "FTDI_NDI_VID" in the ftdi_sio_ids.h header file. It also reserves PID 0x0003 for the EMGUIDE GEMINI, as well as stubbing out PIDs 0x0004 through 0x0009 for "future" NDI devices. In the unlikely event that the NDI hardware team chooses to implement the USB functionality using something other than FTDI chips, those "future device" lines may need to get removed.
As the EMGUIDE GEMINI product development has not been completed and the step to write over the default VID and PID has not been completed, these code changes have not been tested with an EMGUIDE GEMINI. However, the code changes were compiled successfully using Ubuntu 24.04 locally and tested as a module using an NDI Aurora system.
---
 drivers/usb/serial/ftdi_sio.c     | 16 +++++++++++++++-
 drivers/usb/serial/ftdi_sio_ids.h | 16 ++++++++++++++++
 2 files changed, 31 insertions(+), 1 deletion(-)

diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
index 6ac7a0a5cf07..a41a9ed7e946 100644
--- a/drivers/usb/serial/ftdi_sio.c
+++ b/drivers/usb/serial/ftdi_sio.c
@@ -803,6 +803,20 @@ static const struct usb_device_id id_table_combined[] = {
 		.driver_info = (kernel_ulong_t)&ftdi_NDI_device_quirk },
 	{ USB_DEVICE(FTDI_VID, FTDI_NDI_AURORA_SCU_PID),
 		.driver_info = (kernel_ulong_t)&ftdi_NDI_device_quirk },
+	{ USB_DEVICE(FTDI_NDI_VID, FTDI_NDI_EMGUIDE_GEMINI_PID),
+		.driver_info = (kernel_ulong_t)&ftdi_NDI_device_quirk },
+	{ USB_DEVICE(FTDI_NDI_VID, FTDI_NDI_FUTURE_4_PID),
+		.driver_info = (kernel_ulong_t)&ftdi_NDI_device_quirk },
+	{ USB_DEVICE(FTDI_NDI_VID, FTDI_NDI_FUTURE_5_PID),
+		.driver_info = (kernel_ulong_t)&ftdi_NDI_device_quirk },
+	{ USB_DEVICE(FTDI_NDI_VID, FTDI_NDI_FUTURE_6_PID),
+		.driver_info = (kernel_ulong_t)&ftdi_NDI_device_quirk },
+	{ USB_DEVICE(FTDI_NDI_VID, FTDI_NDI_FUTURE_7_PID),
+		.driver_info = (kernel_ulong_t)&ftdi_NDI_device_quirk },
+	{ USB_DEVICE(FTDI_NDI_VID, FTDI_NDI_FUTURE_8_PID),
+		.driver_info = (kernel_ulong_t)&ftdi_NDI_device_quirk },
+	{ USB_DEVICE(FTDI_NDI_VID, FTDI_NDI_FUTURE_9_PID),
+		.driver_info = (kernel_ulong_t)&ftdi_NDI_device_quirk },
 	{ USB_DEVICE(TELLDUS_VID, TELLDUS_TELLSTICK_PID) },
 	{ USB_DEVICE(NOVITUS_VID, NOVITUS_BONO_E_PID) },
 	{ USB_DEVICE(FTDI_VID, RTSYSTEMS_USB_VX8_PID) },
@@ -1333,7 +1347,7 @@ static u32 get_ftdi_divisor(struct tty_struct *tty,
 			     (product_id == FTDI_NDI_SPECTRA_SCU_PID)	||
 			     (product_id == FTDI_NDI_FUTURE_2_PID)	||
 			     (product_id == FTDI_NDI_FUTURE_3_PID)	||
-			     (product_id == FTDI_NDI_AURORA_SCU_PID))	&&
+			     (product_id == FTDI_NDI_EMGUIDE_GEMINI_PID)) &&
 			    (baud == 19200)) {
 				baud = 1200000;
 			}
diff --git a/drivers/usb/serial/ftdi_sio_ids.h b/drivers/usb/serial/ftdi_sio_ids.h
index 9acb6f837327..6e162a73f64c 100644
--- a/drivers/usb/serial/ftdi_sio_ids.h
+++ b/drivers/usb/serial/ftdi_sio_ids.h
@@ -197,13 +197,29 @@
 
 /*
  * NDI (www.ndigital.com) product ids
+ * Almost all of these devices use FTDI's VID (0x0403).
+ * Newer devices use NDI Vendor ID
  */
+/* Using DA70 to DA74 block of FTDI VID (0x0403 ) */
 #define FTDI_NDI_HUC_PID		0xDA70	/* NDI Host USB Converter */
 #define FTDI_NDI_SPECTRA_SCU_PID	0xDA71	/* NDI Spectra SCU */
 #define FTDI_NDI_FUTURE_2_PID		0xDA72	/* NDI future device #2 */
 #define FTDI_NDI_FUTURE_3_PID		0xDA73	/* NDI future device #3 */
 #define FTDI_NDI_AURORA_SCU_PID		0xDA74	/* NDI Aurora SCU */
 
+#define FTDI_NDI_VID 0x23F2 /* NDI Vendor ID */
+/*
+ * VID 0x23F2 PIDs 0x0001 and 0x0002 were used for products that do not use FTDI
+ * The following NDI devices use NDI VID
+ */
+#define FTDI_NDI_EMGUIDE_GEMINI_PID	0x0003  /* NDI Emguide Gemini */
+#define FTDI_NDI_FUTURE_4_PID		0x0004 /* NDI future device #4 */
+#define FTDI_NDI_FUTURE_5_PID		0x0005 /* NDI future device #5 */
+#define FTDI_NDI_FUTURE_6_PID		0x0006 /* NDI future device #6 */
+#define FTDI_NDI_FUTURE_7_PID		0x0007 /* NDI future device #7 */
+#define FTDI_NDI_FUTURE_8_PID		0x0008 /* NDI future device #8 */
+#define FTDI_NDI_FUTURE_9_PID		0x0009 /* NDI future device #9 */
+
 /*
  * ChamSys Limited (www.chamsys.co.uk) USB wing/interface product IDs
  */
-- 
2.49.0.windows.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH] NDI FTDI USB driver support
  2025-07-03 18:53 Ryan Mann
@ 2025-07-03 19:08 ` gregkh
  0 siblings, 0 replies; 7+ messages in thread
From: gregkh @ 2025-07-03 19:08 UTC (permalink / raw)
  To: Ryan Mann
  Cc: johan@kernel.org, linux-usb@vger.kernel.org,
	linux-kernel@vger.kernel.org

On Thu, Jul 03, 2025 at 06:53:06PM +0000, Ryan Mann wrote:
> Hi John and Greg,
> Tag: ndi-usb-serial-ftdi-6.16-rc4
> Public branch: https://github.com/rmann-ndi/linux-kernel/tree/ndi_usb_serial_ftdi
> This represents changes to the FTDI USB serial device drivers to support a new NDI (Northern Digital Inc.) product called the EMGUIDE GEMINI. The EMGUIDE GEMINI will support 1.2Mbaud the same as other NDI FTDI virtual COM port devices. It was noticed in making this change that the NDI Aurora was included in this "quirk", but it does not support rates as high as 1.2Mbaud, so it was replaced by the EMGUIDE.
> Previous FTDI devices produced by NDI all used the FTDI VID (0x0403) and a very limited set of PIDs that Future Technology Devices allowed NDI to use (0xda70 to 0xda74). Since then, NDI has reserved its own VID (0x23f2), and used two of the PIDs for two experimental, non-production products that didn't use the FTDI chip for USB connection.
> This patch adds the new VID as "FTDI_NDI_VID" in the ftdi_sio_ids.h header file. It also reserves PID 0x0003 for the EMGUIDE GEMINI, as well as stubbing out PIDs 0x0004 through 0x0009 for "future" NDI devices. In the unlikely event that the NDI hardware team chooses to implement the USB functionality using something other than FTDI chips, those "future device" lines may need to get removed.
> As the EMGUIDE GEMINI product development has not been completed and the step to write over the default VID and PID has not been completed, these code changes have not been tested with an EMGUIDE GEMINI. However, the code changes were compiled successfully using Ubuntu 24.04 locally and tested as a module using an NDI Aurora system.
> Thanks,
> -------------------------------------
> Ryan Mann
> Software Development Lead
> 103 Randall Drive
> Waterloo, ON, Canada N2V 1C5
> www.ndigital.com


Hi,

This is the friendly patch-bot of Greg Kroah-Hartman.  You have sent him
a patch that has triggered this response.  He used to manually respond
to these common problems, but in order to save his sanity (he kept
writing the same thing over and over, yet to different people), I was
created.  Hopefully you will not take offence and will fix the problem
in your patch and resubmit it so that it can be accepted into the Linux
kernel tree.

You are receiving this message because of the following common error(s)
as indicated below:

- Your patch was attached, please place it inline so that it can be
  applied directly from the email message itself.

- Your patch does not have a Signed-off-by: line.  Please read the
  kernel file, Documentation/process/submitting-patches.rst and resend
  it after adding that line.  Note, the line needs to be in the body of
  the email, before the patch, not at the bottom of the patch or in the
  email signature.

- You did not specify a description of why the patch is needed, or
  possibly, any description at all, in the email body.  Please read the
  section entitled "The canonical patch format" in the kernel file,
  Documentation/process/submitting-patches.rst for what is needed in
  order to properly describe the change.

- You did not write a descriptive Subject: for the patch, allowing Greg,
  and everyone else, to know what this patch is all about.  Please read
  the section entitled "The canonical patch format" in the kernel file,
  Documentation/process/submitting-patches.rst for what a proper
  Subject: line should look like.

- It looks like you did not use your "real" name for the patch on either
  the Signed-off-by: line, or the From: line (both of which have to
  match).  Please read the kernel file,
  Documentation/process/submitting-patches.rst for how to do this
  correctly.

If you wish to discuss this problem further, or you have questions about
how to resolve this issue, please feel free to respond to this email and
Greg will reply once he has dug out from the pending patches received
from other developers.

thanks,

greg k-h's patch email bot

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH] NDI FTDI USB driver support
@ 2025-07-03 19:51 Ryan Mann
  2025-07-04  5:18 ` gregkh
  2025-07-04 14:44 ` Ryan Mann
  0 siblings, 2 replies; 7+ messages in thread
From: Ryan Mann @ 2025-07-03 19:51 UTC (permalink / raw)
  To: gregkh@linuxfoundation.org, johan@kernel.org
  Cc: linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org

From: Ryan Mann <rmann@ndigital.com>
This represents changes to the FTDI USB serial device drivers to support a new NDI (Northern Digital Inc.) product called the EMGUIDE GEMINI. The EMGUIDE GEMINI will support 1.2Mbaud the same as other NDI FTDI virtual COM port devices. It was noticed in making this change that the NDI Aurora was included in this "quirk", but it does not support rates as high as 1.2Mbaud, so it was replaced by the EMGUIDE.
Previous FTDI devices produced by NDI all used the FTDI VID (0x0403) and a very limited set of PIDs that Future Technology Devices allowed NDI to use (0xda70 to 0xda74). Since then, NDI has reserved its own VID (0x23f2), and used two of the PIDs for two experimental, non-production products that didn't use the FTDI chip for USB connection.
This patch adds the new VID as "FTDI_NDI_VID" in the ftdi_sio_ids.h header file. It also reserves PID 0x0003 for the EMGUIDE GEMINI, as well as stubbing out PIDs 0x0004 through 0x0009 for "future" NDI devices. In the unlikely event that the NDI hardware team chooses to implement the USB functionality using something other than FTDI chips, those "future device" lines may need to get removed.
As the EMGUIDE GEMINI product development has not been completed and the step to write over the default VID and PID has not been completed, these code changes have not been tested with an EMGUIDE GEMINI. However, the code changes were compiled successfully using Ubuntu 24.04 locally and tested as a module using an NDI Aurora system.

By making a contribution to this project, I certify that:

        (a) The contribution was created in whole or in part by me and I
            have the right to submit it under the open source license
            indicated in the file; or

        (b) The contribution is based upon previous work that, to the best
            of my knowledge, is covered under an appropriate open source
            license and I have the right under that license to submit that
            work with modifications, whether created in whole or in part
            by me, under the same open source license (unless I am
            permitted to submit under a different license), as indicated
            in the file; or

        (c) The contribution was provided directly to me by some other
            person who certified (a), (b) or (c) and I have not modified
            it.

        (d) I understand and agree that this project and the contribution
            are public and that a record of the contribution (including all
            personal information I submit with it, including my sign-off) is
            maintained indefinitely and may be redistributed consistent with
            this project or the open source license(s) involved.

Signed-off-by: Ryan Mann <rmann@ndigital.com>
---
 drivers/usb/serial/ftdi_sio.c     | 16 +++++++++++++++-
 drivers/usb/serial/ftdi_sio_ids.h | 16 ++++++++++++++++
 2 files changed, 31 insertions(+), 1 deletion(-)

diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
index 6ac7a0a5cf07..a41a9ed7e946 100644
--- a/drivers/usb/serial/ftdi_sio.c
+++ b/drivers/usb/serial/ftdi_sio.c
@@ -803,6 +803,20 @@ static const struct usb_device_id id_table_combined[] = {
 		.driver_info = (kernel_ulong_t)&ftdi_NDI_device_quirk },
 	{ USB_DEVICE(FTDI_VID, FTDI_NDI_AURORA_SCU_PID),
 		.driver_info = (kernel_ulong_t)&ftdi_NDI_device_quirk },
+	{ USB_DEVICE(FTDI_NDI_VID, FTDI_NDI_EMGUIDE_GEMINI_PID),
+		.driver_info = (kernel_ulong_t)&ftdi_NDI_device_quirk },
+	{ USB_DEVICE(FTDI_NDI_VID, FTDI_NDI_FUTURE_4_PID),
+		.driver_info = (kernel_ulong_t)&ftdi_NDI_device_quirk },
+	{ USB_DEVICE(FTDI_NDI_VID, FTDI_NDI_FUTURE_5_PID),
+		.driver_info = (kernel_ulong_t)&ftdi_NDI_device_quirk },
+	{ USB_DEVICE(FTDI_NDI_VID, FTDI_NDI_FUTURE_6_PID),
+		.driver_info = (kernel_ulong_t)&ftdi_NDI_device_quirk },
+	{ USB_DEVICE(FTDI_NDI_VID, FTDI_NDI_FUTURE_7_PID),
+		.driver_info = (kernel_ulong_t)&ftdi_NDI_device_quirk },
+	{ USB_DEVICE(FTDI_NDI_VID, FTDI_NDI_FUTURE_8_PID),
+		.driver_info = (kernel_ulong_t)&ftdi_NDI_device_quirk },
+	{ USB_DEVICE(FTDI_NDI_VID, FTDI_NDI_FUTURE_9_PID),
+		.driver_info = (kernel_ulong_t)&ftdi_NDI_device_quirk },
 	{ USB_DEVICE(TELLDUS_VID, TELLDUS_TELLSTICK_PID) },
 	{ USB_DEVICE(NOVITUS_VID, NOVITUS_BONO_E_PID) },
 	{ USB_DEVICE(FTDI_VID, RTSYSTEMS_USB_VX8_PID) },
@@ -1333,7 +1347,7 @@ static u32 get_ftdi_divisor(struct tty_struct *tty,
 			     (product_id == FTDI_NDI_SPECTRA_SCU_PID)	||
 			     (product_id == FTDI_NDI_FUTURE_2_PID)	||
 			     (product_id == FTDI_NDI_FUTURE_3_PID)	||
-			     (product_id == FTDI_NDI_AURORA_SCU_PID))	&&
+			     (product_id == FTDI_NDI_EMGUIDE_GEMINI_PID)) &&
 			    (baud == 19200)) {
 				baud = 1200000;
 			}
diff --git a/drivers/usb/serial/ftdi_sio_ids.h b/drivers/usb/serial/ftdi_sio_ids.h
index 9acb6f837327..6e162a73f64c 100644
--- a/drivers/usb/serial/ftdi_sio_ids.h
+++ b/drivers/usb/serial/ftdi_sio_ids.h
@@ -197,13 +197,29 @@
 
 /*
  * NDI (www.ndigital.com) product ids
+ * Almost all of these devices use FTDI's VID (0x0403).
+ * Newer devices use NDI Vendor ID
  */
+/* Using DA70 to DA74 block of FTDI VID (0x0403 ) */
 #define FTDI_NDI_HUC_PID		0xDA70	/* NDI Host USB Converter */
 #define FTDI_NDI_SPECTRA_SCU_PID	0xDA71	/* NDI Spectra SCU */
 #define FTDI_NDI_FUTURE_2_PID		0xDA72	/* NDI future device #2 */
 #define FTDI_NDI_FUTURE_3_PID		0xDA73	/* NDI future device #3 */
 #define FTDI_NDI_AURORA_SCU_PID		0xDA74	/* NDI Aurora SCU */
 
+#define FTDI_NDI_VID 0x23F2 /* NDI Vendor ID */
+/*
+ * VID 0x23F2 PIDs 0x0001 and 0x0002 were used for products that do not use FTDI
+ * The following NDI devices use NDI VID
+ */
+#define FTDI_NDI_EMGUIDE_GEMINI_PID	0x0003  /* NDI Emguide Gemini */
+#define FTDI_NDI_FUTURE_4_PID		0x0004 /* NDI future device #4 */
+#define FTDI_NDI_FUTURE_5_PID		0x0005 /* NDI future device #5 */
+#define FTDI_NDI_FUTURE_6_PID		0x0006 /* NDI future device #6 */
+#define FTDI_NDI_FUTURE_7_PID		0x0007 /* NDI future device #7 */
+#define FTDI_NDI_FUTURE_8_PID		0x0008 /* NDI future device #8 */
+#define FTDI_NDI_FUTURE_9_PID		0x0009 /* NDI future device #9 */
+
 /*
  * ChamSys Limited (www.chamsys.co.uk) USB wing/interface product IDs
  */
-- 

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH] NDI FTDI USB driver support
  2025-07-03 19:51 [PATCH] NDI FTDI USB driver support Ryan Mann
@ 2025-07-04  5:18 ` gregkh
  2025-07-04 14:44 ` Ryan Mann
  1 sibling, 0 replies; 7+ messages in thread
From: gregkh @ 2025-07-04  5:18 UTC (permalink / raw)
  To: Ryan Mann
  Cc: johan@kernel.org, linux-usb@vger.kernel.org,
	linux-kernel@vger.kernel.org

On Thu, Jul 03, 2025 at 07:51:38PM +0000, Ryan Mann wrote:
> From: Ryan Mann <rmann@ndigital.com>
> This represents changes to the FTDI USB serial device drivers to support a new NDI (Northern Digital Inc.) product called the EMGUIDE GEMINI. The EMGUIDE GEMINI will support 1.2Mbaud the same as other NDI FTDI virtual COM port devices. It was noticed in making this change that the NDI Aurora was included in this "quirk", but it does not support rates as high as 1.2Mbaud, so it was replaced by the EMGUIDE.
> Previous FTDI devices produced by NDI all used the FTDI VID (0x0403) and a very limited set of PIDs that Future Technology Devices allowed NDI to use (0xda70 to 0xda74). Since then, NDI has reserved its own VID (0x23f2), and used two of the PIDs for two experimental, non-production products that didn't use the FTDI chip for USB connection.
> This patch adds the new VID as "FTDI_NDI_VID" in the ftdi_sio_ids.h header file. It also reserves PID 0x0003 for the EMGUIDE GEMINI, as well as stubbing out PIDs 0x0004 through 0x0009 for "future" NDI devices. In the unlikely event that the NDI hardware team chooses to implement the USB functionality using something other than FTDI chips, those "future device" lines may need to get removed.
> As the EMGUIDE GEMINI product development has not been completed and the step to write over the default VID and PID has not been completed, these code changes have not been tested with an EMGUIDE GEMINI. However, the code changes were compiled successfully using Ubuntu 24.04 locally and tested as a module using an NDI Aurora system.

Take a minute and read other patches in the kernel, and on the mailing
lists to see if your changelog text matches up with what they contain.

> By making a contribution to this project, I certify that:
> 
>         (a) The contribution was created in whole or in part by me and I
>             have the right to submit it under the open source license
>             indicated in the file; or
> 
>         (b) The contribution is based upon previous work that, to the best
>             of my knowledge, is covered under an appropriate open source
>             license and I have the right under that license to submit that
>             work with modifications, whether created in whole or in part
>             by me, under the same open source license (unless I am
>             permitted to submit under a different license), as indicated
>             in the file; or
> 
>         (c) The contribution was provided directly to me by some other
>             person who certified (a), (b) or (c) and I have not modified
>             it.
> 
>         (d) I understand and agree that this project and the contribution
>             are public and that a record of the contribution (including all
>             personal information I submit with it, including my sign-off) is
>             maintained indefinitely and may be redistributed consistent with
>             this project or the open source license(s) involved.

Hint, you don't have to duplicate the whole of the DCO in your
changelog, where in the documentation did you see that?

Try reading the submitting patches document again please.

> 
> Signed-off-by: Ryan Mann <rmann@ndigital.com>
> ---
>  drivers/usb/serial/ftdi_sio.c     | 16 +++++++++++++++-
>  drivers/usb/serial/ftdi_sio_ids.h | 16 ++++++++++++++++
>  2 files changed, 31 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
> index 6ac7a0a5cf07..a41a9ed7e946 100644
> --- a/drivers/usb/serial/ftdi_sio.c
> +++ b/drivers/usb/serial/ftdi_sio.c
> @@ -803,6 +803,20 @@ static const struct usb_device_id id_table_combined[] = {
>  		.driver_info = (kernel_ulong_t)&ftdi_NDI_device_quirk },
>  	{ USB_DEVICE(FTDI_VID, FTDI_NDI_AURORA_SCU_PID),
>  		.driver_info = (kernel_ulong_t)&ftdi_NDI_device_quirk },
> +	{ USB_DEVICE(FTDI_NDI_VID, FTDI_NDI_EMGUIDE_GEMINI_PID),
> +		.driver_info = (kernel_ulong_t)&ftdi_NDI_device_quirk },
> +	{ USB_DEVICE(FTDI_NDI_VID, FTDI_NDI_FUTURE_4_PID),
> +		.driver_info = (kernel_ulong_t)&ftdi_NDI_device_quirk },
> +	{ USB_DEVICE(FTDI_NDI_VID, FTDI_NDI_FUTURE_5_PID),
> +		.driver_info = (kernel_ulong_t)&ftdi_NDI_device_quirk },
> +	{ USB_DEVICE(FTDI_NDI_VID, FTDI_NDI_FUTURE_6_PID),
> +		.driver_info = (kernel_ulong_t)&ftdi_NDI_device_quirk },
> +	{ USB_DEVICE(FTDI_NDI_VID, FTDI_NDI_FUTURE_7_PID),
> +		.driver_info = (kernel_ulong_t)&ftdi_NDI_device_quirk },
> +	{ USB_DEVICE(FTDI_NDI_VID, FTDI_NDI_FUTURE_8_PID),
> +		.driver_info = (kernel_ulong_t)&ftdi_NDI_device_quirk },
> +	{ USB_DEVICE(FTDI_NDI_VID, FTDI_NDI_FUTURE_9_PID),
> +		.driver_info = (kernel_ulong_t)&ftdi_NDI_device_quirk },
>  	{ USB_DEVICE(TELLDUS_VID, TELLDUS_TELLSTICK_PID) },
>  	{ USB_DEVICE(NOVITUS_VID, NOVITUS_BONO_E_PID) },
>  	{ USB_DEVICE(FTDI_VID, RTSYSTEMS_USB_VX8_PID) },
> @@ -1333,7 +1347,7 @@ static u32 get_ftdi_divisor(struct tty_struct *tty,
>  			     (product_id == FTDI_NDI_SPECTRA_SCU_PID)	||
>  			     (product_id == FTDI_NDI_FUTURE_2_PID)	||
>  			     (product_id == FTDI_NDI_FUTURE_3_PID)	||
> -			     (product_id == FTDI_NDI_AURORA_SCU_PID))	&&
> +			     (product_id == FTDI_NDI_EMGUIDE_GEMINI_PID)) &&
>  			    (baud == 19200)) {
>  				baud = 1200000;
>  			}
> diff --git a/drivers/usb/serial/ftdi_sio_ids.h b/drivers/usb/serial/ftdi_sio_ids.h
> index 9acb6f837327..6e162a73f64c 100644
> --- a/drivers/usb/serial/ftdi_sio_ids.h
> +++ b/drivers/usb/serial/ftdi_sio_ids.h
> @@ -197,13 +197,29 @@
>  
>  /*
>   * NDI (www.ndigital.com) product ids
> + * Almost all of these devices use FTDI's VID (0x0403).
> + * Newer devices use NDI Vendor ID

"newer" is going to age badly, these lines are not needed.

>   */
> +/* Using DA70 to DA74 block of FTDI VID (0x0403 ) */

What does this comment mean?

>  #define FTDI_NDI_HUC_PID		0xDA70	/* NDI Host USB Converter */
>  #define FTDI_NDI_SPECTRA_SCU_PID	0xDA71	/* NDI Spectra SCU */
>  #define FTDI_NDI_FUTURE_2_PID		0xDA72	/* NDI future device #2 */
>  #define FTDI_NDI_FUTURE_3_PID		0xDA73	/* NDI future device #3 */
>  #define FTDI_NDI_AURORA_SCU_PID		0xDA74	/* NDI Aurora SCU */
>  
> +#define FTDI_NDI_VID 0x23F2 /* NDI Vendor ID */

Missing tab?

> +/*
> + * VID 0x23F2 PIDs 0x0001 and 0x0002 were used for products that do not use FTDI

There is no need for that line.

> + * The following NDI devices use NDI VID

That's kind of obvious and not needed :)

> + */
> +#define FTDI_NDI_EMGUIDE_GEMINI_PID	0x0003  /* NDI Emguide Gemini */
> +#define FTDI_NDI_FUTURE_4_PID		0x0004 /* NDI future device #4 */
> +#define FTDI_NDI_FUTURE_5_PID		0x0005 /* NDI future device #5 */
> +#define FTDI_NDI_FUTURE_6_PID		0x0006 /* NDI future device #6 */
> +#define FTDI_NDI_FUTURE_7_PID		0x0007 /* NDI future device #7 */
> +#define FTDI_NDI_FUTURE_8_PID		0x0008 /* NDI future device #8 */
> +#define FTDI_NDI_FUTURE_9_PID		0x0009 /* NDI future device #9 */

No need to list future devices like this, why not just add them to the
driver when you have them, with the proper name then?

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 7+ messages in thread

* RE: [PATCH] NDI FTDI USB driver support
  2025-07-03 19:51 [PATCH] NDI FTDI USB driver support Ryan Mann
  2025-07-04  5:18 ` gregkh
@ 2025-07-04 14:44 ` Ryan Mann
  2025-07-04 16:16   ` gregkh
  1 sibling, 1 reply; 7+ messages in thread
From: Ryan Mann @ 2025-07-04 14:44 UTC (permalink / raw)
  To: gregkh@linuxfoundation.org, johan@kernel.org
  Cc: linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org

NDI (Northern Digital Inc.) is introducing a new product called the EMGUIDE GEMINI that will use an FTDI chip for USB serial communications. The EMGUIDE GEMINI will support 1.2Mbaud the same as other NDI FTDI USB serial devices, by mapping the 19200. It was noticed in making this change that the NDI Aurora was included in this "quirk", but it does not support rates as high as 1.2Mbaud, so it was replaced by the EMGUIDE.
This patch adds the new VID as "FTDI_NDI_VID" in the ftdi_sio_ids.h header file. It also reserves PID 0x0003 for the EMGUIDE GEMINI. Finally, it adds this VID/PID combination to the USB_DEVICE list in the ftdi_sio.c.

Signed-off-by: Ryan Mann <rmann@ndigital.com>
---
 drivers/usb/serial/ftdi_sio.c     | 4 ++--
 drivers/usb/serial/ftdi_sio_ids.h | 2 ++
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
index 6ac7a0a5cf07..e5d7cce83a72 100644
--- a/drivers/usb/serial/ftdi_sio.c
+++ b/drivers/usb/serial/ftdi_sio.c
@@ -801,8 +801,8 @@ static const struct usb_device_id id_table_combined[] = {
                .driver_info = (kernel_ulong_t)&ftdi_NDI_device_quirk },
        { USB_DEVICE(FTDI_VID, FTDI_NDI_FUTURE_3_PID),
                .driver_info = (kernel_ulong_t)&ftdi_NDI_device_quirk },
-       { USB_DEVICE(FTDI_VID, FTDI_NDI_AURORA_SCU_PID),
-               .driver_info = (kernel_ulong_t)&ftdi_NDI_device_quirk },
+       { USB_DEVICE(NDI_VID, FTDI_NDI_EMGUIDE_GEMINI_PID),
+         .driver_info = (kernel_ulong_t)&ftdi_NDI_device_quirk },
        { USB_DEVICE(TELLDUS_VID, TELLDUS_TELLSTICK_PID) },
        { USB_DEVICE(NOVITUS_VID, NOVITUS_BONO_E_PID) },
        { USB_DEVICE(FTDI_VID, RTSYSTEMS_USB_VX8_PID) },
diff --git a/drivers/usb/serial/ftdi_sio_ids.h b/drivers/usb/serial/ftdi_sio_ids.h
index 9acb6f837327..0cb33d257973 100644
--- a/drivers/usb/serial/ftdi_sio_ids.h
+++ b/drivers/usb/serial/ftdi_sio_ids.h
@@ -203,6 +203,8 @@
 #define FTDI_NDI_FUTURE_2_PID          0xDA72  /* NDI future device #2 */
 #define FTDI_NDI_FUTURE_3_PID          0xDA73  /* NDI future device #3 */
 #define FTDI_NDI_AURORA_SCU_PID                0xDA74  /* NDI Aurora SCU */
+#define FTDI_NDI_VID                   0x23F2  /* NDI Vendor ID */
+#define FTDI_NDI_EMGUIDE_GEMINI_PID    0x0003  /* NDI Emguide Gemini */

 /*
  * ChamSys Limited (www.chamsys.co.uk) USB wing/interface product IDs
--
2.43.0

-----Original Message-----
From: Ryan Mann 
Sent: Thursday, July 3, 2025 3:52 PM
To: gregkh@linuxfoundation.org; johan@kernel.org
Cc: linux-usb@vger.kernel.org; linux-kernel@vger.kernel.org
Subject: [PATCH] NDI FTDI USB driver support

From: Ryan Mann <rmann@ndigital.com>
This represents changes to the FTDI USB serial device drivers to support a new NDI (Northern Digital Inc.) product called the EMGUIDE GEMINI. The EMGUIDE GEMINI will support 1.2Mbaud the same as other NDI FTDI virtual COM port devices. It was noticed in making this change that the NDI Aurora was included in this "quirk", but it does not support rates as high as 1.2Mbaud, so it was replaced by the EMGUIDE.
Previous FTDI devices produced by NDI all used the FTDI VID (0x0403) and a very limited set of PIDs that Future Technology Devices allowed NDI to use (0xda70 to 0xda74). Since then, NDI has reserved its own VID (0x23f2), and used two of the PIDs for two experimental, non-production products that didn't use the FTDI chip for USB connection.
This patch adds the new VID as "FTDI_NDI_VID" in the ftdi_sio_ids.h header file. It also reserves PID 0x0003 for the EMGUIDE GEMINI, as well as stubbing out PIDs 0x0004 through 0x0009 for "future" NDI devices. In the unlikely event that the NDI hardware team chooses to implement the USB functionality using something other than FTDI chips, those "future device" lines may need to get removed.
As the EMGUIDE GEMINI product development has not been completed and the step to write over the default VID and PID has not been completed, these code changes have not been tested with an EMGUIDE GEMINI. However, the code changes were compiled successfully using Ubuntu 24.04 locally and tested as a module using an NDI Aurora system.

By making a contribution to this project, I certify that:

        (a) The contribution was created in whole or in part by me and I
            have the right to submit it under the open source license
            indicated in the file; or

        (b) The contribution is based upon previous work that, to the best
            of my knowledge, is covered under an appropriate open source
            license and I have the right under that license to submit that
            work with modifications, whether created in whole or in part
            by me, under the same open source license (unless I am
            permitted to submit under a different license), as indicated
            in the file; or

        (c) The contribution was provided directly to me by some other
            person who certified (a), (b) or (c) and I have not modified
            it.

        (d) I understand and agree that this project and the contribution
            are public and that a record of the contribution (including all
            personal information I submit with it, including my sign-off) is
            maintained indefinitely and may be redistributed consistent with
            this project or the open source license(s) involved.

Signed-off-by: Ryan Mann <rmann@ndigital.com>
---
 drivers/usb/serial/ftdi_sio.c     | 16 +++++++++++++++-
 drivers/usb/serial/ftdi_sio_ids.h | 16 ++++++++++++++++
 2 files changed, 31 insertions(+), 1 deletion(-)

diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c index 6ac7a0a5cf07..a41a9ed7e946 100644
--- a/drivers/usb/serial/ftdi_sio.c
+++ b/drivers/usb/serial/ftdi_sio.c
@@ -803,6 +803,20 @@ static const struct usb_device_id id_table_combined[] = {
 		.driver_info = (kernel_ulong_t)&ftdi_NDI_device_quirk },
 	{ USB_DEVICE(FTDI_VID, FTDI_NDI_AURORA_SCU_PID),
 		.driver_info = (kernel_ulong_t)&ftdi_NDI_device_quirk },
+	{ USB_DEVICE(FTDI_NDI_VID, FTDI_NDI_EMGUIDE_GEMINI_PID),
+		.driver_info = (kernel_ulong_t)&ftdi_NDI_device_quirk },
+	{ USB_DEVICE(FTDI_NDI_VID, FTDI_NDI_FUTURE_4_PID),
+		.driver_info = (kernel_ulong_t)&ftdi_NDI_device_quirk },
+	{ USB_DEVICE(FTDI_NDI_VID, FTDI_NDI_FUTURE_5_PID),
+		.driver_info = (kernel_ulong_t)&ftdi_NDI_device_quirk },
+	{ USB_DEVICE(FTDI_NDI_VID, FTDI_NDI_FUTURE_6_PID),
+		.driver_info = (kernel_ulong_t)&ftdi_NDI_device_quirk },
+	{ USB_DEVICE(FTDI_NDI_VID, FTDI_NDI_FUTURE_7_PID),
+		.driver_info = (kernel_ulong_t)&ftdi_NDI_device_quirk },
+	{ USB_DEVICE(FTDI_NDI_VID, FTDI_NDI_FUTURE_8_PID),
+		.driver_info = (kernel_ulong_t)&ftdi_NDI_device_quirk },
+	{ USB_DEVICE(FTDI_NDI_VID, FTDI_NDI_FUTURE_9_PID),
+		.driver_info = (kernel_ulong_t)&ftdi_NDI_device_quirk },
 	{ USB_DEVICE(TELLDUS_VID, TELLDUS_TELLSTICK_PID) },
 	{ USB_DEVICE(NOVITUS_VID, NOVITUS_BONO_E_PID) },
 	{ USB_DEVICE(FTDI_VID, RTSYSTEMS_USB_VX8_PID) }, @@ -1333,7 +1347,7 @@ static u32 get_ftdi_divisor(struct tty_struct *tty,
 			     (product_id == FTDI_NDI_SPECTRA_SCU_PID)	||
 			     (product_id == FTDI_NDI_FUTURE_2_PID)	||
 			     (product_id == FTDI_NDI_FUTURE_3_PID)	||
-			     (product_id == FTDI_NDI_AURORA_SCU_PID))	&&
+			     (product_id == FTDI_NDI_EMGUIDE_GEMINI_PID)) &&
 			    (baud == 19200)) {
 				baud = 1200000;
 			}
diff --git a/drivers/usb/serial/ftdi_sio_ids.h b/drivers/usb/serial/ftdi_sio_ids.h
index 9acb6f837327..6e162a73f64c 100644
--- a/drivers/usb/serial/ftdi_sio_ids.h
+++ b/drivers/usb/serial/ftdi_sio_ids.h
@@ -197,13 +197,29 @@
 
 /*
  * NDI (www.ndigital.com) product ids
+ * Almost all of these devices use FTDI's VID (0x0403).
+ * Newer devices use NDI Vendor ID
  */
+/* Using DA70 to DA74 block of FTDI VID (0x0403 ) */
 #define FTDI_NDI_HUC_PID		0xDA70	/* NDI Host USB Converter */
 #define FTDI_NDI_SPECTRA_SCU_PID	0xDA71	/* NDI Spectra SCU */
 #define FTDI_NDI_FUTURE_2_PID		0xDA72	/* NDI future device #2 */
 #define FTDI_NDI_FUTURE_3_PID		0xDA73	/* NDI future device #3 */
 #define FTDI_NDI_AURORA_SCU_PID		0xDA74	/* NDI Aurora SCU */
 
+#define FTDI_NDI_VID 0x23F2 /* NDI Vendor ID */
+/*
+ * VID 0x23F2 PIDs 0x0001 and 0x0002 were used for products that do not 
+use FTDI
+ * The following NDI devices use NDI VID  */
+#define FTDI_NDI_EMGUIDE_GEMINI_PID	0x0003  /* NDI Emguide Gemini */
+#define FTDI_NDI_FUTURE_4_PID		0x0004 /* NDI future device #4 */
+#define FTDI_NDI_FUTURE_5_PID		0x0005 /* NDI future device #5 */
+#define FTDI_NDI_FUTURE_6_PID		0x0006 /* NDI future device #6 */
+#define FTDI_NDI_FUTURE_7_PID		0x0007 /* NDI future device #7 */
+#define FTDI_NDI_FUTURE_8_PID		0x0008 /* NDI future device #8 */
+#define FTDI_NDI_FUTURE_9_PID		0x0009 /* NDI future device #9 */
+
 /*
  * ChamSys Limited (www.chamsys.co.uk) USB wing/interface product IDs
  */
-- 

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH] NDI FTDI USB driver support
  2025-07-04 14:44 ` Ryan Mann
@ 2025-07-04 16:16   ` gregkh
  0 siblings, 0 replies; 7+ messages in thread
From: gregkh @ 2025-07-04 16:16 UTC (permalink / raw)
  To: Ryan Mann
  Cc: johan@kernel.org, linux-usb@vger.kernel.org,
	linux-kernel@vger.kernel.org

On Fri, Jul 04, 2025 at 02:44:46PM +0000, Ryan Mann wrote:
> NDI (Northern Digital Inc.) is introducing a new product called the EMGUIDE GEMINI that will use an FTDI chip for USB serial communications. The EMGUIDE GEMINI will support 1.2Mbaud the same as other NDI FTDI USB serial devices, by mapping the 19200. It was noticed in making this change that the NDI Aurora was included in this "quirk", but it does not support rates as high as 1.2Mbaud, so it was replaced by the EMGUIDE.
> This patch adds the new VID as "FTDI_NDI_VID" in the ftdi_sio_ids.h header file. It also reserves PID 0x0003 for the EMGUIDE GEMINI. Finally, it adds this VID/PID combination to the USB_DEVICE list in the ftdi_sio.c.

Please take the time, read the documentation, and then resend new
versions :)

You forgot to wrap your lines here.

And you forgot to version your patch.

And you included the old version of the patch below this patch, making
it impossible to apply.

Take the weekend, relax, and come back with a version 3 of this next
week.  There's no rush here.

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2025-07-04 16:16 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-07-03 19:51 [PATCH] NDI FTDI USB driver support Ryan Mann
2025-07-04  5:18 ` gregkh
2025-07-04 14:44 ` Ryan Mann
2025-07-04 16:16   ` gregkh
  -- strict thread matches above, loose matches on Subject: below --
2025-07-03 18:53 Ryan Mann
2025-07-03 19:08 ` gregkh
2025-07-03 18:51 Ryan Mann

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).