Lines Matching refs:view

46 	struct raw3270_view *view;	/* Active view. */
90 * Wait queue for device init/delete, view delete.
239 __raw3270_start(struct raw3270 *rp, struct raw3270_view *view,
242 rq->view = view;
243 raw3270_get_view(view);
250 raw3270_put_view(view);
259 raw3270_view_active(struct raw3270_view *view)
261 struct raw3270 *rp = view->dev;
263 return rp && rp->view == view &&
268 raw3270_start(struct raw3270_view *view, struct raw3270_request *rq)
274 spin_lock_irqsave(get_ccwdev_lock(view->dev->cdev), flags);
275 rp = view->dev;
276 if (!rp || rp->view != view ||
282 rc = __raw3270_start(rp, view, rq);
283 spin_unlock_irqrestore(get_ccwdev_lock(view->dev->cdev), flags);
288 raw3270_start_locked(struct raw3270_view *view, struct raw3270_request *rq)
293 rp = view->dev;
294 if (!rp || rp->view != view ||
300 rc = __raw3270_start(rp, view, rq);
305 raw3270_start_irq(struct raw3270_view *view, struct raw3270_request *rq)
309 rp = view->dev;
310 rq->view = view;
311 raw3270_get_view(view);
323 struct raw3270_view *view;
330 view = rq ? rq->view : rp->view;
347 /* Call interrupt handler of the view */
348 if (view)
349 view->fn->intv(view, rq, irb);
362 raw3270_put_view(view);
380 raw3270_put_view(view);
510 struct raw3270_view *view;
512 rp->view = NULL;
515 list_for_each_entry(view, &rp->view_list, list)
516 if (view->fn->resize)
517 view->fn->resize(view, rp->model, rp->rows, rp->cols);
518 /* Setup processing done, now activate a view */
519 list_for_each_entry(view, &rp->view_list, list) {
520 rp->view = view;
521 if (view->fn->activate(view) == 0)
523 rp->view = NULL;
530 struct raw3270 *rp = rq->view->dev;
577 struct raw3270 *rp = rq->view->dev;
598 if (rp->init_reset.view)
626 raw3270_reset(struct raw3270_view *view)
631 rp = view->dev;
632 if (!rp || rp->view != view ||
638 rc = raw3270_reset_device(view->dev);
646 struct raw3270_view *view;
649 rp->view = &rp->init_view;
653 view = rq->view;
658 raw3270_put_view(view);
665 raw3270_init_irq(struct raw3270_view *view, struct raw3270_request *rq,
680 rp = view->dev;
719 rp->view = &rp->init_view;
839 * Activate a view.
842 raw3270_activate_view(struct raw3270_view *view)
849 rp = view->dev;
853 if (rp->view == view)
861 if (rp->view && rp->view->fn->deactivate) {
862 oldview = rp->view;
865 rp->view = view;
866 rc = view->fn->activate(view);
868 /* Didn't work. Try to reactivate the old view. */
869 rp->view = oldview;
871 /* Didn't work as well. Try any other view. */
873 if (nv != view && nv != oldview) {
874 rp->view = nv;
877 rp->view = NULL;
887 * Deactivate current view.
890 raw3270_deactivate_view(struct raw3270_view *view)
895 rp = view->dev;
899 if (rp->view == view) {
900 view->fn->deactivate(view);
901 rp->view = NULL;
902 /* Move deactivated view to end of list. */
903 list_del_init(&view->list);
904 list_add_tail(&view->list, &rp->view_list);
905 /* Try to activate another view. */
908 list_for_each_entry(view, &rp->view_list, list) {
909 rp->view = view;
910 if (view->fn->activate(view) == 0)
912 rp->view = NULL;
920 * Add view to device with minor "minor".
923 raw3270_add_view(struct raw3270_view *view, struct raw3270_fn *fn, int minor, int subclass)
937 atomic_set(&view->ref_count, 2);
938 view->dev = rp;
939 view->fn = fn;
940 view->model = rp->model;
941 view->rows = rp->rows;
942 view->cols = rp->cols;
943 view->ascebc = rp->ascebc;
944 spin_lock_init(&view->lock);
945 lockdep_set_subclass(&view->lock, subclass);
946 list_add(&view->list, &rp->view_list);
956 * Find specific view of device with minor "minor".
962 struct raw3270_view *view, *tmp;
966 view = ERR_PTR(-ENODEV);
974 view = tmp;
982 return view;
986 * Remove view from device and free view structure via call to view->fn->free.
989 raw3270_del_view(struct raw3270_view *view)
995 rp = view->dev;
997 if (rp->view == view) {
998 view->fn->deactivate(view);
999 rp->view = NULL;
1001 list_del_init(&view->list);
1002 if (!rp->view && raw3270_state_ready(rp) &&
1004 /* Try to activate another view. */
1007 rp->view = nv;
1014 atomic_dec(&view->ref_count);
1015 wait_event(raw3270_wait_queue, atomic_read(&view->ref_count) == 0);
1016 if (view->fn->free)
1017 view->fn->free(view);
1175 /* Deactivate current view and remove all views. */
1177 if (rp->view) {
1178 if (rp->view->fn->deactivate)
1179 rp->view->fn->deactivate(rp->view);
1180 rp->view = NULL;
1221 struct raw3270_view *view;
1228 if (rp->view && rp->view->fn->deactivate)
1229 rp->view->fn->deactivate(rp->view);
1235 list_for_each_entry(view, &rp->view_list, list) {
1236 if (view->fn->release)
1237 view->fn->release(view);
1255 if (rp->view && rp->view->fn->activate)
1256 rp->view->fn->activate(rp->view);
1261 void raw3270_pm_unfreeze(struct raw3270_view *view)
1266 rp = view->dev;