0
0

More than 1 year has passed since last update.

c2kのUSB

Last updated at Posted at 2023-07-26

USB2とUSB3のポートがあります。

[    1.263404] ## xhci_plat_probe
[    1.266473] ### comcerto_start_xhci
[    1.270006] USB3.0 clock selected: internal
[    1.277388] xhci-hcd xhci-hcd: xHCI Host Controller
[    1.282446] xhci-hcd xhci-hcd: new USB bus registered, assigned bus number 1
[    1.289700] xhci-hcd xhci-hcd: irq 54, io mem 0x9f000000
[    1.295123] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[    1.301956] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    1.309213] usb usb1: Product: xHCI Host Controller
[    1.314107] usb usb1: Manufacturer: Linux 3.2.26 xhci-hcd
[    1.319532] usb usb1: SerialNumber: xhci-hcd
[    1.324501] hub 1-0:1.0: USB hub found
[    1.328304] hub 1-0:1.0: 1 port detected
[    1.332690] xhci-hcd xhci-hcd: xHCI Host Controller
[    1.337617] xhci-hcd xhci-hcd: new USB bus registered, assigned bus number 2
[    1.344819] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003
[    1.351648] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    1.358905] usb usb2: Product: xHCI Host Controller
[    1.363799] usb usb2: Manufacturer: Linux 3.2.26 xhci-hcd
[    1.369224] usb usb2: SerialNumber: xhci-hcd
[    1.374151] hub 2-0:1.0: USB hub found
[    1.377937] hub 2-0:1.0: 1 port detected
[    1.382465] [usb_overcurrent_init]: Foxconn USB port (1-1, xhci) over-current detect function init!! 
[    1.391739] dwc_otg: version 2.94a 27-OCT-2011
[    1.595576] Core Release: 2.81a
[    1.595587] Setting default values for core params
[    1.794984] Using Buffer DMA mode
[    1.798323] Periodic Transfer Interrupt Enhancement - disabled
[    1.804174] Multiprocessor Interrupt Enhancement - disabled
[    1.809777] OTG VER PARAM: 0, OTG VER FLAG: 0
[    1.814191] dwc_otg dwc_otg.0: DWC OTG Controller
[    1.818973] dwc_otg dwc_otg.0: new USB bus registered, assigned bus number 3
[    1.826068] dwc_otg dwc_otg.0: irq 53, io mem 0x00000000
[    1.831482] Init: Port Power? op_state=1
[    1.835418] Init: Power Port (0)
[    1.838747] usb usb3: New USB device found, idVendor=1d6b, idProduct=0002
[    1.845560] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    1.852819] usb usb3: Product: DWC OTG Controller
[    1.857540] usb usb3: Manufacturer: Linux 3.2.26 dwc_otg
[    1.862879] usb usb3: SerialNumber: dwc_otg.0
[    1.867928] hub 3-0:1.0: USB hub found
[    1.871728] hub 3-0:1.0: 1 port detected

c1kはUSB2だけでEHCIでしたが、c2kはUSB3はXHCIでUSB2はOTGです。

OTGはホストにもデバイスにもなれるインターフェースです。

OTGはMentor Graphicsという会社の作ったものと、Synopsysという会社が作ったものがよく使われています。SynopsysのものはDWC(DesignWare Core) OGTとよばれています。

この二つはまったくレジスタセットが違っていて、互換はありません。

DWCはrev1,2,3がありc2kはrev2のようです。

Synopsysが提供していた、オープンソースのlinuxドライバは最初はdwc_otgというもので、その後dwc2というものになった模様。

NetBSDにはMentor Graphicsに対応したコードがdev/usb/mogt.cとしてあり、DWCに対応したコードはexternal/bsd/dwc2にあります。DWCのコードは本家が作ったlinux用のコードからのポートのようでlinuxのサブシステムが必要になります。

ARMのTIやSUNXIのSOCはMentor Graphicsの仕様で作られていて、MIPSのRalink RT3050やBroadcomやamlogicのARM socなどはDWCで作られています。

10年以上前にrayの書いたFreeBSDのDWC OTGのコードをNetBSDにポートしたものがありました。

Headでコンパイルしようとしたら、いろいろ変わっていて無理でした。

NetBSDのUSBドライバーはattachしたときにusbd_bus_methodsの構造体をセットして、この構造体のopenでそれぞれのusbd_pipe_methods構造体をセットして処理を行ってるようです。

motgではDMAは使わずfifoでデータの送受信を行っています。

c2kでdwc2を使えるようにしました。

ターゲットのXHCIはコネクタが2.0のものなので、2.0でしか使えないようです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0