Commit graph

4401 commits

Author SHA1 Message Date
Søren Schmidt
1331c0f44b Add support for RockChip RK356X to DWC3 driver.
For RK356x platform, we can set bit 26 of DWC3_GUCTL1 register
for usb 2.0 device.

Reviewed by:	manu
Differential Revision:	https://reviews.freebsd.org/D36211
2022-08-16 12:24:44 +00:00
Bjoern A. Zeeb
d3ef3c4cf8 XHCI: remove a self-assignment
x = x is an unneeded operation, remove it.
The value is read and assigned above for real.

MFC after:	4 weeks
2022-08-07 22:46:55 +00:00
Hans Petter Selasky
9f35dbfdc6 uftdi(4): Add new USB ID.
PR:		265514
MFC after:	1 week
Sponsored by:	NVIDIA Networking
2022-08-01 13:26:58 +02:00
Dimitry Andric
b621f3cf2d Fix unused variable warning in usb's atp.c
With clang 15, the following -Werror warning is produced:

    sys/dev/usb/input/atp.c:2018:11: error: variable 'n_vertical_scrolls' set but not used [-Werror,-Wunused-but-set-variable]
            u_int8_t n_vertical_scrolls = 0;
                     ^

The 'n_vertical_scrolls' variable is no longer used after 197b9a2ef0,
so remove it.

MFC after:	3 days
2022-07-26 22:08:07 +02:00
Bjoern A. Zeeb
fbb5cb66f7 dwc3: add ACPI attachment
Split the current FDT-only implementation up into an FDT and an
ACPI part reusing and sharing as much code as possible (thanks mw!).

This makes the Synopsis XHCI root hubs attach correctly on SolidRun's
HoenyComb instead of just the generic XHCI root and this means we
are also doing proper chip setup and applying the quirk needed there [1].

There is one problem with ACPI attachment in that it uses the generic
XHCI PNP ID.  So we need to do extra checks in order to not claim
all xhci, which means we check for a known quirk to be present
in acpi_probe.  Long term this isn't scaling and this was discussed
in SolidRun's Discord Channel in 2021 with the intend that "jnettlet"
will take this to a steering committee.  Since then ACPI has kind-of
become a technology non grata (due to not getting changes into Linux
timely) so it is unclear if this will ever happen.  If there will be
further hardware with dwc3/ACPI we should go and make sure this problem
gets solved.

[1] 24698f90b7/Silicon/NXP/LX2160A/AcpiTables/Dsdt/Usb.asl

Reviewed by:		manu, mw
MFC after:		10 days
Differential Revision:	https://reviews.freebsd.org/D32256
2022-07-06 11:26:34 +00:00
Bjoern A. Zeeb
ec32fc2af5 dwc3: fix from not working
During the review of 09cdf4878c we
switched from cached registers to reading them as needed.
One read of the two reads was moved after the softreset got triggered
and as a result returned 0 rather than the proper register value.
Moving the read before the softreset gets initiated seems to make
things work again and xhci.c no longer complains about
"Controller does not support 4K page size.".

MFC after:	10 days
X-MFC with:	09cdf4878c
Pointy hat to:	bz
2022-07-05 00:53:42 +00:00
Bjoern A. Zeeb
11a7d5e5d9 dwc3: improve debugging
Rather than hiding behind #if 0, hide the debugging behind DWC3_DEBUG
so it can be turned on with a single define.  Require bootverbose
to print anything so we can still avoid spamming the console if DWC3_DEBUG
is on.
Harmonize the format string in snsp_dwc3_dump_regs() to always print the
full register and also print the XHCI quirks.
Call snsp_dwc3_dump_regs() twice, before and after generic XHCI attachment
and initialisation as this may have an effect on the confirgumation state.

Obtained from:	an old debug patch
MFC after:	2 weeks
Reviewed by:	mw
Differential Revision: https://reviews.freebsd.org/D35700
2022-07-03 22:19:40 +00:00
Bjoern A. Zeeb
09cdf4878c dwc3: add more quirks and checks
Rather than just printing the Global SNPS ID Register store it as well
so we can do a version check later.
In addition, for debugging purposes, read the Global Hardware Parameters
Registers and print them.

