LINUX.ORG.RU

USB 3.1 не работает, не инициализируется контроллер usbdrd 3_1

 , , , ,


1

1

Есть плата Firefly AIO-3588JQ. На основе исходников от производителя, я модифицировал и пересобрал ядро 5.10.204. DTS использовал родные, ничего там не менял.

На текущий момент почему-то 4 порта USB 3.1 (те, что разведены в общем разъёме вместе с Ethernet) не работают, хотя питание на порты подаются.

# ls -la /sys/bus/usb/devices/
total 0
drwxr-xr-x    2 root     root             0 Feb 11 13:50 .
drwxr-xr-x    4 root     root             0 Feb 11 13:50 ..
lrwxrwxrwx    1 root     root             0 Feb 11 13:50 1-0:1.0 -> ../../../devices/platform/usbhost3_0/fcd00000.usb/xhci-hcd.3.auto/usb1/1-0:1.0
lrwxrwxrwx    1 root     root             0 Feb 11 13:50 2-0:1.0 -> ../../../devices/platform/usbhost3_0/fcd00000.usb/xhci-hcd.3.auto/usb2/2-0:1.0
lrwxrwxrwx    1 root     root             0 Feb 11 13:50 3-0:1.0 -> ../../../devices/platform/usbdrd3_0/fc000000.usb/xhci-hcd.5.auto/usb3/3-0:1.0
lrwxrwxrwx    1 root     root             0 Feb 11 13:50 4-0:1.0 -> ../../../devices/platform/usbdrd3_0/fc000000.usb/xhci-hcd.5.auto/usb4/4-0:1.0
lrwxrwxrwx    1 root     root             0 Feb 11 13:50 5-0:1.0 -> ../../../devices/platform/fc800000.usb/usb5/5-0:1.0
lrwxrwxrwx    1 root     root             0 Feb 11 13:50 6-0:1.0 -> ../../../devices/platform/fc880000.usb/usb6/6-0:1.0
lrwxrwxrwx    1 root     root             0 Feb 11 13:50 6-1 -> ../../../devices/platform/fc880000.usb/usb6/6-1
lrwxrwxrwx    1 root     root             0 Feb 11 13:50 6-1:1.0 -> ../../../devices/platform/fc880000.usb/usb6/6-1/6-1:1.0
lrwxrwxrwx    1 root     root             0 Feb 11 13:50 7-0:1.0 -> ../../../devices/platform/fc840000.usb/usb7/7-0:1.0
lrwxrwxrwx    1 root     root             0 Feb 11 13:50 8-0:1.0 -> ../../../devices/platform/fc8c0000.usb/usb8/8-0:1.0
lrwxrwxrwx    1 root     root             0 Feb 11 13:50 usb1 -> ../../../devices/platform/usbhost3_0/fcd00000.usb/xhci-hcd.3.auto/usb1
lrwxrwxrwx    1 root     root             0 Feb 11 13:50 usb2 -> ../../../devices/platform/usbhost3_0/fcd00000.usb/xhci-hcd.3.auto/usb2
lrwxrwxrwx    1 root     root             0 Feb 11 13:50 usb3 -> ../../../devices/platform/usbdrd3_0/fc000000.usb/xhci-hcd.5.auto/usb3
lrwxrwxrwx    1 root     root             0 Feb 11 13:50 usb4 -> ../../../devices/platform/usbdrd3_0/fc000000.usb/xhci-hcd.5.auto/usb4
lrwxrwxrwx    1 root     root             0 Feb 11 13:50 usb5 -> ../../../devices/platform/fc800000.usb/usb5
lrwxrwxrwx    1 root     root             0 Feb 11 13:50 usb6 -> ../../../devices/platform/fc880000.usb/usb6
lrwxrwxrwx    1 root     root             0 Feb 11 13:50 usb7 -> ../../../devices/platform/fc840000.usb/usb7
lrwxrwxrwx    1 root     root             0 Feb 11 13:50 usb8 -> ../../../devices/platform/fc8c0000.usb/usb8
# ls -la /sys/bus/platform/devices/usb*
lrwxrwxrwx    1 root     root             0 Feb 11 14:46 /sys/bus/platform/devices/usbdrd3_0 -> ../../../devices/platform/usbdrd3_0
lrwxrwxrwx    1 root     root             0 Feb 11 14:46 /sys/bus/platform/devices/usbdrd3_1 -> ../../../devices/platform/usbdrd3_1
lrwxrwxrwx    1 root     root             0 Feb 11 14:46 /sys/bus/platform/devices/usbhost3_0 -> ../../../devices/platform/usbhost3_0
# ls -la /sys/bus/platform/devices/usbdrd3_1/
total 0
drwxr-xr-x    4 root     root             0 Feb 11 14:46 .
drwxr-xr-x  230 root     root             0 Feb 11 13:50 ..
lrwxrwxrwx    1 root     root             0 Feb 11 14:47 driver -> ../../../bus/platform/drivers/dwc3-of-simple
-rw-r--r--    1 root     root          4096 Feb 11 14:47 driver_override
drwxr-xr-x    3 root     root             0 Feb 11 14:47 fc400000.usb
-r--r--r--    1 root     root          4096 Feb 11 14:47 modalias
lrwxrwxrwx    1 root     root             0 Feb 11 14:47 of_node -> ../../../firmware/devicetree/base/usbdrd3_1
drwxr-xr-x    2 root     root             0 Feb 11 14:47 power
lrwxrwxrwx    1 root     root             0 Feb 11 14:47 subsystem -> ../../../bus/platform
-rw-r--r--    1 root     root          4096 Feb 11 14:47 uevent
# ls -la /sys/bus/platform/devices/usbdrd3_1/fc400000.usb/
total 0
drwxr-xr-x    3 root     root             0 Feb 11 14:47 .
drwxr-xr-x    4 root     root             0 Feb 11 14:46 ..
-rw-r--r--    1 root     root          4096 Feb 11 14:47 driver_override
-r--r--r--    1 root     root          4096 Feb 11 14:47 modalias
lrwxrwxrwx    1 root     root             0 Feb 11 14:47 of_node -> ../../../../firmware/devicetree/base/usbdrd3_1/usb@fc400000
drwxr-xr-x    2 root     root             0 Feb 11 14:47 power
lrwxrwxrwx    1 root     root             0 Feb 11 14:47 subsystem -> ../../../../bus/platform
lrwxrwxrwx    1 root     root             0 Feb 11 14:47 supplier:platform:fd5d4000.syscon:usb2-phy@4000 -> ../../../virtual/devlink/platform:fd5d4000.syscon:usb2-phy@4000--platform:fc400000.usb
lrwxrwxrwx    1 root     root             0 Feb 11 14:47 supplier:platform:fd8d8000.power-management:power-controller -> ../../../virtual/devlink/platform:fd8d8000.power-management:power-controller--platform:fc400000.usb
lrwxrwxrwx    1 root     root             0 Feb 11 14:47 supplier:platform:fed90000.phy -> ../../../virtual/devlink/platform:fed90000.phy--platform:fc400000.usb
-rw-r--r--    1 root     root          4096 Feb 11 14:47 uevent

