You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
2.2 KiB
78 lines
2.2 KiB
#pragma once
|
|
|
|
#include <stdint.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include <vector>
|
|
#include <memory>
|
|
|
|
// our helpers
|
|
int write_random(uint8_t *dst, std::vector<uint32_t> vals);
|
|
int write_cont(uint8_t *dst, uint32_t reg, std::vector<uint32_t> vals);
|
|
|
|
// from drivers/media/platform/msm/camera/cam_cdm/cam_cdm_util.{c,h}
|
|
|
|
enum cam_cdm_command {
|
|
CAM_CDM_CMD_UNUSED = 0x0,
|
|
CAM_CDM_CMD_DMI = 0x1,
|
|
CAM_CDM_CMD_NOT_DEFINED = 0x2,
|
|
CAM_CDM_CMD_REG_CONT = 0x3,
|
|
CAM_CDM_CMD_REG_RANDOM = 0x4,
|
|
CAM_CDM_CMD_BUFF_INDIRECT = 0x5,
|
|
CAM_CDM_CMD_GEN_IRQ = 0x6,
|
|
CAM_CDM_CMD_WAIT_EVENT = 0x7,
|
|
CAM_CDM_CMD_CHANGE_BASE = 0x8,
|
|
CAM_CDM_CMD_PERF_CTRL = 0x9,
|
|
CAM_CDM_CMD_DMI_32 = 0xa,
|
|
CAM_CDM_CMD_DMI_64 = 0xb,
|
|
CAM_CDM_CMD_PRIVATE_BASE = 0xc,
|
|
CAM_CDM_CMD_SWD_DMI_32 = (CAM_CDM_CMD_PRIVATE_BASE + 0x64),
|
|
CAM_CDM_CMD_SWD_DMI_64 = (CAM_CDM_CMD_PRIVATE_BASE + 0x65),
|
|
CAM_CDM_CMD_PRIVATE_BASE_MAX = 0x7F
|
|
};
|
|
|
|
/**
|
|
* struct cdm_regrandom_cmd - Definition for CDM random register command.
|
|
* @count: Number of register writes
|
|
* @reserved: reserved bits
|
|
* @cmd: Command ID (CDMCmd)
|
|
*/
|
|
struct cdm_regrandom_cmd {
|
|
unsigned int count : 16;
|
|
unsigned int reserved : 8;
|
|
unsigned int cmd : 8;
|
|
} __attribute__((__packed__));
|
|
|
|
/**
|
|
* struct cdm_regcontinuous_cmd - Definition for a CDM register range command.
|
|
* @count: Number of register writes
|
|
* @reserved0: reserved bits
|
|
* @cmd: Command ID (CDMCmd)
|
|
* @offset: Start address of the range of registers
|
|
* @reserved1: reserved bits
|
|
*/
|
|
struct cdm_regcontinuous_cmd {
|
|
unsigned int count : 16;
|
|
unsigned int reserved0 : 8;
|
|
unsigned int cmd : 8;
|
|
unsigned int offset : 24;
|
|
unsigned int reserved1 : 8;
|
|
} __attribute__((__packed__));
|
|
|
|
/**
|
|
* struct cdm_dmi_cmd - Definition for a CDM DMI command.
|
|
* @length: Number of bytes in LUT - 1
|
|
* @reserved: reserved bits
|
|
* @cmd: Command ID (CDMCmd)
|
|
* @addr: Address of the LUT in memory
|
|
* @DMIAddr: Address of the target DMI config register
|
|
* @DMISel: DMI identifier
|
|
*/
|
|
struct cdm_dmi_cmd {
|
|
unsigned int length : 16;
|
|
unsigned int reserved : 8;
|
|
unsigned int cmd : 8;
|
|
unsigned int addr;
|
|
unsigned int DMIAddr : 24;
|
|
unsigned int DMISel : 8;
|
|
} __attribute__((__packed__));
|
|
|