Changes

Jump to navigation Jump to search
3,990 bytes added ,  19:57, 4 March 2022
no edit summary
Line 12: Line 12:     
== RegisterClassDriver ==
 
== RegisterClassDriver ==
Takes the current process handle (0xFFFF8001).
+
Takes an input Process handle and an input [[#ClassDriverConfig]]. Returns an output Event handle and an [[#ISession]].
 
  −
Returns an event handle and session handle to a [[#ISession]].
      
== QueryFunctionsUnregistered ==
 
== QueryFunctionsUnregistered ==
Takes a type-6 buffer.
+
Takes a type-0x6 output buffer containing an array of [[#FunctionState]]. Returns an output s32 '''Count'''.
 
  −
Returns a list of connected PCIe endpoint devices.
      
== 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 || GetBarProfile
+
| 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+]
 
|}
 
|}
   −
[5.0.0+] The buffer types for ReadBarRegion/WriteBarRegion were changed: 0x6 changed to 0x22, and 0x5 changed to 0x21.
+
=== 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'''.
   −
[7.0.0+] AcquireIrq now takes an additional 4-bytes of input, and no longer returns an output handle. SetAspmEnable now returns an output handle.
+
=== 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]]

Navigation menu