Lines Matching +full:syscon +full:- +full:dev

1 // SPDX-License-Identifier: GPL-2.0
10 #include <linux/mfd/syscon.h>
35 struct regmap *syscon; member
50 dev_info(&phy->phy->dev, "set mode %d", (int)mode); in cv1800_usb_phy_set_mode()
55 regmap_clear_bits(phy->syscon, REG_USB_PHY_CTRL, PHY_VBUS_POWER); in cv1800_usb_phy_set_mode()
59 regmap_set_bits(phy->syscon, REG_USB_PHY_CTRL, PHY_VBUS_POWER); in cv1800_usb_phy_set_mode()
62 if (!phy->support_otg) in cv1800_usb_phy_set_mode()
65 ret = regmap_read(phy->syscon, REG_USB_PHY_CTRL, &regval); in cv1800_usb_phy_set_mode()
72 return -EINVAL; in cv1800_usb_phy_set_mode()
75 return regmap_update_bits(phy->syscon, REG_USB_PHY_CTRL, in cv1800_usb_phy_set_mode()
84 ret = clk_set_rate(phy->usb_app_clk, PHY_APP_CLK_RATE); in cv1800_usb_phy_set_clock()
88 ret = clk_set_rate(phy->usb_lpm_clk, PHY_LPM_CLK_RATE); in cv1800_usb_phy_set_clock()
92 return clk_set_rate(phy->usb_stb_clk, PHY_STB_CLK_RATE); in cv1800_usb_phy_set_clock()
102 struct device *dev = &pdev->dev; in cv1800_usb_phy_probe() local
103 struct device *parent = dev->parent; in cv1800_usb_phy_probe()
109 return -ENODEV; in cv1800_usb_phy_probe()
111 phy = devm_kmalloc(dev, sizeof(*phy), GFP_KERNEL); in cv1800_usb_phy_probe()
113 return -ENOMEM; in cv1800_usb_phy_probe()
115 phy->syscon = syscon_node_to_regmap(parent->of_node); in cv1800_usb_phy_probe()
116 if (IS_ERR_OR_NULL(phy->syscon)) in cv1800_usb_phy_probe()
117 return -ENODEV; in cv1800_usb_phy_probe()
119 phy->support_otg = false; in cv1800_usb_phy_probe()
121 spin_lock_init(&phy->lock); in cv1800_usb_phy_probe()
123 phy->usb_app_clk = devm_clk_get_enabled(dev, "app"); in cv1800_usb_phy_probe()
124 if (IS_ERR(phy->usb_app_clk)) in cv1800_usb_phy_probe()
125 return dev_err_probe(dev, PTR_ERR(phy->usb_app_clk), in cv1800_usb_phy_probe()
128 phy->usb_lpm_clk = devm_clk_get_enabled(dev, "lpm"); in cv1800_usb_phy_probe()
129 if (IS_ERR(phy->usb_lpm_clk)) in cv1800_usb_phy_probe()
130 return dev_err_probe(dev, PTR_ERR(phy->usb_lpm_clk), in cv1800_usb_phy_probe()
133 phy->usb_stb_clk = devm_clk_get_enabled(dev, "stb"); in cv1800_usb_phy_probe()
134 if (IS_ERR(phy->usb_stb_clk)) in cv1800_usb_phy_probe()
135 return dev_err_probe(dev, PTR_ERR(phy->usb_stb_clk), in cv1800_usb_phy_probe()
138 phy->phy = devm_phy_create(dev, NULL, &cv1800_usb_phy_ops); in cv1800_usb_phy_probe()
139 if (IS_ERR(phy->phy)) in cv1800_usb_phy_probe()
140 return dev_err_probe(dev, PTR_ERR(phy->phy), in cv1800_usb_phy_probe()
147 phy_set_drvdata(phy->phy, phy); in cv1800_usb_phy_probe()
148 phy_provider = devm_of_phy_provider_register(dev, of_phy_simple_xlate); in cv1800_usb_phy_probe()
154 { .compatible = "sophgo,cv1800b-usb2-phy" },
162 .name = "cv1800-usb2-phy",