diff options
Diffstat (limited to 'drivers/infiniband/hw/qib/qib_sd7220.c')
-rw-r--r-- | drivers/infiniband/hw/qib/qib_sd7220.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/infiniband/hw/qib/qib_sd7220.c b/drivers/infiniband/hw/qib/qib_sd7220.c index 911205d3d5a0..c72775f27212 100644 --- a/drivers/infiniband/hw/qib/qib_sd7220.c +++ b/drivers/infiniband/hw/qib/qib_sd7220.c | |||
@@ -259,6 +259,7 @@ static int qib_ibsd_reset(struct qib_devdata *dd, int assert_rst) | |||
259 | * it again during startup. | 259 | * it again during startup. |
260 | */ | 260 | */ |
261 | u64 val; | 261 | u64 val; |
262 | |||
262 | rst_val &= ~(1ULL); | 263 | rst_val &= ~(1ULL); |
263 | qib_write_kreg(dd, kr_hwerrmask, | 264 | qib_write_kreg(dd, kr_hwerrmask, |
264 | dd->cspec->hwerrmask & | 265 | dd->cspec->hwerrmask & |
@@ -590,6 +591,7 @@ static int epb_access(struct qib_devdata *dd, int sdnum, int claim) | |||
590 | * Both should be clear | 591 | * Both should be clear |
591 | */ | 592 | */ |
592 | u64 newval = 0; | 593 | u64 newval = 0; |
594 | |||
593 | qib_write_kreg(dd, acc, newval); | 595 | qib_write_kreg(dd, acc, newval); |
594 | /* First read after write is not trustworthy */ | 596 | /* First read after write is not trustworthy */ |
595 | pollval = qib_read_kreg32(dd, acc); | 597 | pollval = qib_read_kreg32(dd, acc); |
@@ -601,6 +603,7 @@ static int epb_access(struct qib_devdata *dd, int sdnum, int claim) | |||
601 | /* Need to claim */ | 603 | /* Need to claim */ |
602 | u64 pollval; | 604 | u64 pollval; |
603 | u64 newval = EPB_ACC_REQ | oct_sel; | 605 | u64 newval = EPB_ACC_REQ | oct_sel; |
606 | |||
604 | qib_write_kreg(dd, acc, newval); | 607 | qib_write_kreg(dd, acc, newval); |
605 | /* First read after write is not trustworthy */ | 608 | /* First read after write is not trustworthy */ |
606 | pollval = qib_read_kreg32(dd, acc); | 609 | pollval = qib_read_kreg32(dd, acc); |
@@ -812,6 +815,7 @@ static int qib_sd7220_ram_xfer(struct qib_devdata *dd, int sdnum, u32 loc, | |||
812 | if (!sofar) { | 815 | if (!sofar) { |
813 | /* Only set address at start of chunk */ | 816 | /* Only set address at start of chunk */ |
814 | int addrbyte = (addr + sofar) >> 8; | 817 | int addrbyte = (addr + sofar) >> 8; |
818 | |||
815 | transval = csbit | EPB_MADDRH | addrbyte; | 819 | transval = csbit | EPB_MADDRH | addrbyte; |
816 | tries = epb_trans(dd, trans, transval, | 820 | tries = epb_trans(dd, trans, transval, |
817 | &transval); | 821 | &transval); |
@@ -922,7 +926,7 @@ qib_sd7220_ib_vfy(struct qib_devdata *dd, const struct firmware *fw) | |||
922 | * IRQ not set up at this point in init, so we poll. | 926 | * IRQ not set up at this point in init, so we poll. |
923 | */ | 927 | */ |
924 | #define IB_SERDES_TRIM_DONE (1ULL << 11) | 928 | #define IB_SERDES_TRIM_DONE (1ULL << 11) |
925 | #define TRIM_TMO (30) | 929 | #define TRIM_TMO (15) |
926 | 930 | ||
927 | static int qib_sd_trimdone_poll(struct qib_devdata *dd) | 931 | static int qib_sd_trimdone_poll(struct qib_devdata *dd) |
928 | { | 932 | { |
@@ -940,7 +944,7 @@ static int qib_sd_trimdone_poll(struct qib_devdata *dd) | |||
940 | ret = 1; | 944 | ret = 1; |
941 | break; | 945 | break; |
942 | } | 946 | } |
943 | msleep(10); | 947 | msleep(20); |
944 | } | 948 | } |
945 | if (trim_tmo >= TRIM_TMO) { | 949 | if (trim_tmo >= TRIM_TMO) { |
946 | qib_dev_err(dd, "No TRIMDONE in %d tries\n", trim_tmo); | 950 | qib_dev_err(dd, "No TRIMDONE in %d tries\n", trim_tmo); |
@@ -1071,6 +1075,7 @@ static int qib_sd_setvals(struct qib_devdata *dd) | |||
1071 | dds_reg_map >>= 4; | 1075 | dds_reg_map >>= 4; |
1072 | for (midx = 0; midx < DDS_ROWS; ++midx) { | 1076 | for (midx = 0; midx < DDS_ROWS; ++midx) { |
1073 | u64 __iomem *daddr = taddr + ((midx << 4) + idx); | 1077 | u64 __iomem *daddr = taddr + ((midx << 4) + idx); |
1078 | |||
1074 | data = dds_init_vals[midx].reg_vals[idx]; | 1079 | data = dds_init_vals[midx].reg_vals[idx]; |
1075 | writeq(data, daddr); | 1080 | writeq(data, daddr); |
1076 | mmiowb(); | 1081 | mmiowb(); |