diff --git a/src/core/hle/service/cam/cam.h b/src/core/hle/service/cam/cam.h
index 83cfe6411a..2f49237281 100644
--- a/src/core/hle/service/cam/cam.h
+++ b/src/core/hle/service/cam/cam.h
@@ -190,24 +190,241 @@ struct PackageParameterCameraSelect {
 
 static_assert(sizeof(PackageParameterCameraSelect) == 28, "PackageParameterCameraSelect structure size is wrong");
 
+/**
+ * Unknown
+ *  Inputs:
+ *      0: 0x00010040
+ *      1: u8 Camera port (`Port` enum)
+ *  Outputs:
+ *      0: 0x00010040
+ *      1: ResultCode
+ */
 void StartCapture(Service::Interface* self);
+
+/**
+ * Unknown
+ *  Inputs:
+ *      0: 0x00020040
+ *      1: u8 Camera port (`Port` enum)
+ *  Outputs:
+ *      0: 0x00020040
+ *      1: ResultCode
+ */
 void StopCapture(Service::Interface* self);
+
+/**
+ * Unknown
+ *  Inputs:
+ *      0: 0x00050040
+ *      1: u8 Camera port (`Port` enum)
+ *  Outputs:
+ *      0: 0x00050042
+ *      1: ResultCode
+ *      2: Descriptor: Handle
+ *      3: Event handle
+ */
 void GetVsyncInterruptEvent(Service::Interface* self);
+
+/**
+ * Unknown
+ *  Inputs:
+ *      0: 0x00060040
+ *      1: u8 Camera port (`Port` enum)
+ *  Outputs:
+ *      0: 0x00060042
+ *      1: ResultCode
+ *      2: Descriptor: Handle
+ *      3: Event handle
+ */
 void GetBufferErrorInterruptEvent(Service::Interface* self);
+
+/**
+ * Sets the target buffer to receive a frame of image data and starts the transfer. Each camera
+ * port has its own event to signal the end of the transfer.
+ *
+ *  Inputs:
+ *      0: 0x00070102
+ *      1: Destination address in calling process
+ *      2: u8 Camera port (`Port` enum)
+ *      3: Image size (in bytes?)
+ *      4: u16 Transfer unit size (in bytes?)
+ *      5: Descriptor: Handle
+ *      6: Handle to destination process
+ *  Outputs:
+ *      0: 0x00070042
+ *      1: ResultCode
+ *      2: Descriptor: Handle
+ *      3: Handle to event signalled when transfer finishes
+ */
 void SetReceiving(Service::Interface* self);
+
+/**
+ * Unknown
+ *  Inputs:
+ *      0: 0x00090100
+ *      1: u8 Camera port (`Port` enum)
+ *      2: u16 Number of lines to transfer
+ *      3: u16 Width
+ *      4: u16 Height
+ *  Outputs:
+ *      0: 0x00090040
+ *      1: ResultCode
+ */
 void SetTransferLines(Service::Interface* self);
+
+/**
+ * Unknown
+ *  Inputs:
+ *      0: 0x000A0080
+ *      1: u16 Width
+ *      2: u16 Height
+ *  Outputs:
+ *      0: 0x000A0080
+ *      1: ResultCode
+ *      2: Maximum number of lines that fit in the buffer(?)
+ */
 void GetMaxLines(Service::Interface* self);
+
+/**
+ * Unknown
+ *  Inputs:
+ *      0: 0x000C0040
+ *      1: u8 Camera port (`Port` enum)
+ *  Outputs:
+ *      0: 0x000C0080
+ *      1: ResultCode
+ *      2: Total number of bytes for each frame with current settings(?)
+ */
 void GetTransferBytes(Service::Interface* self);
+
+/**
+ * Unknown
+ *  Inputs:
+ *      0: 0x000E0080
+ *      1: u8 Camera port (`Port` enum)
+ *      2: u8 bool Enable trimming if true
+ *  Outputs:
+ *      0: 0x000E0040
+ *      1: ResultCode
+ */
 void SetTrimming(Service::Interface* self);
+
+/**
+ * Unknown
+ *  Inputs:
+ *      0: 0x00120140
+ *      1: u8 Camera port (`Port` enum)
+ *      2: s16 Trim width(?)
+ *      3: s16 Trim height(?)
+ *      4: s16 Camera width(?)
+ *      5: s16 Camera height(?)
+ *  Outputs:
+ *      0: 0x00120040
+ *      1: ResultCode
+ */
 void SetTrimmingParamsCenter(Service::Interface* self);
+
+/**
+ * Selects up to two physical cameras to enable.
+ *  Inputs:
+ *      0: 0x00130040
+ *      1: u8 Cameras to activate (`CameraSelect` enum)
+ *  Outputs:
+ *      0: 0x00130040
+ *      1: ResultCode
+ */
 void Activate(Service::Interface* self);
+
+/**
+ * Unknown
+ *  Inputs:
+ *      0: 0x001D00C0
+ *      1: u8 Camera select (`CameraSelect` enum)
+ *      2: u8 Type of flipping to perform (`Flip` enum)
+ *      3: u8 Context (`Context` enum)
+ *  Outputs:
+ *      0: 0x001D0040
+ *      1: ResultCode
+ */
 void FlipImage(Service::Interface* self);
+
+/**
+ * Unknown
+ *  Inputs:
+ *      0: 0x001F00C0
+ *      1: u8 Camera select (`CameraSelect` enum)
+ *      2: u8 Camera frame resolution (`Size` enum)
+ *      3: u8 Context id (`Context` enum)
+ *  Outputs:
+ *      0: 0x001F0040
+ *      1: ResultCode
+ */
 void SetSize(Service::Interface* self);
+
+/**
+ * Unknown
+ *  Inputs:
+ *      0: 0x00200080
+ *      1: u8 Camera select (`CameraSelect` enum)
+ *      2: u8 Camera framerate (`FrameRate` enum)
+ *  Outputs:
+ *      0: 0x00200040
+ *      1: ResultCode
+ */
 void SetFrameRate(Service::Interface* self);
+
+/**
+ * Returns calibration data relating the outside cameras to eachother, for use in AR applications.
+ *
+ *  Inputs:
+ *      0: 0x002B0000
+ *  Outputs:
+ *      0: 0x002B0440
+ *      1: ResultCode
+ *      2-17: `StereoCameraCalibrationData` structure with calibration values
+ */
 void GetStereoCameraCalibrationData(Service::Interface* self);
+
+/**
+ * Unknown
+ *  Inputs:
+ *      0: 0x00360000
+ *  Outputs:
+ *      0: 0x00360080
+ *      1: ResultCode
+ *      2: ?
+ */
 void GetSuitableY2rStandardCoefficient(Service::Interface* self);
+
+/**
+ * Unknown
+ *  Inputs:
+ *      0: 0x00380040
+ *      1: u8 Sound ID
+ *  Outputs:
+ *      0: 0x00380040
+ *      1: ResultCode
+ */
 void PlayShutterSound(Service::Interface* self);
+
+/**
+ * Initializes the camera driver. Must be called before using other functions.
+ *  Inputs:
+ *      0: 0x00390000
+ *  Outputs:
+ *      0: 0x00390040
+ *      1: ResultCode
+ */
 void DriverInitialize(Service::Interface* self);
+
+/**
+ * Shuts down the camera driver.
+ *  Inputs:
+ *      0: 0x003A0000
+ *  Outputs:
+ *      0: 0x003A0040
+ *      1: ResultCode
+ */
 void DriverFinalize(Service::Interface* self);
 
 /// Initialize CAM service(s)