extern volatile void *pxmc_rocon_rx_data_hist_buff;
extern volatile void *pxmc_rocon_rx_data_hist_buff_end;
+extern int pxmc_rocon_rx_data_hist_mode;
+
extern uint32_t pxmc_rocon_rx_cycle_time;
extern uint32_t pxmc_rocon_rx_irq_latency;
extern uint32_t pxmc_rocon_rx_irq_latency_max;
volatile void *pxmc_rocon_rx_data_hist_buff;
volatile void *pxmc_rocon_rx_data_hist_buff_end;
+int pxmc_rocon_rx_data_hist_mode;
uint32_t pxmc_rocon_rx_last_irq;
uint32_t pxmc_rocon_rx_cycle_time;
pxmc_rocon_rx_data_hist_buff = NULL;
if (pxmc_rocon_rx_data_hist_buff != NULL) {
- int i;
- volatile uint32_t *pwm_reg = fpga_lx_master_transmitter_base + 8;
- volatile uint32_t *rec_reg = fpga_lx_master_receiver_base + 8;
- uint16_t *pbuf = (uint16_t *)pxmc_rocon_rx_data_hist_buff;
- for (i = 0; i < 8; i++) {
- *(pbuf++) = *(rec_reg++);
- }
- for (i = 0; i < 8; i++) {
- *(pbuf++) = *(pwm_reg++);
+ if (pxmc_rocon_rx_data_hist_mode == 0) {
+ int i;
+ volatile uint32_t *pwm_reg = fpga_lx_master_transmitter_base + 8;
+ volatile uint32_t *rec_reg = fpga_lx_master_receiver_base + 8;
+ uint16_t *pbuf = (uint16_t *)pxmc_rocon_rx_data_hist_buff;
+ for (i = 0; i < 8; i++) {
+ *(pbuf++) = *(rec_reg++);
+ }
+ for (i = 0; i < 8; i++) {
+ *(pbuf++) = *(pwm_reg++);
+ }
+ pxmc_rocon_rx_data_hist_buff = pbuf;
+ } else if (pxmc_rocon_rx_data_hist_mode == 1) {
+ int i;
+ uint32_t *pbuf = (uint32_t *)pxmc_rocon_rx_data_hist_buff;
+
+ for (i = 0; i < 16; i++)
+ *(pbuf++) = fpga_tumbl_dmem[i];
+
+ pxmc_rocon_rx_data_hist_buff = pbuf;
}
- pxmc_rocon_rx_data_hist_buff = pbuf;
}
pxmc_rocon_rx_irq_latency = ROCON_RX_TIM->TC - cr1;
int cmd_do_testlxpwrrx(cmd_io_t *cmd_io, const struct cmd_des *des, char *param[])
{
+ char *ps = param[1];
+ long mode = 0;
+ uint32_t *ptr;
+
+ if (ps != NULL) {
+ si_skspace(&ps);
+ if (*ps) {
+ if (si_ulong(&ps, &mode, 0) < 0)
+ return -CMDERR_BADPAR;
+ }
+ }
pxmc_rocon_rx_data_hist_buff = NULL;
+ pxmc_rocon_rx_data_hist_mode = mode;
+
#ifndef PXMC_ROCON_TIMED_BY_RX_DONE
pxmc_rocon_rx_done_isr_setup(pxmc_rocon_rx_done_isr);
#endif /*PXMC_ROCON_TIMED_BY_RX_DONE*/
pxmc_rocon_rx_data_hist_buff_end = (void *)(FPGA_CONFIGURATION_FILE_ADDRESS +
0x80000);
- pxmc_rocon_rx_data_hist_buff = (void *)FPGA_CONFIGURATION_FILE_ADDRESS;
+ ptr = (void *)FPGA_CONFIGURATION_FILE_ADDRESS;
+ if (mode != 0) {
+ *(ptr++) = '10XL';
+ *(ptr++) = mode;
+ }
+ pxmc_rocon_rx_data_hist_buff = (void *)ptr;
return 0;
}