f54               127 drivers/input/rmi4/rmi_f54.c static bool is_f54_report_type_valid(struct f54_data *f54,
f54               132 drivers/input/rmi4/rmi_f54.c 		return f54->capabilities & F54_CAP_IMAGE8;
f54               135 drivers/input/rmi4/rmi_f54.c 		return f54->capabilities & F54_CAP_IMAGE16;
f54               137 drivers/input/rmi4/rmi_f54.c 		return f54->capabilities & F54_CAP_IMAGE16;
f54               146 drivers/input/rmi4/rmi_f54.c static enum rmi_f54_report_type rmi_f54_get_reptype(struct f54_data *f54,
f54               152 drivers/input/rmi4/rmi_f54.c 	return f54->inputs[i];
f54               155 drivers/input/rmi4/rmi_f54.c static void rmi_f54_create_input_map(struct f54_data *f54)
f54               161 drivers/input/rmi4/rmi_f54.c 		if (!is_f54_report_type_valid(f54, reptype))
f54               164 drivers/input/rmi4/rmi_f54.c 		f54->inputs[i++] = reptype;
f54               172 drivers/input/rmi4/rmi_f54.c 	struct f54_data *f54 = dev_get_drvdata(&fn->dev);
f54               177 drivers/input/rmi4/rmi_f54.c 	if (f54->report_type != report_type) {
f54               178 drivers/input/rmi4/rmi_f54.c 		error = rmi_write(rmi_dev, f54->fn->fd.data_base_addr,
f54               182 drivers/input/rmi4/rmi_f54.c 		f54->report_type = report_type;
f54               192 drivers/input/rmi4/rmi_f54.c 	mutex_lock(&f54->data_mutex);
f54               198 drivers/input/rmi4/rmi_f54.c 	init_completion(&f54->cmd_done);
f54               200 drivers/input/rmi4/rmi_f54.c 	f54->is_busy = 1;
f54               201 drivers/input/rmi4/rmi_f54.c 	f54->timeout = jiffies + msecs_to_jiffies(100);
f54               203 drivers/input/rmi4/rmi_f54.c 	queue_delayed_work(f54->workqueue, &f54->work, 0);
f54               206 drivers/input/rmi4/rmi_f54.c 	mutex_unlock(&f54->data_mutex);
f54               211 drivers/input/rmi4/rmi_f54.c static size_t rmi_f54_get_report_size(struct f54_data *f54)
f54               213 drivers/input/rmi4/rmi_f54.c 	struct rmi_device *rmi_dev = f54->fn->rmi_dev;
f54               215 drivers/input/rmi4/rmi_f54.c 	u8 rx = drv_data->num_rx_electrodes ? : f54->num_rx_electrodes;
f54               216 drivers/input/rmi4/rmi_f54.c 	u8 tx = drv_data->num_tx_electrodes ? : f54->num_tx_electrodes;
f54               219 drivers/input/rmi4/rmi_f54.c 	switch (rmi_f54_get_reptype(f54, f54->input)) {
f54               280 drivers/input/rmi4/rmi_f54.c 	struct f54_data *f54 = q->drv_priv;
f54               283 drivers/input/rmi4/rmi_f54.c 		return sizes[0] < rmi_f54_get_report_size(f54) ? -EINVAL : 0;
f54               286 drivers/input/rmi4/rmi_f54.c 	sizes[0] = rmi_f54_get_report_size(f54);
f54               293 drivers/input/rmi4/rmi_f54.c 	struct f54_data *f54 = vb2_get_drv_priv(vb->vb2_queue);
f54               299 drivers/input/rmi4/rmi_f54.c 	mutex_lock(&f54->status_mutex);
f54               301 drivers/input/rmi4/rmi_f54.c 	reptype = rmi_f54_get_reptype(f54, f54->input);
f54               307 drivers/input/rmi4/rmi_f54.c 	if (f54->is_busy) {
f54               312 drivers/input/rmi4/rmi_f54.c 	ret = rmi_f54_request_report(f54->fn, reptype);
f54               314 drivers/input/rmi4/rmi_f54.c 		dev_err(&f54->fn->dev, "Error requesting F54 report\n");
f54               320 drivers/input/rmi4/rmi_f54.c 	mutex_lock(&f54->data_mutex);
f54               322 drivers/input/rmi4/rmi_f54.c 	while (f54->is_busy) {
f54               323 drivers/input/rmi4/rmi_f54.c 		mutex_unlock(&f54->data_mutex);
f54               324 drivers/input/rmi4/rmi_f54.c 		if (!wait_for_completion_timeout(&f54->cmd_done,
f54               326 drivers/input/rmi4/rmi_f54.c 			dev_err(&f54->fn->dev, "Timed out\n");
f54               330 drivers/input/rmi4/rmi_f54.c 		mutex_lock(&f54->data_mutex);
f54               335 drivers/input/rmi4/rmi_f54.c 		dev_err(&f54->fn->dev, "Error acquiring frame ptr\n");
f54               340 drivers/input/rmi4/rmi_f54.c 	memcpy(ptr, f54->report_data, f54->report_size);
f54               341 drivers/input/rmi4/rmi_f54.c 	vb2_set_plane_payload(vb, 0, rmi_f54_get_report_size(f54));
f54               345 drivers/input/rmi4/rmi_f54.c 	mutex_unlock(&f54->data_mutex);
f54               348 drivers/input/rmi4/rmi_f54.c 	mutex_unlock(&f54->status_mutex);
f54               372 drivers/input/rmi4/rmi_f54.c 	struct f54_data *f54 = video_drvdata(file);
f54               377 drivers/input/rmi4/rmi_f54.c 		"rmi4:%s", dev_name(&f54->fn->dev));
f54               385 drivers/input/rmi4/rmi_f54.c 	struct f54_data *f54 = video_drvdata(file);
f54               388 drivers/input/rmi4/rmi_f54.c 	reptype = rmi_f54_get_reptype(f54, i->index);
f54               398 drivers/input/rmi4/rmi_f54.c static int rmi_f54_set_input(struct f54_data *f54, unsigned int i)
f54               400 drivers/input/rmi4/rmi_f54.c 	struct rmi_device *rmi_dev = f54->fn->rmi_dev;
f54               402 drivers/input/rmi4/rmi_f54.c 	u8 rx = drv_data->num_rx_electrodes ? : f54->num_rx_electrodes;
f54               403 drivers/input/rmi4/rmi_f54.c 	u8 tx = drv_data->num_tx_electrodes ? : f54->num_tx_electrodes;
f54               404 drivers/input/rmi4/rmi_f54.c 	struct v4l2_pix_format *f = &f54->format;
f54               408 drivers/input/rmi4/rmi_f54.c 	reptype = rmi_f54_get_reptype(f54, i);
f54               416 drivers/input/rmi4/rmi_f54.c 	f54->input = i;
f54               436 drivers/input/rmi4/rmi_f54.c 	struct f54_data *f54 = video_drvdata(file);
f54               438 drivers/input/rmi4/rmi_f54.c 	*i = f54->input;
f54               446 drivers/input/rmi4/rmi_f54.c 	struct f54_data *f54 = video_drvdata(file);
f54               448 drivers/input/rmi4/rmi_f54.c 	f->fmt.pix = f54->format;
f54               456 drivers/input/rmi4/rmi_f54.c 	struct f54_data *f54 = video_drvdata(file);
f54               464 drivers/input/rmi4/rmi_f54.c 	fmt->pixelformat = f54->format.pixelformat;
f54               516 drivers/input/rmi4/rmi_f54.c 	struct f54_data *f54 = container_of(work, struct f54_data, work.work);
f54               517 drivers/input/rmi4/rmi_f54.c 	struct rmi_function *fn = f54->fn;
f54               525 drivers/input/rmi4/rmi_f54.c 	data = f54->report_data;
f54               526 drivers/input/rmi4/rmi_f54.c 	report_size = rmi_f54_get_report_size(f54);
f54               529 drivers/input/rmi4/rmi_f54.c 				f54->report_type);
f54               533 drivers/input/rmi4/rmi_f54.c 	f54->standard_report[0].size = report_size;
f54               534 drivers/input/rmi4/rmi_f54.c 	report = f54->standard_report;
f54               536 drivers/input/rmi4/rmi_f54.c 	mutex_lock(&f54->data_mutex);
f54               542 drivers/input/rmi4/rmi_f54.c 	error = rmi_read(fn->rmi_dev, f54->fn->fd.command_base_addr,
f54               549 drivers/input/rmi4/rmi_f54.c 		if (time_after(jiffies, f54->timeout)) {
f54               584 drivers/input/rmi4/rmi_f54.c 	f54->report_size = error ? 0 : report_size;
f54               590 drivers/input/rmi4/rmi_f54.c 		queue_delayed_work(f54->workqueue, &f54->work,
f54               593 drivers/input/rmi4/rmi_f54.c 		f54->is_busy = false;
f54               594 drivers/input/rmi4/rmi_f54.c 		complete(&f54->cmd_done);
f54               597 drivers/input/rmi4/rmi_f54.c 	mutex_unlock(&f54->data_mutex);
f54               612 drivers/input/rmi4/rmi_f54.c 	struct f54_data *f54;
f54               615 drivers/input/rmi4/rmi_f54.c 	f54 = dev_get_drvdata(&fn->dev);
f54               625 drivers/input/rmi4/rmi_f54.c 	f54->num_rx_electrodes = buf[0];
f54               626 drivers/input/rmi4/rmi_f54.c 	f54->num_tx_electrodes = buf[1];
f54               627 drivers/input/rmi4/rmi_f54.c 	f54->capabilities = buf[2];
f54               628 drivers/input/rmi4/rmi_f54.c 	f54->clock_rate = buf[3] | (buf[4] << 8);
f54               629 drivers/input/rmi4/rmi_f54.c 	f54->family = buf[5];
f54               632 drivers/input/rmi4/rmi_f54.c 		f54->num_rx_electrodes);
f54               634 drivers/input/rmi4/rmi_f54.c 		f54->num_tx_electrodes);
f54               636 drivers/input/rmi4/rmi_f54.c 		f54->capabilities);
f54               638 drivers/input/rmi4/rmi_f54.c 		f54->clock_rate);
f54               640 drivers/input/rmi4/rmi_f54.c 		f54->family);
f54               642 drivers/input/rmi4/rmi_f54.c 	f54->is_busy = false;
f54               649 drivers/input/rmi4/rmi_f54.c 	struct f54_data *f54;
f54               653 drivers/input/rmi4/rmi_f54.c 	f54 = devm_kzalloc(&fn->dev, sizeof(struct f54_data), GFP_KERNEL);
f54               654 drivers/input/rmi4/rmi_f54.c 	if (!f54)
f54               657 drivers/input/rmi4/rmi_f54.c 	f54->fn = fn;
f54               658 drivers/input/rmi4/rmi_f54.c 	dev_set_drvdata(&fn->dev, f54);
f54               664 drivers/input/rmi4/rmi_f54.c 	mutex_init(&f54->data_mutex);
f54               665 drivers/input/rmi4/rmi_f54.c 	mutex_init(&f54->status_mutex);
f54               667 drivers/input/rmi4/rmi_f54.c 	rx = f54->num_rx_electrodes;
f54               668 drivers/input/rmi4/rmi_f54.c 	tx = f54->num_tx_electrodes;
f54               669 drivers/input/rmi4/rmi_f54.c 	f54->report_data = devm_kzalloc(&fn->dev,
f54               672 drivers/input/rmi4/rmi_f54.c 	if (f54->report_data == NULL)
f54               675 drivers/input/rmi4/rmi_f54.c 	INIT_DELAYED_WORK(&f54->work, rmi_f54_work);
f54               677 drivers/input/rmi4/rmi_f54.c 	f54->workqueue = create_singlethread_workqueue("rmi4-poller");
f54               678 drivers/input/rmi4/rmi_f54.c 	if (!f54->workqueue)
f54               681 drivers/input/rmi4/rmi_f54.c 	rmi_f54_create_input_map(f54);
f54               682 drivers/input/rmi4/rmi_f54.c 	rmi_f54_set_input(f54, 0);
f54               685 drivers/input/rmi4/rmi_f54.c 	strlcpy(f54->v4l2.name, F54_NAME, sizeof(f54->v4l2.name));
f54               686 drivers/input/rmi4/rmi_f54.c 	ret = v4l2_device_register(&fn->dev, &f54->v4l2);
f54               693 drivers/input/rmi4/rmi_f54.c 	mutex_init(&f54->lock);
f54               694 drivers/input/rmi4/rmi_f54.c 	f54->queue = rmi_f54_queue;
f54               695 drivers/input/rmi4/rmi_f54.c 	f54->queue.drv_priv = f54;
f54               696 drivers/input/rmi4/rmi_f54.c 	f54->queue.lock = &f54->lock;
f54               697 drivers/input/rmi4/rmi_f54.c 	f54->queue.dev = &fn->dev;
f54               699 drivers/input/rmi4/rmi_f54.c 	ret = vb2_queue_init(&f54->queue);
f54               703 drivers/input/rmi4/rmi_f54.c 	f54->vdev = rmi_f54_video_device;
f54               704 drivers/input/rmi4/rmi_f54.c 	f54->vdev.v4l2_dev = &f54->v4l2;
f54               705 drivers/input/rmi4/rmi_f54.c 	f54->vdev.lock = &f54->lock;
f54               706 drivers/input/rmi4/rmi_f54.c 	f54->vdev.vfl_dir = VFL_DIR_RX;
f54               707 drivers/input/rmi4/rmi_f54.c 	f54->vdev.queue = &f54->queue;
f54               708 drivers/input/rmi4/rmi_f54.c 	video_set_drvdata(&f54->vdev, f54);
f54               710 drivers/input/rmi4/rmi_f54.c 	ret = video_register_device(&f54->vdev, VFL_TYPE_TOUCH, -1);
f54               719 drivers/input/rmi4/rmi_f54.c 	v4l2_device_unregister(&f54->v4l2);
f54               721 drivers/input/rmi4/rmi_f54.c 	cancel_delayed_work_sync(&f54->work);
f54               722 drivers/input/rmi4/rmi_f54.c 	flush_workqueue(f54->workqueue);
f54               723 drivers/input/rmi4/rmi_f54.c 	destroy_workqueue(f54->workqueue);
f54               729 drivers/input/rmi4/rmi_f54.c 	struct f54_data *f54 = dev_get_drvdata(&fn->dev);
f54               731 drivers/input/rmi4/rmi_f54.c 	video_unregister_device(&f54->vdev);
f54               732 drivers/input/rmi4/rmi_f54.c 	v4l2_device_unregister(&f54->v4l2);
f54               733 drivers/input/rmi4/rmi_f54.c 	destroy_workqueue(f54->workqueue);