hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/drivers/phy/rockchip/phy-rockchip-naneng-combphy.c
....@@ -287,9 +287,42 @@
287287 return 0;
288288 }
289289
290
+static const char *rockchip_combphy_mode2str(enum phy_mode mode)
291
+{
292
+ switch (mode) {
293
+ case PHY_TYPE_SATA:
294
+ return "SATA";
295
+ case PHY_TYPE_PCIE:
296
+ return "PCIe";
297
+ case PHY_TYPE_USB3:
298
+ return "USB3";
299
+ case PHY_TYPE_SGMII:
300
+ case PHY_TYPE_QSGMII:
301
+ return "GMII";
302
+ default:
303
+ return "Unknown";
304
+ }
305
+}
306
+
307
+static int rockchip_combphy_validate(struct phy *phy, enum phy_mode mode, int submode,
308
+ union phy_configure_opts *opts)
309
+{
310
+ struct rockchip_combphy_priv *priv = phy_get_drvdata(phy);
311
+
312
+ if (mode != priv->mode) {
313
+ dev_err(priv->dev, "expected mode is %s, but current mode is %s\n",
314
+ rockchip_combphy_mode2str(mode),
315
+ rockchip_combphy_mode2str(priv->mode));
316
+ return -EINVAL;
317
+ }
318
+
319
+ return 0;
320
+}
321
+
290322 static const struct phy_ops rochchip_combphy_ops = {
291323 .init = rockchip_combphy_init,
292324 .exit = rockchip_combphy_exit,
325
+ .validate = rockchip_combphy_validate,
293326 .owner = THIS_MODULE,
294327 };
295328
....@@ -482,6 +515,18 @@
482515 val &= ~GENMASK(17, 17);
483516 val |= 0x01 << 17;
484517 writel(val, priv->mmio + 0x200);
518
+
519
+ /* Set slow slew rate control for PI */
520
+ val = readl(priv->mmio + 0x204);
521
+ val &= ~GENMASK(2, 0);
522
+ val |= 0x07;
523
+ writel(val, priv->mmio + 0x204);
524
+
525
+ /* Set CDR phase path with 2x gain */
526
+ val = readl(priv->mmio + 0x204);
527
+ val &= ~GENMASK(5, 5);
528
+ val |= 0x01 << 5;
529
+ writel(val, priv->mmio + 0x204);
485530
486531 /* Set Rx squelch input filler bandwidth */
487532 val = readl(priv->mmio + 0x20c);
....@@ -697,7 +742,7 @@
697742 /* CKDRV output swing adjust to 650mv */
698743 val = readl(priv->mmio + (0xd << 2));
699744 val &= ~(0xf << 1);
700
- val |= 0xb;
745
+ val |= (0xb << 1);
701746 writel(val, priv->mmio + (0xd << 2));
702747 }
703748 break;