vrp               130 drivers/rpmsg/virtio_rpmsg_bus.c 	struct virtproc_info *vrp;
vrp               232 drivers/rpmsg/virtio_rpmsg_bus.c static struct rpmsg_endpoint *__rpmsg_create_ept(struct virtproc_info *vrp,
vrp               239 drivers/rpmsg/virtio_rpmsg_bus.c 	struct device *dev = rpdev ? &rpdev->dev : &vrp->vdev->dev;
vrp               262 drivers/rpmsg/virtio_rpmsg_bus.c 	mutex_lock(&vrp->endpoints_lock);
vrp               265 drivers/rpmsg/virtio_rpmsg_bus.c 	id = idr_alloc(&vrp->endpoints, ept, id_min, id_max, GFP_KERNEL);
vrp               272 drivers/rpmsg/virtio_rpmsg_bus.c 	mutex_unlock(&vrp->endpoints_lock);
vrp               277 drivers/rpmsg/virtio_rpmsg_bus.c 	mutex_unlock(&vrp->endpoints_lock);
vrp               289 drivers/rpmsg/virtio_rpmsg_bus.c 	return __rpmsg_create_ept(vch->vrp, rpdev, cb, priv, chinfo.src);
vrp               303 drivers/rpmsg/virtio_rpmsg_bus.c __rpmsg_destroy_ept(struct virtproc_info *vrp, struct rpmsg_endpoint *ept)
vrp               306 drivers/rpmsg/virtio_rpmsg_bus.c 	mutex_lock(&vrp->endpoints_lock);
vrp               307 drivers/rpmsg/virtio_rpmsg_bus.c 	idr_remove(&vrp->endpoints, ept->addr);
vrp               308 drivers/rpmsg/virtio_rpmsg_bus.c 	mutex_unlock(&vrp->endpoints_lock);
vrp               322 drivers/rpmsg/virtio_rpmsg_bus.c 	__rpmsg_destroy_ept(vch->vrp, ept);
vrp               328 drivers/rpmsg/virtio_rpmsg_bus.c 	struct virtproc_info *vrp = vch->vrp;
vrp               334 drivers/rpmsg/virtio_rpmsg_bus.c 	    virtio_has_feature(vrp->vdev, VIRTIO_RPMSG_F_NS)) {
vrp               352 drivers/rpmsg/virtio_rpmsg_bus.c 	struct virtproc_info *vrp = vch->vrp;
vrp               358 drivers/rpmsg/virtio_rpmsg_bus.c 	    virtio_has_feature(vrp->vdev, VIRTIO_RPMSG_F_NS)) {
vrp               392 drivers/rpmsg/virtio_rpmsg_bus.c static struct rpmsg_device *rpmsg_create_channel(struct virtproc_info *vrp,
vrp               397 drivers/rpmsg/virtio_rpmsg_bus.c 	struct device *tmp, *dev = &vrp->vdev->dev;
vrp               415 drivers/rpmsg/virtio_rpmsg_bus.c 	vch->vrp = vrp;
vrp               431 drivers/rpmsg/virtio_rpmsg_bus.c 	rpdev->dev.parent = &vrp->vdev->dev;
vrp               441 drivers/rpmsg/virtio_rpmsg_bus.c static void *get_a_tx_buf(struct virtproc_info *vrp)
vrp               447 drivers/rpmsg/virtio_rpmsg_bus.c 	mutex_lock(&vrp->tx_lock);
vrp               453 drivers/rpmsg/virtio_rpmsg_bus.c 	if (vrp->last_sbuf < vrp->num_bufs / 2)
vrp               454 drivers/rpmsg/virtio_rpmsg_bus.c 		ret = vrp->sbufs + vrp->buf_size * vrp->last_sbuf++;
vrp               457 drivers/rpmsg/virtio_rpmsg_bus.c 		ret = virtqueue_get_buf(vrp->svq, &len);
vrp               459 drivers/rpmsg/virtio_rpmsg_bus.c 	mutex_unlock(&vrp->tx_lock);
vrp               480 drivers/rpmsg/virtio_rpmsg_bus.c static void rpmsg_upref_sleepers(struct virtproc_info *vrp)
vrp               483 drivers/rpmsg/virtio_rpmsg_bus.c 	mutex_lock(&vrp->tx_lock);
vrp               486 drivers/rpmsg/virtio_rpmsg_bus.c 	if (atomic_inc_return(&vrp->sleepers) == 1)
vrp               488 drivers/rpmsg/virtio_rpmsg_bus.c 		virtqueue_enable_cb(vrp->svq);
vrp               490 drivers/rpmsg/virtio_rpmsg_bus.c 	mutex_unlock(&vrp->tx_lock);
vrp               507 drivers/rpmsg/virtio_rpmsg_bus.c static void rpmsg_downref_sleepers(struct virtproc_info *vrp)
vrp               510 drivers/rpmsg/virtio_rpmsg_bus.c 	mutex_lock(&vrp->tx_lock);
vrp               513 drivers/rpmsg/virtio_rpmsg_bus.c 	if (atomic_dec_and_test(&vrp->sleepers))
vrp               515 drivers/rpmsg/virtio_rpmsg_bus.c 		virtqueue_disable_cb(vrp->svq);
vrp               517 drivers/rpmsg/virtio_rpmsg_bus.c 	mutex_unlock(&vrp->tx_lock);
vrp               559 drivers/rpmsg/virtio_rpmsg_bus.c 	struct virtproc_info *vrp = vch->vrp;
vrp               580 drivers/rpmsg/virtio_rpmsg_bus.c 	if (len > vrp->buf_size - sizeof(struct rpmsg_hdr)) {
vrp               586 drivers/rpmsg/virtio_rpmsg_bus.c 	msg = get_a_tx_buf(vrp);
vrp               593 drivers/rpmsg/virtio_rpmsg_bus.c 		rpmsg_upref_sleepers(vrp);
vrp               601 drivers/rpmsg/virtio_rpmsg_bus.c 		err = wait_event_interruptible_timeout(vrp->sendq,
vrp               602 drivers/rpmsg/virtio_rpmsg_bus.c 					(msg = get_a_tx_buf(vrp)),
vrp               606 drivers/rpmsg/virtio_rpmsg_bus.c 		rpmsg_downref_sleepers(vrp);
vrp               631 drivers/rpmsg/virtio_rpmsg_bus.c 	mutex_lock(&vrp->tx_lock);
vrp               634 drivers/rpmsg/virtio_rpmsg_bus.c 	err = virtqueue_add_outbuf(vrp->svq, &sg, 1, msg, GFP_KERNEL);
vrp               646 drivers/rpmsg/virtio_rpmsg_bus.c 	virtqueue_kick(vrp->svq);
vrp               648 drivers/rpmsg/virtio_rpmsg_bus.c 	mutex_unlock(&vrp->tx_lock);
vrp               702 drivers/rpmsg/virtio_rpmsg_bus.c static int rpmsg_recv_single(struct virtproc_info *vrp, struct device *dev,
vrp               720 drivers/rpmsg/virtio_rpmsg_bus.c 	if (len > vrp->buf_size ||
vrp               727 drivers/rpmsg/virtio_rpmsg_bus.c 	mutex_lock(&vrp->endpoints_lock);
vrp               729 drivers/rpmsg/virtio_rpmsg_bus.c 	ept = idr_find(&vrp->endpoints, msg->dst);
vrp               735 drivers/rpmsg/virtio_rpmsg_bus.c 	mutex_unlock(&vrp->endpoints_lock);
vrp               753 drivers/rpmsg/virtio_rpmsg_bus.c 	rpmsg_sg_init(&sg, msg, vrp->buf_size);
vrp               756 drivers/rpmsg/virtio_rpmsg_bus.c 	err = virtqueue_add_inbuf(vrp->rvq, &sg, 1, msg, GFP_KERNEL);
vrp               768 drivers/rpmsg/virtio_rpmsg_bus.c 	struct virtproc_info *vrp = rvq->vdev->priv;
vrp               781 drivers/rpmsg/virtio_rpmsg_bus.c 		err = rpmsg_recv_single(vrp, dev, msg, len);
vrp               794 drivers/rpmsg/virtio_rpmsg_bus.c 		virtqueue_kick(vrp->rvq);
vrp               806 drivers/rpmsg/virtio_rpmsg_bus.c 	struct virtproc_info *vrp = svq->vdev->priv;
vrp               811 drivers/rpmsg/virtio_rpmsg_bus.c 	wake_up_interruptible(&vrp->sendq);
vrp               821 drivers/rpmsg/virtio_rpmsg_bus.c 	struct virtproc_info *vrp = priv;
vrp               822 drivers/rpmsg/virtio_rpmsg_bus.c 	struct device *dev = &vrp->vdev->dev;
vrp               858 drivers/rpmsg/virtio_rpmsg_bus.c 		ret = rpmsg_unregister_device(&vrp->vdev->dev, &chinfo);
vrp               862 drivers/rpmsg/virtio_rpmsg_bus.c 		newch = rpmsg_create_channel(vrp, &chinfo);
vrp               875 drivers/rpmsg/virtio_rpmsg_bus.c 	struct virtproc_info *vrp;
vrp               881 drivers/rpmsg/virtio_rpmsg_bus.c 	vrp = kzalloc(sizeof(*vrp), GFP_KERNEL);
vrp               882 drivers/rpmsg/virtio_rpmsg_bus.c 	if (!vrp)
vrp               885 drivers/rpmsg/virtio_rpmsg_bus.c 	vrp->vdev = vdev;
vrp               887 drivers/rpmsg/virtio_rpmsg_bus.c 	idr_init(&vrp->endpoints);
vrp               888 drivers/rpmsg/virtio_rpmsg_bus.c 	mutex_init(&vrp->endpoints_lock);
vrp               889 drivers/rpmsg/virtio_rpmsg_bus.c 	mutex_init(&vrp->tx_lock);
vrp               890 drivers/rpmsg/virtio_rpmsg_bus.c 	init_waitqueue_head(&vrp->sendq);
vrp               897 drivers/rpmsg/virtio_rpmsg_bus.c 	vrp->rvq = vqs[0];
vrp               898 drivers/rpmsg/virtio_rpmsg_bus.c 	vrp->svq = vqs[1];
vrp               901 drivers/rpmsg/virtio_rpmsg_bus.c 	WARN_ON(virtqueue_get_vring_size(vrp->rvq) !=
vrp               902 drivers/rpmsg/virtio_rpmsg_bus.c 		virtqueue_get_vring_size(vrp->svq));
vrp               905 drivers/rpmsg/virtio_rpmsg_bus.c 	if (virtqueue_get_vring_size(vrp->rvq) < MAX_RPMSG_NUM_BUFS / 2)
vrp               906 drivers/rpmsg/virtio_rpmsg_bus.c 		vrp->num_bufs = virtqueue_get_vring_size(vrp->rvq) * 2;
vrp               908 drivers/rpmsg/virtio_rpmsg_bus.c 		vrp->num_bufs = MAX_RPMSG_NUM_BUFS;
vrp               910 drivers/rpmsg/virtio_rpmsg_bus.c 	vrp->buf_size = MAX_RPMSG_BUF_SIZE;
vrp               912 drivers/rpmsg/virtio_rpmsg_bus.c 	total_buf_space = vrp->num_bufs * vrp->buf_size;
vrp               916 drivers/rpmsg/virtio_rpmsg_bus.c 				     total_buf_space, &vrp->bufs_dma,
vrp               924 drivers/rpmsg/virtio_rpmsg_bus.c 		bufs_va, &vrp->bufs_dma);
vrp               927 drivers/rpmsg/virtio_rpmsg_bus.c 	vrp->rbufs = bufs_va;
vrp               930 drivers/rpmsg/virtio_rpmsg_bus.c 	vrp->sbufs = bufs_va + total_buf_space / 2;
vrp               933 drivers/rpmsg/virtio_rpmsg_bus.c 	for (i = 0; i < vrp->num_bufs / 2; i++) {
vrp               935 drivers/rpmsg/virtio_rpmsg_bus.c 		void *cpu_addr = vrp->rbufs + i * vrp->buf_size;
vrp               937 drivers/rpmsg/virtio_rpmsg_bus.c 		rpmsg_sg_init(&sg, cpu_addr, vrp->buf_size);
vrp               939 drivers/rpmsg/virtio_rpmsg_bus.c 		err = virtqueue_add_inbuf(vrp->rvq, &sg, 1, cpu_addr,
vrp               945 drivers/rpmsg/virtio_rpmsg_bus.c 	virtqueue_disable_cb(vrp->svq);
vrp               947 drivers/rpmsg/virtio_rpmsg_bus.c 	vdev->priv = vrp;
vrp               952 drivers/rpmsg/virtio_rpmsg_bus.c 		vrp->ns_ept = __rpmsg_create_ept(vrp, NULL, rpmsg_ns_cb,
vrp               953 drivers/rpmsg/virtio_rpmsg_bus.c 						vrp, RPMSG_NS_ADDR);
vrp               954 drivers/rpmsg/virtio_rpmsg_bus.c 		if (!vrp->ns_ept) {
vrp               965 drivers/rpmsg/virtio_rpmsg_bus.c 	notify = virtqueue_kick_prepare(vrp->rvq);
vrp               976 drivers/rpmsg/virtio_rpmsg_bus.c 		virtqueue_notify(vrp->rvq);
vrp               984 drivers/rpmsg/virtio_rpmsg_bus.c 			  bufs_va, vrp->bufs_dma);
vrp               986 drivers/rpmsg/virtio_rpmsg_bus.c 	vdev->config->del_vqs(vrp->vdev);
vrp               988 drivers/rpmsg/virtio_rpmsg_bus.c 	kfree(vrp);
vrp              1001 drivers/rpmsg/virtio_rpmsg_bus.c 	struct virtproc_info *vrp = vdev->priv;
vrp              1002 drivers/rpmsg/virtio_rpmsg_bus.c 	size_t total_buf_space = vrp->num_bufs * vrp->buf_size;
vrp              1011 drivers/rpmsg/virtio_rpmsg_bus.c 	if (vrp->ns_ept)
vrp              1012 drivers/rpmsg/virtio_rpmsg_bus.c 		__rpmsg_destroy_ept(vrp, vrp->ns_ept);
vrp              1014 drivers/rpmsg/virtio_rpmsg_bus.c 	idr_destroy(&vrp->endpoints);
vrp              1016 drivers/rpmsg/virtio_rpmsg_bus.c 	vdev->config->del_vqs(vrp->vdev);
vrp              1019 drivers/rpmsg/virtio_rpmsg_bus.c 			  vrp->rbufs, vrp->bufs_dma);
vrp              1021 drivers/rpmsg/virtio_rpmsg_bus.c 	kfree(vrp);