Lines Matching refs:ss

227 	struct sun4i_ss_ctx *ss;  in sun4i_ss_probe()  local
232 ss = devm_kzalloc(&pdev->dev, sizeof(*ss), GFP_KERNEL); in sun4i_ss_probe()
233 if (!ss) in sun4i_ss_probe()
237 ss->base = devm_ioremap_resource(&pdev->dev, res); in sun4i_ss_probe()
238 if (IS_ERR(ss->base)) { in sun4i_ss_probe()
240 return PTR_ERR(ss->base); in sun4i_ss_probe()
243 ss->ssclk = devm_clk_get(&pdev->dev, "mod"); in sun4i_ss_probe()
244 if (IS_ERR(ss->ssclk)) { in sun4i_ss_probe()
245 err = PTR_ERR(ss->ssclk); in sun4i_ss_probe()
251 ss->busclk = devm_clk_get(&pdev->dev, "ahb"); in sun4i_ss_probe()
252 if (IS_ERR(ss->busclk)) { in sun4i_ss_probe()
253 err = PTR_ERR(ss->busclk); in sun4i_ss_probe()
259 ss->reset = devm_reset_control_get_optional(&pdev->dev, "ahb"); in sun4i_ss_probe()
260 if (IS_ERR(ss->reset)) { in sun4i_ss_probe()
261 if (PTR_ERR(ss->reset) == -EPROBE_DEFER) in sun4i_ss_probe()
262 return PTR_ERR(ss->reset); in sun4i_ss_probe()
264 ss->reset = NULL; in sun4i_ss_probe()
268 err = clk_prepare_enable(ss->busclk); in sun4i_ss_probe()
273 err = clk_prepare_enable(ss->ssclk); in sun4i_ss_probe()
283 err = clk_set_rate(ss->ssclk, cr_mod); in sun4i_ss_probe()
290 if (ss->reset) { in sun4i_ss_probe()
291 err = reset_control_deassert(ss->reset); in sun4i_ss_probe()
303 cr = clk_get_rate(ss->busclk); in sun4i_ss_probe()
311 cr = clk_get_rate(ss->ssclk); in sun4i_ss_probe()
329 writel(SS_ENABLED, ss->base + SS_CTL); in sun4i_ss_probe()
330 v = readl(ss->base + SS_CTL); in sun4i_ss_probe()
334 writel(0, ss->base + SS_CTL); in sun4i_ss_probe()
336 ss->dev = &pdev->dev; in sun4i_ss_probe()
338 spin_lock_init(&ss->slock); in sun4i_ss_probe()
341 ss_algs[i].ss = ss; in sun4i_ss_probe()
346 dev_err(ss->dev, "Fail to register %s\n", in sun4i_ss_probe()
354 dev_err(ss->dev, "Fail to register %s\n", in sun4i_ss_probe()
361 platform_set_drvdata(pdev, ss); in sun4i_ss_probe()
375 if (ss->reset) in sun4i_ss_probe()
376 reset_control_assert(ss->reset); in sun4i_ss_probe()
378 clk_disable_unprepare(ss->ssclk); in sun4i_ss_probe()
380 clk_disable_unprepare(ss->busclk); in sun4i_ss_probe()
387 struct sun4i_ss_ctx *ss = platform_get_drvdata(pdev); in sun4i_ss_remove() local
400 writel(0, ss->base + SS_CTL); in sun4i_ss_remove()
401 if (ss->reset) in sun4i_ss_remove()
402 reset_control_assert(ss->reset); in sun4i_ss_remove()
403 clk_disable_unprepare(ss->busclk); in sun4i_ss_remove()
404 clk_disable_unprepare(ss->ssclk); in sun4i_ss_remove()