NV services: Difference between revisions
Misson20000 (talk | contribs) No edit summary |
No edit summary |
||
Line 117: | Line 117: | ||
! Value || Direction || Size || Description || Notes | ! Value || Direction || Size || Description || Notes | ||
|- | |- | ||
| 0xC0080014 || Inout || 8 || NVHOST_IOCTL_CTRL_SYNCPT_READ || | | 0xC0080014 || Inout || 8 || [[#NVHOST_IOCTL_CTRL_SYNCPT_READ]] || | ||
|- | |- | ||
| 0x40040015 || In || 4 || NVHOST_IOCTL_CTRL_SYNCPT_INCR || | | 0x40040015 || In || 4 || [[#NVHOST_IOCTL_CTRL_SYNCPT_INCR]] || | ||
|- | |- | ||
| 0xC00C0016 || Inout || 12 || NVHOST_IOCTL_CTRL_SYNCPT_WAIT || | | 0xC00C0016 || Inout || 12 || [[#NVHOST_IOCTL_CTRL_SYNCPT_WAIT]] || | ||
|- | |- | ||
| 0x40080017 || In || 8 || NVHOST_IOCTL_CTRL_MODULE_MUTEX || | | 0x40080017 || In || 8 || NVHOST_IOCTL_CTRL_MODULE_MUTEX || | ||
Line 127: | Line 127: | ||
| 0xC0180018 || Inout || 24 || NVHOST32_IOCTL_CTRL_MODULE_REGRDWR || | | 0xC0180018 || Inout || 24 || NVHOST32_IOCTL_CTRL_MODULE_REGRDWR || | ||
|- | |- | ||
| 0xC0100019 || Inout || 16 || NVHOST_IOCTL_CTRL_SYNCPT_WAITEX || | | 0xC0100019 || Inout || 16 || [[#NVHOST_IOCTL_CTRL_SYNCPT_WAITEX]] || | ||
|- | |- | ||
| 0xC008001A || Inout || 8 || NVHOST_IOCTL_CTRL_SYNCPT_READ_MAX || | | 0xC008001A || Inout || 8 || [[#NVHOST_IOCTL_CTRL_SYNCPT_READ_MAX]] || | ||
|- | |- | ||
| 0xC004001C || Inout || 4 || || | | 0xC004001C || Inout || 4 || [[#NVHOST_IOCTL_CTRL_EVENT_SIGNAL]] || | ||
|- | |- | ||
| 0xC010001D || Inout || 16 || || | | 0xC010001D || Inout || 16 || [[#NVHOST_IOCTL_CTRL_EVENT_WAIT]] || | ||
|- | |- | ||
| 0xC010001E || Inout || 16 || || | | 0xC010001E || Inout || 16 || [[#NVHOST_IOCTL_CTRL_EVENT_WAIT_ASYNC]] || | ||
|- | |- | ||
| 0xC004001F || Inout || 4 || || | | 0xC004001F || Inout || 4 || [[#NVHOST_IOCTL_CTRL_EVENT_REGISTER]] || | ||
|- | |- | ||
| 0xC0040020 || Inout || 4 || || | | 0xC0040020 || Inout || 4 || [[#NVHOST_IOCTL_CTRL_EVENT_UNREGISTER]] || | ||
|- | |- | ||
| 0x40080021 || In || 8 || | | 0x40080021 || In || 8 || [[#NVHOST_IOCTL_CTRL_EVENT_KILL]] || | ||
|} | |} | ||
=== NVHOST_IOCTL_CTRL_SYNCPT_READ === | |||
Identical to Linux driver. | |||
struct { | |||
u32 __id; // in | |||
u32 __value; // out | |||
}; | |||
=== NVHOST_IOCTL_CTRL_SYNCPT_INCR === | |||
Identical to Linux driver. | |||
struct { | |||
u32 __id; // in | |||
}; | |||
=== NVHOST_IOCTL_CTRL_SYNCPT_WAIT === | |||
Identical to Linux driver. | |||
struct { | |||
u32 __id; // in | |||
u32 __thresh; // in | |||
s32 __timeout; // in | |||
}; | |||
=== NVHOST_IOCTL_CTRL_SYNCPT_WAITEX === | |||
Identical to Linux driver. | |||
struct { | |||
u32 __id; // in | |||
u32 __thresh; // in | |||
s32 __timeout; // in | |||
u32 __value; // out | |||
}; | |||
=== NVHOST_IOCTL_CTRL_SYNCPT_READ_MAX === | |||
Identical to Linux driver. | |||
struct { | |||
u32 __id; // in | |||
u32 __value; // out | |||
}; | |||
=== NVHOST_IOCTL_CTRL_EVENT_SIGNAL === | |||
Signals an event. Exclusive to the Switch. | |||
struct { | |||
u32 __event_id; // in (ranges from 0x01 to 0x3F) | |||
}; | |||
=== NVHOST_IOCTL_CTRL_EVENT_WAIT === | |||
Waits on an event. Exclusive to the Switch. | |||
struct { | |||
u32 __unk0; // in | |||
u32 __unk1; // in | |||
s32 __timeout; // in | |||
u32 __event; // inout (in=event_id; out=result) | |||
}; | |||
=== NVHOST_IOCTL_CTRL_EVENT_WAIT_ASYNC === | |||
Waits on an event (async version). Exclusive to the Switch. | |||
struct { | |||
u32 __unk0; // in | |||
u32 __unk1; // in | |||
s32 __timeout; // in | |||
u32 __event; // inout (in=event_id; out=result) | |||
}; | |||
=== NVHOST_IOCTL_CTRL_EVENT_REGISTER === | |||
Registers an event. Exclusive to the Switch. | |||
struct { | |||
u32 __event_id; // in (ranges from 0x01 to 0x3F) | |||
}; | |||
=== NVHOST_IOCTL_CTRL_EVENT_UNREGISTER === | |||
Unregisters an event. Exclusive to the Switch. | |||
struct { | |||
u32 __event_id; // in (ranges from 0x01 to 0x3F) | |||
}; | |||
=== NVHOST_IOCTL_CTRL_EVENT_KILL === | |||
Kills events. Exclusive to the Switch. | |||
struct { | |||
u64 __events; // in (64-bit flag where each bit represents one event) | |||
}; | |||
== /dev/nvhost-as-gpu == | == /dev/nvhost-as-gpu == | ||
Line 150: | Line 240: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
! | ! Value || Direction || Size || Description || Notes | ||
|- | |- | ||
| | | 0x40044101 || In || 4 || [[#NVGPU_AS_IOCTL_BIND_CHANNEL]] || | ||
|- | |- | ||
| | | 0xC0184102 || Inout || 24 || [[#NVGPU_AS_IOCTL_ALLOC_SPACE]] || | ||
|- | |- | ||
| | | 0xC0104103 || Inout || 16 || [[#NVGPU_AS_IOCTL_FREE_SPACE]] || | ||
|- | |- | ||
| | | 0xC0184104 || Inout || 24 || [[#NVGPU_AS_IOCTL_MAP_BUFFER]] || | ||
|- | |- | ||
| | | 0xC0084105 || Inout || 8 || [[#NVGPU_AS_IOCTL_UNMAP_BUFFER]] || | ||
|- | |- | ||
| | | 0xC0284106 || Inout || 40 || NVGPU_AS_IOCTL_MAP_BUFFER_EX || | ||
|- | |- | ||
| | | 0x40104107 || In || 16 || [[#NVGPU_AS_IOCTL_INITIALIZE]] || | ||
|- | |- | ||
| | | 0xC0404108 || Inout || 64 || [[#NVGPU_AS_IOCTL_GET_VA_REGIONS]] || | ||
|- | |- | ||
| | | 0x40284109 || In || 40 || [[#NVGPU_AS_IOCTL_INITIALIZE_EX]] || | ||
|- | |- | ||
| | | 0xC0144114 || Inout || 20 || || | ||
|} | |} | ||
Line 221: | Line 311: | ||
=== NVGPU_AS_IOCTL_INITIALIZE === | === NVGPU_AS_IOCTL_INITIALIZE === | ||
Nintendo custom. | Nintendo's custom implementation of NVGPU_GPU_IOCTL_ALLOC_AS (unavailable). | ||
struct { | struct { | ||
u32 | u32 __big_page_size; // in (depends on GPU's available_big_page_sizes; 0=default) | ||
u32 | s32 __as_fd; // in (ignored; passes 0) | ||
u32 __flags; // in (ignored; passes 0) | |||
u32 __reserved; // in (ignored; passes 0) | |||
}; | }; | ||
Line 372: | Line 464: | ||
| 0xC0184706 || Inout || 24 || NVGPU_GPU_IOCTL_GET_TPC_MASKS || | | 0xC0184706 || Inout || 24 || NVGPU_GPU_IOCTL_GET_TPC_MASKS || | ||
|- | |- | ||
| 0x40084707 || In || 8 || | | 0x40084707 || In || 8 || [[#NVGPU_GPU_IOCTL_FLUSH_L2]] || | ||
|- | |- | ||
| 0x4008470E || In || 8 || || | | 0x4008470E || In || 8 || || | ||
Line 386: | Line 478: | ||
| 0xC0044713 || Inout || 4 || || | | 0xC0044713 || Inout || 4 || || | ||
|- | |- | ||
| 0x80084714 || Out || 8 || || | | 0x80084714 || Out || 8 || [[#NVGPU_GPU_IOCTL_GET_L2_STATE]] || | ||
|- | |- | ||
| 0x80044715 || Out || 4 || || | | 0x80044715 || Out || 4 || || | ||
Line 442: | Line 534: | ||
u64 __gpu_characteristics_buf_addr; // in (ignored, but must not be NULL) | u64 __gpu_characteristics_buf_addr; // in (ignored, but must not be NULL) | ||
struct __gpu_characteristics gc; // out | struct __gpu_characteristics gc; // out | ||
}; | |||
=== NVGPU_GPU_IOCTL_FLUSH_L2 === | |||
Flushes the GPU L2 cache. | |||
struct { | |||
u32 __flush; // in (l2_flush | l2_invalidate << 1 | fb_flush << 2) | |||
u32 __reserved; // in | |||
}; | |||
=== NVGPU_GPU_IOCTL_GET_L2_STATE === | |||
Returns the GPU L2 cache state. | |||
struct { | |||
u32 __mask; // out (always 0x07) | |||
u32 __flush; // out (active flush bit field) | |||
}; | }; | ||