Насколько я понимаю, у меня не создаётся контроллер usbdrd3_1… Конфигурационный файл:

#
# USB HID support
#
CONFIG_USB_HID=y
# CONFIG_HID_PID is not set
CONFIG_USB_HIDDEV=y
# end of USB HID support

#
# I2C HID support
#
CONFIG_I2C_HID=y
# end of I2C HID support
# end of HID support

CONFIG_USB_OHCI_LITTLE_ENDIAN=y
CONFIG_USB_SUPPORT=y
CONFIG_USB_COMMON=y
# CONFIG_USB_ULPI_BUS is not set
# CONFIG_USB_CONN_GPIO is not set
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB=y
CONFIG_USB_PCI=y
CONFIG_USB_ANNOUNCE_NEW_DEVICES=y

#
# Miscellaneous USB options
#
# CONFIG_USB_DEFAULT_PERSIST is not set
# CONFIG_USB_FEW_INIT_RETRIES is not set
# CONFIG_USB_DYNAMIC_MINORS is not set
CONFIG_USB_OTG=y
# CONFIG_USB_OTG_PRODUCTLIST is not set
# CONFIG_USB_OTG_DISABLE_EXTERNAL_HUB is not set
# CONFIG_USB_OTG_FSM is not set
CONFIG_USB_AUTOSUSPEND_DELAY=2
CONFIG_USB_MON=y

