Lines Matching refs:lane

268 /* PHY lane CSR accessing from SDS indirectly */
520 u32 speed[MAX_LANE]; /* Index for override parameter per lane */
658 static void serdes_wr(struct xgene_phy_ctx *ctx, int lane, u32 reg, u32 data)
664 reg += lane * SERDES_LANE_STRIDE;
673 static void serdes_rd(struct xgene_phy_ctx *ctx, int lane, u32 reg, u32 *data)
678 reg += lane * SERDES_LANE_STRIDE;
684 static void serdes_clrbits(struct xgene_phy_ctx *ctx, int lane, u32 reg,
689 serdes_rd(ctx, lane, reg, &val);
691 serdes_wr(ctx, lane, reg, val);
694 static void serdes_setbits(struct xgene_phy_ctx *ctx, int lane, u32 reg,
699 serdes_rd(ctx, lane, reg, &val);
701 serdes_wr(ctx, lane, reg, val);
856 /* Configure lane for 20-bits */
944 int lane;
946 for (lane = 0; lane < MAX_LANE; lane++) {
947 serdes_wr(ctx, lane, RXTX_REG147, 0x6);
950 serdes_rd(ctx, lane, RXTX_REG0, &val);
954 serdes_wr(ctx, lane, RXTX_REG0, val);
957 serdes_rd(ctx, lane, RXTX_REG1, &val);
960 ctx->sata_param.txboostgain[lane * 3 +
961 ctx->sata_param.speed[lane]]);
962 serdes_wr(ctx, lane, RXTX_REG1, val);
967 serdes_rd(ctx, lane, RXTX_REG2, &val);
971 serdes_wr(ctx, lane, RXTX_REG2, val);
974 serdes_rd(ctx, lane, RXTX_REG4, &val);
976 serdes_wr(ctx, lane, RXTX_REG4, val);
979 serdes_rd(ctx, lane, RXTX_REG1, &val);
982 serdes_wr(ctx, lane, RXTX_REG1, val);
986 serdes_rd(ctx, lane, RXTX_REG5, &val);
988 ctx->sata_param.txprecursor_cn1[lane * 3 +
989 ctx->sata_param.speed[lane]]);
991 ctx->sata_param.txpostcursor_cp1[lane * 3 +
992 ctx->sata_param.speed[lane]]);
994 ctx->sata_param.txprecursor_cn2[lane * 3 +
995 ctx->sata_param.speed[lane]]);
996 serdes_wr(ctx, lane, RXTX_REG5, val);
999 serdes_rd(ctx, lane, RXTX_REG6, &val);
1001 ctx->sata_param.txamplitude[lane * 3 +
1002 ctx->sata_param.speed[lane]]);
1007 serdes_wr(ctx, lane, RXTX_REG6, val);
1010 serdes_rd(ctx, lane, RXTX_REG7, &val);
1013 serdes_wr(ctx, lane, RXTX_REG7, val);
1016 serdes_rd(ctx, lane, RXTX_REG8, &val);
1022 serdes_wr(ctx, lane, RXTX_REG8, val);
1025 serdes_rd(ctx, lane, RXTX_REG11, &val);
1027 serdes_wr(ctx, lane, RXTX_REG11, val);
1030 serdes_rd(ctx, lane, RXTX_REG12, &val);
1034 serdes_wr(ctx, lane, RXTX_REG12, val);
1037 serdes_rd(ctx, lane, RXTX_REG26, &val);
1040 serdes_wr(ctx, lane, RXTX_REG26, val);
1042 serdes_wr(ctx, lane, RXTX_REG28, 0x0);
1045 serdes_wr(ctx, lane, RXTX_REG31, 0x0);
1048 serdes_rd(ctx, lane, RXTX_REG61, &val);
1052 serdes_wr(ctx, lane, RXTX_REG61, val);
1054 serdes_rd(ctx, lane, RXTX_REG62, &val);
1056 serdes_wr(ctx, lane, RXTX_REG62, val);
1061 serdes_rd(ctx, lane, reg, &val);
1065 serdes_wr(ctx, lane, reg, val);
1071 serdes_rd(ctx, lane, reg, &val);
1075 serdes_wr(ctx, lane, reg, val);
1081 serdes_rd(ctx, lane, reg, &val);
1085 serdes_wr(ctx, lane, reg, val);
1088 serdes_rd(ctx, lane, RXTX_REG102, &val);
1090 serdes_wr(ctx, lane, RXTX_REG102, val);
1092 serdes_wr(ctx, lane, RXTX_REG114, 0xffe0);
1094 serdes_rd(ctx, lane, RXTX_REG125, &val);
1096 ctx->sata_param.txeyedirection[lane * 3 +
1097 ctx->sata_param.speed[lane]]);
1099 ctx->sata_param.txeyetuning[lane * 3 +
1100 ctx->sata_param.speed[lane]]);
1102 serdes_wr(ctx, lane, RXTX_REG125, val);
1104 serdes_rd(ctx, lane, RXTX_REG127, &val);
1106 serdes_wr(ctx, lane, RXTX_REG127, val);
1108 serdes_rd(ctx, lane, RXTX_REG128, &val);
1110 serdes_wr(ctx, lane, RXTX_REG128, val);
1112 serdes_rd(ctx, lane, RXTX_REG145, &val);
1122 serdes_wr(ctx, lane, RXTX_REG145, val);
1130 serdes_wr(ctx, lane, reg, 0xFFFF);
1265 /* Release PHY lane from reset (active high) */
1344 static void xgene_phy_force_lat_summer_cal(struct xgene_phy_ctx *ctx, int lane)
1372 serdes_setbits(ctx, lane, RXTX_REG127,
1379 serdes_clrbits(ctx, lane, RXTX_REG127,
1388 serdes_setbits(ctx, lane, RXTX_REG127,
1395 serdes_clrbits(ctx, lane, RXTX_REG127,
1398 /* Configure the PHY lane for calibration */
1399 serdes_wr(ctx, lane, RXTX_REG28, 0x7);
1400 serdes_wr(ctx, lane, RXTX_REG31, 0x7e00);
1401 serdes_clrbits(ctx, lane, RXTX_REG4,
1403 serdes_clrbits(ctx, lane, RXTX_REG7,
1406 serdes_wr(ctx, lane, serdes_reg[i].reg,
1410 static void xgene_phy_reset_rxd(struct xgene_phy_ctx *ctx, int lane)
1413 serdes_clrbits(ctx, lane, RXTX_REG7, RXTX_REG7_RESETB_RXD_MASK);
1416 serdes_setbits(ctx, lane, RXTX_REG7, RXTX_REG7_RESETB_RXD_MASK);
1424 static void xgene_phy_gen_avg_val(struct xgene_phy_ctx *ctx, int lane)
1438 dev_dbg(ctx->dev, "Generating avg calibration value for lane %d\n",
1439 lane);
1442 serdes_setbits(ctx, lane, RXTX_REG12,
1445 serdes_wr(ctx, lane, RXTX_REG28, 0x0000);
1447 serdes_wr(ctx, lane, RXTX_REG31, 0x0000);
1458 xgene_phy_force_lat_summer_cal(ctx, lane);
1460 serdes_rd(ctx, lane, RXTX_REG21, &val);
1465 serdes_rd(ctx, lane, RXTX_REG22, &val);
1470 serdes_rd(ctx, lane, RXTX_REG23, &val);
1474 serdes_rd(ctx, lane, RXTX_REG24, &val);
1478 serdes_rd(ctx, lane, RXTX_REG121, &val);
1508 xgene_phy_reset_rxd(ctx, lane);
1512 serdes_rd(ctx, lane, RXTX_REG127, &val);
1517 serdes_wr(ctx, lane, RXTX_REG127, val);
1519 serdes_rd(ctx, lane, RXTX_REG128, &val);
1524 serdes_wr(ctx, lane, RXTX_REG128, val);
1526 serdes_rd(ctx, lane, RXTX_REG129, &val);
1531 serdes_wr(ctx, lane, RXTX_REG129, val);
1533 serdes_rd(ctx, lane, RXTX_REG130, &val);
1538 serdes_wr(ctx, lane, RXTX_REG130, val);
1541 serdes_rd(ctx, lane, RXTX_REG14, &val);
1544 serdes_wr(ctx, lane, RXTX_REG14, val);
1560 serdes_rd(ctx, lane, RXTX_REG14, &val);
1562 serdes_wr(ctx, lane, RXTX_REG14, val);
1565 serdes_rd(ctx, lane, RXTX_REG127, &val);
1568 serdes_wr(ctx, lane, RXTX_REG127, val);
1571 serdes_rd(ctx, lane, RXTX_REG12, &val);
1573 serdes_wr(ctx, lane, RXTX_REG12, val);
1575 serdes_wr(ctx, lane, RXTX_REG28, 0x0007);
1577 serdes_wr(ctx, lane, RXTX_REG31, 0x7e00);