USB services: Difference between revisions

No edit summary
Line 621: Line 621:
! Cmd || Name
! Cmd || Name
|-
|-
| 0 || [[#Open]] ([1.0.0] [[#SubmitOutRequest]])
| 0 || [[#ReOpen]] ([1.0.0] [[#SubmitOutRequest]])
|-
|-
| 1 || [[#Close]] ([1.0.0] [[#SubmitInRequest]])
| 1 || [[#Close]] ([1.0.0] [[#SubmitInRequest]])
|-
|-
| 2 || ([1.0.0] Reset)
| 2 || GetCompletionEvent ([1.0.0] Reset)
|-
|-
| 3 || [[#Populate]] ([1.0.0] [[#Close]])
| 3 || [[#PopulateRing]] ([1.0.0] [[#Close]])
|-
|-
| [2.0.0+] 4 || [[#PostBufferAsync_2|#PostBufferAsync]]
| [2.0.0+] 4 || [[#PostBufferAsync_2|#PostBufferAsync]]
Line 633: Line 633:
| [2.0.0+] 5 || [[#GetXferReport]]
| [2.0.0+] 5 || [[#GetXferReport]]
|-
|-
| [2.0.0+] 6 || [[#PostBufferMultiAsync]]
| [2.0.0+] 6 || [[#BatchBufferAsync]]
|-
|-
| [4.0.0+] 7 ||
| [4.0.0+] 7 || [[#CreateSmmuSpace]]
|-
|-
| [4.0.0+] 8 ||
| [4.0.0+] 8 || [[#ShareReportRing]]
|}
|}


Line 654: Line 654:
Official user-processes uses a buffer where the buffer address/size is page-aligned, where '''size''' is the original size before alignment. The user-process also flushes dcache for this buffer using '''size''', before/after using this command. Official sw passes value 0 for '''unk'''.
Official user-processes uses a buffer where the buffer address/size is page-aligned, where '''size''' is the original size before alignment. The user-process also flushes dcache for this buffer using '''size''', before/after using this command. Official sw passes value 0 for '''unk'''.


==== Open ====
==== ReOpen ====
No input/output.
No input/output.


Line 669: Line 669:
No input, returns an output handle. Signaled when [[#PostBufferAsync_2|#PostBufferAsync]] finishes. ([1.0.0] [[#Open]])
No input, returns an output handle. Signaled when [[#PostBufferAsync_2|#PostBufferAsync]] finishes. ([1.0.0] [[#Open]])


==== Populate ====
==== PopulateRing ====
No input/output.
No input/output.


Line 688: Line 688:
The buffer contains an array of [[#XferReport]].
The buffer contains an array of [[#XferReport]].


==== PostBufferMultiAsync ====
==== BatchBufferAsync ====
Unofficial name.


Takes 3 input u32s ('''urbCount''', '''unk1''', and '''unk2'''), an input u64 '''buffer''' and u64 '''unk''', and a type-0x5 ([3.0.0+] type-0x21) input buffer, returns an output u32 '''xferId'''.
Takes 3 input u32s ('''urbCount''', '''unk1''', and '''unk2'''), an input u64 '''buffer''' and u64 '''unk''', and a type-0x5 ([3.0.0+] type-0x21) input buffer, returns an output u32 '''xferId'''.
Line 697: Line 696:
This uses the same func internally as [[#PostBufferAsync_2|#PostBufferAsync]] except multiple urbs are specified by the user: the input buffer contains an array of u32s for the size of each urb, where '''urbCount''' is the total number of entries in this array. With [[#PostBufferAsync_2|#PostBufferAsync]] the last 2 params passed to the internal func are hard-coded to 0, while with this command it's '''unk1''' and '''unk2'''.
This uses the same func internally as [[#PostBufferAsync_2|#PostBufferAsync]] except multiple urbs are specified by the user: the input buffer contains an array of u32s for the size of each urb, where '''urbCount''' is the total number of entries in this array. With [[#PostBufferAsync_2|#PostBufferAsync]] the last 2 params passed to the internal func are hard-coded to 0, while with this command it's '''unk1''' and '''unk2'''.


==== Cmd7 ====
==== CreateSmmuSpace ====
Takes a total of 0x10-bytes of input, no output.
Takes a total of 0x10-bytes of input, no output.


==== Cmd8 ====
==== ShareReportRing ====
Takes a total of 0x4-bytes of input and an input handle, no output.
Takes a total of 0x4-bytes of input and an input handle, no output.