• Home
  • Raw
  • Download

Lines Matching +full:clkdiv +full:- +full:-

17 #include <media/rc-core.h>
19 #define DRIVER_NAME "tango-ir"
64 v = readl_relaxed(ir->rc5_base + IR_NEC_DATA); in tango_ir_handle_nec()
66 rc_repeat(ir->rc); in tango_ir_handle_nec()
71 rc_keydown(ir->rc, proto, code, 0); in tango_ir_handle_nec()
78 data = readl_relaxed(ir->rc5_base + IR_RC5_DATA); in tango_ir_handle_rc5()
88 rc_keydown(ir->rc, RC_PROTO_RC5, code, toggle); in tango_ir_handle_rc5()
95 data0 = readl_relaxed(ir->rc6_base + RC6_DATA0); in tango_ir_handle_rc6()
96 data1 = readl_relaxed(ir->rc6_base + RC6_DATA1); in tango_ir_handle_rc6()
107 rc_keydown(ir->rc, RC_PROTO_RC6_0, code, toggle); in tango_ir_handle_rc6()
116 rc5_stat = readl_relaxed(ir->rc5_base + IR_INT); in tango_ir_irq()
117 writel_relaxed(rc5_stat, ir->rc5_base + IR_INT); in tango_ir_irq()
119 rc6_stat = readl_relaxed(ir->rc6_base + RC6_CTRL); in tango_ir_irq()
120 writel_relaxed(rc6_stat, ir->rc6_base + RC6_CTRL); in tango_ir_irq()
139 struct tango_ir *ir = dev->priv; in tango_change_protocol()
152 writel_relaxed(rc5_ctrl, ir->rc5_base + IR_CTRL); in tango_change_protocol()
153 writel_relaxed(rc6_ctrl, ir->rc6_base + RC6_CTRL); in tango_change_protocol()
161 struct device *dev = &pdev->dev; in tango_ir_probe()
166 u64 clkrate, clkdiv; in tango_ir_probe() local
172 return -EINVAL; in tango_ir_probe()
176 return -EINVAL; in tango_ir_probe()
180 return -EINVAL; in tango_ir_probe()
184 return -ENOMEM; in tango_ir_probe()
186 ir->rc5_base = devm_ioremap_resource(dev, rc5_res); in tango_ir_probe()
187 if (IS_ERR(ir->rc5_base)) in tango_ir_probe()
188 return PTR_ERR(ir->rc5_base); in tango_ir_probe()
190 ir->rc6_base = devm_ioremap_resource(dev, rc6_res); in tango_ir_probe()
191 if (IS_ERR(ir->rc6_base)) in tango_ir_probe()
192 return PTR_ERR(ir->rc6_base); in tango_ir_probe()
194 ir->clk = devm_clk_get(dev, NULL); in tango_ir_probe()
195 if (IS_ERR(ir->clk)) in tango_ir_probe()
196 return PTR_ERR(ir->clk); in tango_ir_probe()
200 return -ENOMEM; in tango_ir_probe()
202 of_property_read_string(dev->of_node, "linux,rc-map-name", &map_name); in tango_ir_probe()
204 rc->device_name = DRIVER_NAME; in tango_ir_probe()
205 rc->driver_name = DRIVER_NAME; in tango_ir_probe()
206 rc->input_phys = DRIVER_NAME "/input0"; in tango_ir_probe()
207 rc->map_name = map_name; in tango_ir_probe()
208 rc->allowed_protocols = NEC_ANY | RC_PROTO_BIT_RC5 | RC_PROTO_BIT_RC6_0; in tango_ir_probe()
209 rc->change_protocol = tango_change_protocol; in tango_ir_probe()
210 rc->priv = ir; in tango_ir_probe()
211 ir->rc = rc; in tango_ir_probe()
213 err = clk_prepare_enable(ir->clk); in tango_ir_probe()
217 clkrate = clk_get_rate(ir->clk); in tango_ir_probe()
219 clkdiv = clkrate * NEC_TIME_BASE; in tango_ir_probe()
220 do_div(clkdiv, 1000000); in tango_ir_probe()
222 val = NEC_CAP(31) | GPIO_SEL(12) | clkdiv; in tango_ir_probe()
223 writel_relaxed(val, ir->rc5_base + IR_NEC_CTRL); in tango_ir_probe()
225 clkdiv = clkrate * RC5_TIME_BASE; in tango_ir_probe()
226 do_div(clkdiv, 1000000); in tango_ir_probe()
228 writel_relaxed(DISABLE_NEC, ir->rc5_base + IR_CTRL); in tango_ir_probe()
229 writel_relaxed(clkdiv, ir->rc5_base + IR_RC5_CLK_DIV); in tango_ir_probe()
230 writel_relaxed(ACK_IR_INT, ir->rc5_base + IR_INT); in tango_ir_probe()
232 clkdiv = clkrate * RC6_TIME_BASE; in tango_ir_probe()
233 do_div(clkdiv, RC6_CARRIER); in tango_ir_probe()
235 writel_relaxed(ACK_RC6_INT, ir->rc6_base + RC6_CTRL); in tango_ir_probe()
236 writel_relaxed((clkdiv >> 2) << 18 | clkdiv, ir->rc6_base + RC6_CLKDIV); in tango_ir_probe()
251 clk_disable_unprepare(ir->clk); in tango_ir_probe()
259 clk_disable_unprepare(ir->clk); in tango_ir_remove()
264 { .compatible = "sigma,smp8642-ir" },