Lines Matching refs:priv

90 #define dbg_reg(dev, priv, reg) \  argument
91 dev_dbg(dev, "%20s= 0x%08x\n", #reg, readl((priv)->regs + reg))
166 static void ts_reg_dump(struct iproc_ts_priv *priv) in ts_reg_dump() argument
168 struct device *dev = &priv->pdev->dev; in ts_reg_dump()
170 dbg_reg(dev, priv, REGCTL1); in ts_reg_dump()
171 dbg_reg(dev, priv, REGCTL2); in ts_reg_dump()
172 dbg_reg(dev, priv, INTERRUPT_THRES); in ts_reg_dump()
173 dbg_reg(dev, priv, INTERRUPT_MASK); in ts_reg_dump()
174 dbg_reg(dev, priv, INTERRUPT_STATUS); in ts_reg_dump()
175 dbg_reg(dev, priv, CONTROLLER_STATUS); in ts_reg_dump()
176 dbg_reg(dev, priv, FIFO_DATA); in ts_reg_dump()
177 dbg_reg(dev, priv, ANALOG_CONTROL); in ts_reg_dump()
178 dbg_reg(dev, priv, AUX_DATA); in ts_reg_dump()
179 dbg_reg(dev, priv, DEBOUNCE_CNTR_STAT); in ts_reg_dump()
180 dbg_reg(dev, priv, SCAN_CNTR_STAT); in ts_reg_dump()
181 dbg_reg(dev, priv, REM_CNTR_STAT); in ts_reg_dump()
182 dbg_reg(dev, priv, SETTLING_TIMER_STAT); in ts_reg_dump()
183 dbg_reg(dev, priv, SPARE_REG); in ts_reg_dump()
184 dbg_reg(dev, priv, SOFT_BYPASS_CONTROL); in ts_reg_dump()
185 dbg_reg(dev, priv, SOFT_BYPASS_DATA); in ts_reg_dump()
191 struct iproc_ts_priv *priv = platform_get_drvdata(pdev); in iproc_touchscreen_interrupt() local
199 intr_status = readl(priv->regs + INTERRUPT_STATUS); in iproc_touchscreen_interrupt()
205 writel(intr_status, priv->regs + INTERRUPT_STATUS); in iproc_touchscreen_interrupt()
209 if (readl(priv->regs + CONTROLLER_STATUS) & TS_PEN_DOWN) in iproc_touchscreen_interrupt()
210 priv->pen_status = PEN_DOWN_STATUS; in iproc_touchscreen_interrupt()
212 priv->pen_status = PEN_UP_STATUS; in iproc_touchscreen_interrupt()
214 input_report_key(priv->idev, BTN_TOUCH, priv->pen_status); in iproc_touchscreen_interrupt()
217 dev_dbg(&priv->pdev->dev, in iproc_touchscreen_interrupt()
218 "pen up-down (%d)\n", priv->pen_status); in iproc_touchscreen_interrupt()
223 for (i = 0; i < priv->cfg_params.fifo_threshold; i++) { in iproc_touchscreen_interrupt()
224 raw_coordinate = readl(priv->regs + FIFO_DATA); in iproc_touchscreen_interrupt()
243 if (priv->cfg_params.invert_x) in iproc_touchscreen_interrupt()
244 x = priv->cfg_params.max_x - x; in iproc_touchscreen_interrupt()
246 if (priv->cfg_params.invert_y) in iproc_touchscreen_interrupt()
247 y = priv->cfg_params.max_y - y; in iproc_touchscreen_interrupt()
249 input_report_abs(priv->idev, ABS_X, x); in iproc_touchscreen_interrupt()
250 input_report_abs(priv->idev, ABS_Y, y); in iproc_touchscreen_interrupt()
253 dev_dbg(&priv->pdev->dev, "xy (0x%x 0x%x)\n", x, y); in iproc_touchscreen_interrupt()
258 input_sync(priv->idev); in iproc_touchscreen_interrupt()
265 struct iproc_ts_priv *priv = input_get_drvdata(idev); in iproc_ts_start() local
270 error = clk_prepare_enable(priv->tsc_clk); in iproc_ts_start()
272 dev_err(&priv->pdev->dev, "%s clk_prepare_enable failed %d\n", in iproc_ts_start()
282 writel(val, priv->regs + INTERRUPT_MASK); in iproc_ts_start()
284 writel(priv->cfg_params.fifo_threshold, priv->regs + INTERRUPT_THRES); in iproc_ts_start()
288 val |= priv->cfg_params.scanning_period << SCANNING_PERIOD_SHIFT; in iproc_ts_start()
289 val |= priv->cfg_params.debounce_timeout << DEBOUNCE_TIMEOUT_SHIFT; in iproc_ts_start()
290 val |= priv->cfg_params.settling_timeout << SETTLING_TIMEOUT_SHIFT; in iproc_ts_start()
291 val |= priv->cfg_params.touch_timeout << TOUCH_TIMEOUT_SHIFT; in iproc_ts_start()
292 writel(val, priv->regs + REGCTL1); in iproc_ts_start()
295 val = readl(priv->regs + INTERRUPT_STATUS); in iproc_ts_start()
297 writel(val, priv->regs + INTERRUPT_STATUS); in iproc_ts_start()
300 val = readl(priv->regs + REGCTL2); in iproc_ts_start()
304 val |= priv->cfg_params.average_data << TS_CONTROLLER_AVGDATA_SHIFT; in iproc_ts_start()
311 writel(val, priv->regs + REGCTL2); in iproc_ts_start()
313 ts_reg_dump(priv); in iproc_ts_start()
321 struct iproc_ts_priv *priv = input_get_drvdata(dev); in iproc_ts_stop() local
323 writel(0, priv->regs + INTERRUPT_MASK); /* Disable all interrupts */ in iproc_ts_stop()
326 val = readl(priv->regs + REGCTL2); in iproc_ts_stop()
328 writel(val, priv->regs + REGCTL2); in iproc_ts_stop()
330 clk_disable(priv->tsc_clk); in iproc_ts_stop()
333 static int iproc_get_tsc_config(struct device *dev, struct iproc_ts_priv *priv) in iproc_get_tsc_config() argument
338 priv->cfg_params = iproc_default_config; in iproc_get_tsc_config()
349 priv->cfg_params.scanning_period = val; in iproc_get_tsc_config()
358 priv->cfg_params.debounce_timeout = val; in iproc_get_tsc_config()
367 priv->cfg_params.settling_timeout = val; in iproc_get_tsc_config()
376 priv->cfg_params.touch_timeout = val; in iproc_get_tsc_config()
384 priv->cfg_params.average_data = val; in iproc_get_tsc_config()
393 priv->cfg_params.fifo_threshold = val; in iproc_get_tsc_config()
397 of_property_read_u32(np, "touchscreen-size-x", &priv->cfg_params.max_x); in iproc_get_tsc_config()
398 of_property_read_u32(np, "touchscreen-size-y", &priv->cfg_params.max_y); in iproc_get_tsc_config()
401 &priv->cfg_params.fuzz_x); in iproc_get_tsc_config()
403 &priv->cfg_params.fuzz_y); in iproc_get_tsc_config()
405 priv->cfg_params.invert_x = in iproc_get_tsc_config()
407 priv->cfg_params.invert_y = in iproc_get_tsc_config()
415 struct iproc_ts_priv *priv; in iproc_ts_probe() local
421 priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL); in iproc_ts_probe()
422 if (!priv) in iproc_ts_probe()
427 priv->regs = devm_ioremap_resource(&pdev->dev, res); in iproc_ts_probe()
428 if (IS_ERR(priv->regs)) { in iproc_ts_probe()
429 error = PTR_ERR(priv->regs); in iproc_ts_probe()
434 priv->tsc_clk = devm_clk_get(&pdev->dev, "tsc_clk"); in iproc_ts_probe()
435 if (IS_ERR(priv->tsc_clk)) { in iproc_ts_probe()
436 error = PTR_ERR(priv->tsc_clk); in iproc_ts_probe()
442 priv->pdev = pdev; in iproc_ts_probe()
443 error = iproc_get_tsc_config(&pdev->dev, priv); in iproc_ts_probe()
455 priv->idev = idev; in iproc_ts_probe()
456 priv->pen_status = PEN_UP_STATUS; in iproc_ts_probe()
470 input_set_abs_params(idev, ABS_X, X_MIN, priv->cfg_params.max_x, in iproc_ts_probe()
471 priv->cfg_params.fuzz_x, 0); in iproc_ts_probe()
472 input_set_abs_params(idev, ABS_Y, Y_MIN, priv->cfg_params.max_y, in iproc_ts_probe()
473 priv->cfg_params.fuzz_y, 0); in iproc_ts_probe()
478 input_set_drvdata(idev, priv); in iproc_ts_probe()
479 platform_set_drvdata(pdev, priv); in iproc_ts_probe()
494 error = input_register_device(priv->idev); in iproc_ts_probe()