NV services: Difference between revisions
No edit summary  | 
				No edit summary  | 
				||
| Line 130: | Line 130: | ||
|-  | |-  | ||
| 0xC008001A || Inout || 8 || [[#NVHOST_IOCTL_CTRL_SYNCPT_READ_MAX]] ||  | | 0xC008001A || Inout || 8 || [[#NVHOST_IOCTL_CTRL_SYNCPT_READ_MAX]] ||  | ||
|-  | |||
| 0xC183001B || Inout || 387 || NVHOST_IOCTL_CTRL_GET_CONFIG ||  | |||
|-  | |-  | ||
| 0xC004001C || Inout || 4 || [[#NVHOST_IOCTL_CTRL_EVENT_SIGNAL]] ||  | | 0xC004001C || Inout || 4 || [[#NVHOST_IOCTL_CTRL_EVENT_SIGNAL]] ||  | ||
| Line 253: | Line 255: | ||
     u64 __events;      // in (64-bit flag where each bit represents one event)  |      u64 __events;      // in (64-bit flag where each bit represents one event)  | ||
   };  |    };  | ||
== /dev/nvmap ==  | |||
{| class="wikitable" border="1"  | |||
! Value || Direction || Size || Description || Notes  | |||
|-  | |||
| 0xC0080101 || Inout || 8 || [[#NVMAP_IOC_CREATE]] ||  | |||
|-  | |||
| 0x00000102 || - || 0 || NVMAP_IOC_CLAIM || Returns NotSupported  | |||
|-  | |||
| 0xC0080103 || Inout || 8 || [[#NVMAP_IOC_FROM_ID]] ||  | |||
|-  | |||
| 0xC0200104 || Inout || 32 || [[#NVMAP_IOC_ALLOC]] ||  | |||
|-  | |||
| 0xC0180105 || Inout || 24 || [[#NVMAP_IOC_FREE]] ||  | |||
|-  | |||
| 0xC0280106 || Inout || 40 || NVMAP_IOC_MMAP || Returns NotSupported  | |||
|-  | |||
| 0xC0280107 || Inout || 40 || NVMAP_IOC_WRITE || Returns NotSupported  | |||
|-  | |||
| 0xC0280108 || Inout || 40 || NVMAP_IOC_READ || Returns NotSupported  | |||
|-  | |||
| 0xC00C0109 || Inout || 12 || [[#NVMAP_IOC_PARAM]] ||  | |||
|-  | |||
| 0xC010010A || Inout || 16 || NVMAP_IOC_PIN_MULT || Returns NotSupported  | |||
|-  | |||
| 0xC010010B || Inout || 16 || NVMAP_IOC_UNPIN_MULT || Returns NotSupported  | |||
|-  | |||
| 0xC008010C || Inout || 8 || NVMAP_IOC_CACHE || Returns NotSupported  | |||
|-  | |||
| 0xC004010D || Inout || 4 || || Returns NotSupported  | |||
|-  | |||
| 0xC008010E || Inout || 8 || [[#NVMAP_IOC_GET_ID]] ||  | |||
|-  | |||
| 0xC004010F || Inout || 4 || || Returns NotSupported  | |||
|-  | |||
| 0x40040110 || In || 4 || || Returns NotSupported  | |||
|-  | |||
| 0x00000111 || - || 0 || || Returns NotSupported  | |||
|}  | |||
=== NVMAP_IOC_CREATE ===  | |||
Creates an nvmap object. Identical to Linux driver.  | |||
  struct {  | |||
    u32 __size;   // in  | |||
    u32 __handle; // out  | |||
  };  | |||
=== NVMAP_IOC_FROM_ID ===  | |||
Get handle to an existing nvmap object. Identical to Linux driver.  | |||
  struct {  | |||
    u32 __id;     // in  | |||
    u32 __handle; // out  | |||
  };  | |||
=== NVMAP_IOC_ALLOC ===  | |||
Allocate memory for the nvmap object. Nintendo extended this one with 16 bytes, and changed it from in to inout.  | |||
  struct {  | |||
    u32 __handle;   // in  | |||
    u32 __heapmask; // in  | |||
    u32 __flags;    // in (0=read-only, 1=read-write)  | |||
    u32 __align;    // in  | |||
    u8  __kind;     // in  | |||
    u8  __pad[7];  | |||
    u64 __addr;     // in  | |||
  };  | |||
=== NVMAP_IOC_FREE ===  | |||
This one is completely custom. Partly because the Linux driver passed the handle as the ioctl "arg-ptr", and HIPC can't handle that voodoo.  | |||
  struct {  | |||
    u32 __handle;   // in  | |||
    u32 __pad;  | |||
    u64 __refcount; // out  | |||
    u32 __size;     // out  | |||
    u32 __flags;    // out, 1=NOT_FREED_YET  | |||
  };  | |||
=== NVMAP_IOC_PARAM ===  | |||
Returns info about a nvmap object. Identical to Linux driver, but extended with further params.  | |||
  struct {  | |||
    u32 __handle; // in  | |||
    u32 __param;  // in, 1=SIZE, 2=ALIGNMENT, 3=BASE (returns error), 4=HEAP (always 0x40000000), 5=KIND, 6=COMPR (unused)  | |||
    u32 __result; // out  | |||
  };  | |||
=== NVMAP_IOC_GET_ID ===  | |||
Returns an id for a nvmap object. Identical to Linux driver.  | |||
  struct {  | |||
    u32 __id;     // out  | |||
    u32 __handle; // in  | |||
  };  | |||
== /dev/nvdisp-ctrl ==  | |||
{| class="wikitable" border="1"  | |||
! Value || Direction || Size || Description || Notes  | |||
|-  | |||
| 0x80040212 || Out || 4 || ||  | |||
|-  | |||
| 0xC0140213 || Inout || 20 || ||  | |||
|-  | |||
| 0xC1100214 || Inout || 272 || ||  | |||
|-  | |||
| 0xC0040216 || Inout || 4 || ||  | |||
|-  | |||
| 0xC0040217 || Inout || 4 || ||  | |||
|-  | |||
| 0xC0100218 || Inout || 16 || ||  | |||
|-  | |||
| 0xC0100219 || Inout || 16 || ||  | |||
|-  | |||
| 0xC0040220 || Inout || 4 || ||  | |||
|-  | |||
|}  | |||
== /dev/nvdisp-disp0, /dev/nvdisp-disp1 ==  | |||
{| class="wikitable" border="1"  | |||
! Value || Direction || Size || Description || Notes  | |||
|-  | |||
| 0x40040201 || In || 4 || ||  | |||
|-  | |||
| 0x40040202 || In || 4 || ||  | |||
|-  | |||
| 0xC4C80203 || In || 1224 || ||  | |||
|-  | |||
| 0x80380204 || Out || 56 || ||  | |||
|-  | |||
| 0x40380205 || Out || 56 || ||  | |||
|-  | |||
| 0x430C0206 || In || 780 || ||  | |||
|-  | |||
| 0x40010207 || In || 1 || ||  | |||
|-  | |||
| 0x80040208 || Out || 4 || ||  | |||
|-  | |||
| 0x80040209 || Out || 4 || ||  | |||
|-  | |||
| 0xC038020A || Inout || 56 || ||  | |||
|-  | |||
| 0x4018020B || In || 24 || ||  | |||
|-  | |||
| 0xC004020C || Inout || 4 || ||  | |||
|-  | |||
| 0x8040020D || Out || 64 || ||  | |||
|-  | |||
| 0xC99A020E || Inout || 2458 || ||  | |||
|-  | |||
| 0xC004020F || Inout || 4 || ||  | |||
|-  | |||
| 0x80600210 || Out || 96 || ||  | |||
|-  | |||
| 0x40600211 || In || 96 || ||  | |||
|-  | |||
| 0xEBFC0215 || Inout || 11260 || ||  | |||
|-  | |||
| 0xC003021A || Inout || 3 || ||  | |||
|-  | |||
| 0x803C021B || Out || 60 || ||  | |||
|-  | |||
| 0x403C021C || In || 60 || ||  | |||
|-  | |||
| 0xC03C021D || Inout || 60  || ||  | |||
|-  | |||
| 0xEF20021E || Inout || 12064 || ||  | |||
|-  | |||
| 0xC004021F || Inout || 4 || ||  | |||
|-  | |||
|}  | |||
== /dev/nvcec-ctrl ==  | |||
{| class="wikitable" border="1"  | |||
! Value || Direction || Size || Description || Notes  | |||
|-  | |||
| 0x40010300 || In || 1 || ||  | |||
|-  | |||
| 0x40010301 || In || 1 || NVCEC_CTRL_ENABLE ||  | |||
|-  | |||
| 0x804C0302 || Out || 76 || NVCEC_CTRL_GET_PADDR ||  | |||
|-  | |||
| 0x40040303 || In || 4 || NVCEC_CTRL_SET_LADDR ||  | |||
|-  | |||
| 0xC04C0304 || Inout || 76 || NVCEC_CTRL_WRITE ||  | |||
|-  | |||
| 0xC04C0305 || Inout || 76 || NVCEC_CTRL_READ ||  | |||
|-  | |||
| 0x804C0306 || Out || 76 || NVCEC_CTRL_GET_CONNECTION_STATUS ||  | |||
|-  | |||
| 0x804C0307 || Out || 76 || NVCEC_CTRL_GET_WRITE_STATUS ||  | |||
|-  | |||
|}  | |||
== /dev/nvhdcp_up-ctrl ==  | |||
{| class="wikitable" border="1"  | |||
! Value || Direction || Size || Description || Notes  | |||
|-  | |||
| 0xC4880401 || Inout || 1160 || ||  | |||
|-  | |||
| 0xC4880402 || Inout || 1160 || ||  | |||
|-  | |||
| 0x40010403 || In || 1 || ||  | |||
|-  | |||
|}  | |||
== /dev/nvdcutil-disp0, /dev/nvdcutil-disp1 ==  | |||
{| class="wikitable" border="1"  | |||
! Value || Direction || Size || Description || Notes  | |||
|-  | |||
| 0x40010501 || In || 1 || ||  | |||
|-  | |||
| 0x40010502 || In || 1 || ||  | |||
|-  | |||
| 0x42040503 || In || 1056 || ||  | |||
|-  | |||
| 0x803C0504 || Out || 60 || ||  | |||
|-  | |||
|}  | |||
== /dev/nvsched-ctrl ==  | |||
{| class="wikitable" border="1"  | |||
! Value || Direction || Size || Description || Notes  | |||
|-  | |||
| 0x00000601 || - || 0 || ||  | |||
|-  | |||
| 0x00000602 || - || 0 || ||  | |||
|-  | |||
| 0x40180603 || In || 1056 || ||  | |||
|-  | |||
| 0x40180604 || In || 60 || ||  | |||
|-  | |||
| 0x40080605 || In || 60 || ||  | |||
|-  | |||
| 0x80080606 || Out || 60 || ||  | |||
|-  | |||
| 0x80080607 || Out || 60 || ||  | |||
|-  | |||
| 0x40180608 || In || 24 || ||  | |||
|-  | |||
| 0x40100609 || In || 16 || ||  | |||
|-  | |||
| 0x4010060A || In || 16 || ||  | |||
|-  | |||
| 0x4008060B || In || 8 || ||  | |||
|-  | |||
| 0x8001060C || Out || 1 || ||  | |||
|-  | |||
| 0x8010060D || Out || 16 || ||  | |||
|-  | |||
| 0x400C060E || In || 12 || ||  | |||
|-  | |||
| 0x4008060F || In || 8 || ||  | |||
|-  | |||
| 0x40100610 || In || 16 || ||  | |||
|-  | |||
| 0x40100611 || In || 16 || ||  | |||
|-  | |||
|}  | |||
== /dev/nvhost-as-gpu ==  | == /dev/nvhost-as-gpu ==  | ||
| Line 385: | Line 647: | ||
   };  |    };  | ||
== /dev/  | == /dev/nvhost-dbg-gpu ==  | ||
Not accessible, but there is code to invoke it.  | |||
{| class="wikitable" border="1"  | {| class="wikitable" border="1"  | ||
! Value || Direction || Size || Description || Notes  | ! Value || Direction || Size || Description || Notes  | ||
|-  | |-  | ||
|   | | 0x40084401 || In || 8 || NVGPU_DBG_GPU_IOCTL_BIND_CHANNEL ||  | ||
|-  | |-  | ||
|   | | 0xC0??4402 || Inout || Variable || NVGPU_DBG_GPU_IOCTL_REG_OPS ||  | ||
|-  | |-  | ||
|   | | 0x40084403 || In || 8 || NVGPU_DBG_GPU_IOCTL_EVENTS_CTRL ||  | ||
|-  | |-  | ||
|   | | 0x40044404 || In || 4 || NVGPU_DBG_GPU_IOCTL_POWERGATE ||  | ||
|-  | |-  | ||
|   | | 0x40044405 || In || 4 || NVGPU_DBG_GPU_IOCTL_SMPC_CTXSW_MODE ||  | ||
|-  | |-  | ||
|   | | 0xC0184407 || Inout || 24 || NVGPU_DBG_GPU_IOCTL_PERFBUF_MAP ||  | ||
|-  | |-  | ||
|   | | 0x40084408 || In || 8 || NVGPU_DBG_GPU_IOCTL_PERFBUF_UNMAP ||  | ||
|-  | |-  | ||
|   | | 0x40084409 || In || 8 || NVGPU_DBG_GPU_IOCTL_PC_SAMPLING ||  | ||
|-  | |-  | ||
|}  | |}  | ||
== /dev/nvhost-ctrl-gpu ==  | == /dev/nvhost-ctrl-gpu ==  | ||
| Line 615: | Line 805: | ||
|-  | |-  | ||
| 0x40040007 || 4 || ||  | | 0x40040007 || 4 || ||  | ||
|-  | |||
| 0x40080008 || 8 || NVHOST_IOCTL_CHANNEL_SET_CLK_RATE ||  | |||
|-  | |-  | ||
| 0xC0??0009 || Variable || NVHOST_IOCTL_CHANNEL_MAP_BUFFER ||  | | 0xC0??0009 || Variable || NVHOST_IOCTL_CHANNEL_MAP_BUFFER ||  | ||
| Line 797: | Line 989: | ||
     u32 __unk3;                // in  |      u32 __unk3;                // in  | ||
   };  |    };  | ||
= nvmemp =  | = nvmemp =  | ||