Lines Matching refs:rc
76 struct lpc18xx_rgu_data *rc = to_rgu_data(rcdev); in lpc18xx_rgu_setclear_reset() local
86 spin_lock_irqsave(&rc->lock, flags); in lpc18xx_rgu_setclear_reset()
87 stat = ~readl(rc->base + stat_offset); in lpc18xx_rgu_setclear_reset()
89 writel(stat | rst_bit, rc->base + ctrl_offset); in lpc18xx_rgu_setclear_reset()
91 writel(stat & ~rst_bit, rc->base + ctrl_offset); in lpc18xx_rgu_setclear_reset()
92 spin_unlock_irqrestore(&rc->lock, flags); in lpc18xx_rgu_setclear_reset()
113 struct lpc18xx_rgu_data *rc = to_rgu_data(rcdev); in lpc18xx_rgu_reset() local
116 udelay(rc->delay_us); in lpc18xx_rgu_reset()
130 struct lpc18xx_rgu_data *rc = to_rgu_data(rcdev); in lpc18xx_rgu_status() local
136 return !(readl(rc->base + offset) & bit); in lpc18xx_rgu_status()
148 struct lpc18xx_rgu_data *rc; in lpc18xx_rgu_probe() local
153 rc = devm_kzalloc(&pdev->dev, sizeof(*rc), GFP_KERNEL); in lpc18xx_rgu_probe()
154 if (!rc) in lpc18xx_rgu_probe()
158 rc->base = devm_ioremap_resource(&pdev->dev, res); in lpc18xx_rgu_probe()
159 if (IS_ERR(rc->base)) in lpc18xx_rgu_probe()
160 return PTR_ERR(rc->base); in lpc18xx_rgu_probe()
162 rc->clk_reg = devm_clk_get(&pdev->dev, "reg"); in lpc18xx_rgu_probe()
163 if (IS_ERR(rc->clk_reg)) { in lpc18xx_rgu_probe()
165 return PTR_ERR(rc->clk_reg); in lpc18xx_rgu_probe()
168 rc->clk_delay = devm_clk_get(&pdev->dev, "delay"); in lpc18xx_rgu_probe()
169 if (IS_ERR(rc->clk_delay)) { in lpc18xx_rgu_probe()
171 return PTR_ERR(rc->clk_delay); in lpc18xx_rgu_probe()
174 ret = clk_prepare_enable(rc->clk_reg); in lpc18xx_rgu_probe()
180 ret = clk_prepare_enable(rc->clk_delay); in lpc18xx_rgu_probe()
186 fcclk = clk_get_rate(rc->clk_reg) / USEC_PER_SEC; in lpc18xx_rgu_probe()
187 firc = clk_get_rate(rc->clk_delay) / USEC_PER_SEC; in lpc18xx_rgu_probe()
189 rc->delay_us = 2; in lpc18xx_rgu_probe()
191 rc->delay_us = DIV_ROUND_UP(fcclk, firc * firc); in lpc18xx_rgu_probe()
193 spin_lock_init(&rc->lock); in lpc18xx_rgu_probe()
195 rc->rcdev.owner = THIS_MODULE; in lpc18xx_rgu_probe()
196 rc->rcdev.nr_resets = 64; in lpc18xx_rgu_probe()
197 rc->rcdev.ops = &lpc18xx_rgu_ops; in lpc18xx_rgu_probe()
198 rc->rcdev.of_node = pdev->dev.of_node; in lpc18xx_rgu_probe()
200 platform_set_drvdata(pdev, rc); in lpc18xx_rgu_probe()
202 ret = reset_controller_register(&rc->rcdev); in lpc18xx_rgu_probe()
208 rgu_base = rc->base; in lpc18xx_rgu_probe()
216 clk_disable_unprepare(rc->clk_delay); in lpc18xx_rgu_probe()
218 clk_disable_unprepare(rc->clk_reg); in lpc18xx_rgu_probe()
225 struct lpc18xx_rgu_data *rc = platform_get_drvdata(pdev); in lpc18xx_rgu_remove() local
232 reset_controller_unregister(&rc->rcdev); in lpc18xx_rgu_remove()
234 clk_disable_unprepare(rc->clk_delay); in lpc18xx_rgu_remove()
235 clk_disable_unprepare(rc->clk_reg); in lpc18xx_rgu_remove()