|
@@ -925,29 +925,28 @@ static int qcom_qmp_phy_clk_init(struct device *dev)
|
|
|
* clk | +-------+ | +-----+
|
|
|
* +---------------+
|
|
|
*/
|
|
|
-static int phy_pipe_clk_register(struct qcom_qmp *qmp, int id)
|
|
|
+static int phy_pipe_clk_register(struct qcom_qmp *qmp, struct device_node *np)
|
|
|
{
|
|
|
- char name[24];
|
|
|
struct clk_fixed_rate *fixed;
|
|
|
struct clk_init_data init = { };
|
|
|
+ int ret;
|
|
|
|
|
|
- switch (qmp->cfg->type) {
|
|
|
- case PHY_TYPE_USB3:
|
|
|
- snprintf(name, sizeof(name), "usb3_phy_pipe_clk_src");
|
|
|
- break;
|
|
|
- case PHY_TYPE_PCIE:
|
|
|
- snprintf(name, sizeof(name), "pcie_%d_pipe_clk_src", id);
|
|
|
- break;
|
|
|
- default:
|
|
|
+ if ((qmp->cfg->type != PHY_TYPE_USB3) &&
|
|
|
+ (qmp->cfg->type != PHY_TYPE_PCIE)) {
|
|
|
/* not all phys register pipe clocks, so return success */
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+ ret = of_property_read_string(np, "clock-output-names", &init.name);
|
|
|
+ if (ret) {
|
|
|
+ dev_err(qmp->dev, "%s: No clock-output-names\n", np->name);
|
|
|
+ return ret;
|
|
|
+ }
|
|
|
+
|
|
|
fixed = devm_kzalloc(qmp->dev, sizeof(*fixed), GFP_KERNEL);
|
|
|
if (!fixed)
|
|
|
return -ENOMEM;
|
|
|
|
|
|
- init.name = name;
|
|
|
init.ops = &clk_fixed_rate_ops;
|
|
|
|
|
|
/* controllers using QMP phys use 125MHz pipe clock interface */
|
|
@@ -1122,7 +1121,7 @@ static int qcom_qmp_phy_probe(struct platform_device *pdev)
|
|
|
* Register the pipe clock provided by phy.
|
|
|
* See function description to see details of this pipe clock.
|
|
|
*/
|
|
|
- ret = phy_pipe_clk_register(qmp, id);
|
|
|
+ ret = phy_pipe_clk_register(qmp, child);
|
|
|
if (ret) {
|
|
|
dev_err(qmp->dev,
|
|
|
"failed to register pipe clock source\n");
|