Re: [RFC PATCH 0/2] usb: Link USB devices with their USB Type-C partner counterparts

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2023-08-22 09:32, Heikki Krogerus wrote:
Hi Benson,

RFC for now. I can't test these properly. If you guys could take over
this, I would much appreciated. I hope this is at least close to your
proposal.

With this (or something like it) you should be able to get
notification about USB connections and disconnections to your port
driver by implementing the new "attach" and "deattach" callbacks in
struct typec_partner_desc. The typec partner devices will also have
symlinks to the enumerated USB devices and vise versa.

I took a little shortcut and did not implement a proper device list.
Instead there is now only a member for the USB2 device and a member
for the USB3 device in struct typec_port, so with this only USB is
supported. But the API does not deal with struct usb_device, so
extending this to support other devices (TBT, Displayport, etc.) by
adding the actual device list should be fairly easy.

On a related matter, I wonder why there aren't symlinks between typec ports
(under /sys/class/typec ) and/or the corresponding pd objects (under
/sys/class/usb_power_delivery ) to the related power_supply objects under
/sys/class/power_supply . For example under the latter directory I see:
    $ ls | more
    AC
    BAT0
    hidpp_battery_1
    ucsi-source-psy-USBC000:001
    ucsi-source-psy-USBC000:002

Those last two power supplies are obviously connected to typec port0 and port1
(but offset by 1). Those power_supply objects hold inaccurate data which I hope
will improve in time. Significantly power_supply objects don't seem to report
the direction of the power. Here is a little utility I have been working on
to report the USB Type-C port/pd disposition on my machine:
    $ lsucpd
    port0 [pd0]  > {5V, 0.9A}
    port1 [pd1]  <<===  partner: [pd8]

My laptop (Thinkpad X13 G3) has two type-C ports and port1 is a sink with a
PD contract. I would like that second line to have 20V, 3.25A appended to it
but there are several issues:
  - no typec or pd symlink to ucsi-source-psy-USBC000:002
  - that power supply_object says it is online (correct) with a voltage_now:
    5000000 uV (incorrect) and current_now: 3000000 uA (incorrect). See below.

  ucsi-source-psy-USBC000:002 $ ls_name_value
    current_max : 3250000
    current_now : 3000000
    online : 1
    scope : Unknown
    type : USB
    uevent : <removed>
    usb_type : C [PD] PD_PPS
    voltage_max : 20000000
    voltage_min : 5000000
    voltage_now : 5000000


Doug Gilbert







[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux