-const char trbnet_version[] = "$Revision: 4.2 $";
+const char trbnet_version[] = "$Revision: 4.3 $";
#include <stdlib.h>
#include <signal.h>
#define PCIBAR 0
static int pexorFileHandle = -1;
-#define PEXOR_DEVICE_NAME "/dev/pexor-0"
+char pexor_deviceName[256] = "/dev/pexor-0";
#endif
#include <trberror.h>
/* Init semaphore and signal handling */
if (init_semaphore() == -1) return -1;
- pexorFileHandle = open(PEXOR_DEVICE_NAME, O_RDWR);
+ pexorFileHandle = open(pexor_deviceName, O_RDWR);
if (pexorFileHandle < 0) {
- fprintf(stderr, "open failed\n");
+ fprintf(stderr, "open of device '%s' failed\n", pexor_deviceName);
trb_errno = TRB_PEXOR_OPEN;
return -1;
}
/* Build package and start transfer */
#ifndef PEXOR
- write32_to_FPGA(CHANNEL_3_TARGET_ADDRESS, 0xffff); /* always broadcast */
+ write32_to_FPGA(CHANNEL_3_TARGET_ADDRESS, 0xffff); /* always broadcast */
#endif
write32_to_FPGA(CHANNEL_3_SENDER_ERROR, 0x00000000);
write32_to_FPGA(CHANNEL_3_SENDER_DATA, NET_SETADDRESS);
write32_to_FPGA(CHANNEL_3_SENDER_CONTROL, CMD_NETADMINISTRATION);
#else
write32_to_FPGA(CHANNEL_3_SENDER_CONTROL,
- (uint32_t)trb_address << 16 | CMD_NETADMINISTRATION);
+ 0xffff0000 | CMD_NETADMINISTRATION); /* always broadcast */
#endif
/* DEBUG INFO */
if (trb_debug > 0) {
return 0;
}
+#ifdef PEXOR
+int fpga_register_read_mem(uint32_t reg_address,
+ uint32_t* data,
+ unsigned int size)
+{
+ unsigned int i = 0;
+ trb_errno = TRB_NONE;
+
+ if (lockPorts(0) == -1) return -1;
+
+ /* DEBUG INFO */
+ if (trb_debug > 0) {
+ fprintf(stderr, "fpga_register_read_mem started.\n");
+ }
+
+ for (i = 0; i < size; i++) {
+ read32_from_FPGA(reg_address + i, &data[i]);
+ }
+
+ if (unlockPorts(0) == -1) return -1;
+
+ return 0;
+}
+
+
+int fpga_register_write_mem(uint32_t reg_address,
+ const uint32_t* data,
+ unsigned int size)
+{
+ unsigned int i = 0;
+ trb_errno = TRB_NONE;
+
+ if (lockPorts(0) == -1) return -1;
+
+ /* DEBUG INFO */
+ if (trb_debug > 0) {
+ fprintf(stderr, "fpga_register_write_mem started.\n");
+ }
+
+ for (i = 0; i < size; i++) {
+ write32_to_FPGA(reg_address + i, data[i]);
+ }
+
+ if (unlockPorts(0) == -1) return -1;
+
+ return 0;
+}
+#endif
+
int network_reset()
{
trb_errno = TRB_NONE;
extern unsigned int trb_debug;
extern unsigned int trb_dma;
+#ifdef PEXOR
+extern char pexor_deviceName[256];
+#endif
+
#ifdef __cplusplus
extern "C" {
#endif
uint16_t number);
#ifndef PEXOR
-int fpga_register_read(uint16_t reg_address, uint32_t* value);
+int fpga_register_read(uint16_t reg_address,
+ uint32_t* value);
-int fpga_register_write(uint16_t reg_address, uint32_t value);
+int fpga_register_write(uint16_t reg_address,
+ uint32_t value);
#else
-int fpga_register_read(uint32_t reg_address, uint32_t* value);
+int fpga_register_read(uint32_t reg_address,
+ uint32_t* value);
+
+int fpga_register_write(uint32_t reg_address,
+ uint32_t value);
+
+int fpga_register_read_mem(uint32_t reg_address,
+ uint32_t* data,
+ unsigned int size);
-int fpga_register_write(uint32_t reg_address, uint32_t value);
+int fpga_register_write_mem(uint32_t reg_address,
+ const uint32_t* data,
+ unsigned int size);
#endif
int trb_fifo_flush(uint8_t channel);