#
# USB Host Controller Drivers
#
# CONFIG_USB_C67X00_HCD is not set
CONFIG_USB_XHCI_HCD=y
# CONFIG_USB_XHCI_DBGCAP is not set
CONFIG_USB_XHCI_PCI=y
# CONFIG_USB_XHCI_PCI_RENESAS is not set
CONFIG_USB_XHCI_PLATFORM=y
CONFIG_USB_EHCI_HCD=y
CONFIG_USB_EHCI_ROOT_HUB_TT=y
CONFIG_USB_EHCI_TT_NEWSCHED=y
CONFIG_USB_EHCI_PCI=y
# CONFIG_USB_EHCI_FSL is not set
CONFIG_USB_EHCI_HCD_PLATFORM=y
# CONFIG_USB_OXU210HP_HCD is not set
# CONFIG_USB_ISP116X_HCD is not set
# CONFIG_USB_FOTG210_HCD is not set
# CONFIG_USB_MAX3421_HCD is not set
CONFIG_USB_OHCI_HCD=y
# CONFIG_USB_OHCI_HCD_PCI is not set
CONFIG_USB_OHCI_HCD_PLATFORM=y
# CONFIG_USB_UHCI_HCD is not set
# CONFIG_USB_SL811_HCD is not set
# CONFIG_USB_R8A66597_HCD is not set
# CONFIG_USB_HCD_TEST_MODE is not set

#
# USB Device Class drivers
#
CONFIG_USB_ACM=y
# CONFIG_USB_PRINTER is not set
CONFIG_USB_WDM=y
# CONFIG_USB_TMC is not set

#
# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
#

#
# also be needed; see USB_STORAGE Help for more info
#
CONFIG_USB_STORAGE=y
# CONFIG_USB_STORAGE_DEBUG is not set
# CONFIG_USB_STORAGE_REALTEK is not set
# CONFIG_USB_STORAGE_DATAFAB is not set
# CONFIG_USB_STORAGE_FREECOM is not set
# CONFIG_USB_STORAGE_ISD200 is not set
# CONFIG_USB_STORAGE_USBAT is not set
# CONFIG_USB_STORAGE_SDDR09 is not set
# CONFIG_USB_STORAGE_SDDR55 is not set
# CONFIG_USB_STORAGE_JUMPSHOT is not set
# CONFIG_USB_STORAGE_ALAUDA is not set
# CONFIG_USB_STORAGE_ONETOUCH is not set
# CONFIG_USB_STORAGE_KARMA is not set
# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
# CONFIG_USB_STORAGE_ENE_UB6250 is not set
CONFIG_USB_UAS=y

#
# USB Imaging devices
#
# CONFIG_USB_MDC800 is not set
# CONFIG_USB_MICROTEK is not set
# CONFIG_USBIP_CORE is not set
# CONFIG_USB_CDNS3 is not set
# CONFIG_USB_MUSB_HDRC is not set
CONFIG_USB_DWC3=y
CONFIG_USB_DWC3_HOST=y
# CONFIG_USB_DWC3_GADGET is not set
# CONFIG_USB_DWC3_DUAL_ROLE is not set

#
# Platform Glue Driver Support
#
CONFIG_USB_DWC3_HAPS=y
CONFIG_USB_DWC3_OF_SIMPLE=y
CONFIG_USB_DWC2=y
# CONFIG_USB_DWC2_HOST is not set

#
# Gadget/Dual-role mode requires USB Gadget support to be enabled
#
# CONFIG_USB_DWC2_PERIPHERAL is not set
CONFIG_USB_DWC2_DUAL_ROLE=y
# CONFIG_USB_DWC2_PCI is not set
# CONFIG_USB_DWC2_DEBUG is not set
# CONFIG_USB_DWC2_TRACK_MISSED_SOFS is not set
# CONFIG_USB_CHIPIDEA is not set
# CONFIG_USB_ISP1760 is not set

