(("X393_MCNTRL_CHN_EN",c,vrlg.MCONTR_TOP_16BIT_ADDR+vrlg.MCONTR_TOP_16BIT_CHN_EN+ba,0,None,"x393_mcntr_chn_en_rw","Enable/disable memory channels (currently r/w, may become just wo)")),
(("X393_MCNTRL_CHN_EN",c,vrlg.MCONTR_TOP_16BIT_ADDR+vrlg.MCONTR_TOP_16BIT_CHN_EN+ba,0,None,"x393_mcntr_chn_en_rw","Enable/disable memory channels (currently r/w, may become just wo)")),
(("X393_MCNTRL_DQS_DQM_PATT",c,vrlg.MCONTR_PHY_16BIT_ADDR+vrlg.MCONTR_PHY_16BIT_PATTERNS+ba,0,None,"x393_mcntr_dqs_dqm_patt_rw","Setup DQS and DQM patterns")),
(("X393_MCNTRL_DQS_DQM_PATT",c,vrlg.MCONTR_PHY_16BIT_ADDR+vrlg.MCONTR_PHY_16BIT_PATTERNS+ba,0,None,"x393_mcntr_dqs_dqm_patt_rw","Setup DQS and DQM patterns")),
(("X393_MCNTRL_DQ_DQS_TRI",c,vrlg.MCONTR_PHY_16BIT_ADDR+vrlg.MCONTR_PHY_16BIT_PATTERNS_TRI+ba,0,None,"x393_mcntr_dqs_dqm_tri_rw","Setup DQS and DQ on/off sequence")),
(("X393_MCNTRL_DQ_DQS_TRI",c,vrlg.MCONTR_PHY_16BIT_ADDR+vrlg.MCONTR_PHY_16BIT_PATTERNS_TRI+ba,0,None,"x393_mcntr_dqs_dqm_tri_rw","Setup DQS and DQ on/off sequence")),
(("Following enable/disable addresses can be written with any data,only addresses matter",)),
(("Following enable/disable addresses can be written with any data,only addresses matter",)),
(('Write-only addresses to to program status report mode For memory controller',)),
(('Write-only addresses to to program status report mode for memory controller',)),
(("X393_MCONTR_PHY_STATUS_CNTRL",c,vrlg.MCONTR_PHY_STATUS_CNTRL+ba,0,None,"x393_status_ctrl_wo","Set status control register (status update mode)")),
(("X393_MCONTR_PHY_STATUS_CNTRL",c,vrlg.MCONTR_PHY_STATUS_CNTRL+ba,0,None,"x393_status_ctrl_wo","Set status control register (status update mode)")),
(("X393_MCONTR_TOP_16BIT_STATUS_CNTRL",c,vrlg.MCONTR_TOP_16BIT_STATUS_CNTRL+ba,0,None,"x393_status_ctrl_wo","Set status control register (status update mode)")),
(("X393_MCONTR_TOP_16BIT_STATUS_CNTRL",c,vrlg.MCONTR_TOP_16BIT_STATUS_CNTRL+ba,0,None,"x393_status_ctrl_wo","Set status control register (status update mode)")),
]
]
...
@@ -371,7 +473,99 @@ class X393ExportC(object):
...
@@ -371,7 +473,99 @@ class X393ExportC(object):
(("X393_SENSI2C_STATUS",c,vrlg.SENSI2C_CTRL_RADDR+vrlg.SENSI2C_STATUS+ba,ia,z3,"x393_status_ctrl_wo","Setup sensor i2c status report mode")),
(("X393_SENSI2C_STATUS",c,vrlg.SENSI2C_CTRL_RADDR+vrlg.SENSI2C_STATUS+ba,ia,z3,"x393_status_ctrl_wo","Setup sensor i2c status report mode")),
(("X393_SENSIO_STATUS_CNTRL",c,vrlg.SENSIO_RADDR+vrlg.SENSIO_STATUS+ba,ia,z3,"x393_status_ctrl_wo","Set status control for SENSIO module")),
(("X393_SENSIO_JTAG",c,vrlg.SENSIO_RADDR+vrlg.SENSIO_JTAG+ba,ia,z3,"x393_sensio_jpag_wo","Programming interface for multiplexer FPGA (with X393_SENSIO_STATUS)")),
(("X393_SENSIO_WIDTH",c,vrlg.SENSIO_RADDR+vrlg.SENSIO_WIDTH+ba,ia,z3,"x393_sensio_width_rw","Set sensor line in pixels (0 - use line sync from the sensor)")),
(("X393_SENSIO_DELAYS",c,vrlg.SENSIO_RADDR+vrlg.SENSIO_DELAYS+ba,ia,z3,"x393_sensio_dly_rw","Sensor port input delays (uses 4 DWORDs)")),
]
]
#Registers to control sensor channels
ba=vrlg.SENSOR_GROUP_ADDR
ia=vrlg.SENSOR_BASE_INC
c="sens_num"
sdefines+=[
(('''I2C command sequencer, block of 16 DWORD slots for absolute frame numbers (modulo 16) and 15 slots for relative ones
// 0 - ASAP, 1 next frame, 14 -14-th next.
// Data written depends on context:
// 1 - I2C register write: index page (MSB), 3 payload bytes. Payload bytes are used according to table and sent
// after the slave address and optional high address byte. Other bytes are sent in descending order (LSB- last).
// If less than 4 bytes are programmed in the table the high bytes (starting with the one from the table) are
// skipped.
// If more than 4 bytes are programmed in the table for the page (high byte), one or two next 32-bit words
// bypass the index table and all 4 bytes are considered payload ones. If less than 4 extra bytes are to be
// sent for such extra word, only the lower bytes are sent.
//
// 2 - I2C register read: index page, slave address (8-bit, with lower bit 0) and one or 2 address bytes (as programmed
// in the table. Slave address is always in byte 2 (bits 23:16), byte1 (high register address) is skipped if
// read address in the table is programmed to be a single-byte one''',)),