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