#
# USB port drivers
#
CONFIG_USB_SERIAL=y
# CONFIG_USB_SERIAL_CONSOLE is not set
CONFIG_USB_SERIAL_GENERIC=y
# CONFIG_USB_SERIAL_SIMPLE is not set
# CONFIG_USB_SERIAL_AIRCABLE is not set
# CONFIG_USB_SERIAL_ARK3116 is not set
# CONFIG_USB_SERIAL_BELKIN is not set
CONFIG_USB_SERIAL_CH341=y
# CONFIG_USB_SERIAL_WHITEHEAT is not set
# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
CONFIG_USB_SERIAL_CP210X=y
# CONFIG_USB_SERIAL_CYPRESS_M8 is not set
# CONFIG_USB_SERIAL_EMPEG is not set
CONFIG_USB_SERIAL_FTDI_SIO=y
# CONFIG_USB_SERIAL_VISOR is not set
# CONFIG_USB_SERIAL_IPAQ is not set
# CONFIG_USB_SERIAL_IR is not set
# CONFIG_USB_SERIAL_EDGEPORT is not set
# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
# CONFIG_USB_SERIAL_F81232 is not set
# CONFIG_USB_SERIAL_F8153X is not set
# CONFIG_USB_SERIAL_GARMIN is not set
# CONFIG_USB_SERIAL_IPW is not set
# CONFIG_USB_SERIAL_IUU is not set
# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
CONFIG_USB_SERIAL_KEYSPAN=y
# CONFIG_USB_SERIAL_KLSI is not set
# CONFIG_USB_SERIAL_KOBIL_SCT is not set
# CONFIG_USB_SERIAL_MCT_U232 is not set
# CONFIG_USB_SERIAL_METRO is not set
# CONFIG_USB_SERIAL_MOS7720 is not set
# CONFIG_USB_SERIAL_MOS7840 is not set
# CONFIG_USB_SERIAL_MXUPORT is not set
# CONFIG_USB_SERIAL_NAVMAN is not set
CONFIG_USB_SERIAL_PL2303=y
CONFIG_USB_SERIAL_OTI6858=y
# CONFIG_USB_SERIAL_QCAUX is not set
CONFIG_USB_SERIAL_QUALCOMM=y
# CONFIG_USB_SERIAL_SPCP8X5 is not set
# CONFIG_USB_SERIAL_SAFE is not set
CONFIG_USB_SERIAL_SIERRAWIRELESS=y
# CONFIG_USB_SERIAL_SYMBOL is not set
# CONFIG_USB_SERIAL_TI is not set
# CONFIG_USB_SERIAL_CYBERJACK is not set
# CONFIG_USB_SERIAL_XIRCOM is not set
CONFIG_USB_SERIAL_WWAN=y
CONFIG_USB_SERIAL_OPTION=y
# CONFIG_USB_SERIAL_OMNINET is not set
# CONFIG_USB_SERIAL_OPTICON is not set
# CONFIG_USB_SERIAL_XSENS_MT is not set
# CONFIG_USB_SERIAL_WISHBONE is not set
# CONFIG_USB_SERIAL_SSU100 is not set
# CONFIG_USB_SERIAL_QT2 is not set
# CONFIG_USB_SERIAL_UPD78F0730 is not set
# CONFIG_USB_SERIAL_DEBUG is not set

#
# USB Miscellaneous drivers
#
# CONFIG_USB_EMI62 is not set
# CONFIG_USB_EMI26 is not set
# CONFIG_USB_ADUTUX is not set
# CONFIG_USB_SEVSEG is not set
# CONFIG_USB_LEGOTOWER is not set
# CONFIG_USB_LCD is not set
# CONFIG_USB_CYPRESS_CY7C63 is not set
# CONFIG_USB_CYTHERM is not set
# CONFIG_USB_IDMOUSE is not set
# CONFIG_USB_FTDI_ELAN is not set
# CONFIG_USB_APPLEDISPLAY is not set
# CONFIG_APPLE_MFI_FASTCHARGE is not set
# CONFIG_USB_SISUSBVGA is not set
# CONFIG_USB_LD is not set
# CONFIG_USB_TRANCEVIBRATOR is not set
# CONFIG_USB_IOWARRIOR is not set
# CONFIG_USB_TEST is not set
# CONFIG_USB_EHSET_TEST_FIXTURE is not set
# CONFIG_USB_ISIGHTFW is not set
# CONFIG_USB_YUREX is not set
CONFIG_USB_EZUSB_FX2=y
# CONFIG_USB_HUB_USB251XB is not set
# CONFIG_USB_HSIC_USB3503 is not set
# CONFIG_USB_HSIC_USB4604 is not set
# CONFIG_USB_LINK_LAYER_TEST is not set
# CONFIG_USB_CHAOSKEY is not set

#
# USB Physical Layer drivers
#
CONFIG_USB_PHY=y
# CONFIG_NOP_USB_XCEIV is not set
# CONFIG_USB_GPIO_VBUS is not set
# CONFIG_USB_ISP1301 is not set
# CONFIG_USB_ULPI is not set
# end of USB Physical Layer drivers

CONFIG_USB_GADGET=y
# CONFIG_USB_GADGET_DEBUG is not set
CONFIG_USB_GADGET_DEBUG_FILES=y
# CONFIG_USB_GADGET_DEBUG_FS is not set
CONFIG_USB_GADGET_VBUS_DRAW=500
CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
# CONFIG_U_SERIAL_CONSOLE is not set

