ENUM ICVS_COMMAND(9)
π NAME
okay so bestie, enum icvs_command is literally the protocol command opcodes β like, the whole menu of stuff you can ask the firmware to do, sitting up in firmware space 0x0800+ π
(this is the Kernel API Manual, section 9, btw π)
β¨ SYNOPSIS β¨
enum icvs_command {
ICVS_GET_DEV_STATE ,
ICVS_GET_DEV_FW_VERSION ,
ICVS_GET_DEV_VID_PID ,
ICVS_GET_DEV_ERR_CODE ,
ICVS_GET_DEV_CAPABILITY ,
ICVS_SET_DEV_HOST_ID ,
ICVS_GET_DEV_HOST_ID ,
ICVS_FW_LOADER_START ,
ICVS_FW_LOADER_DATA ,
ICVS_FW_LOADER_END ,
ICVS_HOST_GET_MIPI_CONFIG ,
ICVS_HOST_SET_MIPI_CONFIG ,
ICVS_HOST_SENSOR_OWNER
};
π¦ Constants π¦
okay so these are all the members, one by one, no skips, no cap π
ICVS_GET_DEV_STATEβ ask the device what state it's in rn, and you get it back as a state bitfield β¨ICVS_GET_DEV_FW_VERSIONβ pull the firmware version tuple, like a little name-tag for the fw πICVS_GET_DEV_VID_PIDβ read the vendor / product identifiers, the classicVID/PIDcombo πICVS_GET_DEV_ERR_CODEβ grab the last error code, if there even is one (if any π) πICVS_GET_DEV_CAPABILITYβ read the protocol capability structure, so you know what it can actually do π«ΆICVS_SET_DEV_HOST_IDβ set the host identity / ownership bits, like planting your flag πΈICVS_GET_DEV_HOST_IDβ read that host identity right back out, vibe check complete π₯ICVS_FW_LOADER_STARTβ kick off the firmware download sequence, here we gooo βICVS_FW_LOADER_DATAβ stream one chunk of firmware payload, chunk by chunky chunk π§ICVS_FW_LOADER_ENDβ end the firmware download and trigger the flash, the finale πICVS_HOST_GET_MIPI_CONFIGβ request the current MIPI CSI link configuration πΈICVS_HOST_SET_MIPI_CONFIGβ apply a brand-new MIPI CSI link configuration, slay πICVS_HOST_SENSOR_OWNERβ toggle CSI sensor ownership (with a lil GPIO assist) π
π SEE ALSO π
the whole friend group, fr fr β go read these too:
- Kernel file
./drivers/media/i2c/cvs/icvs.h enum icvs_csi_cmd_id(9)enum icvs_csi_link_owner(9)enum icvs_csi_privacy_status(9)enum icvs_csi_pads(9)CVS device quirk flags(9)struct icvs_device_quirk(9)struct icvs_dt_config(9)struct icvs_vc_config(9)struct icvs_link_cfg(9)struct icvs_fw_version(9)struct icvs_vid_pid(9)struct icvs_mipi_data_packet(9)struct icvs_mipi_read_packet(9)struct icvs_dev_capabilities(9)struct icvs_cmd(9)struct icvs_resp(9)enum icvs_resources(9)enum icvs_state(9)struct icvs(9)cvs_dev(9)
that's the whole page, bestie, you ate that π«Ά this lil drop lives in ./drivers/media/i2c/cvs and it's dated October 2026 β mwah, see you in the next man 9 ππ¦
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms