Hi Biju-san, Thank you for the patch! > From: Biju Das, Sent: Wednesday, April 10, 2019 5:08 PM <snip> > static int rcar_gen2_phy_probe(struct platform_device *pdev) > { > struct device *dev = &pdev->dev; > @@ -238,6 +313,8 @@ static int rcar_gen2_phy_probe(struct platform_device *pdev) > struct resource *res; > void __iomem *base; > struct clk *clk; > + const struct phy_ops *gen2_phy_ops = &rcar_gen2_phy_ops; > + const u32 (*select_value)[PHYS_PER_CHANNEL] = pci_select_value; > int i = 0; > > if (!dev->of_node) { > @@ -266,6 +343,11 @@ static int rcar_gen2_phy_probe(struct platform_device *pdev) > drv->clk = clk; > drv->base = base; > > + if (soc_device_match(soc_r8a77470)) { I'm not sure, but this driver also should not use the soc_device_match() like phy-rcar-gen3-usb2 driver? If we add a special data struct and has phy_ops and select_value members, we can achieve not to use the soc_device_match(). Best regards, Yoshihiro Shimoda