#
# USB Peripheral Controller
#
# CONFIG_USB_FOTG210_UDC is not set
# CONFIG_USB_GR_UDC is not set
# CONFIG_USB_R8A66597 is not set
# CONFIG_USB_PXA27X is not set
# CONFIG_USB_MV_UDC is not set
# CONFIG_USB_MV_U3D is not set
# CONFIG_USB_SNP_UDC_PLAT is not set
# CONFIG_USB_M66592 is not set
# CONFIG_USB_BDC_UDC is not set
# CONFIG_USB_AMD5536UDC is not set
# CONFIG_USB_NET2272 is not set
# CONFIG_USB_NET2280 is not set
# CONFIG_USB_GOKU is not set
# CONFIG_USB_EG20T is not set
# CONFIG_USB_GADGET_XILINX is not set
# CONFIG_USB_MAX3420_UDC is not set
# CONFIG_USB_DUMMY_HCD is not set
# end of USB Peripheral Controller

CONFIG_USB_LIBCOMPOSITE=y
CONFIG_USB_F_ACM=y
CONFIG_USB_U_SERIAL=y
CONFIG_USB_U_ETHER=y
CONFIG_USB_F_RNDIS=y
CONFIG_USB_F_MASS_STORAGE=y
CONFIG_USB_F_FS=y
CONFIG_USB_F_UVC=y
CONFIG_USB_CONFIGFS=y
CONFIG_USB_CONFIGFS_UEVENT=y
# CONFIG_USB_CONFIGFS_SERIAL is not set
CONFIG_USB_CONFIGFS_ACM=y
# CONFIG_USB_CONFIGFS_OBEX is not set
# CONFIG_USB_CONFIGFS_NCM is not set
# CONFIG_USB_CONFIGFS_ECM is not set
# CONFIG_USB_CONFIGFS_ECM_SUBSET is not set
CONFIG_USB_CONFIGFS_RNDIS=y
# CONFIG_USB_CONFIGFS_EEM is not set
CONFIG_USB_CONFIGFS_MASS_STORAGE=y
# CONFIG_USB_CONFIGFS_F_LB_SS is not set
CONFIG_USB_CONFIGFS_F_FS=y
# CONFIG_USB_CONFIGFS_F_ACC is not set
# CONFIG_USB_CONFIGFS_F_AUDIO_SRC is not set
# CONFIG_USB_CONFIGFS_F_UAC1 is not set
# CONFIG_USB_CONFIGFS_F_UAC1_LEGACY is not set
# CONFIG_USB_CONFIGFS_F_UAC2 is not set
# CONFIG_USB_CONFIGFS_F_MIDI is not set
# CONFIG_USB_CONFIGFS_F_HID is not set
CONFIG_USB_CONFIGFS_F_UVC=y
# CONFIG_USB_CONFIGFS_F_PRINTER is not set

#
# USB Gadget precomposed configurations
#
# CONFIG_USB_ZERO is not set
# CONFIG_USB_AUDIO is not set
# CONFIG_USB_ETH is not set
# CONFIG_USB_G_NCM is not set
# CONFIG_USB_GADGETFS is not set
# CONFIG_USB_FUNCTIONFS is not set
# CONFIG_USB_MASS_STORAGE is not set
# CONFIG_USB_G_SERIAL is not set
# CONFIG_USB_MIDI_GADGET is not set
# CONFIG_USB_G_PRINTER is not set
# CONFIG_USB_CDC_COMPOSITE is not set
# CONFIG_USB_G_ACM_MS is not set
# CONFIG_USB_G_MULTI is not set
# CONFIG_USB_G_HID is not set
# CONFIG_USB_G_DBGP is not set
# CONFIG_USB_G_WEBCAM is not set
# CONFIG_USB_RAW_GADGET is not set
# end of USB Gadget precomposed configurations

CONFIG_TYPEC=y
CONFIG_TYPEC_TCPM=y
CONFIG_TYPEC_TCPCI=y
# CONFIG_TYPEC_ET7303 is not set
CONFIG_TYPEC_HUSB311=y
# CONFIG_TYPEC_RT1711H is not set
# CONFIG_TYPEC_TCPCI_MAXIM is not set
CONFIG_TYPEC_FUSB302=y
# CONFIG_TYPEC_UCSI is not set
# CONFIG_TYPEC_HD3SS3220 is not set
# CONFIG_TYPEC_TPS6598X is not set
# CONFIG_TYPEC_STUSB160X is not set

#
# USB Type-C Multiplexer/DeMultiplexer Switch support
#
# CONFIG_TYPEC_MUX_PI3USB30532 is not set
# end of USB Type-C Multiplexer/DeMultiplexer Switch support

#
# USB Type-C Alternate Mode drivers
#
# CONFIG_TYPEC_DP_ALTMODE is not set
# end of USB Type-C Alternate Mode drivers

