Lines Matching refs:rk_phy
96 struct rockchip_pcie_phy *rk_phy = dev_get_drvdata(dev); in rockchip_pcie_phy_of_xlate() local
99 return rk_phy->phys[0].phy; in rockchip_pcie_phy_of_xlate()
104 return rk_phy->phys[args->args[0]].phy; in rockchip_pcie_phy_of_xlate()
108 static inline void phy_wr_cfg(struct rockchip_pcie_phy *rk_phy, in phy_wr_cfg() argument
111 regmap_write(rk_phy->reg_base, rk_phy->phy_data->pcie_conf, in phy_wr_cfg()
119 regmap_write(rk_phy->reg_base, rk_phy->phy_data->pcie_conf, in phy_wr_cfg()
124 regmap_write(rk_phy->reg_base, rk_phy->phy_data->pcie_conf, in phy_wr_cfg()
130 static inline u32 phy_rd_cfg(struct rockchip_pcie_phy *rk_phy, in phy_rd_cfg() argument
135 regmap_write(rk_phy->reg_base, rk_phy->phy_data->pcie_conf, in phy_rd_cfg()
139 regmap_read(rk_phy->reg_base, in phy_rd_cfg()
140 rk_phy->phy_data->pcie_status, in phy_rd_cfg()
148 struct rockchip_pcie_phy *rk_phy = to_pcie_phy(inst); in rockchip_pcie_phy_power_off() local
151 mutex_lock(&rk_phy->pcie_mutex); in rockchip_pcie_phy_power_off()
153 regmap_write(rk_phy->reg_base, in rockchip_pcie_phy_power_off()
154 rk_phy->phy_data->pcie_laneoff, in rockchip_pcie_phy_power_off()
159 if (--rk_phy->pwr_cnt) in rockchip_pcie_phy_power_off()
162 err = reset_control_assert(rk_phy->phy_rst); in rockchip_pcie_phy_power_off()
169 mutex_unlock(&rk_phy->pcie_mutex); in rockchip_pcie_phy_power_off()
173 rk_phy->pwr_cnt++; in rockchip_pcie_phy_power_off()
174 regmap_write(rk_phy->reg_base, in rockchip_pcie_phy_power_off()
175 rk_phy->phy_data->pcie_laneoff, in rockchip_pcie_phy_power_off()
179 mutex_unlock(&rk_phy->pcie_mutex); in rockchip_pcie_phy_power_off()
186 struct rockchip_pcie_phy *rk_phy = to_pcie_phy(inst); in rockchip_pcie_phy_power_on() local
191 mutex_lock(&rk_phy->pcie_mutex); in rockchip_pcie_phy_power_on()
193 if (rk_phy->pwr_cnt++) in rockchip_pcie_phy_power_on()
196 err = reset_control_deassert(rk_phy->phy_rst); in rockchip_pcie_phy_power_on()
202 regmap_write(rk_phy->reg_base, rk_phy->phy_data->pcie_conf, in rockchip_pcie_phy_power_on()
207 regmap_write(rk_phy->reg_base, in rockchip_pcie_phy_power_on()
208 rk_phy->phy_data->pcie_laneoff, in rockchip_pcie_phy_power_on()
222 regmap_read(rk_phy->reg_base, in rockchip_pcie_phy_power_on()
223 rk_phy->phy_data->pcie_status, in rockchip_pcie_phy_power_on()
238 phy_wr_cfg(rk_phy, PHY_CFG_CLK_TEST, PHY_CFG_SEPE_RATE); in rockchip_pcie_phy_power_on()
239 phy_wr_cfg(rk_phy, PHY_CFG_CLK_SCC, PHY_CFG_PLL_100M); in rockchip_pcie_phy_power_on()
243 regmap_read(rk_phy->reg_base, in rockchip_pcie_phy_power_on()
244 rk_phy->phy_data->pcie_status, in rockchip_pcie_phy_power_on()
259 regmap_write(rk_phy->reg_base, rk_phy->phy_data->pcie_conf, in rockchip_pcie_phy_power_on()
265 regmap_read(rk_phy->reg_base, in rockchip_pcie_phy_power_on()
266 rk_phy->phy_data->pcie_status, in rockchip_pcie_phy_power_on()
282 mutex_unlock(&rk_phy->pcie_mutex); in rockchip_pcie_phy_power_on()
286 reset_control_assert(rk_phy->phy_rst); in rockchip_pcie_phy_power_on()
288 rk_phy->pwr_cnt--; in rockchip_pcie_phy_power_on()
289 mutex_unlock(&rk_phy->pcie_mutex); in rockchip_pcie_phy_power_on()
296 struct rockchip_pcie_phy *rk_phy = to_pcie_phy(inst); in rockchip_pcie_phy_init() local
299 mutex_lock(&rk_phy->pcie_mutex); in rockchip_pcie_phy_init()
301 if (rk_phy->init_cnt++) in rockchip_pcie_phy_init()
304 err = clk_prepare_enable(rk_phy->clk_pciephy_ref); in rockchip_pcie_phy_init()
310 err = reset_control_assert(rk_phy->phy_rst); in rockchip_pcie_phy_init()
317 mutex_unlock(&rk_phy->pcie_mutex); in rockchip_pcie_phy_init()
322 clk_disable_unprepare(rk_phy->clk_pciephy_ref); in rockchip_pcie_phy_init()
324 rk_phy->init_cnt--; in rockchip_pcie_phy_init()
325 mutex_unlock(&rk_phy->pcie_mutex); in rockchip_pcie_phy_init()
332 struct rockchip_pcie_phy *rk_phy = to_pcie_phy(inst); in rockchip_pcie_phy_exit() local
334 mutex_lock(&rk_phy->pcie_mutex); in rockchip_pcie_phy_exit()
336 if (--rk_phy->init_cnt) in rockchip_pcie_phy_exit()
339 clk_disable_unprepare(rk_phy->clk_pciephy_ref); in rockchip_pcie_phy_exit()
342 mutex_unlock(&rk_phy->pcie_mutex); in rockchip_pcie_phy_exit()
373 struct rockchip_pcie_phy *rk_phy; in rockchip_pcie_phy_probe() local
386 rk_phy = devm_kzalloc(dev, sizeof(*rk_phy), GFP_KERNEL); in rockchip_pcie_phy_probe()
387 if (!rk_phy) in rockchip_pcie_phy_probe()
394 rk_phy->phy_data = (struct rockchip_pcie_data *)of_id->data; in rockchip_pcie_phy_probe()
395 rk_phy->reg_base = grf; in rockchip_pcie_phy_probe()
397 mutex_init(&rk_phy->pcie_mutex); in rockchip_pcie_phy_probe()
399 rk_phy->phy_rst = devm_reset_control_get(dev, "phy"); in rockchip_pcie_phy_probe()
400 if (IS_ERR(rk_phy->phy_rst)) { in rockchip_pcie_phy_probe()
401 if (PTR_ERR(rk_phy->phy_rst) != -EPROBE_DEFER) in rockchip_pcie_phy_probe()
404 return PTR_ERR(rk_phy->phy_rst); in rockchip_pcie_phy_probe()
407 rk_phy->clk_pciephy_ref = devm_clk_get(dev, "refclk"); in rockchip_pcie_phy_probe()
408 if (IS_ERR(rk_phy->clk_pciephy_ref)) { in rockchip_pcie_phy_probe()
410 return PTR_ERR(rk_phy->clk_pciephy_ref); in rockchip_pcie_phy_probe()
421 rk_phy->phys[i].phy = devm_phy_create(dev, dev->of_node, &ops); in rockchip_pcie_phy_probe()
422 if (IS_ERR(rk_phy->phys[i].phy)) { in rockchip_pcie_phy_probe()
424 return PTR_ERR(rk_phy->phys[i].phy); in rockchip_pcie_phy_probe()
426 rk_phy->phys[i].index = i; in rockchip_pcie_phy_probe()
427 phy_set_drvdata(rk_phy->phys[i].phy, &rk_phy->phys[i]); in rockchip_pcie_phy_probe()
430 platform_set_drvdata(pdev, rk_phy); in rockchip_pcie_phy_probe()