Based on the snpsid disable an XHCI feature using a quirk prepared
in 447c418da0.
Add the "snps,dis_u3_susphy_quirk" quirk and handle Suspend USB3.0 SS PHY
after power-on-reset/during core initialization (suggested to be cleared)
based on the DWC3_GHWPARAMS0 register.

MFC after:	2 weeks
Obtained from:	an old debugging patch
Reviewed by:	mw (earlier version), mmel
Differential Revision: https://reviews.freebsd.org/D35699
2022-07-03 22:17:35 +00:00
Bjoern A. Zeeb
cec0a5ec6b dwc3: uncondinationally enable Host IN Auto Retry
Enable dwc3's auto retry feature. For IN transfers with crc errors
or internal overruns this will make the host reply with a
non-terminating retry ACK.  I believe the hope was to improve
reliability after seeing occasional hiccups.

Obtained from:	an old debugging patch
MFC after:	2 weeks
Reviewed by:	mw
Differential Revision: https://reviews.freebsd.org/D35698
2022-07-03 22:15:12 +00:00
Bjoern A. Zeeb
0084212bfd dwc3: fix snps,dis-del-phy-power-chg-quirk
If snps,dis-del-phy-power-chg-quirk is set, the register bit should be
cleared not ored on (it's the "dis" version).

MFC after:	2 weeks
Reviewed by:	mw
Differential Revision: https://reviews.freebsd.org/D35697
2022-07-03 22:13:28 +00:00
Bjoern A. Zeeb
b11f52f4db USB: dwc3: use device_{has,get}_property()
Switch the driver to use device based functions which will work not
only with FDT but also ACPI.

While here make dr_mode a local variable as it is only used during
probe and not needed later in the softc.

MFC after:	2 weeks
Reviewed by:	mw
Differential Revision: https://reviews.freebsd.org/D33170
2022-06-28 13:02:11 +00:00
Hans Petter Selasky
b6f615255d uhid(4): Don't read-ahead from the USB IN endpoint.
This avoids an issue where IN endpoint data received from the device right
before the file handle is closed, gets lost.

PR:		263995
MFC after:	1 week
Sponsored by:	NVIDIA Networking
2022-06-23 21:11:24 +02:00
Bjoern A. Zeeb
8f892e9bee XHCI: clear warm and port reset
It seems we do not clear UPS_C_BH_PORT_RESET and UPS_C_PORT_RESET
conditions after warm or port reset.  Add that code.

Obtained from:	an old patch mainly debugging other problems
MFC after:	2 weeks
Reviewed by:	hselasky
Differential Revision: https://reviews.freebsd.org/D35483
2022-06-15 21:10:01 +00:00
Bjoern A. Zeeb
447c418da0 USB: add quirks to XHCI
While XHCI is very generic some revisions of chipsets have problems.
On dwc3 <= 3.00a Port Disable does not seem to work so we need to not
enable it.
For that introduce quirks to xhci so that controllers can steer
certain features.  I would hope that this is and remains the only one.

Obtained from:	an old patch mainly debugging other problems
MFC after:	2 weeks
Reviewed by:	hselasky
Differential Revision: https://reviews.freebsd.org/D35482
2022-06-15 21:08:58 +00:00
Hans Petter Selasky
f25a0a0f21 uchcom(4): Add new USB ID.
PR:		260783
PR:		264634
MFC after:	1 week
Sponsored by:	NVIDIA Networking
2022-06-12 16:42:03 +02:00
Hans Petter Selasky
bc2e447338 upgt(4): Adjust all pause calls to use milliseconds instead of ticks.
MFC after:	1 week
Sponsored by:	NVIDIA Networking
2022-06-09 15:18:02 +02:00
Hans Petter Selasky
c6c22ebb38 urtw(4): Adjust all pause calls to use milliseconds instead of ticks.
MFC after:	1 week
Sponsored by:	NVIDIA Networking
2022-06-09 15:18:02 +02:00
John Baldwin
bc9372d784 usb: Remove unused devclass arguments to DRIVER_MODULE. 2022-05-06 15:46:57 -07:00
John Baldwin
a4777bb437 Remove unused hidraw_devclass. 2022-05-06 15:46:57 -07:00
John Baldwin
3e38757d4c Remove unused miibus_devclass and miibus_fdt_devclass. 2022-05-06 15:39:28 -07:00
Hans Petter Selasky
a1c0442b41 xhci(4): Tweak USB port speed checks to allow newer super speed generations.
This allows setting the U1 and U2 port timeout values.

MFC after:	1 week
Sponsored by:	NVIDIA Networking
2022-05-04 09:26:39 +02:00
Hans Petter Selasky
d730333c80 xhci(4): Properly define all basic USB port speeds.
MFC after:	1 week
Sponsored by:	NVIDIA Networking
2022-05-04 09:26:38 +02:00
Hans Petter Selasky
09dd1adfa4 xhci(4): Always add and evaluate the slot context.
Because the maximum number of endpoint contexts is stored there.

Tested by:	ehaupt@
PR:		262882
MFC after:	3 hours
Sponsored by:	NVIDIA Networking
2022-05-03 18:13:53 +02:00
Hans Petter Selasky
e276d28150 xhci(4): Only drop BULK and INTERRUPT endpoints to reset data toggle.
Only drop BULK and INTERRUPT endpoints, to reset the data toggle,
because for other endpoint types this is not critical.

Tested by:	ehaupt@
PR:		262882
MFC after:	3 hours
Sponsored by:	NVIDIA Networking
2022-05-03 18:13:53 +02:00
Hans Petter Selasky
6eb6aeef7e uath(4): Fix incorrect byte-swapping and a buffer length check.
PR:			263638
Reported by:		Jeff Gibbons <jgibbons@protogate.com>
MFC after:		1 week
Sponsored by:		NVIDIA Networking
2022-04-30 11:23:07 +02:00
Kornel Duleba
0923ff82fb Add USB ID and quirks for Huawei E3372
Set UQ_MSC_NO_INQUIRY and UQ_MSC_NO_GETMAXLUN quirks for mass storage,
which is the initial mode of this dongle.
The modem is shipped with at least two firmware versions: 10.X and 11.X,
without ability to update to the newer one.
The 11.X version works more or less fine, but the 10.X one resets after
receiving either an SCSI INQUIRY, or a get_max_lun command.
Since both of those are used for automatic quirk detection, this leads
to a reset cycle making the device somewhat unusable.

Sponsored by: Stormshield
Obtained from: Semihalf
Reviewed by: hps, wma
Differential Revision: https://reviews.freebsd.org/D35076
2022-04-28 08:42:30 +02:00
Kornel Duleba
3ee943868c usb: Respect NO_INQUIRY quirk during device enumeration
Both usb_iface_is_cdrom and usb_msc_auto_quirk functions use SCSI INQUIRY
command to probe various properties of usb mass storage devices.
The problem here is that some very broken devices don't like this command.
Check if UQ_MSC_NO_INQUIRY quirk is set and skip cdrom and quirk
autodetection in that case.

Sponsored by: Stormshield
Obtained from: Semihalf
Reviewed by: hps, wma
Differential Revision: https://reviews.freebsd.org/D35075
2022-04-28 08:42:26 +02:00
Hans Petter Selasky
cda31e7349 xhci(4): Ensure the so-called data toggle gets properly reset.
Use the drop and enable endpoint context commands to force a reset of
the data toggle for USB 2.0 and USB 3.0 after:
 - clear endpoint halt command (when the driver wishes).
 - set config command (when the kernel or user-space wants).
 - set alternate setting command (only affected endpoints).

Some XHCI HW implementations may not allow the endpoint reset command when
the endpoint context is not in the halted state.

Reported by:		Juniper and Gary Jennejohn
MFC after:		1 week
Sponsored by:		NVIDIA Networking
2022-04-21 17:01:13 +02:00
John Baldwin
540ac338d5 uhid_snes: Remove USB_ST_TRANSFERRED handling for the status request.
The result of the request computed in new_status was never returned to
the caller leaving new_status as a set-but-unused variable.  Removing
new_status leaves sc->previous_status as a write-only variable.
Removing sc->previous_status leaves current_status as a write-only
variable, so it collapses down to removing the entire
USB_ST_TRANSFERRED case.

Arguably, all of the support for UHID_SNES_STATUS_DT_RD should be
removed as it doesn't return anything to the caller.  If the request
should be fixed instead then this commit should be reverted and
new_status should be returned to whoever submitted the request.

Differential Revision:	https://reviews.freebsd.org/D34840
2022-04-18 12:27:48 -07:00
John Baldwin
ffd8101e93 usb: Add a __usbdebug_used for variables only used under #ifdef USB_DEBUG.
Use it for various variables only used in DPRINTF debug traces
conditional on USB_DEBUG.
2022-04-13 16:08:20 -07:00
John Baldwin
1c5f188212 usb: Use __diagused for variables only used in KASSERT(). 2022-04-13 16:08:20 -07:00
Gordon Bergling
2e09a4ac3b usb(4): Remove a double word in a source code comment
- s/for for/for/

MFC after:	3 days
2022-04-09 11:02:23 +02:00
Gordon Bergling
74c6ca6fbf usb: Remove some double words in source code comments
- s/for for/for/

MFC after:	3 days
2022-04-09 10:34:48 +02:00
Gordon Bergling
c8c1c23a8c usb(4): Fix two typos in source code comments
- s/negotation/negotiation/

MFC after:	3 days
2022-04-09 10:13:52 +02:00
John Baldwin
438548300b ehci_imx: Remove unused variable. 2022-04-08 18:31:29 -07:00
John Baldwin
197b9a2ef0 atp: Remove unused variable. 2022-04-07 17:01:29 -07:00
John Baldwin
7295403595 if_urtw: Remove unused variables. 2022-04-07 17:01:29 -07:00
John Baldwin
d62a6ff38b if_upgt: Remove unused variables. 2022-04-07 17:01:29 -07:00
John Baldwin
8c3923ae2f uhci: Remove write-only variable. 2022-04-06 16:45:27 -07:00
Warner Losh
7a1bef40f1 ustorage_fs_verify: eliminate write only variables file_offset and file_offset
Sponsored by:		Netflix
2022-04-04 22:30:40 -06:00
Warner Losh
f7097359c8 mgue: eliminate write only variables ret, err and error
Sponsored by:		Netflix
2022-04-04 22:30:38 -06:00
Warner Losh
11110685fc cp2112iic_intr_write_callback: eliminate write only variable psc
Sponsored by:		Netflix
2022-04-04 22:30:36 -06:00
Warner Losh
53c1f1fc60 wsp_intr_callback: eliminate write only variable h
Sponsored by:		Netflix
2022-04-04 22:30:33 -06:00
Warner Losh
12312f7583 uss820dci: eliminate unused variables sc, ep_no
Sponsored by:		Netflix
2022-04-04 22:30:31 -06:00
Warner Losh
6ccdcae1b9 uhci_xfer_setup: eliminate write only variable sc
Sponsored by:		Netflix
2022-04-04 22:30:29 -06:00
Warner Losh
ab59cd6a0b musb: eliminate write only variable sc
Sponsored by:		Netflix
2022-04-04 22:30:26 -06:00
Warner Losh
e73b02f66b atmegadci: eliminate unused variables sc, ep_no
Sponsored by:		Netflix
2022-04-04 22:30:23 -06:00
Gordon Bergling
9094c3a71b usb(3): Fix a few typos in source code comments
- s/paniced/panicked/

MFC after:	3 days
2022-04-02 10:14:32 +02:00
Hans Petter Selasky
88162f7abd ulpt(4): Add support for Epson TM-U220B.
Submitted by:		Archimedes Gaviola <archimedes.gaviola@gmail.com>
MFC after:		1 week
Sponsored by:		NVIDIA Networking
2022-04-02 02:29:05 +02:00
Greg Lehey
31e076d70b Add devices and quirks for some Olympus cameras.
Reviewed by:	hps@
Fixes:	   	Problems attaching Olympus cameras.
MFC after:	2 weeks
2022-03-23 12:40:28 +11:00