Loading src/drivers/elphel/latency.h +2 −0 Original line number Original line Diff line number Diff line Loading @@ -164,6 +164,8 @@ const unsigned long ahead_tab[]= // NC393 - triggered mode wants onchange_compstop==2, while onchange_window == 1? // NC393 - triggered mode wants onchange_compstop==2, while onchange_window == 1? // onchange_compstop, 0, 2, 1, 2, 1, 0, /// stop compressor when changing geometry // onchange_compstop, 0, 2, 1, 2, 1, 0, /// stop compressor when changing geometry /// onchange_compstop, 0, 2, 1, 1, 1, 0, /// stop compressor when changing geometry /// onchange_compstop, 0, 2, 1, 1, 1, 0, /// stop compressor when changing geometry // TODO: NC393 now comstop is used when changing color modes does not need two cycles - just 1 onchange_compstop, 0, 2, 2, 2, 2, 0, /// stop compressor when changing geometry onchange_compstop, 0, 2, 2, 2, 2, 0, /// stop compressor when changing geometry onchange_compctl, 0, 0, 1, 1, 1, 0, /// only start/stop/single (after explicitly changed, not when geometry was changed) onchange_compctl, 0, 0, 1, 1, 1, 0, /// only start/stop/single (after explicitly changed, not when geometry was changed) // onchange_gammaload, 1, 0, 0, 0, 0, 0, /// write gamma tables (should be prepared). Maybe - just last byte, to activate? // onchange_gammaload, 1, 0, 0, 0, 0, 0, /// write gamma tables (should be prepared). Maybe - just last byte, to activate? Loading src/drivers/elphel/param_depend.h +6 −1 Original line number Original line Diff line number Diff line Loading @@ -199,7 +199,12 @@ const unsigned long param_depend_tab[]= P_BIN_VERT, ONCHANGE_WINDOW | ONCHANGE_EXPOSURE | ONCHANGE_HIST | ONCHANGE_AEXP | ONCHANGE_FOCUSMODE | ONCHANGE_LIMITFPS | ONCHANGE_HIST | \ P_BIN_VERT, ONCHANGE_WINDOW | ONCHANGE_EXPOSURE | ONCHANGE_HIST | ONCHANGE_AEXP | ONCHANGE_FOCUSMODE | ONCHANGE_LIMITFPS | ONCHANGE_HIST | \ ONCHANGE_MEMSENSOR | ONCHANGE_MEMCOMPRESSOR | ONCHANGE_COMPMODE | ONCHANGE_COMPSTOP | ONCHANGE_COMPRESTART | ONCHANGE_SENSORIN , ONCHANGE_MEMSENSOR | ONCHANGE_MEMCOMPRESSOR | ONCHANGE_COMPMODE | ONCHANGE_COMPSTOP | ONCHANGE_COMPRESTART | ONCHANGE_SENSORIN , //Oleg 20161014: trying to restart the compressor: + ONCHANGE_COMPSTOP | ONCHANGE_COMPRESTART //Oleg 20161014: trying to restart the compressor: + ONCHANGE_COMPSTOP | ONCHANGE_COMPRESTART P_COLOR, ONCHANGE_COMPMODE | ONCHANGE_LIMITFPS | ONCHANGE_MEMCOMPRESSOR | ONCHANGE_COMPSTOP | ONCHANGE_COMPRESTART, // P_COLOR, ONCHANGE_COMPMODE | ONCHANGE_LIMITFPS | ONCHANGE_MEMSENSOR | ONCHANGE_MEMCOMPRESSOR | ONCHANGE_COMPSTOP | ONCHANGE_COMPRESTART, //Added ONCHANGE_WINDOW and related as JPEG <-> JP4 change window by the border pixels P_COLOR, ONCHANGE_WINDOW | ONCHANGE_EXPOSURE | ONCHANGE_HIST | ONCHANGE_AEXP | ONCHANGE_FOCUSMODE | ONCHANGE_LIMITFPS | ONCHANGE_HIST | \ ONCHANGE_MEMSENSOR | ONCHANGE_MEMCOMPRESSOR | ONCHANGE_COMPMODE | ONCHANGE_COMPSTOP | ONCHANGE_COMPRESTART | ONCHANGE_SENSORIN, //P_COLOR, ONCHANGE_COMPMODE | ONCHANGE_LIMITFPS | ONCHANGE_MEMCOMPRESSOR, //P_COLOR, ONCHANGE_COMPMODE | ONCHANGE_LIMITFPS | ONCHANGE_MEMCOMPRESSOR, // P_PF_HEIGHT, ONCHANGE_RECALCSEQ | ONCHANGE_SENSORIN | ONCHANGE_LIMITFPS | ONCHANGE_MEMSENSOR | ONCHANGE_MEMCOMPRESSOR | ONCHANGE_COMPMODE | ONCHANGE_COMPSTOP | ONCHANGE_COMPRESTART , // P_PF_HEIGHT, ONCHANGE_RECALCSEQ | ONCHANGE_SENSORIN | ONCHANGE_LIMITFPS | ONCHANGE_MEMSENSOR | ONCHANGE_MEMCOMPRESSOR | ONCHANGE_COMPMODE | ONCHANGE_COMPSTOP | ONCHANGE_COMPRESTART , P_PF_HEIGHT, ONCHANGE_RECALCSEQ | ONCHANGE_WINDOW | ONCHANGE_EXPOSURE | ONCHANGE_HIST | ONCHANGE_AEXP | ONCHANGE_FOCUSMODE | ONCHANGE_LIMITFPS | ONCHANGE_HIST | \ P_PF_HEIGHT, ONCHANGE_RECALCSEQ | ONCHANGE_WINDOW | ONCHANGE_EXPOSURE | ONCHANGE_HIST | ONCHANGE_AEXP | ONCHANGE_FOCUSMODE | ONCHANGE_LIMITFPS | ONCHANGE_HIST | \ Loading src/drivers/elphel/pgm_functions.c +9 −6 Original line number Original line Diff line number Diff line Loading @@ -1164,7 +1164,7 @@ int pgm_limitfps (int sensor_port, ///< sensor port number (0..3 dev_dbg(g_dev_ptr,"{%d} frame16=%d\n",sensor_port,frame16); dev_dbg(g_dev_ptr,"{%d} frame16=%d\n",sensor_port,frame16); MDP(DBGB_PSFN, sensor_port,"frame16=%d\n",frame16) MDP(DBGB_PSFN, sensor_port,"frame16=%d\n",frame16) if (frame16 >= PARS_FRAMES) return -1; // wrong frame if (frame16 >= PARS_FRAMES) return -1; // wrong frame cycles=thispars->pars[P_TILES]; // number of tiles cycles=thispars->pars[P_TILES]; // number of tiles nc393: [P_TILES] == 0! // dev_dbg(g_dev_ptr,"{%d} tiles=%d(0x%x)\n",sensor_port,cycles,cycles); // dev_dbg(g_dev_ptr,"{%d} tiles=%d(0x%x)\n",sensor_port,cycles,cycles); switch (thispars->pars[P_COLOR] & 0x0f){ switch (thispars->pars[P_COLOR] & 0x0f){ case COLORMODE_MONO6: case COLORMODE_MONO6: Loading Loading @@ -2025,7 +2025,7 @@ int pgm_memcompressor (int sensor_port, ///< sensor port number ( int tile_height; // 16/18 (20 not yet implemented) int tile_height; // 16/18 (20 not yet implemented) x393_cmprs_frame_format_t cmprs_frame_format ={.d32=0}; x393_cmprs_frame_format_t cmprs_frame_format ={.d32=0}; dev_dbg(g_dev_ptr,"{%d} frame16=%d\n",sensor_port,frame16); dev_dbg(g_dev_ptr,"{%d} frame16=%d, pars[P_COLOR]=0x%x\n",sensor_port,frame16, (int)thispars->pars[P_COLOR]); MDP(DBGB_PSFN, sensor_port,"frame16=%d\n",frame16) MDP(DBGB_PSFN, sensor_port,"frame16=%d\n",frame16) if (frame16 >= PARS_FRAMES) return -1; // wrong frame if (frame16 >= PARS_FRAMES) return -1; // wrong frame width_marg = thispars->pars[P_ACTUAL_WIDTH]; width_marg = thispars->pars[P_ACTUAL_WIDTH]; Loading Loading @@ -2067,17 +2067,20 @@ int pgm_memcompressor (int sensor_port, ///< sensor port number ( // height_marg, // 16-bit window height (in scan lines) // height_marg, // 16-bit window height (in scan lines) 0, // 13-bit window left margin in 8-bursts (16 bytes) 0, // 13-bit window left margin in 8-bursts (16 bytes) cmprs_top, // 16-bit window top margin (in scan lines cmprs_top, // 16-bit window top margin (in scan lines tile_width, // tile width in bjursts (16-pixels each) tile_width, // tile width in bursts (16-pixels each) tile_height, // tile height: 18 for color JPEG, 16 for JP4 flavors // = 18 tile_height, // tile height: 18 for color JPEG, 16 for JP4 flavors // = 18 16, // tile vertical step in pixel rows (JPEG18/jp4 = 16) // = 16 16, // tile vertical step in pixel rows (JPEG18/jp4 = 16) // = 16 (frame16<0)? ASAP: ABSOLUTE, // how to apply commands - directly or through channel sequencer (frame16<0)? ASAP: ABSOLUTE, // how to apply commands - directly or through channel sequencer frame16); // Frame number the command should be applied to (if not immediate mode) frame16); // Frame number the command should be applied to (if not immediate mode) X393_SEQ_SEND1 (sensor_port, frame16, x393_cmprs_format, cmprs_frame_format); X393_SEQ_SEND1 (sensor_port, frame16, x393_cmprs_format, cmprs_frame_format); dev_dbg(g_dev_ptr,"{%d} X3X3_SEQ_SEND1(0x%x, 0x%x, x393_cmprs_format, 0x%x)\n", sensor_port, sensor_port, frame16, cmprs_frame_format.d32); // update P_TILES setFramePar(sensor_port, thispars, P_TILES, (cmprs_frame_format.num_macro_cols_m1+1)*(cmprs_frame_format.num_macro_rows_m1+1)); return 0; return 0; // TODO: Do we need to maintain P_IMGSZMEM ? // TODO: Do we need to maintain P_IMGSZMEM ? // #define P_PAGE_ACQ 18 ///< Number of image page buffer to acquire to (0.1?) // #define P_PAGE_READ 19 ///< Number of image page buffer to read from to (0.1?) #else #else Loading src/drivers/elphel/x393_videomem.c +1 −1 Original line number Original line Diff line number Diff line Loading @@ -322,7 +322,7 @@ int control_compressor_memory (int num_sensor, ///< sensor port number (0. break; break; case COMPRESSOR_RUN_CONT: case COMPRESSOR_RUN_CONT: break; break; case SENSOR_RUN_RESET: case COMPRESSOR_RUN_RESET: mcntrl_mode.chn_nreset = 0; mcntrl_mode.chn_nreset = 0; mcntrl_mode.enable = 0; mcntrl_mode.enable = 0; break; break; Loading src/include/uapi/elphel/c313a.h +1 −1 Original line number Original line Diff line number Diff line Loading @@ -291,7 +291,7 @@ #define COMPRESSOR_RUN_STOP 0 ///< Compressor mode: STOP #define COMPRESSOR_RUN_STOP 0 ///< Compressor mode: STOP #define COMPRESSOR_RUN_SINGLE 1 ///< Compressor mode: SINGLE #define COMPRESSOR_RUN_SINGLE 1 ///< Compressor mode: SINGLE #define COMPRESSOR_RUN_CONT 2 ///< Compressor mode: RUN #define COMPRESSOR_RUN_CONT 2 ///< Compressor mode: RUN #define COMPRESSOR_RUN_RESET 2 ///< Compressor mode: RESET #define COMPRESSOR_RUN_RESET 3 ///< Compressor mode: RESET #define P_BAYER 6 ///< filter number at (0,0) 0-R, 1-G(R), 2-G(B), 3 - B. Write enabled at first, move to WindowSize later #define P_BAYER 6 ///< filter number at (0,0) 0-R, 1-G(R), 2-G(B), 3 - B. Write enabled at first, move to WindowSize later #define P_TRIGGERED 7 ///< when trigger occured - 4 LSBs - pixel in DMA word, higher bits - number of DMA word OBSOLETE #define P_TRIGGERED 7 ///< when trigger occured - 4 LSBs - pixel in DMA word, higher bits - number of DMA word OBSOLETE Loading Loading
src/drivers/elphel/latency.h +2 −0 Original line number Original line Diff line number Diff line Loading @@ -164,6 +164,8 @@ const unsigned long ahead_tab[]= // NC393 - triggered mode wants onchange_compstop==2, while onchange_window == 1? // NC393 - triggered mode wants onchange_compstop==2, while onchange_window == 1? // onchange_compstop, 0, 2, 1, 2, 1, 0, /// stop compressor when changing geometry // onchange_compstop, 0, 2, 1, 2, 1, 0, /// stop compressor when changing geometry /// onchange_compstop, 0, 2, 1, 1, 1, 0, /// stop compressor when changing geometry /// onchange_compstop, 0, 2, 1, 1, 1, 0, /// stop compressor when changing geometry // TODO: NC393 now comstop is used when changing color modes does not need two cycles - just 1 onchange_compstop, 0, 2, 2, 2, 2, 0, /// stop compressor when changing geometry onchange_compstop, 0, 2, 2, 2, 2, 0, /// stop compressor when changing geometry onchange_compctl, 0, 0, 1, 1, 1, 0, /// only start/stop/single (after explicitly changed, not when geometry was changed) onchange_compctl, 0, 0, 1, 1, 1, 0, /// only start/stop/single (after explicitly changed, not when geometry was changed) // onchange_gammaload, 1, 0, 0, 0, 0, 0, /// write gamma tables (should be prepared). Maybe - just last byte, to activate? // onchange_gammaload, 1, 0, 0, 0, 0, 0, /// write gamma tables (should be prepared). Maybe - just last byte, to activate? Loading
src/drivers/elphel/param_depend.h +6 −1 Original line number Original line Diff line number Diff line Loading @@ -199,7 +199,12 @@ const unsigned long param_depend_tab[]= P_BIN_VERT, ONCHANGE_WINDOW | ONCHANGE_EXPOSURE | ONCHANGE_HIST | ONCHANGE_AEXP | ONCHANGE_FOCUSMODE | ONCHANGE_LIMITFPS | ONCHANGE_HIST | \ P_BIN_VERT, ONCHANGE_WINDOW | ONCHANGE_EXPOSURE | ONCHANGE_HIST | ONCHANGE_AEXP | ONCHANGE_FOCUSMODE | ONCHANGE_LIMITFPS | ONCHANGE_HIST | \ ONCHANGE_MEMSENSOR | ONCHANGE_MEMCOMPRESSOR | ONCHANGE_COMPMODE | ONCHANGE_COMPSTOP | ONCHANGE_COMPRESTART | ONCHANGE_SENSORIN , ONCHANGE_MEMSENSOR | ONCHANGE_MEMCOMPRESSOR | ONCHANGE_COMPMODE | ONCHANGE_COMPSTOP | ONCHANGE_COMPRESTART | ONCHANGE_SENSORIN , //Oleg 20161014: trying to restart the compressor: + ONCHANGE_COMPSTOP | ONCHANGE_COMPRESTART //Oleg 20161014: trying to restart the compressor: + ONCHANGE_COMPSTOP | ONCHANGE_COMPRESTART P_COLOR, ONCHANGE_COMPMODE | ONCHANGE_LIMITFPS | ONCHANGE_MEMCOMPRESSOR | ONCHANGE_COMPSTOP | ONCHANGE_COMPRESTART, // P_COLOR, ONCHANGE_COMPMODE | ONCHANGE_LIMITFPS | ONCHANGE_MEMSENSOR | ONCHANGE_MEMCOMPRESSOR | ONCHANGE_COMPSTOP | ONCHANGE_COMPRESTART, //Added ONCHANGE_WINDOW and related as JPEG <-> JP4 change window by the border pixels P_COLOR, ONCHANGE_WINDOW | ONCHANGE_EXPOSURE | ONCHANGE_HIST | ONCHANGE_AEXP | ONCHANGE_FOCUSMODE | ONCHANGE_LIMITFPS | ONCHANGE_HIST | \ ONCHANGE_MEMSENSOR | ONCHANGE_MEMCOMPRESSOR | ONCHANGE_COMPMODE | ONCHANGE_COMPSTOP | ONCHANGE_COMPRESTART | ONCHANGE_SENSORIN, //P_COLOR, ONCHANGE_COMPMODE | ONCHANGE_LIMITFPS | ONCHANGE_MEMCOMPRESSOR, //P_COLOR, ONCHANGE_COMPMODE | ONCHANGE_LIMITFPS | ONCHANGE_MEMCOMPRESSOR, // P_PF_HEIGHT, ONCHANGE_RECALCSEQ | ONCHANGE_SENSORIN | ONCHANGE_LIMITFPS | ONCHANGE_MEMSENSOR | ONCHANGE_MEMCOMPRESSOR | ONCHANGE_COMPMODE | ONCHANGE_COMPSTOP | ONCHANGE_COMPRESTART , // P_PF_HEIGHT, ONCHANGE_RECALCSEQ | ONCHANGE_SENSORIN | ONCHANGE_LIMITFPS | ONCHANGE_MEMSENSOR | ONCHANGE_MEMCOMPRESSOR | ONCHANGE_COMPMODE | ONCHANGE_COMPSTOP | ONCHANGE_COMPRESTART , P_PF_HEIGHT, ONCHANGE_RECALCSEQ | ONCHANGE_WINDOW | ONCHANGE_EXPOSURE | ONCHANGE_HIST | ONCHANGE_AEXP | ONCHANGE_FOCUSMODE | ONCHANGE_LIMITFPS | ONCHANGE_HIST | \ P_PF_HEIGHT, ONCHANGE_RECALCSEQ | ONCHANGE_WINDOW | ONCHANGE_EXPOSURE | ONCHANGE_HIST | ONCHANGE_AEXP | ONCHANGE_FOCUSMODE | ONCHANGE_LIMITFPS | ONCHANGE_HIST | \ Loading
src/drivers/elphel/pgm_functions.c +9 −6 Original line number Original line Diff line number Diff line Loading @@ -1164,7 +1164,7 @@ int pgm_limitfps (int sensor_port, ///< sensor port number (0..3 dev_dbg(g_dev_ptr,"{%d} frame16=%d\n",sensor_port,frame16); dev_dbg(g_dev_ptr,"{%d} frame16=%d\n",sensor_port,frame16); MDP(DBGB_PSFN, sensor_port,"frame16=%d\n",frame16) MDP(DBGB_PSFN, sensor_port,"frame16=%d\n",frame16) if (frame16 >= PARS_FRAMES) return -1; // wrong frame if (frame16 >= PARS_FRAMES) return -1; // wrong frame cycles=thispars->pars[P_TILES]; // number of tiles cycles=thispars->pars[P_TILES]; // number of tiles nc393: [P_TILES] == 0! // dev_dbg(g_dev_ptr,"{%d} tiles=%d(0x%x)\n",sensor_port,cycles,cycles); // dev_dbg(g_dev_ptr,"{%d} tiles=%d(0x%x)\n",sensor_port,cycles,cycles); switch (thispars->pars[P_COLOR] & 0x0f){ switch (thispars->pars[P_COLOR] & 0x0f){ case COLORMODE_MONO6: case COLORMODE_MONO6: Loading Loading @@ -2025,7 +2025,7 @@ int pgm_memcompressor (int sensor_port, ///< sensor port number ( int tile_height; // 16/18 (20 not yet implemented) int tile_height; // 16/18 (20 not yet implemented) x393_cmprs_frame_format_t cmprs_frame_format ={.d32=0}; x393_cmprs_frame_format_t cmprs_frame_format ={.d32=0}; dev_dbg(g_dev_ptr,"{%d} frame16=%d\n",sensor_port,frame16); dev_dbg(g_dev_ptr,"{%d} frame16=%d, pars[P_COLOR]=0x%x\n",sensor_port,frame16, (int)thispars->pars[P_COLOR]); MDP(DBGB_PSFN, sensor_port,"frame16=%d\n",frame16) MDP(DBGB_PSFN, sensor_port,"frame16=%d\n",frame16) if (frame16 >= PARS_FRAMES) return -1; // wrong frame if (frame16 >= PARS_FRAMES) return -1; // wrong frame width_marg = thispars->pars[P_ACTUAL_WIDTH]; width_marg = thispars->pars[P_ACTUAL_WIDTH]; Loading Loading @@ -2067,17 +2067,20 @@ int pgm_memcompressor (int sensor_port, ///< sensor port number ( // height_marg, // 16-bit window height (in scan lines) // height_marg, // 16-bit window height (in scan lines) 0, // 13-bit window left margin in 8-bursts (16 bytes) 0, // 13-bit window left margin in 8-bursts (16 bytes) cmprs_top, // 16-bit window top margin (in scan lines cmprs_top, // 16-bit window top margin (in scan lines tile_width, // tile width in bjursts (16-pixels each) tile_width, // tile width in bursts (16-pixels each) tile_height, // tile height: 18 for color JPEG, 16 for JP4 flavors // = 18 tile_height, // tile height: 18 for color JPEG, 16 for JP4 flavors // = 18 16, // tile vertical step in pixel rows (JPEG18/jp4 = 16) // = 16 16, // tile vertical step in pixel rows (JPEG18/jp4 = 16) // = 16 (frame16<0)? ASAP: ABSOLUTE, // how to apply commands - directly or through channel sequencer (frame16<0)? ASAP: ABSOLUTE, // how to apply commands - directly or through channel sequencer frame16); // Frame number the command should be applied to (if not immediate mode) frame16); // Frame number the command should be applied to (if not immediate mode) X393_SEQ_SEND1 (sensor_port, frame16, x393_cmprs_format, cmprs_frame_format); X393_SEQ_SEND1 (sensor_port, frame16, x393_cmprs_format, cmprs_frame_format); dev_dbg(g_dev_ptr,"{%d} X3X3_SEQ_SEND1(0x%x, 0x%x, x393_cmprs_format, 0x%x)\n", sensor_port, sensor_port, frame16, cmprs_frame_format.d32); // update P_TILES setFramePar(sensor_port, thispars, P_TILES, (cmprs_frame_format.num_macro_cols_m1+1)*(cmprs_frame_format.num_macro_rows_m1+1)); return 0; return 0; // TODO: Do we need to maintain P_IMGSZMEM ? // TODO: Do we need to maintain P_IMGSZMEM ? // #define P_PAGE_ACQ 18 ///< Number of image page buffer to acquire to (0.1?) // #define P_PAGE_READ 19 ///< Number of image page buffer to read from to (0.1?) #else #else Loading
src/drivers/elphel/x393_videomem.c +1 −1 Original line number Original line Diff line number Diff line Loading @@ -322,7 +322,7 @@ int control_compressor_memory (int num_sensor, ///< sensor port number (0. break; break; case COMPRESSOR_RUN_CONT: case COMPRESSOR_RUN_CONT: break; break; case SENSOR_RUN_RESET: case COMPRESSOR_RUN_RESET: mcntrl_mode.chn_nreset = 0; mcntrl_mode.chn_nreset = 0; mcntrl_mode.enable = 0; mcntrl_mode.enable = 0; break; break; Loading
src/include/uapi/elphel/c313a.h +1 −1 Original line number Original line Diff line number Diff line Loading @@ -291,7 +291,7 @@ #define COMPRESSOR_RUN_STOP 0 ///< Compressor mode: STOP #define COMPRESSOR_RUN_STOP 0 ///< Compressor mode: STOP #define COMPRESSOR_RUN_SINGLE 1 ///< Compressor mode: SINGLE #define COMPRESSOR_RUN_SINGLE 1 ///< Compressor mode: SINGLE #define COMPRESSOR_RUN_CONT 2 ///< Compressor mode: RUN #define COMPRESSOR_RUN_CONT 2 ///< Compressor mode: RUN #define COMPRESSOR_RUN_RESET 2 ///< Compressor mode: RESET #define COMPRESSOR_RUN_RESET 3 ///< Compressor mode: RESET #define P_BAYER 6 ///< filter number at (0,0) 0-R, 1-G(R), 2-G(B), 3 - B. Write enabled at first, move to WindowSize later #define P_BAYER 6 ///< filter number at (0,0) 0-R, 1-G(R), 2-G(B), 3 - B. Write enabled at first, move to WindowSize later #define P_TRIGGERED 7 ///< when trigger occured - 4 LSBs - pixel in DMA word, higher bits - number of DMA word OBSOLETE #define P_TRIGGERED 7 ///< when trigger occured - 4 LSBs - pixel in DMA word, higher bits - number of DMA word OBSOLETE Loading