Difference between revisions of "PCIe services"
Line 12: | Line 12: | ||
== RegisterClassDriver == | == RegisterClassDriver == | ||
− | Takes | + | Takes an input Process handle and an input [[#ClassDriverConfig]]. Returns an output Event handle and an [[#ISession]]. |
− | |||
− | Returns an | ||
== QueryFunctionsUnregistered == | == QueryFunctionsUnregistered == | ||
− | Takes a type- | + | Takes a type-0x6 output buffer containing an array of [[#FunctionState]]. Returns an output s32 '''Count'''. |
− | |||
− | Returns | ||
== ISession == | == ISession == | ||
Line 28: | Line 24: | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
− | | 0 || QueryFunctions | + | | 0 || [[#QueryFunctions]] |
|- | |- | ||
− | | 1 || AcquireFunction | + | | 1 || [[#AcquireFunction]] |
|- | |- | ||
− | | 2 || ReleaseFunction | + | | 2 || [[#ReleaseFunction]] |
|- | |- | ||
− | | 3 || GetFunctionState | + | | 3 || [[#GetFunctionState]] |
|- | |- | ||
− | | 4 || | + | | 4 || [[#GetMappedBar]] |
|- | |- | ||
− | | 5 || ReadConfig | + | | 5 || [[#ReadConfig]] |
|- | |- | ||
− | | 6 || WriteConfig | + | | 6 || [[#WriteConfig]] |
|- | |- | ||
− | | 7 || ReadBarRegion | + | | 7 || [[#ReadBarRegion]] |
|- | |- | ||
− | | 8 || WriteBarRegion | + | | 8 || [[#WriteBarRegion]] |
|- | |- | ||
− | | 9 || FindCapability | + | | 9 || [[#FindCapability]] |
|- | |- | ||
− | | 10 || FindExtendedCapability | + | | 10 || [[#FindExtendedCapability]] |
|- | |- | ||
− | | 11 || MapDma | + | | 11 || [[#MapDma]] |
|- | |- | ||
− | | 12 || UnmapDma | + | | 12 || [[#UnmapDma]] |
|- | |- | ||
− | | 13 || UnmapDmaBusAddress | + | | 13 || [[#UnmapDmaBusAddress]] |
|- | |- | ||
− | | 14 || GetDmaBusAddress | + | | 14 || [[#GetDmaBusAddress]] |
|- | |- | ||
− | | 15 || GetDmaBusAddressRange | + | | 15 || [[#GetDmaBusAddressRange]] |
|- | |- | ||
− | | 16 || SetDmaEnable | + | | 16 || [[#SetDmaEnable]] |
|- | |- | ||
− | | 17 || AcquireIrq | + | | 17 || [[#AcquireIrq]] |
|- | |- | ||
− | | 18 || ReleaseIrq | + | | 18 || [[#ReleaseIrq]] |
|- | |- | ||
− | | 19 || SetIrqEnable | + | | 19 || [[#SetIrqEnable]] |
|- | |- | ||
− | | 20 || SetAspmEnable | + | | 20 || [[#SetAspmEnable]] |
|- | |- | ||
− | | 21 || [3.0.0+] SetResetUponResumeEnable | + | | 21 || [3.0.0+] [[#SetResetUponResumeEnable]] |
|- | |- | ||
− | | 22 || [4.0.0+] ResetFunction | + | | 22 || [4.0.0+] [[#ResetFunction]] |
|- | |- | ||
| 23 || [7.0.0+] | | 23 || [7.0.0+] | ||
|} | |} | ||
− | [ | + | === QueryFunctions === |
+ | Takes a type-0x6 output buffer containing an array of [[#FunctionState]]. Returns an output s32 '''Count'''. | ||
+ | |||
+ | === AcquireFunction === | ||
+ | Takes an input u32 '''FunctionHandle'''. Returns an output readable Event handle. | ||
+ | |||
+ | === ReleaseFunction === | ||
+ | Takes an input u32 '''FunctionHandle'''. No output. | ||
+ | |||
+ | === GetFunctionState === | ||
+ | Takes an input u32 '''FunctionHandle''' and a type-0x6 output buffer containing a [[#FunctionState]]. No output. | ||
+ | |||
+ | === GetMappedBar === | ||
+ | Takes two input u32s '''FunctionHandle''' and '''Bar'''. Returns an output u64 '''Address''' and an output [[#BarProfile]]. | ||
+ | |||
+ | === ReadConfig === | ||
+ | Takes two input u32s '''FunctionHandle''', '''Offset''' and an input [[#BusAccessWidth]]. Returns an output u32 '''Config'''. | ||
− | [ | + | === WriteConfig === |
+ | Takes three input u32s '''FunctionHandle''', '''Offset''', '''Config''' and an input [[#BusAccessWidth]]. No output. | ||
+ | |||
+ | === ReadBarRegion === | ||
+ | Takes three input u32s '''FunctionHandle''', '''Bar''', '''Offset''', an input [[#BusAccessWidth]] and a type-0x6 output buffer. No output. | ||
+ | |||
+ | [5.0.0+] Now takes a type-0x22 output buffer instead. | ||
+ | |||
+ | === WriteBarRegion === | ||
+ | Takes three input u32s '''FunctionHandle''', '''Bar''', '''Offset''', an input [[#BusAccessWidth]] and a type-0x5 input buffer. No output. | ||
+ | |||
+ | [5.0.0+] Now takes a type-0x21 input buffer instead. | ||
+ | |||
+ | === FindCapability === | ||
+ | Takes an input u32s '''FunctionHandle''' and an input [[#CapabilityId]]. Returns an output u32 '''Capability'''. | ||
+ | |||
+ | === FindExtendedCapability === | ||
+ | Takes an input u32s '''FunctionHandle''' and an input [[#ExtendedCapabilityId]]. Returns an output u32 '''ExtendedCapability'''. | ||
+ | |||
+ | === MapDma === | ||
+ | Takes an input u32 '''FunctionHandle''', an input [[#DmaDirection]], an input u64 '''VirtualAddress''' and an input u32 '''Size'''. Returns an output u64 '''PhysicalAddress'''. | ||
+ | |||
+ | === UnmapDma === | ||
+ | Takes an input u32 '''FunctionHandle''' and an input u64 '''PhysicalAddress'''. No output. | ||
+ | |||
+ | === UnmapDmaBusAddress === | ||
+ | Takes an input u32 '''FunctionHandle''' and an input u64 '''BusAddress'''. No output. | ||
+ | |||
+ | === GetDmaBusAddress === | ||
+ | Takes an input u32 '''FunctionHandle''', an input u64 '''VirtualAddress''' and an input u32 '''Size'''. Returns an output u64 '''BusAddress'''. | ||
+ | |||
+ | === GetDmaBusAddressRange === | ||
+ | Takes an input u32 '''FunctionHandle'''. Returns two output u64s '''BusAddressRangeStart''' and '''BusAddressRangeEnd'''. | ||
+ | |||
+ | === SetDmaEnable === | ||
+ | Takes an input u32 '''FunctionHandle''' and an input bool '''Enable'''. No output. | ||
+ | |||
+ | === AcquireIrq === | ||
+ | Takes an input u32s '''FunctionHandle''' and an input [[#IrqType]]. Returns an output Event handle. | ||
+ | |||
+ | [7.0.0+] Now takes another input u32 and no longer returns an output Event handle. | ||
+ | |||
+ | === ReleaseIrq === | ||
+ | Takes an input u32 '''FunctionHandle'''. No output. | ||
+ | |||
+ | === SetIrqEnable === | ||
+ | Takes an input u32s '''FunctionHandle''', an unknown input u32 and an input bool '''Enable'''. No output. | ||
+ | |||
+ | === SetAspmEnable === | ||
+ | Takes an input u32 '''FunctionHandle''' and an input bool '''Enable'''. No output. | ||
+ | |||
+ | [7.0.0+] Now returns an output Event handle. | ||
+ | |||
+ | === SetResetUponResumeEnable === | ||
+ | Takes an input u32 '''FunctionHandle''' and an input bool '''Enable'''. No output. | ||
+ | |||
+ | === ResetFunction === | ||
+ | Takes an input u32 '''FunctionHandle''' and an unknown input u32. No output. | ||
= pcie:log = | = pcie:log = | ||
Line 92: | Line 161: | ||
| 1 || | | 1 || | ||
|} | |} | ||
+ | |||
+ | = ClassDriverConfig = | ||
+ | This is "nn::pcie::ClassDriverConfig". | ||
+ | |||
+ | This is a 0x18-byte struct. | ||
+ | |||
+ | = FunctionState = | ||
+ | This is "nn::pcie::FunctionState". | ||
+ | |||
+ | This is a 0x28-byte struct. | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Offset | ||
+ | ! Size | ||
+ | ! Description | ||
+ | |- | ||
+ | | 0x00 | ||
+ | | 0x04 | ||
+ | | Handle | ||
+ | |- | ||
+ | | 0x04 | ||
+ | | 0x24 | ||
+ | | | ||
+ | |} | ||
+ | |||
+ | = BarProfile = | ||
+ | This is "nn::pcie::BarProfile". | ||
+ | |||
+ | This is a 0xC-byte struct. | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Offset | ||
+ | ! Size | ||
+ | ! Description | ||
+ | |- | ||
+ | | 0x00 | ||
+ | | 0x08 | ||
+ | | Size | ||
+ | |- | ||
+ | | 0x08 | ||
+ | | 0x04 | ||
+ | | Flags | ||
+ | |} | ||
+ | |||
+ | = BusAccessWidth = | ||
+ | This is "nn::pcie::BusAccessWidth". | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Value | ||
+ | ! Description | ||
+ | |- | ||
+ | | 0 || 8bits | ||
+ | |- | ||
+ | | 1 || 16bits | ||
+ | |- | ||
+ | | 2 || 32bits | ||
+ | |} | ||
+ | |||
+ | = CapabilityId = | ||
+ | This is "nn::pcie::CapabilityId". | ||
+ | |||
+ | = ExtendedCapabilityId = | ||
+ | This is "nn::pcie::ExtendedCapabilityId". | ||
+ | |||
+ | = DmaDirection = | ||
+ | This is "nn::pcie::DmaDirection". | ||
+ | |||
+ | = IrqType = | ||
+ | This is "nn::pcie::IrqType". | ||
[[Category:Services]] | [[Category:Services]] |
Revision as of 19:57, 4 March 2022
pcie
This is "nn::pcie::detail::IManager".
Cmd | Name |
---|---|
0 | #RegisterClassDriver |
1 | #QueryFunctionsUnregistered |
RegisterClassDriver
Takes an input Process handle and an input #ClassDriverConfig. Returns an output Event handle and an #ISession.
QueryFunctionsUnregistered
Takes a type-0x6 output buffer containing an array of #FunctionState. Returns an output s32 Count.
ISession
This is "nn::pcie::detail::ISession".
Cmd | Name |
---|---|
0 | #QueryFunctions |
1 | #AcquireFunction |
2 | #ReleaseFunction |
3 | #GetFunctionState |
4 | #GetMappedBar |
5 | #ReadConfig |
6 | #WriteConfig |
7 | #ReadBarRegion |
8 | #WriteBarRegion |
9 | #FindCapability |
10 | #FindExtendedCapability |
11 | #MapDma |
12 | #UnmapDma |
13 | #UnmapDmaBusAddress |
14 | #GetDmaBusAddress |
15 | #GetDmaBusAddressRange |
16 | #SetDmaEnable |
17 | #AcquireIrq |
18 | #ReleaseIrq |
19 | #SetIrqEnable |
20 | #SetAspmEnable |
21 | [3.0.0+] #SetResetUponResumeEnable |
22 | [4.0.0+] #ResetFunction |
23 | [7.0.0+] |
QueryFunctions
Takes a type-0x6 output buffer containing an array of #FunctionState. Returns an output s32 Count.
AcquireFunction
Takes an input u32 FunctionHandle. Returns an output readable Event handle.
ReleaseFunction
Takes an input u32 FunctionHandle. No output.
GetFunctionState
Takes an input u32 FunctionHandle and a type-0x6 output buffer containing a #FunctionState. No output.
GetMappedBar
Takes two input u32s FunctionHandle and Bar. Returns an output u64 Address and an output #BarProfile.
ReadConfig
Takes two input u32s FunctionHandle, Offset and an input #BusAccessWidth. Returns an output u32 Config.
WriteConfig
Takes three input u32s FunctionHandle, Offset, Config and an input #BusAccessWidth. No output.
ReadBarRegion
Takes three input u32s FunctionHandle, Bar, Offset, an input #BusAccessWidth and a type-0x6 output buffer. No output.
[5.0.0+] Now takes a type-0x22 output buffer instead.
WriteBarRegion
Takes three input u32s FunctionHandle, Bar, Offset, an input #BusAccessWidth and a type-0x5 input buffer. No output.
[5.0.0+] Now takes a type-0x21 input buffer instead.
FindCapability
Takes an input u32s FunctionHandle and an input #CapabilityId. Returns an output u32 Capability.
FindExtendedCapability
Takes an input u32s FunctionHandle and an input #ExtendedCapabilityId. Returns an output u32 ExtendedCapability.
MapDma
Takes an input u32 FunctionHandle, an input #DmaDirection, an input u64 VirtualAddress and an input u32 Size. Returns an output u64 PhysicalAddress.
UnmapDma
Takes an input u32 FunctionHandle and an input u64 PhysicalAddress. No output.
UnmapDmaBusAddress
Takes an input u32 FunctionHandle and an input u64 BusAddress. No output.
GetDmaBusAddress
Takes an input u32 FunctionHandle, an input u64 VirtualAddress and an input u32 Size. Returns an output u64 BusAddress.
GetDmaBusAddressRange
Takes an input u32 FunctionHandle. Returns two output u64s BusAddressRangeStart and BusAddressRangeEnd.
SetDmaEnable
Takes an input u32 FunctionHandle and an input bool Enable. No output.
AcquireIrq
Takes an input u32s FunctionHandle and an input #IrqType. Returns an output Event handle.
[7.0.0+] Now takes another input u32 and no longer returns an output Event handle.
ReleaseIrq
Takes an input u32 FunctionHandle. No output.
SetIrqEnable
Takes an input u32s FunctionHandle, an unknown input u32 and an input bool Enable. No output.
SetAspmEnable
Takes an input u32 FunctionHandle and an input bool Enable. No output.
[7.0.0+] Now returns an output Event handle.
SetResetUponResumeEnable
Takes an input u32 FunctionHandle and an input bool Enable. No output.
ResetFunction
Takes an input u32 FunctionHandle and an unknown input u32. No output.
pcie:log
This was added with [6.0.0+].
Cmd | Name |
---|---|
0 | |
1 |
ClassDriverConfig
This is "nn::pcie::ClassDriverConfig".
This is a 0x18-byte struct.
FunctionState
This is "nn::pcie::FunctionState".
This is a 0x28-byte struct.
Offset | Size | Description |
---|---|---|
0x00 | 0x04 | Handle |
0x04 | 0x24 |
BarProfile
This is "nn::pcie::BarProfile".
This is a 0xC-byte struct.
Offset | Size | Description |
---|---|---|
0x00 | 0x08 | Size |
0x08 | 0x04 | Flags |
BusAccessWidth
This is "nn::pcie::BusAccessWidth".
Value | Description |
---|---|
0 | 8bits |
1 | 16bits |
2 | 32bits |
CapabilityId
This is "nn::pcie::CapabilityId".
ExtendedCapabilityId
This is "nn::pcie::ExtendedCapabilityId".
DmaDirection
This is "nn::pcie::DmaDirection".
IrqType
This is "nn::pcie::IrqType".