Sapphire SoC DS Sapphire SoC UG Sapphire HP SoC DS Sapphire HP SoC UG RISC-V Embedded IDE UG Board Support Package
Loading...
Searching...
No Matches
IMX708.c File Reference
#include <stdio.h>
#include "bsp.h"
#include "cam/device/IMX708.h"

Go to the source code of this file.

Overview

IMX708 Camera driver implementation.

Implements the functions defined in IMX708.h for controlling IMX708 Camera input/output and interrupts on the EfxSapphireSoC platform.

Definition in file IMX708.c.

Data Structures

struct  imx708_reg
struct  PiCamV3_mode

Macros

#define IMX708_MODE_SELECT   0x0100
#define IMX708_ACTIVE   0x01
#define IMX708_SLEEP   0x00
#define IMX708_cam_initIAL_PIXEL_RATE   590000000
#define IMX708_REG_BASE_SPC_GAINS_L   0x7b10
#define IMX708_REG_BASE_SPC_GAINS_R   0x7c00
#define IMX708_LPF_INTENSITY_EN   0xC428
#define IMX708_LPF_INTENSITY_ENABLED   0x00
#define IMX708_LPF_INTENSITY_DISABLED   0x01
#define IMX708_LPF_INTENSITY   0xC429
#define IMX708_REG_TEST_PATTERN   0x0600
#define IMX708_TEST_PATTERN_DISABLE   0
#define IMX708_TEST_PATTERN_SOLID_COLOR   1
#define IMX708_TEST_PATTERN_COLOR_BARS   2
#define IMX708_TEST_PATTERN_GREY_COLOR   3
#define IMX708_TEST_PATTERN_PN9   4
#define IMX708_REG_TEST_PATTERN_R   0x0602
#define IMX708_REG_TEST_PATTERN_GR   0x0604
#define IMX708_REG_TEST_PATTERN_B   0x0606
#define IMX708_REG_TEST_PATTERN_GB   0x0608
#define IMX708_TEST_PATTERN_COLOUR_MIN   0
#define IMX708_TEST_PATTERN_COLOUR_MAX   0x0fff
#define IMX708_TEST_PATTERN_COLOUR_STEP   1
#define IMX708_REG_BASE_SPC_GAINS_L   0x7b10
#define IMX708_REG_BASE_SPC_GAINS_R   0x7c00
#define IMX708_HDR_EXPOSURE_RATIO   2
#define IMX708_REG_MID_EXPOSURE   0x3116
#define IMX708_REG_SHT_EXPOSURE   0x0224
#define IMX708_REG_MID_ANALOG_GAIN   0x3118
#define IMX708_REG_SHT_ANALOG_GAIN   0x0216
#define IMX708_REG_EXPOSURE   0x0202
#define IMX708_EXPOSURE_OFFSET   48
#define IMX708_EXPOSURE_DEFAULT   0x640
#define IMX708_EXPOSURE_STEP   1
#define IMX708_EXPOSURE_MIN   1
#define IMX708_EXPOSURE_MAX   (IMX708_FRAME_LENGTH_MAX - IMX708_EXPOSURE_OFFSET)
#define IMX708_REG_ANALOG_GAIN   0x0204
#define IMX708_ANA_GAIN_MIN   112
#define IMX708_ANA_GAIN_MAX   960
#define IMX708_ANA_GAIN_STEP   1
#define IMX708_ANA_GAIN_DEFAULT   IMX708_ANA_GAIN_MIN
#define IMX708_REG_DIGITAL_GAIN   0x020e
#define IMX708_DGTL_GAIN_MIN   0x0100
#define IMX708_DGTL_GAIN_MAX   0xffff
#define IMX708_DGTL_GAIN_DEFAULT   0x0100
#define IMX708_DGTL_GAIN_STEP   1
#define DW9807_I2C_ADDRESS   0x0C << 1
#define DW9807_MAX_FOCUS_POS   1023
#define DW9807_FOCUS_STEPS   1
#define DW9807_CTRL_STEPS   16
#define DW9807_CTRL_DELAY_US   1000
#define DW9807_CTL_ADDR   0x02
#define DW9807_MSB_ADDR   0x03
#define DW9807_LSB_ADDR   0x04
#define DW9807_STATUS_ADDR   0x05
#define DW9807_MODE_ADDR   0x06
#define DW9807_RESONANCE_ADDR   0x07
#define DW9807_PW_MIN_DELAY_US   100
#define DW9807_PW_DELAY_RANGE_US   10
#define DW9807_ACTIVE   0x00
#define DW9807_SLEEP   0x01

