Upgrade to Pro — share decks privately, control downloads, hide ads and more …

USBC000って何だ?

Eded099a89fd01c8c6f8d773e96b191a?s=47 takawata
September 22, 2018

 USBC000って何だ?

Eded099a89fd01c8c6f8d773e96b191a?s=128

takawata

September 22, 2018
Tweet

Transcript

  1. USBC000 ってなんだ ?

  2. 2 私についてについて 渡辺と申しますと申します申しますします FreeBSD の ACPI について初期にやってましたにやってました。 今でも、たまに主でも、たまに主にに ACPI 周りであまり役にりであまり役に立ってないドに立ってないドライってないドライバ書書

    きなぐってはリポジトリに投リポジトリに投棄してますしてます 株式会社アックスで働いアックスで働いてますで働いてますいてます
  3. 3 新しいノートしいノート PC 買いましたいました 艦これ用に使ってこれ用に使ってた用に使ってたに使ってたってた PC がある日キーボードが日キーボードが潰キーボードが潰れてブートできれ用に使ってたてブートできな くなって購入 ポインティングデバ書イスで働いてますの関係上ずっとずっと申します ThinkPad

    買いましたったのはリポジトリに投 ThinkPad X280
  4. 4 買いましたってまずやる日キーボードがこと申します Windows を立ち上げる立ってないドライち上げる上ずっとげる日キーボードが デバ書イスで働いてますマネージャを上げて接続別を立ち上げる上ずっとげて接続別でデバイスを見でデバ書イスで働いてますを立ち上げる見るる日キーボードが スで働いてますトレージのパーティションを立ち上げる縮小するする日キーボードが FreeBSD を立ち上げるインスで働いてますトールする。する日キーボードが。 devinfo と申します

    acpidump を立ち上げる調査するする日キーボードが
  5. 5 devinfo FreeBSD のシスで働いてますテムに認識されていに認識されているデバされ用に使ってたている日キーボードがデバ書イスで働いてますを立ち上げる見るる日キーボードが ( ドライバ書がある日キーボードがと申しますはリポジトリに投限らないらない ) この出力ははリポジトリに投 devinfo -rv

    オプション。これ用に使ってたによりシスで働いてますテムに認識されていに認識されているデバさ れ用に使ってたている日キーボードが、デバ書イスで働いてますの認識されているデバ情報や、専有システや、専有システムリソーシスで働いてますテムに認識されていリソースで働いてます等が表示が表示 され用に使ってたる日キーボードが。   unknown pnpinfo _HID=INT3470 _UID=0 at handle=\_SB_.SKC0 (disabled) acpi_sysresource6 pnpinfo _HID=INT3394 _UID=0 at handle=\_SB_.PTMD unknown pnpinfo _HID=USBC000 _UID=0 at handle=\_SB_.UBTC I/O memory addresses: 0x8ff3b000-0x8ff3bfff acpi_tz0 pnpinfo _HID=none _UID=0 at handle=\_TZ_.THM0
  6. 6 acpidump メモリ上ずっとにある日キーボードが ACPI のテーブルする。を立ち上げる解釈し、その中にあし、その中にあるにある日キーボードが ACPI の 中にある間言語 (AML)) を立ち上げる人間可読な形な形

    (ASL)) にして出力は 余談だが、今はだが、今でも、たまに主はリポジトリに投 Intel の ACPICA のスで働いてますイートの中にあるの iasl を立ち上げる中にあるから呼 ぶようになっている日キーボードがが、元々、私についての作ったった AML) ダンププログラムに認識されてい であった。 Device (UBTC) { Name (_HID, EisaId ("USBC000")) // _HID: Hardware ID Name (_CID, EisaId ("PNP0CA0")) // _CID: Compatible ID Name (_UID, Zero) // _UID: Unique ID Name (_DDN, "USB Type C") // _DDN: DOS Device Name Name (_ADR, Zero) // _ADR: Address Name (CRS, ResourceTemplate ()
  7. 7 ACPI のデバ書イスで働いてます認識されているデバ ACPI プラットフォームに認識されていではリポジトリに投、 ACPI 名前空間上ずっとの Device オブジェ クトがデバ書イスで働いてますと申しますして認識されているデバされ用に使ってたる日キーボードが。

    FreeBSD ではリポジトリに投、 Device の下にに _HIDHID と申します言う名前を立ち上げる持つオブジェクつオブジェク トがあれ用に使ってたば、 ACPI のデバ書イスで働いてますと申しますして認識されているデバされ用に使ってた、 _HIDADR と申しますいうオブ ジェクトがあって対応しているデバイしている日キーボードがデバ書イスで働いてますであれ用に使ってたば、デバ書イスで働いてますドライ バ書と申します ACPI のデバ書イスで働いてますオブジェクトが結び付けられる。び付けられる。付けられる。けられ用に使ってたる日キーボードが。 ( ほぼ PCI/ PCIe しか対応しているデバイしていない )
  8. 8 先程の例の例 なんか USB と申しますかある日キーボードが。 USB なら他にに xHCI のデバ書イスで働いてますなんかも名前空間にある日キーボードがのに…

  9. 9 素性の調査の調査する USBC000 で調べる日キーボードがと申します Intel の BIOS Implementation of UCSI

    Technical White Paper February 2016 Revision 001 と申しますいう文章が引っかかったが引っかかったっかかった (bios-implementation-of-ucsi.pdf)
  10. 10 UCSI? これ用に使ってたも調べる日キーボードがと申します Intel の USB Type-C(tm) Connector System Software

    Interface [UCSI] Requirements Specification August 2017 Revision 1.1 usb-type-c-ucsi-spec.pdf と申しますいうドキュメントが引っかかったっかかった
  11. 11 USB Type-C? 最近のスマホなんかのスで働いてますマホなんかでよくあなんかでよくある日キーボードがコネクタ。 またコネクタ変えやがってえやがって ノート PC でも採用に使ってたされ用に使ってたている日キーボードがと申します聞いていたいていた でも、只のフォームファのフォームに認識されていファクタだろ ?

    なんじゃそりゃ ? USB Type-C なんもわからん
  12. 12 USB TypeC 表裏が無いが無いい 24 本もピンがあるもピンがある日キーボードが USB2.0,USB3.x 両方をサポートを立ち上げるサポート いくつかのピンはリポジトリに投色んな用途に使えんな用に使ってた途に使えるに使ってたえる日キーボードが USB-PD

    を立ち上げるサポート
  13. 13 USB Type-C の概念 USB-PD Alternate Mode

  14. 14 USB PD USB の電源の能力をネゴシの能力はを立ち上げるネゴシエーションして大電流をサポート可能を立ち上げるサポート可能な規格 ネゴシエーションなしではリポジトリに投 USB2.0 での 5V 900mAV

    900mA 給電できないと申しますころが 、電源の能力をネゴシ能力はのネゴシエーションにより最大 20V 5V 900mAA までの 100W を立ち上げる供給可能 給電の方をサポート向を変更することを立ち上げる変えやがって更することが出来する日キーボードがこと申しますが出来る。る日キーボードが。 これ用に使ってたにより、ノート PC の電源の能力をネゴシを立ち上げる置き換えることがき換えることが可能える日キーボードがこと申しますが可能で、実際に私のに私についての 買いましたった ThinkPad X280 も USB type C ポートはリポジトリに投電源の能力をネゴシにしか見るえない。 電源の能力をネゴシ能力はのネゴシエーションはリポジトリに投、 type-C の場合 USB2.0 の信号線とは別のと申しますはリポジトリに投別でデバイスを見の 信号線とは別ので行われる。われ用に使ってたる日キーボードが。 通信はリポジトリに投相手のデバイスとののデバ書イスで働いてますと申しますの他にに、ケーブルする。にもチップが入っており、自分 のポートに繋がってるケーブがってる日キーボードがケーブルする。のコネクタ、相手のデバイスとののポートに繋がってるケーブがってる日キーボードが ケーブルする。のコネクタと申しますで行われる。われ用に使ってたる日キーボードが。
  15. 15 Alternate mode USB 2.0 まではリポジトリに投電源の能力をネゴシと申します GND の他にに 2 本もピンがあるのピンで動作ったする日キーボードがが、

    USB 3.x Super Speed はリポジトリに投別でデバイスを見に 4 本もピンがあるのピンを立ち上げる要求する。そのする日キーボードが。その 4 本もピンがあるのピンの 上ずっと下にの 8 本もピンがあるを立ち上げる含むむ 10 本もピンがある。ドッキングスで働いてますテーションなどの刺す方向す方をサポート向を変更すること が変えやがってわらないものではリポジトリに投更することが出来に 3 本もピンがある使ってたえて 13 本もピンがあるのピンを立ち上げるコンフィギュ レーションして別でデバイスを見の目的に使えるに使ってたえる日キーボードが もち上げるろん、 PC 側がコントローラがコントローラを立ち上げる持つオブジェクつなどサポートしていないと申します 使ってたえない。 Thunderbolt 3 や、 Display Port 等が表示がサポート可能 モードはリポジトリに投 16 ビットのベンダ ID と申します 32 ビットのモード ID の組で識別で識されているデバ別でデバイスを見 され用に使ってたる日キーボードが。この、やり取りはりはリポジトリに投 PD の制御線とは別ので行われる。われ用に使ってたる日キーボードが。
  16. 16 要する日キーボードがに USB type-C と申しますいうのはリポジトリに投単なるなる日キーボードが USB のフォームに認識されていファクタではリポジトリに投なく、 最近のスマホなんかユニバ書ーサルする。すぎる日キーボードがシリアルする。バ書スで働いてますのためのコネクタ。 Alternate モードなどはリポジトリに投

    USB のプロトコルする。ではリポジトリに投無いいのでそれ用に使ってたを立ち上げる識されているデバ別でデバイスを見 して USB と申しますそれ用に使ってた以外に分けて流すたに分けて流をサポート可能すためのコントローラが必要で、 それ用に使ってたと申しますやり取りはりする日キーボードがのがこの USBC000 で見るえる日キーボードがインターフェイスで働いてます の正体
  17. 17 UCSI USB type C connector System software Interface USB

    type C コントローラと申します通信する日キーボードがためのインターフェイスで働いてます。 やり取りはりに使ってたうデータ構造やコマンドが定やコマンドが定義されている。され用に使ってたている日キーボードが。 割り込みなどで通り込みなどで通知がみなどで通知が発生する。通が発生する。通信につする日キーボードが。通信についてはリポジトリに投別でデバイスを見に定義されている。され用に使ってたてお り、 I2C,PCIe コンフィギュレーション空間 ,ACPI などが考えられえられ用に使ってた ている日キーボードが PPM – Platform Policy Manager ( ファームに認識されていウェア ) OPM – OS Policy Manager (OS のドライバ書ソフトウエア )
  18. 18 データ構造やコマンドが定

  19. 19 やり取りはりの仕方をサポート > 何かのコマンドをかのコマンドを立ち上げる発行われる。する日キーボードが ( いくつかの例外に分けて流すたあり ) < 完了通知が発生する。通が発生する。通信につ >ACK

    CC/CI コマンドを立ち上げる発行われる。 -- > ポートの変えやがって更することが出来通知が発生する。通が発生する。通信につ <ACK CC/CI コマンドを立ち上げる発行われる。
  20. 20 BIOS implementation of UCSI ACPI による日キーボードが UCSI の実装を定義。を立ち上げる定義されている。。 ホなんかでよくあスで働いてますト側がコントローラへの通知が発生する。通はリポジトリに投、

    ACPI の Notify で行われる。われ用に使ってた、デバ書イスで働いてますのリソー スで働いてますと申しますして確保された共有メモされ用に使ってたた共有システムリソーメモリ空間で通信。 Embedded Controller と申します呼ばれ用に使ってたる日キーボードがキーボードコントローラに似たた インターフェイスで働いてますを立ち上げる持つオブジェクつもので実装を定義。され用に使ってたる日キーボードがこと申しますが想定され用に使ってたている日キーボードが 共有システムリソーメモリ空間に書き込みなどで通知がんだ後 _HIDDSM メソッドを立ち上げる呼ぶこと申しますで UCSI 側がコントローラに通知が発生する。通が行われる。われ用に使ってたる日キーボードが
  21. 21 実際に私のの実装を定義。 共有システムリソーメモリを立ち上げる ACPI 中にある間言語から見るえる日キーボードがようにして、そこにおかれ用に使ってた たデータを立ち上げる _HIDDSM 呼び付けられる。出しが来る。たら EC に書き込みなどで通知がむ

    EC のイベントハンドラ (_HIDQxx と申しますいうメソッド ) で共有システムリソーメモリに書 き込みなどで通知がみ Notify を立ち上げる起こすこす ( と申しますドライバ書が処理するする日キーボードが )
  22. 22 ドライバ書の実装を定義。 まず、メモリ構造やコマンドが定体のバ書ージョン番号の部分を立ち上げる見るて、正しく見るえて る日キーボードがかを立ち上げる確認。 次に、に、 Notify 発生する。通信につを立ち上げるコントローラに許可する日キーボードがコマンドを立ち上げる送ってみってみ る日キーボードが。 Notify ハンドラにデバ書ッグプリントを立ち上げる入れ用に使ってたて呼び付けられる。出され用に使ってたたかを立ち上げる確認

    Notify ハンドラを立ち上げるコマンド解釈し、その中にあして、 ack コマンドを立ち上げる投げる日キーボードがよう に実装を定義。 現状は、デバッグプはリポジトリに投、デバ書ッグプリントしかしていない。
  23. 23 わかったこと申します USB-TypeC ポートが2つ見るえてる日キーボードが ( 確かにある日キーボードがんだけど、ふつう の USB typeC コネクタさすと申します干渉するようになっする日キーボードがようになっている日キーボードが

    ) 附属の電源はの電源の能力をネゴシはリポジトリに投 USB-PD デバ書イスで働いてます 普通に電源の能力をネゴシの口だと思っていただと申します思っていたポートっていたポートはリポジトリに投 USB-C の port2 Alternate mode はリポジトリに投 Port2 はリポジトリに投 Thunderbolt(0x8087-1) DisplayPort(0xff01 – 3) Port1 はリポジトリに投それ用に使ってたに加えて謎のえて謎のの 0x17ef - 1 と申しますい うモードを立ち上げるサポートしている日キーボードが。 0x17ef はリポジトリに投 L)enovo のベンダ ID なの でこれ用に使ってたはリポジトリに投専用に使ってたドッキングスで働いてますテーション用に使ってたと申します思っていたポートわれ用に使ってたる日キーボードが。
  24. 24 周りであまり役に辺と申します機器 付けられる。属の電源はの電源の能力をネゴシアダプタはリポジトリに投持つオブジェクっていたが、これ用に使ってただけじゃつまらないので 、 Thunderbolt 3 で検索して、して、 Cable Matters の

    USB C ドッキン グスで働いてますテーションと申しますいうものを立ち上げる買いましたってみた。
  25. 25 ドッキングスで働いてますテーション Cable Matters USB C ハブ ドッキングスで働いてますテーション  USB C マルする。チ変えやがって換えることが可能ア

    ダプタ Fast Ethernet HDMI/DP/VGA/USB2.0 60W PD 搭載 USB C ケーブルする。が一本もピンがある生する。通信につえてる日キーボードが 特にドライバがなにドライバ書がなくても Display Port 、 PD はリポジトリに投喋るようだ。る日キーボードがようだ。 また、 USB のハブが見るえ、その先に RTL)815V 900mA2 が見るえ他にに謎ののデバ書イスで働いてますが見る える日キーボードが。この、謎ののデバ書イスで働いてますはリポジトリに投ビルする。ボードデバ書イスで働いてますと申します呼ばれ用に使ってたる日キーボードが Alternate mode のトラブルする。シューティングのためのデバ書イスで働いてますらしい。 また、一つ USB-C ポートがある日キーボードが。 残念ながら、 Thundebolt なモードはリポジトリに投確認できなかった。
  26. 26 ドッキングスで働いてますテーションの USB-C ポート ここに電源の能力をネゴシを立ち上げる刺す方向すこと申しますで、ドッキングスで働いてますテーションはリポジトリに投、機能を立ち上げる保された共有メモっ たまま、電源の能力をネゴシと申しますして振る舞うる日キーボードが舞うう ここで、電源の能力をネゴシ抜き差しすると、き差しすると、一瞬しする日キーボードがと申します、一瞬ハブやネットがハブやネットが detach され用に使ってたる日キーボードが が、すぐにもと申しますに戻る。る日キーボードが。

    このと申しますき、 usbc ドライバ書にもイベントが飛んできて電源状んできて電源の能力をネゴシ状は、デバッグプ態が変が変えやがって わったこと申しますが通知が発生する。通され用に使ってたた。
  27. 27 TODO printf でおしゃべりする日キーボードがのはリポジトリに投あまりよろしくないので、ドライバ書内 に情報や、専有システを立ち上げる保された共有メモ存し、ユーザーラし、ユーザーランドから sysctl なりなんなりで見るえ る日キーボードがようにする日キーボードが。 もうち上げるょっと申します USB

    type C や USB PD などを立ち上げる読な形み込みなどで通知がんで理する解を立ち上げる深めめ る日キーボードが。