CONFIG_USB_ROLE_SWITCH=y
CONFIG_MMC=y
CONFIG_PWRSEQ_EMMC=y
CONFIG_PWRSEQ_SIMPLE=y
CONFIG_MMC_BLOCK=y
CONFIG_MMC_BLOCK_MINORS=32
# CONFIG_SDIO_UART is not set
CONFIG_MMC_TEST=y

Когда я устанавливаю CONFIG_USB_DWC3_HOST=y, появляется usbdrd3_0 (хотя правильнее использовать CONFIG_USB_DWC3_DUAL_ROLE, но по какой-то причине его включение никак не влияет на создание устройства), но мне нужен usbdrd3_1..

Ссылка на лог: https://runit.hexlet.ru/u/guest_VFw9f/snippets/giNLJTj

Ответ на: комментарий от steemandlinux

dts без использования оверлеев.

Изначально dts под использования CONFIG_USB_DWC3_DUAL_ROLE . Что как я понимаю под работу как в режиме хоста, так и девайса (otg). Но в таком формате даже usbdrd3_0 не создаётся.

Кусок dts (рекомпилированый dtb):

...
	usbdrd3_0 {
		compatible = "rockchip,rk3588-dwc3\0rockchip,rk3399-dwc3";
		clocks = <0x02 0x1a3 0x02 0x1a2 0x02 0x1a1>;
		clock-names = "ref\0suspend\0bus";
		#address-cells = <0x02>;
		#size-cells = <0x02>;
		ranges;
		status = "okay";

		usb@fc000000 {
			compatible = "snps,dwc3";
			reg = <0x00 0xfc000000 0x00 0x400000>;
			interrupts = <0x00 0xdc 0x04>;
			power-domains = <0x52 0x1f>;
			resets = <0x02 0x2a4>;
			reset-names = "usb3-otg";
			dr_mode = "otg";
			phys = <0x57 0x58>;
			phy-names = "usb2-phy\0usb3-phy";
			phy_type = "utmi_wide";
			snps,dis_enblslpm_quirk;
			snps,dis-u1-entry-quirk;
			snps,dis-u2-entry-quirk;
			snps,dis-u2-freeclk-exists-quirk;
			snps,dis-del-phy-power-chg-quirk;
			snps,dis-tx-ipgap-linecheck-quirk;
			snps,parkmode-disable-ss-quirk;
			quirk-skip-phy-init;
			status = "okay";
			usb-role-switch;

			port {
				#address-cells = <0x01>;
				#size-cells = <0x00>;

				endpoint@0 {
					reg = <0x00>;
					remote-endpoint = <0x59>;
					phandle = <0x167>;
				};
			};
		};
	};

	usb@fc800000 {
		compatible = "rockchip,rk3588-ehci\0generic-ehci";
		reg = <0x00 0xfc800000 0x00 0x40000>;
		interrupts = <0x00 0xd7 0x04>;
		clocks = <0x02 0x19d 0x02 0x19e 0x5a>;
		clock-names = "usbhost\0arbiter\0utmi";
		companion = <0x5b>;
		phys = <0x5c>;
		phy-names = "usb2-phy";
		power-domains = <0x52 0x1f>;
		status = "okay";
	};

	usb@fc840000 {
		compatible = "generic-ohci";
		reg = <0x00 0xfc840000 0x00 0x40000>;
		interrupts = <0x00 0xd8 0x04>;
		clocks = <0x02 0x19d 0x02 0x19e 0x5a>;
		clock-names = "usbhost\0arbiter\0utmi";
		phys = <0x5c>;
		phy-names = "usb2-phy";
		power-domains = <0x52 0x1f>;
		status = "okay";
		phandle = <0x5b>;
	};

	usb@fc880000 {
		compatible = "rockchip,rk3588-ehci\0generic-ehci";
		reg = <0x00 0xfc880000 0x00 0x40000>;
		interrupts = <0x00 0xda 0x04>;
		clocks = <0x02 0x19f 0x02 0x1a0 0x5d>;
		clock-names = "usbhost\0arbiter\0utmi";
		companion = <0x5e>;
		phys = <0x5f>;
		phy-names = "usb2-phy";
		power-domains = <0x52 0x1f>;
		status = "okay";
	};

	usb@fc8c0000 {
		compatible = "generic-ohci";
		reg = <0x00 0xfc8c0000 0x00 0x40000>;
		interrupts = <0x00 0xdb 0x04>;
		clocks = <0x02 0x19f 0x02 0x1a0 0x5d>;
		clock-names = "usbhost\0arbiter\0utmi";
		phys = <0x5f>;
		phy-names = "usb2-phy";
		power-domains = <0x52 0x1f>;
		status = "okay";
		phandle = <0x5e>;
	};
