Lines Matching full:view
48 struct raw3270_view *view; /* Active view. */ member
92 * Wait queue for device init/delete, view delete.
123 x = max_t(int, 0, rp->view->cols + x); in raw3270_buffer_address()
125 y = max_t(int, 0, rp->view->rows + y); in raw3270_buffer_address()
126 addr = (y * rp->view->cols) + x; in raw3270_buffer_address()
244 static int __raw3270_start(struct raw3270 *rp, struct raw3270_view *view, in __raw3270_start() argument
247 rq->view = view; in __raw3270_start()
248 raw3270_get_view(view); in __raw3270_start()
255 raw3270_put_view(view); in __raw3270_start()
263 int raw3270_view_active(struct raw3270_view *view) in raw3270_view_active() argument
265 struct raw3270 *rp = view->dev; in raw3270_view_active()
267 return rp && rp->view == view; in raw3270_view_active()
270 int raw3270_start(struct raw3270_view *view, struct raw3270_request *rq) in raw3270_start() argument
276 spin_lock_irqsave(get_ccwdev_lock(view->dev->cdev), flags); in raw3270_start()
277 rp = view->dev; in raw3270_start()
278 if (!rp || rp->view != view) in raw3270_start()
283 rc = __raw3270_start(rp, view, rq); in raw3270_start()
284 spin_unlock_irqrestore(get_ccwdev_lock(view->dev->cdev), flags); in raw3270_start()
289 int raw3270_start_request(struct raw3270_view *view, struct raw3270_request *rq, in raw3270_start_request() argument
301 return raw3270_start(view, rq); in raw3270_start_request()
305 int raw3270_start_locked(struct raw3270_view *view, struct raw3270_request *rq) in raw3270_start_locked() argument
310 rp = view->dev; in raw3270_start_locked()
311 if (!rp || rp->view != view) in raw3270_start_locked()
316 rc = __raw3270_start(rp, view, rq); in raw3270_start_locked()
321 int raw3270_start_irq(struct raw3270_view *view, struct raw3270_request *rq) in raw3270_start_irq() argument
325 rp = view->dev; in raw3270_start_irq()
326 rq->view = view; in raw3270_start_irq()
327 raw3270_get_view(view); in raw3270_start_irq()
339 struct raw3270_view *view; in raw3270_irq() local
346 view = rq ? rq->view : rp->view; in raw3270_irq()
363 /* Call interrupt handler of the view */ in raw3270_irq()
364 if (view) in raw3270_irq()
365 view->fn->intv(view, rq, irb); in raw3270_irq()
378 raw3270_put_view(view); in raw3270_irq()
396 raw3270_put_view(view); in raw3270_irq()
534 struct raw3270_view *view; in raw3270_resize_work() local
537 list_for_each_entry(view, &rp->view_list, list) { in raw3270_resize_work()
538 if (view->fn->resize) in raw3270_resize_work()
539 view->fn->resize(view, rp->model, rp->rows, rp->cols, in raw3270_resize_work()
545 /* Setup processing done, now activate a view */ in raw3270_resize_work()
546 list_for_each_entry(view, &rp->view_list, list) { in raw3270_resize_work()
547 rp->view = view; in raw3270_resize_work()
548 if (view->fn->activate(view) == 0) in raw3270_resize_work()
550 rp->view = NULL; in raw3270_resize_work()
556 rp->view = NULL; in raw3270_size_device_done()
563 struct raw3270 *rp = rq->view->dev; in raw3270_read_modified_cb()
610 struct raw3270 *rp = rq->view->dev; in raw3270_reset_device_cb()
631 if (rp->init_reset.view) in __raw3270_reset_device()
657 int raw3270_reset(struct raw3270_view *view) in raw3270_reset() argument
662 rp = view->dev; in raw3270_reset()
663 if (!rp || rp->view != view) in raw3270_reset()
668 rc = raw3270_reset_device(view->dev); in raw3270_reset()
676 struct raw3270_view *view; in __raw3270_disconnect() local
679 rp->view = &rp->init_view; in __raw3270_disconnect()
683 view = rq->view; in __raw3270_disconnect()
688 raw3270_put_view(view); in __raw3270_disconnect()
694 static void raw3270_init_irq(struct raw3270_view *view, struct raw3270_request *rq, in raw3270_init_irq() argument
709 rp = view->dev; in raw3270_init_irq()
750 rp->view = &rp->init_view; in raw3270_setup_device()
876 * view in the panic() context, due to locking restrictions.
878 int raw3270_view_lock_unavailable(struct raw3270_view *view) in raw3270_view_lock_unavailable() argument
880 struct raw3270 *rp = view->dev; in raw3270_view_lock_unavailable()
889 static int raw3270_assign_activate_view(struct raw3270 *rp, struct raw3270_view *view) in raw3270_assign_activate_view() argument
891 rp->view = view; in raw3270_assign_activate_view()
892 return view->fn->activate(view); in raw3270_assign_activate_view()
895 static int __raw3270_activate_view(struct raw3270 *rp, struct raw3270_view *view) in __raw3270_activate_view() argument
900 if (rp->view == view) in __raw3270_activate_view()
906 if (rp->view && rp->view->fn->deactivate) { in __raw3270_activate_view()
907 oldview = rp->view; in __raw3270_activate_view()
911 rc = raw3270_assign_activate_view(rp, view); in __raw3270_activate_view()
915 /* Didn't work. Try to reactivate the old view. */ in __raw3270_activate_view()
922 /* Didn't work as well. Try any other view. */ in __raw3270_activate_view()
924 if (nv == view || nv == oldview) in __raw3270_activate_view()
929 rp->view = NULL; in __raw3270_activate_view()
935 * Activate a view.
937 int raw3270_activate_view(struct raw3270_view *view) in raw3270_activate_view() argument
943 rp = view->dev; in raw3270_activate_view()
947 rc = __raw3270_activate_view(rp, view); in raw3270_activate_view()
954 * Deactivate current view.
956 void raw3270_deactivate_view(struct raw3270_view *view) in raw3270_deactivate_view() argument
961 rp = view->dev; in raw3270_deactivate_view()
965 if (rp->view == view) { in raw3270_deactivate_view()
966 view->fn->deactivate(view); in raw3270_deactivate_view()
967 rp->view = NULL; in raw3270_deactivate_view()
968 /* Move deactivated view to end of list. */ in raw3270_deactivate_view()
969 list_del_init(&view->list); in raw3270_deactivate_view()
970 list_add_tail(&view->list, &rp->view_list); in raw3270_deactivate_view()
971 /* Try to activate another view. */ in raw3270_deactivate_view()
973 list_for_each_entry(view, &rp->view_list, list) { in raw3270_deactivate_view()
974 rp->view = view; in raw3270_deactivate_view()
975 if (view->fn->activate(view) == 0) in raw3270_deactivate_view()
977 rp->view = NULL; in raw3270_deactivate_view()
986 * Add view to device with minor "minor".
988 int raw3270_add_view(struct raw3270_view *view, struct raw3270_fn *fn, in raw3270_add_view() argument
1003 atomic_set(&view->ref_count, 2); in raw3270_add_view()
1004 view->dev = rp; in raw3270_add_view()
1005 view->fn = fn; in raw3270_add_view()
1006 view->model = rp->model; in raw3270_add_view()
1007 view->rows = rp->rows; in raw3270_add_view()
1008 view->cols = rp->cols; in raw3270_add_view()
1009 view->ascebc = rp->ascebc; in raw3270_add_view()
1010 spin_lock_init(&view->lock); in raw3270_add_view()
1011 lockdep_set_subclass(&view->lock, subclass); in raw3270_add_view()
1012 list_add(&view->list, &rp->view_list); in raw3270_add_view()
1023 * Find specific view of device with minor "minor".
1028 struct raw3270_view *view, *tmp; in raw3270_find_view() local
1032 view = ERR_PTR(-ENODEV); in raw3270_find_view()
1040 view = tmp; in raw3270_find_view()
1048 return view; in raw3270_find_view()
1053 * Remove view from device and free view structure via call to view->fn->free.
1055 void raw3270_del_view(struct raw3270_view *view) in raw3270_del_view() argument
1061 rp = view->dev; in raw3270_del_view()
1063 if (rp->view == view) { in raw3270_del_view()
1064 view->fn->deactivate(view); in raw3270_del_view()
1065 rp->view = NULL; in raw3270_del_view()
1067 list_del_init(&view->list); in raw3270_del_view()
1068 if (!rp->view && raw3270_state_ready(rp)) { in raw3270_del_view()
1069 /* Try to activate another view. */ in raw3270_del_view()
1072 rp->view = nv; in raw3270_del_view()
1079 atomic_dec(&view->ref_count); in raw3270_del_view()
1080 wait_event(raw3270_wait_queue, atomic_read(&view->ref_count) == 0); in raw3270_del_view()
1081 if (view->fn->free) in raw3270_del_view()
1082 view->fn->free(view); in raw3270_del_view()
1240 /* Deactivate current view and remove all views. */ in raw3270_remove()
1242 if (rp->view) { in raw3270_remove()
1243 if (rp->view->fn->deactivate) in raw3270_remove()
1244 rp->view->fn->deactivate(rp->view); in raw3270_remove()
1245 rp->view = NULL; in raw3270_remove()