Functions

void IMX708_ConfigCommon (cam_instance_t *cam)
 Apply Common Configuration.
void IMX708_ConfigFormat (cam_instance_t *cam, u8 mode)
 Configure Sensor Output Format.
void IMX708_ConfigLinkFreq (cam_instance_t *cam)
 Configure MIPI Link Frequency.
void IMX708_ConfigQuadBayerRemosaicAdjustment (cam_instance_t *cam)
void IMX708_SetPdafGain (cam_instance_t *cam)
 Set PDAF (Phase Detection Auto Focus) Gain.
void IMX708_SetExposure (cam_instance_t *cam, u16 val)
 Set Exposure Time.
void IMX708_SetAnalogueGain (cam_instance_t *cam, u16 val)
 Set Analog Gain.
void IMX708_SetDigitalGain (cam_instance_t *cam, u16 val)
 Set Digital Gain.
void IMX708_OnActuator (cam_instance_t *cam)
 Enable Lens Actuator (VCM).
void IMX708_OffActuator (cam_instance_t *cam)
 Disable Lens Actuator (VCM).
void IMX708_SetFocusStep (cam_instance_t *cam, u32 focus_step)
 Set Focus Position (DAC Value).
cam_status_t IMX708_startStreaming (cam_instance_t *cam)
 Start Stream Video.
cam_status_t IMX708_stopStreaming (cam_instance_t *cam)
 Stop Stream Video.
cam_status_t IMX708_cam_init (cam_instance_t *cam)
 Initialize Camera Sequence.

Variables

const cam_api_t IMX708_DRIVER
 IMX708 Driver Instance. Point your generic RTC pointer to this structure to use the IMX708 hardware.

Macro Definition Documentation

◆ DW9807_ACTIVE

#define DW9807_ACTIVE   0x00

Definition at line 511 of file IMX708.c.

◆ DW9807_CTL_ADDR

#define DW9807_CTL_ADDR   0x02

Definition at line 497 of file IMX708.c.

◆ DW9807_CTRL_DELAY_US

#define DW9807_CTRL_DELAY_US   1000

Definition at line 495 of file IMX708.c.

◆ DW9807_CTRL_STEPS

#define DW9807_CTRL_STEPS   16

Definition at line 494 of file IMX708.c.

◆ DW9807_FOCUS_STEPS

#define DW9807_FOCUS_STEPS   1

Definition at line 487 of file IMX708.c.

◆ DW9807_I2C_ADDRESS

#define DW9807_I2C_ADDRESS   0x0C << 1

Definition at line 480 of file IMX708.c.

◆ DW9807_LSB_ADDR

#define DW9807_LSB_ADDR   0x04

Definition at line 503 of file IMX708.c.

◆ DW9807_MAX_FOCUS_POS

#define DW9807_MAX_FOCUS_POS   1023

Definition at line 482 of file IMX708.c.

◆ DW9807_MODE_ADDR

#define DW9807_MODE_ADDR   0x06

Definition at line 505 of file IMX708.c.

◆ DW9807_MSB_ADDR

#define DW9807_MSB_ADDR   0x03

Definition at line 502 of file IMX708.c.

◆ DW9807_PW_DELAY_RANGE_US

#define DW9807_PW_DELAY_RANGE_US   10

Definition at line 509 of file IMX708.c.

◆ DW9807_PW_MIN_DELAY_US

#define DW9807_PW_MIN_DELAY_US   100

Definition at line 508 of file IMX708.c.

◆ DW9807_RESONANCE_ADDR

#define DW9807_RESONANCE_ADDR   0x07

Definition at line 506 of file IMX708.c.

◆ DW9807_SLEEP

#define DW9807_SLEEP   0x01

Definition at line 512 of file IMX708.c.

