Udevadm info starts with the device specified by the devpath and then walks up the chain of parent devices. It prints for every device found, all possible attributes in the udev rules key format. A rule to match, can be composed by the attributes of the device and the attributes from one single parent device. looking at device '/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.5/1-1.5:1.0/gpiochip3': KERNEL=="gpiochip3" SUBSYSTEM=="gpio" DRIVER=="" looking at parent device '/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.5/1-1.5:1.0': KERNELS=="1-1.5:1.0" SUBSYSTEMS=="usb" DRIVERS=="ftdi_sio" ATTRS{supports_autosuspend}=="1" ATTRS{bInterfaceSubClass}=="ff" ATTRS{interface}=="FT232R USB UART" ATTRS{bAlternateSetting}==" 0" ATTRS{bInterfaceClass}=="ff" ATTRS{authorized}=="1" ATTRS{bNumEndpoints}=="02" ATTRS{bInterfaceProtocol}=="ff" ATTRS{bInterfaceNumber}=="00" looking at parent device '/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.5': KERNELS=="1-1.5" SUBSYSTEMS=="usb" DRIVERS=="usb" ATTRS{bDeviceSubClass}=="00" ATTRS{version}==" 2.00" ATTRS{devspec}=="(null)" ATTRS{bNumConfigurations}=="1" ATTRS{idVendor}=="0403" ATTRS{avoid_reset_quirk}=="0" ATTRS{ltm_capable}=="no" ATTRS{tx_lanes}=="1" ATTRS{bMaxPacketSize0}=="8" ATTRS{devpath}=="1.5" ATTRS{authorized}=="1" ATTRS{rx_lanes}=="1" ATTRS{serial}=="A104E4YQ" ATTRS{removable}=="removable" ATTRS{bDeviceProtocol}=="00" ATTRS{bMaxPower}=="90mA" ATTRS{product}=="FT232R USB UART" ATTRS{maxchild}=="0" ATTRS{bmAttributes}=="a0" ATTRS{manufacturer}=="FTDI" ATTRS{urbnum}=="17" ATTRS{idProduct}=="6001" ATTRS{configuration}=="" ATTRS{quirks}=="0x0" ATTRS{bConfigurationValue}=="1" ATTRS{devnum}=="4" ATTRS{bcdDevice}=="0600" ATTRS{bNumInterfaces}==" 1" ATTRS{speed}=="12" ATTRS{busnum}=="1" ATTRS{bDeviceClass}=="00" looking at parent device '/devices/platform/soc/3f980000.usb/usb1/1-1': KERNELS=="1-1" SUBSYSTEMS=="usb" DRIVERS=="usb" ATTRS{idProduct}=="9514" ATTRS{bcdDevice}=="0200" ATTRS{bMaxPower}=="2mA" ATTRS{bmAttributes}=="e0" ATTRS{speed}=="480" ATTRS{maxchild}=="5" ATTRS{removable}=="unknown" ATTRS{urbnum}=="37" ATTRS{ltm_capable}=="no" ATTRS{rx_lanes}=="1" ATTRS{devpath}=="1" ATTRS{quirks}=="0x0" ATTRS{busnum}=="1" ATTRS{avoid_reset_quirk}=="0" ATTRS{devnum}=="2" ATTRS{bMaxPacketSize0}=="64" ATTRS{bDeviceClass}=="09" ATTRS{bDeviceSubClass}=="00" ATTRS{bNumConfigurations}=="1" ATTRS{bDeviceProtocol}=="02" ATTRS{bNumInterfaces}==" 1" ATTRS{authorized}=="1" ATTRS{idVendor}=="0424" ATTRS{bConfigurationValue}=="1" ATTRS{version}==" 2.00" ATTRS{tx_lanes}=="1" ATTRS{configuration}=="" looking at parent device '/devices/platform/soc/3f980000.usb/usb1': KERNELS=="usb1" SUBSYSTEMS=="usb" DRIVERS=="usb" ATTRS{configuration}=="" ATTRS{bcdDevice}=="0504" ATTRS{bNumConfigurations}=="1" ATTRS{bMaxPower}=="0mA" ATTRS{product}=="DWC OTG Controller" ATTRS{idVendor}=="1d6b" ATTRS{quirks}=="0x0" ATTRS{rx_lanes}=="1" ATTRS{version}==" 2.00" ATTRS{authorized}=="1" ATTRS{devpath}=="0" ATTRS{removable}=="unknown" ATTRS{ltm_capable}=="no" ATTRS{tx_lanes}=="1" ATTRS{avoid_reset_quirk}=="0" ATTRS{authorized_default}=="1" ATTRS{bDeviceClass}=="09" ATTRS{bMaxPacketSize0}=="64" ATTRS{busnum}=="1" ATTRS{manufacturer}=="Linux 5.4.51-v7+ dwc_otg_hcd" ATTRS{speed}=="480" ATTRS{bDeviceProtocol}=="01" ATTRS{bConfigurationValue}=="1" ATTRS{bmAttributes}=="e0" ATTRS{idProduct}=="0002" ATTRS{devnum}=="1" ATTRS{bNumInterfaces}==" 1" ATTRS{bDeviceSubClass}=="00" ATTRS{interface_authorized_default}=="1" ATTRS{serial}=="3f980000.usb" ATTRS{urbnum}=="26" ATTRS{maxchild}=="1" looking at parent device '/devices/platform/soc/3f980000.usb': KERNELS=="3f980000.usb" SUBSYSTEMS=="platform" DRIVERS=="dwc_otg" ATTRS{hcddump}=="HCD Dump" ATTRS{rem_wakeup_pwrdn}=="" ATTRS{hnpcapable}=="HNPCapable = 0x1" ATTRS{gusbcfg}=="GUSBCFG = 0x20001700" ATTRS{remote_wakeup}=="Remote Wakeup Sig = 0 Enabled = 0 LPM Remote Wakeup = 0" ATTRS{devspeed}=="Device Speed = 0x0" ATTRS{hcd_frrem}=="HCD Dump Frame Remaining" ATTRS{enumspeed}=="Device Enumeration Speed = 0x1" ATTRS{srpcapable}=="SRPCapable = 0x1" ATTRS{grxfsiz}=="GRXFSIZ = 0x00000306" ATTRS{srp}=="SesReqScs = 0x1" ATTRS{regvalue}=="invalid offset" ATTRS{wr_reg_test}=="Time to write GNPTXFSIZ reg 10000000 times: 390 msecs (39 jiffies)" ATTRS{hsic_connect}=="HSIC Connect = 0x1" ATTRS{gnptxfsiz}=="GNPTXFSIZ = 0x01000306" ATTRS{inv_sel_hsic}=="Invert Select HSIC = 0x0" ATTRS{guid}=="GUID = 0x2708a000" ATTRS{mode}=="Mode = 0x1" ATTRS{regoffset}=="0xffffffff" ATTRS{rd_reg_test}=="Time to read GNPTXFSIZ reg 10000000 times: 920 msecs (92 jiffies)" ATTRS{ggpio}=="GGPIO = 0x00000000" ATTRS{gsnpsid}=="GSNPSID = 0x4f54280a" ATTRS{spramdump}=="SPRAM Dump" ATTRS{gpvndctl}=="GPVNDCTL = 0x00000000" ATTRS{hptxfsiz}=="HPTXFSIZ = 0x02000406" ATTRS{hnp}=="HstNegScs = 0x0" ATTRS{mode_ch_tim_en}=="Mode Change Ready Timer Enable = 0x0" ATTRS{busconnected}=="Bus Connected = 0x1" ATTRS{bussuspend}=="Bus Suspend = 0x0" ATTRS{hprt0}=="HPRT0 = 0x00001005" ATTRS{gotgctl}=="GOTGCTL = 0x001c0001" ATTRS{fr_interval}=="Frame Interval = 0x1d4b" ATTRS{driver_override}=="(null)" ATTRS{buspower}=="Bus Power = 0x1" ATTRS{regdump}=="Register Dump" looking at parent device '/devices/platform/soc': KERNELS=="soc" SUBSYSTEMS=="platform" DRIVERS=="" ATTRS{driver_override}=="(null)" looking at parent device '/devices/platform': KERNELS=="platform" SUBSYSTEMS=="" DRIVERS==""