|
|
|
@ -297,7 +297,7 @@ int Beb_IsTransmitting(int *retval, int tengiga, int waitForDelay) {
|
|
|
|
|
return OK;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Beb_SetTopVariable(int val) { Beb_top = val;}
|
|
|
|
|
void Beb_SetTopVariable(int val) { Beb_top = val; }
|
|
|
|
|
|
|
|
|
|
int Beb_SetTop(enum TOPINDEX ind) {
|
|
|
|
|
if (!Beb_activated)
|
|
|
|
@ -337,9 +337,9 @@ int Beb_SetTop(enum TOPINDEX ind) {
|
|
|
|
|
Beb_close(fd, csp0base);
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
LOG(logINFOBLUE, ("%s Top flag to %s in Beb\n",
|
|
|
|
|
(ind == TOP_HARDWARE ? "Resetting" : "Overwriting"),
|
|
|
|
|
top_names[ind]));
|
|
|
|
|
LOG(logINFOBLUE,
|
|
|
|
|
("%s Top flag to %s in Beb\n",
|
|
|
|
|
(ind == TOP_HARDWARE ? "Resetting" : "Overwriting"), top_names[ind]));
|
|
|
|
|
Beb_close(fd, csp0base);
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
@ -377,8 +377,8 @@ int Beb_SetMaster(enum MASTERINDEX ind) {
|
|
|
|
|
char *master_names[] = {MASTER_NAMES};
|
|
|
|
|
int newval = Beb_Write32(csp0base, BEB_CONFIG_WR_OFST, value);
|
|
|
|
|
if (newval != value) {
|
|
|
|
|
LOG(logERROR, ("Could not set Master flag to %s in Beb\n",
|
|
|
|
|
master_names[ind]));
|
|
|
|
|
LOG(logERROR,
|
|
|
|
|
("Could not set Master flag to %s in Beb\n", master_names[ind]));
|
|
|
|
|
Beb_close(fd, csp0base);
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
@ -407,7 +407,9 @@ int Beb_SetActivate(int enable) {
|
|
|
|
|
|
|
|
|
|
u_int32_t retval = Beb_Write32(csp0base, BEB_CONFIG_WR_OFST, value);
|
|
|
|
|
if (retval != value) {
|
|
|
|
|
LOG(logERROR, ("Could not %s. WRote 0x%x, read 0x%x\n", (enable ? "activate" : "deactivate"), value, retval));
|
|
|
|
|
LOG(logERROR,
|
|
|
|
|
("Could not %s. WRote 0x%x, read 0x%x\n",
|
|
|
|
|
(enable ? "activate" : "deactivate"), value, retval));
|
|
|
|
|
Beb_close(fd, csp0base);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -416,7 +418,7 @@ int Beb_SetActivate(int enable) {
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int Beb_GetActivate(int* retval) {
|
|
|
|
|
int Beb_GetActivate(int *retval) {
|
|
|
|
|
u_int32_t *csp0base = 0;
|
|
|
|
|
int fd = Beb_open(&csp0base, XPAR_PLB_GPIO_SYS_BASEADDR);
|
|
|
|
|
if (fd < 0) {
|
|
|
|
@ -450,8 +452,7 @@ int Beb_Set32bitOverflow(int val) {
|
|
|
|
|
// open file pointer
|
|
|
|
|
int fd = Beb_open(&csp0base, XPAR_PLB_GPIO_SYS_BASEADDR);
|
|
|
|
|
if (fd < 0) {
|
|
|
|
|
LOG(logERROR,
|
|
|
|
|
("Could not read register to set overflow flag in 32 bit "
|
|
|
|
|
LOG(logERROR, ("Could not read register to set overflow flag in 32 bit "
|
|
|
|
|
"mode. FAIL\n"));
|
|
|
|
|
return -1;
|
|
|
|
|
} else {
|
|
|
|
@ -464,8 +465,7 @@ int Beb_Set32bitOverflow(int val) {
|
|
|
|
|
// set bit
|
|
|
|
|
valueread = Beb_Read32(csp0base, offset);
|
|
|
|
|
Beb_Write32(csp0base, offset,
|
|
|
|
|
valueread |
|
|
|
|
|
((val << FLOW_REG_OVERFLOW_32_BIT_OFST) &
|
|
|
|
|
valueread | ((val << FLOW_REG_OVERFLOW_32_BIT_OFST) &
|
|
|
|
|
FLOW_REG_OVERFLOW_32_BIT_MSK));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -542,8 +542,7 @@ int Beb_GetTransmissionDelayFrame() {
|
|
|
|
|
int Beb_SetTransmissionDelayFrame(int value) {
|
|
|
|
|
LOG(logINFO, ("Setting transmission delay frame to %d\n", value));
|
|
|
|
|
if (value < 0) {
|
|
|
|
|
LOG(logERROR,
|
|
|
|
|
("Invalid transmission delay frame value %d\n", value));
|
|
|
|
|
LOG(logERROR, ("Invalid transmission delay frame value %d\n", value));
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
u_int32_t offset = TXM_DELAY_FRAME_OFFSET;
|
|
|
|
@ -578,8 +577,7 @@ int Beb_GetTransmissionDelayLeft() {
|
|
|
|
|
int Beb_SetTransmissionDelayLeft(int value) {
|
|
|
|
|
LOG(logINFO, ("Setting transmission delay left to %d\n", value));
|
|
|
|
|
if (value < 0) {
|
|
|
|
|
LOG(logERROR,
|
|
|
|
|
("Invalid transmission delay left value %d\n", value));
|
|
|
|
|
LOG(logERROR, ("Invalid transmission delay left value %d\n", value));
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
u_int32_t offset = TXM_DELAY_LEFT_OFFSET;
|
|
|
|
@ -614,8 +612,7 @@ int Beb_GetTransmissionDelayRight() {
|
|
|
|
|
int Beb_SetTransmissionDelayRight(int value) {
|
|
|
|
|
LOG(logINFO, ("Setting transmission delay right to %d\n", value));
|
|
|
|
|
if (value < 0) {
|
|
|
|
|
LOG(logERROR,
|
|
|
|
|
("Invalid transmission delay right value %d\n", value));
|
|
|
|
|
LOG(logERROR, ("Invalid transmission delay right value %d\n", value));
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
u_int32_t offset = TXM_DELAY_RIGHT_OFFSET;
|
|
|
|
@ -654,8 +651,7 @@ int Beb_SetNetworkParameter(enum NETWORKINDEX mode, int val) {
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
LOG(logERROR,
|
|
|
|
|
("Unrecognized mode in network parameter: %d\n", mode));
|
|
|
|
|
LOG(logERROR, ("Unrecognized mode in network parameter: %d\n", mode));
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
// open file pointer
|
|
|
|
@ -715,8 +711,7 @@ u_int32_t Beb_GetFirmwareSoftwareAPIVersion() {
|
|
|
|
|
} else {
|
|
|
|
|
value = Beb_Read32(csp0base, FIRMWARESOFTWARE_API_OFFSET);
|
|
|
|
|
if (!value) {
|
|
|
|
|
LOG(logERROR,
|
|
|
|
|
("Firmware Software API Version does not exist in "
|
|
|
|
|
LOG(logERROR, ("Firmware Software API Version does not exist in "
|
|
|
|
|
"this version\n"));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -810,8 +805,7 @@ int Beb_SetBebSrcHeaderInfos(unsigned int beb_number, int ten_gig,
|
|
|
|
|
// 0, zero is
|
|
|
|
|
// the global
|
|
|
|
|
// send
|
|
|
|
|
BebInfo_SetHeaderInfo(&beb_infos[i], ten_gig, src_mac, src_ip,
|
|
|
|
|
src_port);
|
|
|
|
|
BebInfo_SetHeaderInfo(&beb_infos[i], ten_gig, src_mac, src_ip, src_port);
|
|
|
|
|
|
|
|
|
|
LOG(logINFO, ("Printing Beb info number (%d) :\n", i));
|
|
|
|
|
BebInfo_Print(&beb_infos[i]);
|
|
|
|
@ -841,8 +835,8 @@ unsigned int Beb_GetBebInfoIndex(unsigned int beb_numb) {
|
|
|
|
|
unsigned int i;
|
|
|
|
|
for (i = 1; i < bebInfoSize; i++)
|
|
|
|
|
if (beb_numb == BebInfo_GetBebNumber(&beb_infos[i])) {
|
|
|
|
|
LOG(logDEBUG1, ("*****found beb index:%d, for beb number:%d\n",
|
|
|
|
|
i, beb_numb));
|
|
|
|
|
LOG(logDEBUG1,
|
|
|
|
|
("*****found beb index:%d, for beb number:%d\n", i, beb_numb));
|
|
|
|
|
return i;
|
|
|
|
|
}
|
|
|
|
|
LOG(logDEBUG1, ("*****Returning 0\n"));
|
|
|
|
@ -887,8 +881,8 @@ void Beb_SwapDataFun(int little_endian, unsigned int n, unsigned int *d) {
|
|
|
|
|
int Beb_SetByteOrder() { return 1; }
|
|
|
|
|
|
|
|
|
|
int Beb_SetUpUDPHeader(unsigned int beb_number, int ten_gig,
|
|
|
|
|
unsigned int header_number, char *dst_mac,
|
|
|
|
|
char *dst_ip, unsigned int dst_port) {
|
|
|
|
|
unsigned int header_number, char *dst_mac, char *dst_ip,
|
|
|
|
|
unsigned int dst_port) {
|
|
|
|
|
|
|
|
|
|
if (!Beb_activated)
|
|
|
|
|
return 1;
|
|
|
|
@ -909,8 +903,7 @@ int Beb_SetUpUDPHeader(unsigned int beb_number, int ten_gig,
|
|
|
|
|
LOG(logERROR, ("Set up UDP Header FAIL\n"));
|
|
|
|
|
} else {
|
|
|
|
|
// read data
|
|
|
|
|
memcpy(csp0base + header_number * 16, &udp_header,
|
|
|
|
|
sizeof(udp_header));
|
|
|
|
|
memcpy(csp0base + header_number * 16, &udp_header, sizeof(udp_header));
|
|
|
|
|
// close file pointer
|
|
|
|
|
Beb_close(fd, csp0base);
|
|
|
|
|
}
|
|
|
|
@ -1040,7 +1033,7 @@ int Beb_SetPortNumber(unsigned int port_number, uint8_t *dst_ptr) {
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Beb_AdjustIPChecksum(struct udp_header_type * ip) {
|
|
|
|
|
void Beb_AdjustIPChecksum(struct udp_header_type *ip) {
|
|
|
|
|
unsigned char *cptr = (unsigned char *)ip->ver_headerlen;
|
|
|
|
|
|
|
|
|
|
ip->ip_header_checksum[0] = 0;
|
|
|
|
@ -1061,10 +1054,10 @@ void Beb_AdjustIPChecksum(struct udp_header_type * ip) {
|
|
|
|
|
ip->ip_header_checksum[1] = ip_checksum & 0xff;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int Beb_SendMultiReadRequest(
|
|
|
|
|
unsigned int beb_number, unsigned int left_right, int ten_gig,
|
|
|
|
|
unsigned int dst_number, unsigned int npackets,
|
|
|
|
|
unsigned int packet_size, int stop_read_when_fifo_empty) {
|
|
|
|
|
int Beb_SendMultiReadRequest(unsigned int beb_number, unsigned int left_right,
|
|
|
|
|
int ten_gig, unsigned int dst_number,
|
|
|
|
|
unsigned int npackets, unsigned int packet_size,
|
|
|
|
|
int stop_read_when_fifo_empty) {
|
|
|
|
|
|
|
|
|
|
// This is a dead function, will be removed in future
|
|
|
|
|
// ==================================================
|
|
|
|
@ -1179,8 +1172,7 @@ int Beb_RequestNImages(unsigned int beb_number, int ten_gig,
|
|
|
|
|
unsigned int packet_size = ten_gig ? 0x200 : 0x80; // 4k or 1k packets
|
|
|
|
|
|
|
|
|
|
LOG(logDEBUG1, ("----Beb_RequestNImages Start----\n"));
|
|
|
|
|
LOG(logINFO,
|
|
|
|
|
("beb_number:%d, ten_gig:%d,dst_number:%d, npackets:%d, "
|
|
|
|
|
LOG(logINFO, ("beb_number:%d, ten_gig:%d,dst_number:%d, npackets:%d, "
|
|
|
|
|
"Beb_bit_mode:%d, header_size:%d, nimages:%d, "
|
|
|
|
|
"test_just_send_out_packets_no_wait:%d\n",
|
|
|
|
|
beb_number, ten_gig, dst_number, npackets, Beb_bit_mode,
|
|
|
|
@ -1254,9 +1246,9 @@ int Beb_RequestNImages(unsigned int beb_number, int ten_gig,
|
|
|
|
|
{
|
|
|
|
|
int i;
|
|
|
|
|
for (i = 0; i < 10; i++)
|
|
|
|
|
LOG(logDEBUG1, ("%X\n", Beb_Read32(csp0base,
|
|
|
|
|
(LEFT_OFFSET +
|
|
|
|
|
i * 4)))); //*(ptrl+i));
|
|
|
|
|
LOG(logDEBUG1,
|
|
|
|
|
("%X\n", Beb_Read32(csp0base,
|
|
|
|
|
(LEFT_OFFSET + i * 4)))); //*(ptrl+i));
|
|
|
|
|
LOG(logDEBUG1, ("%d\n", in_two_requests));
|
|
|
|
|
}
|
|
|
|
|
Beb_close(fd, csp0base);
|
|
|
|
@ -1276,8 +1268,7 @@ int Beb_Test(unsigned int beb_number) {
|
|
|
|
|
|
|
|
|
|
unsigned int index = Beb_GetBebInfoIndex(beb_number);
|
|
|
|
|
if (!index) {
|
|
|
|
|
LOG(logERROR,
|
|
|
|
|
("Error beb number (%d)not in list????\n", beb_number));
|
|
|
|
|
LOG(logERROR, ("Error beb number (%d)not in list????\n", beb_number));
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -1295,8 +1286,7 @@ int Beb_Test(unsigned int beb_number) {
|
|
|
|
|
// npackets, unsigned int packet_size, int
|
|
|
|
|
// stop_read_when_fifo_empty=1);
|
|
|
|
|
for (i = 0; i < 64; i++) {
|
|
|
|
|
if (!Beb_SendMultiReadRequest(beb_number, i % 3 + 1, 0, i, 1, 0,
|
|
|
|
|
1)) {
|
|
|
|
|
if (!Beb_SendMultiReadRequest(beb_number, i % 3 + 1, 0, i, 1, 0, 1)) {
|
|
|
|
|
LOG(logERROR, ("Error requesting data....\n"));
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
@ -1319,8 +1309,7 @@ int Beb_GetBebFPGATemp() {
|
|
|
|
|
} else {
|
|
|
|
|
// read data
|
|
|
|
|
ret = Beb_Read32(csp0base, FPGA_TEMP_OFFSET);
|
|
|
|
|
temperature =
|
|
|
|
|
((((float)(ret) / 65536.0f) / 0.00198421639f) - 273.15f) *
|
|
|
|
|
temperature = ((((float)(ret) / 65536.0f) / 0.00198421639f) - 273.15f) *
|
|
|
|
|
1000; // Static conversation, copied from xps sysmon
|
|
|
|
|
// standalone driver
|
|
|
|
|
// close file pointer
|
|
|
|
@ -1344,9 +1333,9 @@ void Beb_SetDetectorNumber(uint32_t detid) {
|
|
|
|
|
} else {
|
|
|
|
|
uint32_t value = Beb_Read32(csp0base, UDP_HEADER_A_LEFT_OFST);
|
|
|
|
|
value &= UDP_HEADER_X_MSK; // to keep previous x value
|
|
|
|
|
Beb_Write32(
|
|
|
|
|
csp0base, UDP_HEADER_A_LEFT_OFST,
|
|
|
|
|
value | ((swapid << UDP_HEADER_ID_OFST) & UDP_HEADER_ID_MSK));
|
|
|
|
|
Beb_Write32(csp0base, UDP_HEADER_A_LEFT_OFST,
|
|
|
|
|
value |
|
|
|
|
|
((swapid << UDP_HEADER_ID_OFST) & UDP_HEADER_ID_MSK));
|
|
|
|
|
value = Beb_Read32(csp0base, UDP_HEADER_A_LEFT_OFST);
|
|
|
|
|
if ((value & UDP_HEADER_ID_MSK) !=
|
|
|
|
|
((swapid << UDP_HEADER_ID_OFST) & UDP_HEADER_ID_MSK)) {
|
|
|
|
@ -1354,9 +1343,9 @@ void Beb_SetDetectorNumber(uint32_t detid) {
|
|
|
|
|
}
|
|
|
|
|
value = Beb_Read32(csp0base, UDP_HEADER_A_RIGHT_OFST);
|
|
|
|
|
value &= UDP_HEADER_X_MSK; // to keep previous x value
|
|
|
|
|
Beb_Write32(
|
|
|
|
|
csp0base, UDP_HEADER_A_RIGHT_OFST,
|
|
|
|
|
value | ((swapid << UDP_HEADER_ID_OFST) & UDP_HEADER_ID_MSK));
|
|
|
|
|
Beb_Write32(csp0base, UDP_HEADER_A_RIGHT_OFST,
|
|
|
|
|
value |
|
|
|
|
|
((swapid << UDP_HEADER_ID_OFST) & UDP_HEADER_ID_MSK));
|
|
|
|
|
value = Beb_Read32(csp0base, UDP_HEADER_A_RIGHT_OFST);
|
|
|
|
|
if ((value & UDP_HEADER_ID_MSK) !=
|
|
|
|
|
((swapid << UDP_HEADER_ID_OFST) & UDP_HEADER_ID_MSK)) {
|
|
|
|
@ -1413,8 +1402,7 @@ int Beb_SetDetectorPosition(int pos[]) {
|
|
|
|
|
value = Beb_Read32(csp0base, UDP_HEADER_A_LEFT_OFST);
|
|
|
|
|
value &= UDP_HEADER_ID_MSK; // to keep previous id value
|
|
|
|
|
Beb_Write32(csp0base, UDP_HEADER_A_LEFT_OFST,
|
|
|
|
|
value |
|
|
|
|
|
((posval << UDP_HEADER_X_OFST) & UDP_HEADER_X_MSK));
|
|
|
|
|
value | ((posval << UDP_HEADER_X_OFST) & UDP_HEADER_X_MSK));
|
|
|
|
|
value = Beb_Read32(csp0base, UDP_HEADER_A_LEFT_OFST);
|
|
|
|
|
if ((value & UDP_HEADER_X_MSK) !=
|
|
|
|
|
((posval << UDP_HEADER_X_OFST) & UDP_HEADER_X_MSK)) {
|
|
|
|
@ -1426,8 +1414,7 @@ int Beb_SetDetectorPosition(int pos[]) {
|
|
|
|
|
value = Beb_Read32(csp0base, UDP_HEADER_A_RIGHT_OFST);
|
|
|
|
|
value &= UDP_HEADER_ID_MSK; // to keep previous id value
|
|
|
|
|
Beb_Write32(csp0base, UDP_HEADER_A_RIGHT_OFST,
|
|
|
|
|
value |
|
|
|
|
|
((posval << UDP_HEADER_X_OFST) & UDP_HEADER_X_MSK));
|
|
|
|
|
value | ((posval << UDP_HEADER_X_OFST) & UDP_HEADER_X_MSK));
|
|
|
|
|
value = Beb_Read32(csp0base, UDP_HEADER_A_RIGHT_OFST);
|
|
|
|
|
if ((value & UDP_HEADER_X_MSK) !=
|
|
|
|
|
((posval << UDP_HEADER_X_OFST) & UDP_HEADER_X_MSK)) {
|
|
|
|
@ -1440,13 +1427,11 @@ int Beb_SetDetectorPosition(int pos[]) {
|
|
|
|
|
value = Beb_Read32(csp0base, UDP_HEADER_B_LEFT_OFST);
|
|
|
|
|
value &= UDP_HEADER_Z_MSK; // to keep previous z value
|
|
|
|
|
Beb_Write32(csp0base, UDP_HEADER_B_LEFT_OFST,
|
|
|
|
|
value |
|
|
|
|
|
((posval << UDP_HEADER_Y_OFST) & UDP_HEADER_Y_MSK));
|
|
|
|
|
value | ((posval << UDP_HEADER_Y_OFST) & UDP_HEADER_Y_MSK));
|
|
|
|
|
value = Beb_Read32(csp0base, UDP_HEADER_B_LEFT_OFST);
|
|
|
|
|
if ((value & UDP_HEADER_Y_MSK) !=
|
|
|
|
|
((posval << UDP_HEADER_Y_OFST) & UDP_HEADER_Y_MSK)) {
|
|
|
|
|
LOG(logERROR,
|
|
|
|
|
("Could not set column position for left port\n"));
|
|
|
|
|
LOG(logERROR, ("Could not set column position for left port\n"));
|
|
|
|
|
ret = FAIL;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -1455,13 +1440,11 @@ int Beb_SetDetectorPosition(int pos[]) {
|
|
|
|
|
value = Beb_Read32(csp0base, UDP_HEADER_B_RIGHT_OFST);
|
|
|
|
|
value &= UDP_HEADER_Z_MSK; // to keep previous z value
|
|
|
|
|
Beb_Write32(csp0base, UDP_HEADER_B_RIGHT_OFST,
|
|
|
|
|
value |
|
|
|
|
|
((posval << UDP_HEADER_Y_OFST) & UDP_HEADER_Y_MSK));
|
|
|
|
|
value | ((posval << UDP_HEADER_Y_OFST) & UDP_HEADER_Y_MSK));
|
|
|
|
|
value = Beb_Read32(csp0base, UDP_HEADER_B_RIGHT_OFST);
|
|
|
|
|
if ((value & UDP_HEADER_Y_MSK) !=
|
|
|
|
|
((posval << UDP_HEADER_Y_OFST) & UDP_HEADER_Y_MSK)) {
|
|
|
|
|
LOG(logERROR,
|
|
|
|
|
("Could not set column position for right port\n"));
|
|
|
|
|
LOG(logERROR, ("Could not set column position for right port\n"));
|
|
|
|
|
ret = FAIL;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -1483,8 +1466,8 @@ int Beb_SetStartingFrameNumber(uint64_t value) {
|
|
|
|
|
Beb_deactivatedStartFrameNumber = value;
|
|
|
|
|
return OK;
|
|
|
|
|
}
|
|
|
|
|
LOG(logINFO, ("Setting start frame number: %llu\n",
|
|
|
|
|
(long long unsigned int)value));
|
|
|
|
|
LOG(logINFO,
|
|
|
|
|
("Setting start frame number: %llu\n", (long long unsigned int)value));
|
|
|
|
|
|
|
|
|
|
u_int32_t *csp0base = 0;
|
|
|
|
|
int fd = Beb_open(&csp0base, XPAR_PLB_GPIO_TEST_BASEADDR);
|
|
|
|
@ -1508,7 +1491,7 @@ int Beb_SetStartingFrameNumber(uint64_t value) {
|
|
|
|
|
return OK;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int Beb_GetStartingFrameNumber(uint64_t * retval, int tengigaEnable) {
|
|
|
|
|
int Beb_GetStartingFrameNumber(uint64_t *retval, int tengigaEnable) {
|
|
|
|
|
if (!Beb_activated) {
|
|
|
|
|
*retval = Beb_deactivatedStartFrameNumber;
|
|
|
|
|
return OK;
|
|
|
|
@ -1538,8 +1521,7 @@ int Beb_GetStartingFrameNumber(uint64_t * retval, int tengigaEnable) {
|
|
|
|
|
|
|
|
|
|
Beb_close(fd, csp0base);
|
|
|
|
|
if (left1g != right1g) {
|
|
|
|
|
LOG(logERROR,
|
|
|
|
|
("Retrieved inconsistent frame numbers from 1g left "
|
|
|
|
|
LOG(logERROR, ("Retrieved inconsistent frame numbers from 1g left "
|
|
|
|
|
"%llu and right %llu\n",
|
|
|
|
|
(long long int)left1g, (long long int)right1g));
|
|
|
|
|
*retval = (left1g > right1g)
|
|
|
|
@ -1566,8 +1548,7 @@ int Beb_GetStartingFrameNumber(uint64_t * retval, int tengigaEnable) {
|
|
|
|
|
++right10g; // increment for firmware
|
|
|
|
|
|
|
|
|
|
if (left10g != right10g) {
|
|
|
|
|
LOG(logERROR,
|
|
|
|
|
("Retrieved inconsistent frame numbers from `0g left "
|
|
|
|
|
LOG(logERROR, ("Retrieved inconsistent frame numbers from `0g left "
|
|
|
|
|
"%llu and right %llu\n",
|
|
|
|
|
(long long int)left10g, (long long int)right10g));
|
|
|
|
|
*retval = (left10g > right10g)
|
|
|
|
@ -1585,15 +1566,14 @@ void Beb_SetReadNLines(int value) { Beb_readNLines = value; }
|
|
|
|
|
|
|
|
|
|
uint16_t Beb_swap_uint16(uint16_t val) { return (val << 8) | (val >> 8); }
|
|
|
|
|
|
|
|
|
|
int Beb_open(u_int32_t * *csp0base, u_int32_t offset) {
|
|
|
|
|
int Beb_open(u_int32_t **csp0base, u_int32_t offset) {
|
|
|
|
|
|
|
|
|
|
int fd = open("/dev/mem", O_RDWR | O_SYNC, 0);
|
|
|
|
|
if (fd == -1) {
|
|
|
|
|
LOG(logERROR, ("\nCan't find /dev/mem!\n"));
|
|
|
|
|
} else {
|
|
|
|
|
LOG(logDEBUG1, ("/dev/mem opened\n"));
|
|
|
|
|
*csp0base =
|
|
|
|
|
(u_int32_t *)mmap(0, BEB_MMAP_SIZE, PROT_READ | PROT_WRITE,
|
|
|
|
|
*csp0base = (u_int32_t *)mmap(0, BEB_MMAP_SIZE, PROT_READ | PROT_WRITE,
|
|
|
|
|
MAP_FILE | MAP_SHARED, fd, offset);
|
|
|
|
|
if (*csp0base == MAP_FAILED) {
|
|
|
|
|
LOG(logERROR, ("\nCan't map memmory area!!\n"));
|
|
|
|
@ -1604,14 +1584,13 @@ int Beb_open(u_int32_t * *csp0base, u_int32_t offset) {
|
|
|
|
|
return fd;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
u_int32_t Beb_Read32(u_int32_t * baseaddr, u_int32_t offset) {
|
|
|
|
|
u_int32_t Beb_Read32(u_int32_t *baseaddr, u_int32_t offset) {
|
|
|
|
|
volatile u_int32_t value;
|
|
|
|
|
value = *(u_int32_t *)(baseaddr + offset / (sizeof(u_int32_t)));
|
|
|
|
|
return value;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
u_int32_t Beb_Write32(u_int32_t * baseaddr, u_int32_t offset,
|
|
|
|
|
u_int32_t data) {
|
|
|
|
|
u_int32_t Beb_Write32(u_int32_t *baseaddr, u_int32_t offset, u_int32_t data) {
|
|
|
|
|
volatile u_int32_t *ptr1;
|
|
|
|
|
ptr1 = (u_int32_t *)(baseaddr + offset / (sizeof(u_int32_t)));
|
|
|
|
|
*ptr1 = data;
|
|
|
|
|