◆ DW9807_STATUS_ADDR

#define DW9807_STATUS_ADDR   0x05

Definition at line 504 of file IMX708.c.

◆ IMX708_ACTIVE

#define IMX708_ACTIVE   0x01

Definition at line 26 of file IMX708.c.

◆ IMX708_ANA_GAIN_DEFAULT

#define IMX708_ANA_GAIN_DEFAULT   IMX708_ANA_GAIN_MIN

Definition at line 81 of file IMX708.c.

◆ IMX708_ANA_GAIN_MAX

#define IMX708_ANA_GAIN_MAX   960

Definition at line 79 of file IMX708.c.

◆ IMX708_ANA_GAIN_MIN

#define IMX708_ANA_GAIN_MIN   112

Definition at line 78 of file IMX708.c.

◆ IMX708_ANA_GAIN_STEP

#define IMX708_ANA_GAIN_STEP   1

Definition at line 80 of file IMX708.c.

◆ IMX708_cam_initIAL_PIXEL_RATE

#define IMX708_cam_initIAL_PIXEL_RATE   590000000

Definition at line 30 of file IMX708.c.

◆ IMX708_DGTL_GAIN_DEFAULT

#define IMX708_DGTL_GAIN_DEFAULT   0x0100

Definition at line 87 of file IMX708.c.

◆ IMX708_DGTL_GAIN_MAX

#define IMX708_DGTL_GAIN_MAX   0xffff

Definition at line 86 of file IMX708.c.

◆ IMX708_DGTL_GAIN_MIN

#define IMX708_DGTL_GAIN_MIN   0x0100

Definition at line 85 of file IMX708.c.

◆ IMX708_DGTL_GAIN_STEP

#define IMX708_DGTL_GAIN_STEP   1

Definition at line 88 of file IMX708.c.

◆ IMX708_EXPOSURE_DEFAULT

#define IMX708_EXPOSURE_DEFAULT   0x640

Definition at line 71 of file IMX708.c.

◆ IMX708_EXPOSURE_MAX

#define IMX708_EXPOSURE_MAX   (IMX708_FRAME_LENGTH_MAX - IMX708_EXPOSURE_OFFSET)

Definition at line 74 of file IMX708.c.

◆ IMX708_EXPOSURE_MIN

#define IMX708_EXPOSURE_MIN   1

Definition at line 73 of file IMX708.c.

◆ IMX708_EXPOSURE_OFFSET

#define IMX708_EXPOSURE_OFFSET   48

Definition at line 70 of file IMX708.c.

◆ IMX708_EXPOSURE_STEP

#define IMX708_EXPOSURE_STEP   1

Definition at line 72 of file IMX708.c.

◆ IMX708_HDR_EXPOSURE_RATIO

#define IMX708_HDR_EXPOSURE_RATIO   2

Definition at line 62 of file IMX708.c.

◆ IMX708_LPF_INTENSITY

#define IMX708_LPF_INTENSITY   0xC429

Definition at line 39 of file IMX708.c.

◆ IMX708_LPF_INTENSITY_DISABLED

#define IMX708_LPF_INTENSITY_DISABLED   0x01

Definition at line 38 of file IMX708.c.

◆ IMX708_LPF_INTENSITY_EN

#define IMX708_LPF_INTENSITY_EN   0xC428

Definition at line 36 of file IMX708.c.

◆ IMX708_LPF_INTENSITY_ENABLED

#define IMX708_LPF_INTENSITY_ENABLED   0x00

Definition at line 37 of file IMX708.c.

◆ IMX708_MODE_SELECT

#define IMX708_MODE_SELECT   0x0100

Definition at line 25 of file IMX708.c.

◆ IMX708_REG_ANALOG_GAIN

#define IMX708_REG_ANALOG_GAIN   0x0204

Definition at line 77 of file IMX708.c.

◆ IMX708_REG_BASE_SPC_GAINS_L [1/2]

#define IMX708_REG_BASE_SPC_GAINS_L   0x7b10

Definition at line 32 of file IMX708.c.

◆ IMX708_REG_BASE_SPC_GAINS_L [2/2]

#define IMX708_REG_BASE_SPC_GAINS_L   0x7b10

