PCIe driver: add check of REG_MAP bit in CMS after startup
This commit is contained in:
@@ -74,6 +74,7 @@
|
||||
#define ADDR_CMS_3V3_PEX_INS_REG 0x028034 // in mV
|
||||
#define ADDR_CMS_HBM_TEMP1_INS_REG 0x028268 // in C
|
||||
#define ADDR_CMS_HBM_TEMP2_INS_REG 0x0282BC // in C
|
||||
#define ADDR_CMS_HOST_STATUS2_REG 0x02830C
|
||||
|
||||
struct jfjoch_buf {
|
||||
dma_addr_t dma_address;
|
||||
|
||||
@@ -228,8 +228,27 @@ void jfjoch_is_idle(struct jfjoch_drvdata *drvdata, uint32_t *output) {
|
||||
}
|
||||
|
||||
void jfjoch_setup_cms(struct jfjoch_drvdata *drvdata) {
|
||||
struct device *const dev = &drvdata->pdev->dev;
|
||||
u32 reg_map_ready, i;
|
||||
|
||||
iowrite32(0x1, drvdata->bar0 + CMS_OFFSET + ADDR_CMS_MB_RESETN_REG);
|
||||
iowrite32(1 << 27, drvdata->bar0 + CMS_OFFSET + ADDR_CMS_CONTROL_REG); // enable HBM monitoring
|
||||
|
||||
reg_map_ready = ioread32(drvdata->bar0 + CMS_OFFSET + ADDR_CMS_HOST_STATUS2_REG) & 0x1;
|
||||
i = 0;
|
||||
while (i < 10000) {
|
||||
if (reg_map_ready)
|
||||
break;
|
||||
msleep(1);
|
||||
reg_map_ready = ioread32(drvdata->bar0 + CMS_OFFSET + ADDR_CMS_HOST_STATUS2_REG) & 0x1;
|
||||
i++;
|
||||
}
|
||||
|
||||
if (i == 10000)
|
||||
dev_err(dev, "CMS not ready after 10s");
|
||||
else
|
||||
dev_info(dev, "CMS ready after restart in %d ms", i);
|
||||
|
||||
}
|
||||
|
||||
void jfjoch_setup_network(struct jfjoch_drvdata *drvdata) {
|
||||
|
||||
Reference in New Issue
Block a user