Replace sensor struct clock polarities with flags.

This commit is contained in:
iabdalkader 2016-02-05 02:38:07 +02:00
parent e0c5822c28
commit ec1de1c2eb
5 changed files with 35 additions and 24 deletions

View File

@ -620,10 +620,11 @@ int ov2640_init(struct sensor_dev *sensor)
sensor->set_quality = set_quality; sensor->set_quality = set_quality;
sensor->set_colorbar = set_colorbar; sensor->set_colorbar = set_colorbar;
/* set HSYNC/VSYNC/PCLK polarity */ // Set sensor flags
sensor->vsync_pol = DCMI_VSPOLARITY_LOW; SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_VSYNC, 0);
sensor->hsync_pol = DCMI_HSPOLARITY_LOW; SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_HSYNC, 0);
sensor->pixck_pol = DCMI_PCKPOLARITY_RISING; SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_PIXCK, 1);
SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_FSYNC, 0);
return 0; return 0;
} }

View File

@ -280,7 +280,7 @@ static int set_colorbar(struct sensor_dev *sensor, int enable)
int ov7725_init(struct sensor_dev *sensor) int ov7725_init(struct sensor_dev *sensor)
{ {
/* set function pointers */ // Set function pointers
sensor->reset = reset; sensor->reset = reset;
sensor->set_pixformat = set_pixformat; sensor->set_pixformat = set_pixformat;
sensor->set_framesize = set_framesize; sensor->set_framesize = set_framesize;
@ -292,10 +292,11 @@ int ov7725_init(struct sensor_dev *sensor)
sensor->set_gainceiling = set_gainceiling; sensor->set_gainceiling = set_gainceiling;
sensor->set_colorbar = set_colorbar; sensor->set_colorbar = set_colorbar;
/* set HSYNC/VSYNC/PCLK polarity */ // Set sensor flags
sensor->vsync_pol = DCMI_VSPOLARITY_HIGH; SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_VSYNC, 1);
sensor->hsync_pol = DCMI_HSPOLARITY_LOW; SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_HSYNC, 0);
sensor->pixck_pol = DCMI_PCKPOLARITY_RISING; SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_PIXCK, 1);
SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_FSYNC, 1);
return 0; return 0;
} }

View File

@ -345,7 +345,7 @@ static int set_gainceiling(struct sensor_dev *sensor, enum sensor_gainceiling ga
int ov9650_init(struct sensor_dev *sensor) int ov9650_init(struct sensor_dev *sensor)
{ {
/* set function pointers */ // Set function pointers
sensor->reset = reset; sensor->reset = reset;
sensor->set_pixformat = set_pixformat; sensor->set_pixformat = set_pixformat;
sensor->set_framesize = set_framesize; sensor->set_framesize = set_framesize;
@ -354,10 +354,11 @@ int ov9650_init(struct sensor_dev *sensor)
sensor->set_exposure = set_exposure; sensor->set_exposure = set_exposure;
sensor->set_gainceiling = set_gainceiling; sensor->set_gainceiling = set_gainceiling;
/* set HSYNC/VSYNC/PCLK polarity */ // Set sensor flags
sensor->vsync_pol = DCMI_VSPOLARITY_HIGH; SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_VSYNC, 1);
sensor->hsync_pol = DCMI_HSPOLARITY_LOW; SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_HSYNC, 0);
sensor->pixck_pol = DCMI_PCKPOLARITY_RISING; SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_PIXCK, 1);
SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_FSYNC, 0);
return 0; return 0;
} }

View File

@ -115,13 +115,16 @@ static int dcmi_config(uint32_t jpeg_mode)
{ {
/* DCMI configuration */ /* DCMI configuration */
DCMIHandle.Instance = DCMI; DCMIHandle.Instance = DCMI;
DCMIHandle.Init.VSPolarity = sensor.vsync_pol; /* VSYNC clock polarity */ DCMIHandle.Init.VSPolarity = SENSOR_HW_FLAGS_GET(&sensor, SENSOR_HW_FLAGS_VSYNC) ? /* VSYNC clock polarity */
DCMIHandle.Init.HSPolarity = sensor.hsync_pol; /* HSYNC clock polarity */ DCMI_VSPOLARITY_HIGH : DCMI_VSPOLARITY_LOW;
DCMIHandle.Init.PCKPolarity = sensor.pixck_pol; /* PXCLK clock polarity */ DCMIHandle.Init.HSPolarity = SENSOR_HW_FLAGS_GET(&sensor, SENSOR_HW_FLAGS_HSYNC) ? /* HSYNC clock polarity */
DCMIHandle.Init.SynchroMode = DCMI_SYNCHRO_HARDWARE; /* Enable Hardware synchronization */ DCMI_HSPOLARITY_HIGH : DCMI_HSPOLARITY_LOW;
DCMIHandle.Init.CaptureRate = DCMI_CR_ALL_FRAME; /* Capture rate all frames */ DCMIHandle.Init.PCKPolarity = SENSOR_HW_FLAGS_GET(&sensor, SENSOR_HW_FLAGS_PIXCK) ? /* PXCLK clock polarity */
DCMIHandle.Init.ExtendedDataMode = DCMI_EXTEND_DATA_8B; /* Capture 8 bits on every pixel clock */ DCMI_PCKPOLARITY_RISING : DCMI_PCKPOLARITY_FALLING;
DCMIHandle.Init.JPEGMode = jpeg_mode; /* Set JPEG Mode */ DCMIHandle.Init.SynchroMode = DCMI_SYNCHRO_HARDWARE; /* Enable Hardware synchronization */
DCMIHandle.Init.CaptureRate = DCMI_CR_ALL_FRAME; /* Capture rate all frames */
DCMIHandle.Init.ExtendedDataMode = DCMI_EXTEND_DATA_8B; /* Capture 8 bits on every pixel clock */
DCMIHandle.Init.JPEGMode = jpeg_mode; /* Set JPEG Mode */
/* Associate the DMA handle to the DCMI handle */ /* Associate the DMA handle to the DCMI handle */
__HAL_LINKDMA(&DCMIHandle, DMA_Handle, DMAHandle); __HAL_LINKDMA(&DCMIHandle, DMA_Handle, DMAHandle);

View File

@ -70,12 +70,17 @@ enum reset_polarity {
extern const int res_width[]; extern const int res_width[];
extern const int res_height[]; extern const int res_height[];
#define SENSOR_HW_FLAGS_VSYNC (0) // vertical sync polarity.
#define SENSOR_HW_FLAGS_HSYNC (1) // horizontal sync polarity.
#define SENSOR_HW_FLAGS_PIXCK (2) // pixel clock edge.
#define SENSOR_HW_FLAGS_FSYNC (3) // hardware frame sync.
#define SENSOR_HW_FLAGS_GET(s, x) ((s)->hw_flags & (1<<x))
#define SENSOR_HW_FLAGS_SET(s, x, v) ((s)->hw_flags |= (v<<x))
struct sensor_dev { struct sensor_dev {
struct sensor_id id; struct sensor_id id;
uint8_t slv_addr; uint8_t slv_addr;
uint32_t vsync_pol; uint32_t hw_flags;
uint32_t hsync_pol;
uint32_t pixck_pol;
enum reset_polarity reset_pol; enum reset_polarity reset_pol;
enum sensor_pixformat pixformat; enum sensor_pixformat pixformat;
enum sensor_framesize framesize; enum sensor_framesize framesize;