Lines Matching full:rp
94 static void __raw3270_disconnect(struct raw3270 *rp);
110 static inline int raw3270_state_ready(struct raw3270 *rp) in raw3270_state_ready() argument
112 return rp->state == RAW3270_STATE_READY; in raw3270_state_ready()
115 static inline int raw3270_state_final(struct raw3270 *rp) in raw3270_state_final() argument
117 return rp->state == RAW3270_STATE_INIT || in raw3270_state_final()
118 rp->state == RAW3270_STATE_READY; in raw3270_state_final()
122 raw3270_buffer_address(struct raw3270 *rp, char *cp, unsigned short addr) in raw3270_buffer_address() argument
124 if (test_bit(RAW3270_FLAGS_14BITADDR, &rp->flags)) { in raw3270_buffer_address()
239 __raw3270_start(struct raw3270 *rp, struct raw3270_view *view, in __raw3270_start() argument
244 if (list_empty(&rp->req_queue) && in __raw3270_start()
245 !test_bit(RAW3270_FLAGS_BUSY, &rp->flags)) { in __raw3270_start()
247 rq->rc = ccw_device_start(rp->cdev, &rq->ccw, in __raw3270_start()
254 list_add_tail(&rq->list, &rp->req_queue); in __raw3270_start()
261 struct raw3270 *rp = view->dev; in raw3270_view_active() local
263 return rp && rp->view == view && in raw3270_view_active()
264 !test_bit(RAW3270_FLAGS_FROZEN, &rp->flags); in raw3270_view_active()
271 struct raw3270 *rp; in raw3270_start() local
275 rp = view->dev; in raw3270_start()
276 if (!rp || rp->view != view || in raw3270_start()
277 test_bit(RAW3270_FLAGS_FROZEN, &rp->flags)) in raw3270_start()
279 else if (!raw3270_state_ready(rp)) in raw3270_start()
282 rc = __raw3270_start(rp, view, rq); in raw3270_start()
290 struct raw3270 *rp; in raw3270_start_locked() local
293 rp = view->dev; in raw3270_start_locked()
294 if (!rp || rp->view != view || in raw3270_start_locked()
295 test_bit(RAW3270_FLAGS_FROZEN, &rp->flags)) in raw3270_start_locked()
297 else if (!raw3270_state_ready(rp)) in raw3270_start_locked()
300 rc = __raw3270_start(rp, view, rq); in raw3270_start_locked()
307 struct raw3270 *rp; in raw3270_start_irq() local
309 rp = view->dev; in raw3270_start_irq()
312 list_add_tail(&rq->list, &rp->req_queue); in raw3270_start_irq()
322 struct raw3270 *rp; in raw3270_irq() local
326 rp = dev_get_drvdata(&cdev->dev); in raw3270_irq()
327 if (!rp) in raw3270_irq()
330 view = rq ? rq->view : rp->view; in raw3270_irq()
335 clear_bit(RAW3270_FLAGS_BUSY, &rp->flags); in raw3270_irq()
339 set_bit(RAW3270_FLAGS_BUSY, &rp->flags); in raw3270_irq()
343 set_bit(RAW3270_FLAGS_BUSY, &rp->flags); in raw3270_irq()
344 if (rp->state > RAW3270_STATE_RESET) in raw3270_irq()
345 __raw3270_disconnect(rp); in raw3270_irq()
352 if (test_bit(RAW3270_FLAGS_BUSY, &rp->flags)) in raw3270_irq()
369 while (!list_empty(&rp->req_queue)) { in raw3270_irq()
370 rq = list_entry(rp->req_queue.next,struct raw3270_request,list); in raw3270_irq()
371 rq->rc = ccw_device_start(rp->cdev, &rq->ccw, in raw3270_irq()
429 raw3270_size_device_vm(struct raw3270 *rp) in raw3270_size_device_vm() argument
435 ccw_device_get_id(rp->cdev, &dev_id); in raw3270_size_device_vm()
445 rp->model = model; in raw3270_size_device_vm()
446 rp->rows = 24; in raw3270_size_device_vm()
447 rp->cols = 80; in raw3270_size_device_vm()
450 rp->model = model; in raw3270_size_device_vm()
451 rp->rows = 32; in raw3270_size_device_vm()
452 rp->cols = 80; in raw3270_size_device_vm()
455 rp->model = model; in raw3270_size_device_vm()
456 rp->rows = 43; in raw3270_size_device_vm()
457 rp->cols = 80; in raw3270_size_device_vm()
460 rp->model = model; in raw3270_size_device_vm()
461 rp->rows = 27; in raw3270_size_device_vm()
462 rp->cols = 132; in raw3270_size_device_vm()
468 raw3270_size_device(struct raw3270 *rp) in raw3270_size_device() argument
473 uap = (struct raw3270_ua *) (rp->init_data + 1); in raw3270_size_device()
475 if (rp->init_readmod.rc || rp->init_data[0] != 0x88 || in raw3270_size_device()
478 rp->model = 2; in raw3270_size_device()
479 rp->rows = 24; in raw3270_size_device()
480 rp->cols = 80; in raw3270_size_device()
484 rp->rows = uap->uab.h; in raw3270_size_device()
485 rp->cols = uap->uab.w; in raw3270_size_device()
488 set_bit(RAW3270_FLAGS_14BITADDR, &rp->flags); in raw3270_size_device()
492 rp->rows = uap->aua.hauai; in raw3270_size_device()
493 rp->cols = uap->aua.wauai; in raw3270_size_device()
496 rp->model = 0; in raw3270_size_device()
497 if (rp->rows == 24 && rp->cols == 80) in raw3270_size_device()
498 rp->model = 2; in raw3270_size_device()
499 if (rp->rows == 32 && rp->cols == 80) in raw3270_size_device()
500 rp->model = 3; in raw3270_size_device()
501 if (rp->rows == 43 && rp->cols == 80) in raw3270_size_device()
502 rp->model = 4; in raw3270_size_device()
503 if (rp->rows == 27 && rp->cols == 132) in raw3270_size_device()
504 rp->model = 5; in raw3270_size_device()
508 raw3270_size_device_done(struct raw3270 *rp) in raw3270_size_device_done() argument
512 rp->view = NULL; in raw3270_size_device_done()
513 rp->state = RAW3270_STATE_READY; in raw3270_size_device_done()
515 list_for_each_entry(view, &rp->view_list, list) in raw3270_size_device_done()
517 view->fn->resize(view, rp->model, rp->rows, rp->cols); in raw3270_size_device_done()
519 list_for_each_entry(view, &rp->view_list, list) { in raw3270_size_device_done()
520 rp->view = view; in raw3270_size_device_done()
523 rp->view = NULL; in raw3270_size_device_done()
530 struct raw3270 *rp = rq->view->dev; in raw3270_read_modified_cb() local
532 raw3270_size_device(rp); in raw3270_read_modified_cb()
533 raw3270_size_device_done(rp); in raw3270_read_modified_cb()
537 raw3270_read_modified(struct raw3270 *rp) in raw3270_read_modified() argument
539 if (rp->state != RAW3270_STATE_W4ATTN) in raw3270_read_modified()
542 memset(&rp->init_readmod, 0, sizeof(rp->init_readmod)); in raw3270_read_modified()
543 memset(&rp->init_data, 0, sizeof(rp->init_data)); in raw3270_read_modified()
544 rp->init_readmod.ccw.cmd_code = TC_READMOD; in raw3270_read_modified()
545 rp->init_readmod.ccw.flags = CCW_FLAG_SLI; in raw3270_read_modified()
546 rp->init_readmod.ccw.count = sizeof(rp->init_data); in raw3270_read_modified()
547 rp->init_readmod.ccw.cda = (__u32) __pa(rp->init_data); in raw3270_read_modified()
548 rp->init_readmod.callback = raw3270_read_modified_cb; in raw3270_read_modified()
549 rp->state = RAW3270_STATE_READMOD; in raw3270_read_modified()
550 raw3270_start_irq(&rp->init_view, &rp->init_readmod); in raw3270_read_modified()
554 raw3270_writesf_readpart(struct raw3270 *rp) in raw3270_writesf_readpart() argument
560 memset(&rp->init_readpart, 0, sizeof(rp->init_readpart)); in raw3270_writesf_readpart()
561 memset(&rp->init_data, 0, sizeof(rp->init_data)); in raw3270_writesf_readpart()
562 memcpy(&rp->init_data, wbuf, sizeof(wbuf)); in raw3270_writesf_readpart()
563 rp->init_readpart.ccw.cmd_code = TC_WRITESF; in raw3270_writesf_readpart()
564 rp->init_readpart.ccw.flags = CCW_FLAG_SLI; in raw3270_writesf_readpart()
565 rp->init_readpart.ccw.count = sizeof(wbuf); in raw3270_writesf_readpart()
566 rp->init_readpart.ccw.cda = (__u32) __pa(&rp->init_data); in raw3270_writesf_readpart()
567 rp->state = RAW3270_STATE_W4ATTN; in raw3270_writesf_readpart()
568 raw3270_start_irq(&rp->init_view, &rp->init_readpart); in raw3270_writesf_readpart()
577 struct raw3270 *rp = rq->view->dev; in raw3270_reset_device_cb() local
579 if (rp->state != RAW3270_STATE_RESET) in raw3270_reset_device_cb()
583 rp->state = RAW3270_STATE_INIT; in raw3270_reset_device_cb()
585 raw3270_size_device_vm(rp); in raw3270_reset_device_cb()
586 raw3270_size_device_done(rp); in raw3270_reset_device_cb()
588 raw3270_writesf_readpart(rp); in raw3270_reset_device_cb()
589 memset(&rp->init_reset, 0, sizeof(rp->init_reset)); in raw3270_reset_device_cb()
593 __raw3270_reset_device(struct raw3270 *rp) in __raw3270_reset_device() argument
598 if (rp->init_reset.view) in __raw3270_reset_device()
601 rp->init_data[0] = TW_KR; in __raw3270_reset_device()
602 rp->init_reset.ccw.cmd_code = TC_EWRITEA; in __raw3270_reset_device()
603 rp->init_reset.ccw.flags = CCW_FLAG_SLI; in __raw3270_reset_device()
604 rp->init_reset.ccw.count = 1; in __raw3270_reset_device()
605 rp->init_reset.ccw.cda = (__u32) __pa(rp->init_data); in __raw3270_reset_device()
606 rp->init_reset.callback = raw3270_reset_device_cb; in __raw3270_reset_device()
607 rc = __raw3270_start(rp, &rp->init_view, &rp->init_reset); in __raw3270_reset_device()
608 if (rc == 0 && rp->state == RAW3270_STATE_INIT) in __raw3270_reset_device()
609 rp->state = RAW3270_STATE_RESET; in __raw3270_reset_device()
614 raw3270_reset_device(struct raw3270 *rp) in raw3270_reset_device() argument
619 spin_lock_irqsave(get_ccwdev_lock(rp->cdev), flags); in raw3270_reset_device()
620 rc = __raw3270_reset_device(rp); in raw3270_reset_device()
621 spin_unlock_irqrestore(get_ccwdev_lock(rp->cdev), flags); in raw3270_reset_device()
628 struct raw3270 *rp; in raw3270_reset() local
631 rp = view->dev; in raw3270_reset()
632 if (!rp || rp->view != view || in raw3270_reset()
633 test_bit(RAW3270_FLAGS_FROZEN, &rp->flags)) in raw3270_reset()
635 else if (!raw3270_state_ready(rp)) in raw3270_reset()
643 __raw3270_disconnect(struct raw3270 *rp) in __raw3270_disconnect() argument
648 rp->state = RAW3270_STATE_INIT; in __raw3270_disconnect()
649 rp->view = &rp->init_view; in __raw3270_disconnect()
651 while (!list_empty(&rp->req_queue)) { in __raw3270_disconnect()
652 rq = list_entry(rp->req_queue.next,struct raw3270_request,list); in __raw3270_disconnect()
661 __raw3270_reset_device(rp); in __raw3270_disconnect()
668 struct raw3270 *rp; in raw3270_init_irq() local
680 rp = view->dev; in raw3270_init_irq()
681 raw3270_read_modified(rp); in raw3270_init_irq()
693 raw3270_setup_device(struct ccw_device *cdev, struct raw3270 *rp, char *ascebc) in raw3270_setup_device() argument
699 memset(rp, 0, sizeof(struct raw3270)); in raw3270_setup_device()
708 rp->ascebc = ascebc; in raw3270_setup_device()
711 rp->rows = 24; in raw3270_setup_device()
712 rp->cols = 80; in raw3270_setup_device()
714 INIT_LIST_HEAD(&rp->req_queue); in raw3270_setup_device()
715 INIT_LIST_HEAD(&rp->view_list); in raw3270_setup_device()
717 rp->init_view.dev = rp; in raw3270_setup_device()
718 rp->init_view.fn = &raw3270_init_fn; in raw3270_setup_device()
719 rp->view = &rp->init_view; in raw3270_setup_device()
729 rp->minor = -1; in raw3270_setup_device()
733 rp->minor = minor; in raw3270_setup_device()
734 __list_add(&rp->list, l->prev, l); in raw3270_setup_device()
739 if (rp->minor == -1 && minor < RAW3270_MAXDEVS + RAW3270_FIRSTMINOR) { in raw3270_setup_device()
740 rp->minor = minor; in raw3270_setup_device()
741 list_add_tail(&rp->list, &raw3270_devices); in raw3270_setup_device()
745 if (rp->minor == -1) in raw3270_setup_device()
747 rp->cdev = cdev; in raw3270_setup_device()
748 dev_set_drvdata(&cdev->dev, rp); in raw3270_setup_device()
764 struct raw3270 *rp; in raw3270_setup_console() local
772 rp = kzalloc(sizeof(struct raw3270), GFP_KERNEL | GFP_DMA); in raw3270_setup_console()
774 rc = raw3270_setup_device(cdev, rp, ascebc); in raw3270_setup_console()
777 set_bit(RAW3270_FLAGS_CONSOLE, &rp->flags); in raw3270_setup_console()
785 spin_lock_irqsave(get_ccwdev_lock(rp->cdev), flags); in raw3270_setup_console()
787 __raw3270_reset_device(rp); in raw3270_setup_console()
788 while (!raw3270_state_final(rp)) { in raw3270_setup_console()
789 ccw_device_wait_idle(rp->cdev); in raw3270_setup_console()
792 } while (rp->state != RAW3270_STATE_READY); in raw3270_setup_console()
793 spin_unlock_irqrestore(get_ccwdev_lock(rp->cdev), flags); in raw3270_setup_console()
794 return rp; in raw3270_setup_console()
798 raw3270_wait_cons_dev(struct raw3270 *rp) in raw3270_wait_cons_dev() argument
802 spin_lock_irqsave(get_ccwdev_lock(rp->cdev), flags); in raw3270_wait_cons_dev()
803 ccw_device_wait_idle(rp->cdev); in raw3270_wait_cons_dev()
804 spin_unlock_irqrestore(get_ccwdev_lock(rp->cdev), flags); in raw3270_wait_cons_dev()
815 struct raw3270 *rp; in raw3270_create_device() local
819 rp = kzalloc(sizeof(struct raw3270), GFP_KERNEL | GFP_DMA); in raw3270_create_device()
820 if (!rp) in raw3270_create_device()
824 kfree(rp); in raw3270_create_device()
827 rc = raw3270_setup_device(cdev, rp, ascebc); in raw3270_create_device()
829 kfree(rp->ascebc); in raw3270_create_device()
830 kfree(rp); in raw3270_create_device()
831 rp = ERR_PTR(rc); in raw3270_create_device()
835 return rp; in raw3270_create_device()
844 struct raw3270 *rp; in raw3270_activate_view() local
849 rp = view->dev; in raw3270_activate_view()
850 if (!rp) in raw3270_activate_view()
852 spin_lock_irqsave(get_ccwdev_lock(rp->cdev), flags); in raw3270_activate_view()
853 if (rp->view == view) in raw3270_activate_view()
855 else if (!raw3270_state_ready(rp)) in raw3270_activate_view()
857 else if (test_bit(RAW3270_FLAGS_FROZEN, &rp->flags)) in raw3270_activate_view()
861 if (rp->view && rp->view->fn->deactivate) { in raw3270_activate_view()
862 oldview = rp->view; in raw3270_activate_view()
865 rp->view = view; in raw3270_activate_view()
869 rp->view = oldview; in raw3270_activate_view()
872 list_for_each_entry(nv, &rp->view_list, list) in raw3270_activate_view()
874 rp->view = nv; in raw3270_activate_view()
877 rp->view = NULL; in raw3270_activate_view()
882 spin_unlock_irqrestore(get_ccwdev_lock(rp->cdev), flags); in raw3270_activate_view()
893 struct raw3270 *rp; in raw3270_deactivate_view() local
895 rp = view->dev; in raw3270_deactivate_view()
896 if (!rp) in raw3270_deactivate_view()
898 spin_lock_irqsave(get_ccwdev_lock(rp->cdev), flags); in raw3270_deactivate_view()
899 if (rp->view == view) { in raw3270_deactivate_view()
901 rp->view = NULL; in raw3270_deactivate_view()
904 list_add_tail(&view->list, &rp->view_list); in raw3270_deactivate_view()
906 if (raw3270_state_ready(rp) && in raw3270_deactivate_view()
907 !test_bit(RAW3270_FLAGS_FROZEN, &rp->flags)) { in raw3270_deactivate_view()
908 list_for_each_entry(view, &rp->view_list, list) { in raw3270_deactivate_view()
909 rp->view = view; in raw3270_deactivate_view()
912 rp->view = NULL; in raw3270_deactivate_view()
916 spin_unlock_irqrestore(get_ccwdev_lock(rp->cdev), flags); in raw3270_deactivate_view()
926 struct raw3270 *rp; in raw3270_add_view() local
933 list_for_each_entry(rp, &raw3270_devices, list) { in raw3270_add_view()
934 if (rp->minor != minor) in raw3270_add_view()
936 spin_lock_irqsave(get_ccwdev_lock(rp->cdev), flags); in raw3270_add_view()
938 view->dev = rp; in raw3270_add_view()
940 view->model = rp->model; in raw3270_add_view()
941 view->rows = rp->rows; in raw3270_add_view()
942 view->cols = rp->cols; in raw3270_add_view()
943 view->ascebc = rp->ascebc; in raw3270_add_view()
946 list_add(&view->list, &rp->view_list); in raw3270_add_view()
948 spin_unlock_irqrestore(get_ccwdev_lock(rp->cdev), flags); in raw3270_add_view()
961 struct raw3270 *rp; in raw3270_find_view() local
967 list_for_each_entry(rp, &raw3270_devices, list) { in raw3270_find_view()
968 if (rp->minor != minor) in raw3270_find_view()
970 spin_lock_irqsave(get_ccwdev_lock(rp->cdev), flags); in raw3270_find_view()
971 list_for_each_entry(tmp, &rp->view_list, list) { in raw3270_find_view()
978 spin_unlock_irqrestore(get_ccwdev_lock(rp->cdev), flags); in raw3270_find_view()
992 struct raw3270 *rp; in raw3270_del_view() local
995 rp = view->dev; in raw3270_del_view()
996 spin_lock_irqsave(get_ccwdev_lock(rp->cdev), flags); in raw3270_del_view()
997 if (rp->view == view) { in raw3270_del_view()
999 rp->view = NULL; in raw3270_del_view()
1002 if (!rp->view && raw3270_state_ready(rp) && in raw3270_del_view()
1003 !test_bit(RAW3270_FLAGS_FROZEN, &rp->flags)) { in raw3270_del_view()
1005 list_for_each_entry(nv, &rp->view_list, list) { in raw3270_del_view()
1007 rp->view = nv; in raw3270_del_view()
1012 spin_unlock_irqrestore(get_ccwdev_lock(rp->cdev), flags); in raw3270_del_view()
1024 raw3270_delete_device(struct raw3270 *rp) in raw3270_delete_device() argument
1030 list_del_init(&rp->list); in raw3270_delete_device()
1034 cdev = rp->cdev; in raw3270_delete_device()
1035 rp->cdev = NULL; in raw3270_delete_device()
1043 kfree(rp->ascebc); in raw3270_delete_device()
1044 kfree(rp); in raw3270_delete_device()
1091 static int raw3270_create_attributes(struct raw3270 *rp) in raw3270_create_attributes() argument
1093 return sysfs_create_group(&rp->cdev->dev.kobj, &raw3270_attr_group); in raw3270_create_attributes()
1103 struct raw3270 *rp; in raw3270_register_notifier() local
1107 list_for_each_entry(rp, &raw3270_devices, list) in raw3270_register_notifier()
1108 notifier->create(rp->minor); in raw3270_register_notifier()
1115 struct raw3270 *rp; in raw3270_unregister_notifier() local
1118 list_for_each_entry(rp, &raw3270_devices, list) in raw3270_unregister_notifier()
1119 notifier->destroy(rp->minor); in raw3270_unregister_notifier()
1131 struct raw3270 *rp; in raw3270_set_online() local
1134 rp = raw3270_create_device(cdev); in raw3270_set_online()
1135 if (IS_ERR(rp)) in raw3270_set_online()
1136 return PTR_ERR(rp); in raw3270_set_online()
1137 rc = raw3270_create_attributes(rp); in raw3270_set_online()
1140 raw3270_reset_device(rp); in raw3270_set_online()
1143 np->create(rp->minor); in raw3270_set_online()
1148 raw3270_delete_device(rp); in raw3270_set_online()
1159 struct raw3270 *rp; in raw3270_remove() local
1163 rp = dev_get_drvdata(&cdev->dev); in raw3270_remove()
1166 * should set up rp. raw3270_remove gets entered for in raw3270_remove()
1168 * Thus, rp may validly be NULL here. in raw3270_remove()
1170 if (rp == NULL) in raw3270_remove()
1177 if (rp->view) { in raw3270_remove()
1178 if (rp->view->fn->deactivate) in raw3270_remove()
1179 rp->view->fn->deactivate(rp->view); in raw3270_remove()
1180 rp->view = NULL; in raw3270_remove()
1182 while (!list_empty(&rp->view_list)) { in raw3270_remove()
1183 v = list_entry(rp->view_list.next, struct raw3270_view, list); in raw3270_remove()
1194 np->destroy(rp->minor); in raw3270_remove()
1198 raw3270_reset_device(rp); in raw3270_remove()
1200 raw3270_delete_device(rp); in raw3270_remove()
1209 struct raw3270 *rp; in raw3270_set_offline() local
1211 rp = dev_get_drvdata(&cdev->dev); in raw3270_set_offline()
1212 if (test_bit(RAW3270_FLAGS_CONSOLE, &rp->flags)) in raw3270_set_offline()
1220 struct raw3270 *rp; in raw3270_pm_stop() local
1224 rp = dev_get_drvdata(&cdev->dev); in raw3270_pm_stop()
1225 if (!rp) in raw3270_pm_stop()
1227 spin_lock_irqsave(get_ccwdev_lock(rp->cdev), flags); in raw3270_pm_stop()
1228 if (rp->view && rp->view->fn->deactivate) in raw3270_pm_stop()
1229 rp->view->fn->deactivate(rp->view); in raw3270_pm_stop()
1230 if (!test_bit(RAW3270_FLAGS_CONSOLE, &rp->flags)) { in raw3270_pm_stop()
1235 list_for_each_entry(view, &rp->view_list, list) { in raw3270_pm_stop()
1240 set_bit(RAW3270_FLAGS_FROZEN, &rp->flags); in raw3270_pm_stop()
1241 spin_unlock_irqrestore(get_ccwdev_lock(rp->cdev), flags); in raw3270_pm_stop()
1247 struct raw3270 *rp; in raw3270_pm_start() local
1250 rp = dev_get_drvdata(&cdev->dev); in raw3270_pm_start()
1251 if (!rp) in raw3270_pm_start()
1253 spin_lock_irqsave(get_ccwdev_lock(rp->cdev), flags); in raw3270_pm_start()
1254 clear_bit(RAW3270_FLAGS_FROZEN, &rp->flags); in raw3270_pm_start()
1255 if (rp->view && rp->view->fn->activate) in raw3270_pm_start()
1256 rp->view->fn->activate(rp->view); in raw3270_pm_start()
1257 spin_unlock_irqrestore(get_ccwdev_lock(rp->cdev), flags); in raw3270_pm_start()
1264 struct raw3270 *rp; in raw3270_pm_unfreeze() local
1266 rp = view->dev; in raw3270_pm_unfreeze()
1267 if (rp && test_bit(RAW3270_FLAGS_FROZEN, &rp->flags)) in raw3270_pm_unfreeze()
1268 ccw_device_force_console(rp->cdev); in raw3270_pm_unfreeze()
1306 struct raw3270 *rp; in raw3270_init() local
1317 list_for_each_entry(rp, &raw3270_devices, list) { in raw3270_init()
1318 get_device(&rp->cdev->dev); in raw3270_init()
1319 raw3270_create_attributes(rp); in raw3270_init()