...
	usbdrd3_1 {
		compatible = "rockchip,rk3588-dwc3\0rockchip,rk3399-dwc3";
		clocks = <0x02 0x1a6 0x02 0x1a5 0x02 0x1a4>;
		clock-names = "ref\0suspend\0bus";
		#address-cells = <0x02>;
		#size-cells = <0x02>;
		ranges;
		status = "okay";

		usb@fc400000 {
			compatible = "snps,dwc3";
			reg = <0x00 0xfc400000 0x00 0x400000>;
			interrupts = <0x00 0xdd 0x04>;
			power-domains = <0x52 0x1f>;
			resets = <0x02 0x2a7>;
			reset-names = "usb3-otg";
			dr_mode = "host";
			phys = <0x18a 0x18b>;
			phy-names = "usb2-phy\0usb3-phy";
			phy_type = "utmi_wide";
			snps,dis_enblslpm_quirk;
			snps,dis-u2-freeclk-exists-quirk;
			snps,dis-del-phy-power-chg-quirk;
			snps,dis-tx-ipgap-linecheck-quirk;
			snps,parkmode-disable-ss-quirk;
			status = "okay";
		};
	};
...

Полный dts (рекомпилированый dtb): https://runit.hexlet.ru/u/Rivares1853/snippets/ltHnRFX

rivares1853
() автор топика
Ответ на: комментарий от rivares1853

Начал дебажить, вижу упорные попытки (раз 5..) создать устройство:

[   13.103550] <***> 0  core.c dwc3_probe() Dev: fc400000.usb
[   13.103566] <***> 1  core.c dwc3_probe()
[   13.103575] <***> 2  core.c dwc3_probe()
[   13.103583] <***> 3  core.c dwc3_probe()
[   13.103781] <***> 4  core.c dwc3_probe()
[   13.104008] <***> 5  core.c dwc3_probe()
[   13.104024] <***> 6  core.c dwc3_probe()
[   13.104031] <***> 7  core.c dwc3_probe()
[   13.104039] <***> 8  core.c dwc3_probe()
[   13.104048] <***> 9  core.c dwc3_probe()
[   13.104057] <***> 10  core.c dwc3_probe()
[   13.104065] <***> 11  core.c dwc3_probe()
[   13.104079] <***> 12  core.c dwc3_probe()
[   13.104119] <***> 13  core.c dwc3_probe()
[   13.104175] <***> 14  core.c dwc3_probe()
[   13.104181] <***> 15  core.c dwc3_probe()
[   13.104190] <***> 16  core.c dwc3_probe()
[   13.104197] <***> 0  core.c dwc3_core_init()
[   13.104207] <***> 1  core.c dwc3_core_init()
[   13.104214] <***> 2  core.c dwc3_core_init()
[   13.104221] <***> 0  core.c dwc3_core_get_phy()
[   13.104227] <***> 01  core.c dwc3_core_get_phy()
[   13.104243] <***> 1  core.c dwc3_core_get_phy()
[   13.104252] <***> 2  core.c dwc3_core_get_phy()
[   13.104699] <***> 3  core.c dwc3_core_get_phy()
[   13.104788] <***> 16  core.c dwc3_core_init() Result: -517
[   13.104796] <***> 17  core.c dwc3_core_init() Result: -517
[   13.104810] <***> 23  core.c dwc3_probe()
[   13.104819] <***> 24  core.c dwc3_probe()
[   13.104856] <***> 25  core.c dwc3_probe()
[   13.104866] <***> 26  core.c dwc3_probe()
[   13.104917] <***> 27  core.c dwc3_probe() Result: -517
rivares1853
() автор топика
Ответ на: комментарий от rivares1853

После дебага выяснил, что всё утыкается в нахождении usb3-phy, почему-то когда идёт поиск usbdrd3_0.usb@fc000000.phy-names , то там он его находит, а при поиски usbdrd3_1.usb@fc400000.phy-names usb3-phy не находит … Это разве не один и тот же usb3-phy ? …

rivares1853
() автор топика

Вот видишь для каждого режима нужен свой патч:

./dtb-6.1.115-vendor-rk35xx/rockchip/overlay/rk3588-dwc3-host.dtbo
./dtb-6.1.115-vendor-rk35xx/rockchip/overlay/rk3568-dwc3-peripheral.dtbo
./dtb-6.1.115-vendor-rk35xx/rockchip/overlay/rk3568-dwc3-otg.dtbo
./dtb-6.1.115-vendor-rk35xx/rockchip/overlay/rk3588-dwc3-peripheral.dtbo
./dtb-6.1.115-vendor-rk35xx/rockchip/overlay/rk3568-dwc3-host.dtbo

