Lines Matching refs:ssc
30 struct ssc_device *ssc; in ssc_request() local
33 list_for_each_entry(ssc, &ssc_list, list) { in ssc_request()
34 if (ssc->pdev->dev.of_node) { in ssc_request()
35 if (of_alias_get_id(ssc->pdev->dev.of_node, "ssc") in ssc_request()
40 } else if (ssc->pdev->id == ssc_num) { in ssc_request()
52 if (ssc->user) { in ssc_request()
54 dev_dbg(&ssc->pdev->dev, "module busy\n"); in ssc_request()
57 ssc->user++; in ssc_request()
60 clk_prepare(ssc->clk); in ssc_request()
62 return ssc; in ssc_request()
66 void ssc_free(struct ssc_device *ssc) in ssc_free() argument
71 if (ssc->user) in ssc_free()
72 ssc->user--; in ssc_free()
75 dev_dbg(&ssc->pdev->dev, "device already free\n"); in ssc_free()
80 clk_unprepare(ssc->clk); in ssc_free()
150 struct ssc_device *ssc; in ssc_probe() local
153 ssc = devm_kzalloc(&pdev->dev, sizeof(struct ssc_device), GFP_KERNEL); in ssc_probe()
154 if (!ssc) { in ssc_probe()
159 ssc->pdev = pdev; in ssc_probe()
164 ssc->pdata = (struct atmel_ssc_platform_data *)plat_dat; in ssc_probe()
168 ssc->clk_from_rk_pin = in ssc_probe()
173 ssc->regs = devm_ioremap_resource(&pdev->dev, regs); in ssc_probe()
174 if (IS_ERR(ssc->regs)) in ssc_probe()
175 return PTR_ERR(ssc->regs); in ssc_probe()
177 ssc->phybase = regs->start; in ssc_probe()
179 ssc->clk = devm_clk_get(&pdev->dev, "pclk"); in ssc_probe()
180 if (IS_ERR(ssc->clk)) { in ssc_probe()
186 clk_prepare_enable(ssc->clk); in ssc_probe()
187 ssc_writel(ssc->regs, IDR, -1); in ssc_probe()
188 ssc_readl(ssc->regs, SR); in ssc_probe()
189 clk_disable_unprepare(ssc->clk); in ssc_probe()
191 ssc->irq = platform_get_irq(pdev, 0); in ssc_probe()
192 if (!ssc->irq) { in ssc_probe()
198 list_add_tail(&ssc->list, &ssc_list); in ssc_probe()
201 platform_set_drvdata(pdev, ssc); in ssc_probe()
204 ssc->regs, ssc->irq); in ssc_probe()
211 struct ssc_device *ssc = platform_get_drvdata(pdev); in ssc_remove() local
214 list_del(&ssc->list); in ssc_remove()