Definition at line 32 of file IMX708.c.

◆ IMX708_REG_BASE_SPC_GAINS_R [1/2]

#define IMX708_REG_BASE_SPC_GAINS_R   0x7c00

Definition at line 33 of file IMX708.c.

◆ IMX708_REG_BASE_SPC_GAINS_R [2/2]

#define IMX708_REG_BASE_SPC_GAINS_R   0x7c00

Definition at line 33 of file IMX708.c.

◆ IMX708_REG_DIGITAL_GAIN

#define IMX708_REG_DIGITAL_GAIN   0x020e

Definition at line 84 of file IMX708.c.

◆ IMX708_REG_EXPOSURE

#define IMX708_REG_EXPOSURE   0x0202

Definition at line 69 of file IMX708.c.

◆ IMX708_REG_MID_ANALOG_GAIN

#define IMX708_REG_MID_ANALOG_GAIN   0x3118

Definition at line 65 of file IMX708.c.

◆ IMX708_REG_MID_EXPOSURE

#define IMX708_REG_MID_EXPOSURE   0x3116

Definition at line 63 of file IMX708.c.

◆ IMX708_REG_SHT_ANALOG_GAIN

#define IMX708_REG_SHT_ANALOG_GAIN   0x0216

Definition at line 66 of file IMX708.c.

◆ IMX708_REG_SHT_EXPOSURE

#define IMX708_REG_SHT_EXPOSURE   0x0224

Definition at line 64 of file IMX708.c.

◆ IMX708_REG_TEST_PATTERN

#define IMX708_REG_TEST_PATTERN   0x0600

Definition at line 42 of file IMX708.c.

◆ IMX708_REG_TEST_PATTERN_B

#define IMX708_REG_TEST_PATTERN_B   0x0606

Definition at line 52 of file IMX708.c.

◆ IMX708_REG_TEST_PATTERN_GB

#define IMX708_REG_TEST_PATTERN_GB   0x0608

Definition at line 53 of file IMX708.c.

◆ IMX708_REG_TEST_PATTERN_GR

#define IMX708_REG_TEST_PATTERN_GR   0x0604

Definition at line 51 of file IMX708.c.

◆ IMX708_REG_TEST_PATTERN_R

#define IMX708_REG_TEST_PATTERN_R   0x0602

Definition at line 50 of file IMX708.c.

◆ IMX708_SLEEP

#define IMX708_SLEEP   0x00

Definition at line 27 of file IMX708.c.

◆ IMX708_TEST_PATTERN_COLOR_BARS

#define IMX708_TEST_PATTERN_COLOR_BARS   2

Definition at line 45 of file IMX708.c.

◆ IMX708_TEST_PATTERN_COLOUR_MAX

#define IMX708_TEST_PATTERN_COLOUR_MAX   0x0fff

Definition at line 55 of file IMX708.c.

◆ IMX708_TEST_PATTERN_COLOUR_MIN

#define IMX708_TEST_PATTERN_COLOUR_MIN   0

Definition at line 54 of file IMX708.c.

◆ IMX708_TEST_PATTERN_COLOUR_STEP

#define IMX708_TEST_PATTERN_COLOUR_STEP   1

Definition at line 56 of file IMX708.c.

◆ IMX708_TEST_PATTERN_DISABLE

#define IMX708_TEST_PATTERN_DISABLE   0

Definition at line 43 of file IMX708.c.

◆ IMX708_TEST_PATTERN_GREY_COLOR

#define IMX708_TEST_PATTERN_GREY_COLOR   3

Definition at line 46 of file IMX708.c.

◆ IMX708_TEST_PATTERN_PN9

#define IMX708_TEST_PATTERN_PN9   4

Definition at line 47 of file IMX708.c.

◆ IMX708_TEST_PATTERN_SOLID_COLOR

#define IMX708_TEST_PATTERN_SOLID_COLOR   1

Definition at line 44 of file IMX708.c.

Function Documentation

◆ IMX708_ConfigQuadBayerRemosaicAdjustment()

void IMX708_ConfigQuadBayerRemosaicAdjustment ( cam_instance_t * cam)

Definition at line 567 of file IMX708.c.