Скачай dietpi образ для аналогичного процессора.

Создай loop устройство:

sudo losetup -f -P DietPi_OrangePi5Pro-ARMv8-Bookworm.img

Декомпилируй патчи и посмотри разницу.

steemandlinux ★★★★★
()
Ответ на: комментарий от steemandlinux

Спасибо за идею!

Но путём дебага, я выяснил, что usbdrd3_1.usb@fc400000 зависит от usbdp_phy1(phy@fed90000), который тоже не может создаться.

usbdp_phy1: phy@fed90000 {
		compatible = "rockchip,rk3588-usbdp-phy";
		reg = <0x0 0xfed90000 0x0 0x10000>;
		rockchip,u2phy-grf = <&usb2phy1_grf>;
		rockchip,usb-grf = <&usb_grf>;
		rockchip,usbdpphy-grf = <&usbdpphy1_grf>;
		rockchip,vo-grf = <&vo0_grf>;
		clocks = <&cru CLK_USBDPPHY_MIPIDCPPHY_REF>,
			 <&cru CLK_USBDP_PHY1_IMMORTAL>,
			 <&cru PCLK_USBDPPHY1>,
			 <&u2phy1>; // <&u2phy0>;
		clock-names = "refclk", "immortal", "pclk", "utmi";
		resets = <&cru SRST_USBDP_COMBO_PHY1_INIT>,
			 <&cru SRST_USBDP_COMBO_PHY1_CMN>,
			 <&cru SRST_USBDP_COMBO_PHY1_LANE>,
			 <&cru SRST_USBDP_COMBO_PHY1_PCS>,
			 <&cru SRST_P_USBDPPHY1>;
		reset-names = "init", "cmn", "lane", "pcs_apb", "pma_apb";
		status = "disabled";

		usbdp_phy1_dp: dp-port {
			#phy-cells = <0>;
			status = "disabled";
		};

		usbdp_phy1_u3: u3-port {
			#phy-cells = <0>;
			status = "disabled";
		};
	};

Я начал искать отлаживая код, почему же он не создаётся… Оказывается, что в ф-ции udphy_clk_init() файла phy-rockchip-usbdp.c нет обработки ошибки -EPROBE_DEFER, которую может вернуть ф-ия devm_clk_bulk_get_all(), вместо этого значение этой ошибки тупо подменяется другим значением (-ENODEV), которое не предполагает повторной попытки регистрации устройства (вызова ..._probe()).

static int udphy_clk_init(struct rockchip_udphy *udphy, struct device *dev)
{
	int i;

	udphy->num_clks = devm_clk_bulk_get_all(dev, &udphy->clks);
	if (udphy->num_clks < 1) {
		// Add calculate -EPROBE_DEFER
		if (udphy->num_clks == -EPROBE_DEFER) {	
			return -EPROBE_DEFER;
		}
		//
		return -ENODEV;
	}

	/* used for configure phy reference clock frequency */
	for (i = 0; i < udphy->num_clks; i++) {
		if (!strncmp(udphy->clks[i].id, "refclk", 6)) {
			udphy->refclk = udphy->clks[i].clk;
			break;
		}
	}

	if (!udphy->refclk)
		dev_warn(udphy->dev, "no refclk found\n");

	return 0;
}

Но настоящая причина, к сожалению, другая … Почему-то в моей версии ядра инициализация/регистрация/запуск регуляторов напряжения и всего что связано с питанием периферии происходит как-то очень поздно… поэтому в моём логе много ошибок -517 (-EPROBE_DEFER)..

Было бы здорово, если можно было бы построить граф зависимостей всех нодов в dts… А ещё и построить датаграмму задержек включения регуляторов напряжения из dts..

rivares1853
() автор топика
Ответ на: комментарий от rivares1853

Есть мнение, что включать периферию надо на этапе загрузчика (и даже раньше). Чтобы работали всякие перепрошивки через usb.

Возможно, твоя проблема вообще в u-boot.

yax123 ★★★★★
()
Ответ на: комментарий от rivares1853

У меня как-то была проблема похожая, так что PCIE звуковая с USB мостом отваливалась кпк в шиндовс. Решилось сборкой ядра в монолит без модулей насколько я помню. Линукс не всегда вменяемо грузится. Нынче другая заморочка с драйвером от Creative AE-5 переделанном для Creative AE-7 полноценно может загрузиться только в OpenSuse, потому что там не корежит полностью процесс загрузки и система грузится полноценно как с флешки. Возможно откапывание проблемы в этом месте решит ее, но почему-то уже типа решена тема.

anonymous
()