G2 hdi id (#521)

* g2: hdi value in fpga is 3 bits, so using appropriate enum for it

* hdi id bits are determined

* fw date changed (g2)
This commit is contained in:
Dhanya Thattil 2022-08-23 08:02:11 +02:00 committed by GitHub
parent 67eea7ac36
commit da16c1101c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 75 additions and 46 deletions

View File

@ -102,9 +102,13 @@
#define CONFIG_VETO_CH_10GBE_ENBL_MSK (0x00000001 << CONFIG_VETO_CH_10GBE_ENBL_OFST)
#define CONFIG_SLAVE_OFST (16)
#define CONFIG_SLAVE_MSK (0x00000001 << CONFIG_SLAVE_OFST)
#define CONFIG_HDI_MOD_ID_OFST (17)
#define CONFIG_HDI_MOD_ID_MSK (0x00000007 << CONFIG_HDI_MOD_ID_OFST)
#define CONFIG_FLIP_DATA_STREAM_OFST (20)
#define CONFIG_HDI_SLAVE_OFST (17)
#define CONFIG_HDI_SLAVE_MSK (0x00000001 << CONFIG_HDI_SLAVE_OFST)
#define CONFIG_HDI_VERSION_OFST (18)
#define CONFIG_HDI_VERSION_MSK (0x0000001F << CONFIG_HDI_VERSION_OFST)
#define CONFIG_HDI_25UM_OFST (23)
#define CONFIG_HDI_25UM_MSK (0x00000001 << CONFIG_HDI_25UM_OFST)
#define CONFIG_FLIP_DATA_STREAM_OFST (24)
#define CONFIG_FLIP_DATA_STREAM_MSK (0x00000001 << CONFIG_FLIP_DATA_STREAM_OFST)
#define ALGORITHM_HITS_VAL (0x0)
#define ALGORITHM_RAW_VAL (0x7)

View File

@ -2029,48 +2029,73 @@ int checkDetectorType(char *mess) {
LOG(logERROR, (mess));
return FAIL;
}
int type = atoi(buffer);
enum MASTERINDEX master = OW_MASTER;
if (abs(type - TYPE_GOTTHARD2_25UM_MASTER_HD1_V1_VAL) <= TYPE_TOLERANCE) {
LOG(logINFOBLUE, ("MASTER 25um Module (HDI v1.0)\n"));
} else if (abs(type - TYPE_GOTTHARD2_25UM_MASTER_HD1_V2_VAL) <=
TYPE_TOLERANCE) {
LOG(logINFOBLUE, ("MASTER 25um Module (HDI v2.0)\n"));
} else if (abs(type - TYPE_GOTTHARD2_25UM_SLAVE_HDI_V1_VAL) <=
TYPE_TOLERANCE) {
LOG(logINFOBLUE, ("SLAVE 25um Module (HDI v1.0)\n"));
master = OW_SLAVE;
} else if (abs(type - TYPE_GOTTHARD2_25UM_SLAVE_HDI_V2_VAL) <=
TYPE_TOLERANCE) {
LOG(logINFOBLUE, ("SLAVE 25um Module (HDI v2.0)\n"));
master = OW_SLAVE;
} else if (abs(type - TYPE_GOTTHARD2_MODULE_VAL) <= TYPE_TOLERANCE) {
LOG(logINFOBLUE, ("50um Module\n"));
{
int type = atoi(buffer);
int hdiSlave = 0;
int hdiVersion = 0x1;
int hdi25um = 1;
if (abs(type - TYPE_GOTTHARD2_25UM_MASTER_HD1_V1_VAL) <=
TYPE_TOLERANCE) {
LOG(logINFOBLUE, ("MASTER 25um Module (HDI v1.0)\n"));
} else if (abs(type - TYPE_GOTTHARD2_25UM_MASTER_HD1_V2_VAL) <=
TYPE_TOLERANCE) {
LOG(logINFOBLUE, ("MASTER 25um Module (HDI v2.0)\n"));
hdiVersion = 0x2;
} else if (abs(type - TYPE_GOTTHARD2_25UM_SLAVE_HDI_V1_VAL) <=
TYPE_TOLERANCE) {
LOG(logINFOBLUE, ("SLAVE 25um Module (HDI v1.0)\n"));
hdiSlave = 1;
} else if (abs(type - TYPE_GOTTHARD2_25UM_SLAVE_HDI_V2_VAL) <=
TYPE_TOLERANCE) {
LOG(logINFOBLUE, ("SLAVE 25um Module (HDI v2.0)\n"));
hdiSlave = 1;
hdiVersion = 0x2;
} else if (abs(type - TYPE_GOTTHARD2_MODULE_VAL) <= TYPE_TOLERANCE) {
LOG(logINFOBLUE, ("50um Module\n"));
hdi25um = 0;
}
// no module or invalid module
else if (type > TYPE_NO_MODULE_STARTING_VAL) {
sprintf(mess, "No Module attached! Run server with -nomodule.\n");
LOG(logERROR, (mess));
return FAIL;
} else {
sprintf(mess,
"Wrong Module attached! Expected %d, %d, %d, %d or %d for "
"Gotthard2, got %d\n",
TYPE_GOTTHARD2_MODULE_VAL,
TYPE_GOTTHARD2_25UM_MASTER_HD1_V1_VAL,
TYPE_GOTTHARD2_25UM_SLAVE_HDI_V1_VAL,
TYPE_GOTTHARD2_25UM_MASTER_HD1_V2_VAL,
TYPE_GOTTHARD2_25UM_SLAVE_HDI_V2_VAL, type);
LOG(logERROR, (mess));
return FAIL;
}
if (hdiSlave) {
bus_w(CONFIG_REG, bus_r(CONFIG_REG) | CONFIG_HDI_SLAVE_MSK);
} else {
bus_w(CONFIG_REG, bus_r(CONFIG_REG) & ~CONFIG_HDI_SLAVE_MSK);
}
if (hdi25um) {
bus_w(CONFIG_REG, bus_r(CONFIG_REG) | CONFIG_HDI_25UM_MSK);
} else {
bus_w(CONFIG_REG, bus_r(CONFIG_REG) & ~CONFIG_HDI_25UM_MSK);
}
bus_w(CONFIG_REG, bus_r(CONFIG_REG) & ~CONFIG_HDI_VERSION_MSK);
bus_w(CONFIG_REG,
bus_r(CONFIG_REG) | ((hdiVersion << CONFIG_HDI_VERSION_OFST) &
CONFIG_HDI_VERSION_MSK));
}
// no module or invalid module
else if (type > TYPE_NO_MODULE_STARTING_VAL) {
sprintf(mess, "No Module attached! Run server with -nomodule.\n");
LOG(logERROR, (mess));
return FAIL;
} else {
sprintf(mess,
"Wrong Module attached! Expected %d, %d, %d, %d or %d for "
"Gotthard2, got %d\n",
TYPE_GOTTHARD2_MODULE_VAL,
TYPE_GOTTHARD2_25UM_MASTER_HD1_V1_VAL,
TYPE_GOTTHARD2_25UM_SLAVE_HDI_V1_VAL,
TYPE_GOTTHARD2_25UM_MASTER_HD1_V2_VAL,
TYPE_GOTTHARD2_25UM_SLAVE_HDI_V2_VAL, type);
LOG(logERROR, (mess));
return FAIL;
}
bus_w(CONFIG_REG, bus_r(CONFIG_REG) & ~CONFIG_HDI_MOD_ID_MSK);
bus_w(CONFIG_REG, bus_r(CONFIG_REG) | ((type << CONFIG_HDI_MOD_ID_OFST) &
CONFIG_HDI_MOD_ID_MSK));
if (setMaster(master) == FAIL) {
strcpy(mess, "Could not set to master/slave.");
LOG(logERROR, (mess));
return FAIL;
{
enum MASTERINDEX master =
(bus_r(CONFIG_REG) & CONFIG_HDI_SLAVE_MSK) ? OW_SLAVE : OW_MASTER;
if (setMaster(master) == FAIL) {
strcpy(mess, "Could not set to master/slave.");
LOG(logERROR, (mess));
return FAIL;
}
}
return OK;
}

View File

@ -3,7 +3,7 @@
#pragma once
#include "sls/sls_detector_defs.h"
#define REQRD_FRMWRE_VRSN (0x220720)
#define REQRD_FRMWRE_VRSN (0x220818)
#define KERNEL_DATE_VRSN "Mon May 10 18:00:21 CEST 2021"
#define ID_FILE "detid_gotthard2.txt"

View File

@ -7,8 +7,8 @@
#define APIGUI 0x220609
#define APIGOTTHARD 0x220816
#define APIEIGER 0x220816
#define APIGOTTHARD2 0x220816
#define APIJUNGFRAU 0x220816
#define APIGOTTHARD2 0x220818
#define APIMOENCH 0x220822
#define APIMYTHEN3 0x220822
#define APICTB 0x220822