@@ -138,9 +138,9 @@ static int reset(sensor_t *sensor)
138138 if (ret == 0 ) {
139139 ESP_LOGD (TAG , "Camera defaults loaded" );
140140 vTaskDelay (80 / portTICK_PERIOD_MS );
141- write_reg (sensor -> slv_addr , 0xfe , 0x00 );
141+ ret = write_reg (sensor -> slv_addr , 0xfe , 0x00 );
142142#ifdef CONFIG_IDF_TARGET_ESP32
143- set_reg_bits (sensor -> slv_addr , 0x28 , 4 , 0x07 , 1 ); //frequency division for esp32, ensure pclk <= 15MHz
143+ ret |= set_reg_bits (sensor -> slv_addr , PCLK_DIV , 4 , 0x07 , 1 ); //frequency division for esp32, ensure pclk <= 15MHz
144144#endif
145145 }
146146 return ret ;
@@ -152,20 +152,19 @@ static int set_pixformat(sensor_t *sensor, pixformat_t pixformat)
152152
153153 switch (pixformat ) {
154154 case PIXFORMAT_RGB565 :
155- write_reg (sensor -> slv_addr , 0xfe , 0x00 );
156- ret = set_reg_bits (sensor -> slv_addr , 0x24 , 0 , 0x0f , 6 ); //RGB565
155+ ret = write_reg (sensor -> slv_addr , 0xfe , 0x00 );
156+ ret | = set_reg_bits (sensor -> slv_addr , OUTPUT_FMT , 0 , 0x0f , 6 ); //RGB565
157157 break ;
158-
159158 case PIXFORMAT_YUV422 :
160- write_reg (sensor -> slv_addr , 0xfe , 0x00 );
161- ret = set_reg_bits (sensor -> slv_addr , 0x24 , 0 , 0x0f , 2 ); //yuv422 Y Cb Y Cr
159+ ret = write_reg (sensor -> slv_addr , 0xfe , 0x00 );
160+ ret | = set_reg_bits (sensor -> slv_addr , OUTPUT_FMT , 0 , 0x0f , 2 ); //yuv422 Y Cb Y Cr
162161 break ;
163162 case PIXFORMAT_GRAYSCALE :
164- write_reg (sensor -> slv_addr , 0xfe , 0x00 );
165- ret = write_reg (sensor -> slv_addr , 0x24 , 0xb1 );
163+ ret = write_reg (sensor -> slv_addr , 0xfe , 0x00 );
164+ ret | = write_reg (sensor -> slv_addr , OUTPUT_FMT , 0xb1 );
166165 break ;
167166 default :
168- ESP_LOGW (TAG , "unsupport format" );
167+ ESP_LOGW (TAG , "Unsupported format %u" , pixformat );
169168 ret = -1 ;
170169 break ;
171170 }
@@ -230,45 +229,45 @@ static int set_framesize(sensor_t *sensor, framesize_t framesize)
230229 }
231230 }
232231
233- write_reg (sensor -> slv_addr , 0xfe , 0x00 );
234-
235- write_reg (sensor -> slv_addr , 0x05 , H8 (row_s ));
236- write_reg (sensor -> slv_addr , 0x06 , L8 (row_s ));
237- write_reg (sensor -> slv_addr , 0x07 , H8 (col_s ));
238- write_reg (sensor -> slv_addr , 0x08 , L8 (col_s ));
239- write_reg (sensor -> slv_addr , 0x09 , H8 (win_h + 8 ));
240- write_reg (sensor -> slv_addr , 0x0a , L8 (win_h + 8 ));
241- write_reg (sensor -> slv_addr , 0x0b , H8 (win_w + 8 ));
242- write_reg (sensor -> slv_addr , 0x0c , L8 (win_w + 8 ));
232+ ret = write_reg (sensor -> slv_addr , 0xfe , 0x00 );
243233
244- write_reg (sensor -> slv_addr , 0xfe , 0x01 );
245- set_reg_bits (sensor -> slv_addr , 0x53 , 7 , 0x01 , 1 );
246- set_reg_bits (sensor -> slv_addr , 0x55 , 0 , 0x01 , 1 );
247- write_reg (sensor -> slv_addr , 0x54 , cfg -> reg0x54 );
248- write_reg (sensor -> slv_addr , 0x56 , cfg -> reg0x56 );
249- write_reg (sensor -> slv_addr , 0x57 , cfg -> reg0x57 );
250- write_reg (sensor -> slv_addr , 0x58 , cfg -> reg0x58 );
251- write_reg (sensor -> slv_addr , 0x59 , cfg -> reg0x59 );
234+ ret |= write_reg (sensor -> slv_addr , ROW_START_H , H8 (row_s ));
235+ ret |= write_reg (sensor -> slv_addr , ROW_START_L , L8 (row_s ));
236+ ret |= write_reg (sensor -> slv_addr , COL_START_H , H8 (col_s ));
237+ ret |= write_reg (sensor -> slv_addr , COL_START_L , L8 (col_s ));
238+ ret |= write_reg (sensor -> slv_addr , WIN_HEIGHT_H , H8 (win_h + 8 ));
239+ ret |= write_reg (sensor -> slv_addr , WIN_HEIGHT_L , L8 (win_h + 8 ));
240+ ret |= write_reg (sensor -> slv_addr , WIN_WIDTH_H , H8 (win_w + 8 ));
241+ ret |= write_reg (sensor -> slv_addr , WIN_WIDTH_L , L8 (win_w + 8 ));
242+
243+ ret |= write_reg (sensor -> slv_addr , 0xfe , 0x01 );
244+ ret |= set_reg_bits (sensor -> slv_addr , SUBSAMPLE_EN , 7 , 0x01 , 1 );
245+ ret |= set_reg_bits (sensor -> slv_addr , SUBSAMPLE_EN2 , 0 , 0x01 , 1 );
246+ ret |= write_reg (sensor -> slv_addr , SUBSAMPLE_MODE , cfg -> reg0x54 );
247+ ret |= write_reg (sensor -> slv_addr , SUBSAMPLE_Y0 , cfg -> reg0x56 );
248+ ret |= write_reg (sensor -> slv_addr , SUBSAMPLE_Y1 , cfg -> reg0x57 );
249+ ret |= write_reg (sensor -> slv_addr , SUBSAMPLE_UV0 , cfg -> reg0x58 );
250+ ret |= write_reg (sensor -> slv_addr , SUBSAMPLE_UV1 , cfg -> reg0x59 );
252251
253- write_reg (sensor -> slv_addr , 0xfe , 0x00 );
252+ ret |= write_reg (sensor -> slv_addr , 0xfe , 0x00 );
254253
255254#elif CONFIG_GC_SENSOR_WINDOWING_MODE
256- write_reg (sensor -> slv_addr , 0xfe , 0x00 );
257-
258- write_reg (sensor -> slv_addr , 0xf7 , col_s / 4 );
259- write_reg (sensor -> slv_addr , 0xf8 , row_s / 4 );
260- write_reg (sensor -> slv_addr , 0xf9 , (col_s + w ) / 4 );
261- write_reg (sensor -> slv_addr , 0xfa , (row_s + h ) / 4 );
262-
263- write_reg (sensor -> slv_addr , 0x05 , H8 (row_s ));
264- write_reg (sensor -> slv_addr , 0x06 , L8 (row_s ));
265- write_reg (sensor -> slv_addr , 0x07 , H8 (col_s ));
266- write_reg (sensor -> slv_addr , 0x08 , L8 (col_s ));
267-
268- write_reg (sensor -> slv_addr , 0x09 , H8 (h + 8 ));
269- write_reg (sensor -> slv_addr , 0x0a , L8 (h + 8 ));
270- write_reg (sensor -> slv_addr , 0x0b , H8 (w + 8 ));
271- write_reg (sensor -> slv_addr , 0x0c , L8 (w + 8 ));
255+ ret = write_reg (sensor -> slv_addr , 0xfe , 0x00 );
256+
257+ ret |= write_reg (sensor -> slv_addr , SUB_COL_N , col_s / 4 );
258+ ret |= write_reg (sensor -> slv_addr , SUB_ROW_N , row_s / 4 );
259+ ret |= write_reg (sensor -> slv_addr , SUB_COL_N1 , (col_s + w ) / 4 );
260+ ret |= write_reg (sensor -> slv_addr , SUB_ROW_N1 , (row_s + h ) / 4 );
261+
262+ ret |= write_reg (sensor -> slv_addr , ROW_START_H , H8 (row_s ));
263+ ret |= write_reg (sensor -> slv_addr , ROW_START_L , L8 (row_s ));
264+ ret |= write_reg (sensor -> slv_addr , COL_START_H , H8 (col_s ));
265+ ret |= write_reg (sensor -> slv_addr , COL_START_L , L8 (col_s ));
266+
267+ ret |= write_reg (sensor -> slv_addr , WIN_HEIGHT_H , H8 (h + 8 ));
268+ ret |= write_reg (sensor -> slv_addr , WIN_HEIGHT_L , L8 (h + 8 ));
269+ ret |= write_reg (sensor -> slv_addr , WIN_WIDTH_H , H8 (w + 8 ));
270+ ret |= write_reg (sensor -> slv_addr , WIN_WIDTH_L , L8 (w + 8 ));
272271
273272#endif
274273 if (ret == 0 ) {
0 commit comments