FreeCalypso > hg > fc-linux-patch
annotate 4.4.240/0002-USB-serial-ftdi_sio-pass-port-to-quirk-port_probe-fu.patch @ 4:407bae787996
add 5.12
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Mon, 11 Dec 2023 06:29:33 +0000 |
parents | 713fe1e8df41 |
children |
rev | line source |
---|---|
0
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 From 269f94070f6ae14abbc47a36ec2556e977ea9bec Mon Sep 17 00:00:00 2001 |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 From: "Mychaela N. Falconia" <falcon@freecalypso.org> |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 Date: Fri, 2 Oct 2020 17:38:56 +0000 |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 Subject: [PATCH 2/3] USB: serial: ftdi_sio: pass port to quirk port_probe |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 functions |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 The original code passed only the pointer to the ftdi_private struct |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 to quirk port_probe functions. However, some quirks may need to be |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 applied conditionally only to some channels of a multichannel FT2232x |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 or FT4232H device, and if a given quirk's port_probe function needs |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 to figure out which channel of a multichannel device is currently |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 being considered, it needs access to the port pointer passed to the |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 ftdi_sio_port_probe() function, so it can traverse USB data structures |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 from there. |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 Signed-off-by: Mychaela N. Falconia <falcon@freecalypso.org> |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 --- |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 drivers/usb/serial/ftdi_sio.c | 20 ++++++++++++-------- |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 1 file changed, 12 insertions(+), 8 deletions(-) |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20 |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21 diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 index 5b42b8d760cb..2d23fd7b93cb 100644 |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 --- a/drivers/usb/serial/ftdi_sio.c |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24 +++ b/drivers/usb/serial/ftdi_sio.c |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25 @@ -83,15 +83,15 @@ struct ftdi_private { |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26 struct ftdi_sio_quirk { |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
27 int (*probe)(struct usb_serial *); |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 /* Special settings for probed ports. */ |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29 - void (*port_probe)(struct ftdi_private *); |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30 + void (*port_probe)(struct usb_serial_port *); |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
31 }; |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33 static int ftdi_jtag_probe(struct usb_serial *serial); |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 static int ftdi_NDI_device_setup(struct usb_serial *serial); |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 static int ftdi_stmclite_probe(struct usb_serial *serial); |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 static int ftdi_8u2232c_probe(struct usb_serial *serial); |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 -static void ftdi_USB_UIRT_setup(struct ftdi_private *priv); |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
38 -static void ftdi_HE_TIRA1_setup(struct ftdi_private *priv); |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
39 +static void ftdi_USB_UIRT_setup(struct usb_serial_port *port); |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
40 +static void ftdi_HE_TIRA1_setup(struct usb_serial_port *port); |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
41 |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
42 static struct ftdi_sio_quirk ftdi_jtag_quirk = { |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
43 .probe = ftdi_jtag_probe, |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
44 @@ -1833,11 +1833,11 @@ static int ftdi_sio_port_probe(struct usb_serial_port *port) |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
45 |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
46 mutex_init(&priv->cfg_lock); |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
47 |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
48 - if (quirk && quirk->port_probe) |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
49 - quirk->port_probe(priv); |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
50 - |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
51 usb_set_serial_port_data(port, priv); |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
52 |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
53 + if (quirk && quirk->port_probe) |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
54 + quirk->port_probe(port); |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
55 + |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
56 ftdi_determine_type(port); |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
57 ftdi_set_max_packet_size(port); |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
58 if (read_latency_timer(port) < 0) |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
59 @@ -1850,8 +1850,10 @@ static int ftdi_sio_port_probe(struct usb_serial_port *port) |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
60 /* Setup for the USB-UIRT device, which requires hardwired |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
61 * baudrate (38400 gets mapped to 312500) */ |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
62 /* Called from usbserial:serial_probe */ |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
63 -static void ftdi_USB_UIRT_setup(struct ftdi_private *priv) |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
64 +static void ftdi_USB_UIRT_setup(struct usb_serial_port *port) |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
65 { |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
66 + struct ftdi_private *priv = usb_get_serial_port_data(port); |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
67 + |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
68 priv->flags |= ASYNC_SPD_CUST; |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
69 priv->custom_divisor = 77; |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
70 priv->force_baud = 38400; |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
71 @@ -1860,8 +1862,10 @@ static void ftdi_USB_UIRT_setup(struct ftdi_private *priv) |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
72 /* Setup for the HE-TIRA1 device, which requires hardwired |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
73 * baudrate (38400 gets mapped to 100000) and RTS-CTS enabled. */ |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
74 |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
75 -static void ftdi_HE_TIRA1_setup(struct ftdi_private *priv) |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
76 +static void ftdi_HE_TIRA1_setup(struct usb_serial_port *port) |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
77 { |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
78 + struct ftdi_private *priv = usb_get_serial_port_data(port); |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
79 + |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
80 priv->flags |= ASYNC_SPD_CUST; |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
81 priv->custom_divisor = 240; |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
82 priv->force_baud = 38400; |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
83 -- |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
84 2.9.0 |
713fe1e8df41
initial import of formal patches from freecalypso-hwlab repo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
85 |