Lines Matching refs:sisusb
94 sisusb_initialize(struct sisusb_usb_data *sisusb) in sisusb_initialize() argument
97 if (sisusb_setidxreg(sisusb, SISCR, 0x0c, 0x00)) in sisusb_initialize()
99 if (sisusb_setidxreg(sisusb, SISCR, 0x0d, 0x00)) in sisusb_initialize()
101 if (sisusb_setidxreg(sisusb, SISCR, 0x0e, 0x00)) in sisusb_initialize()
103 sisusb_setidxreg(sisusb, SISCR, 0x0f, 0x00); in sisusb_initialize()
107 sisusbcon_set_start_address(struct sisusb_usb_data *sisusb, struct vc_data *c) in sisusbcon_set_start_address() argument
109 sisusb->cur_start_addr = (c->vc_visible_origin - sisusb->scrbuf) / 2; in sisusbcon_set_start_address()
111 sisusb_setidxreg(sisusb, SISCR, 0x0c, (sisusb->cur_start_addr >> 8)); in sisusbcon_set_start_address()
112 sisusb_setidxreg(sisusb, SISCR, 0x0d, (sisusb->cur_start_addr & 0xff)); in sisusbcon_set_start_address()
116 sisusb_set_cursor(struct sisusb_usb_data *sisusb, unsigned int location) in sisusb_set_cursor() argument
118 if (sisusb->sisusb_cursor_loc == location) in sisusb_set_cursor()
121 sisusb->sisusb_cursor_loc = location; in sisusb_set_cursor()
129 sisusb->bad_cursor_pos = 1; in sisusb_set_cursor()
131 if (sisusb_setidxregandor(sisusb, SISCR, 0x0b, 0x1f, 0x20)) in sisusb_set_cursor()
133 } else if (sisusb->bad_cursor_pos) { in sisusb_set_cursor()
134 if (sisusb_setidxregand(sisusb, SISCR, 0x0b, 0x1f)) in sisusb_set_cursor()
136 sisusb->bad_cursor_pos = 0; in sisusb_set_cursor()
139 if (sisusb_setidxreg(sisusb, SISCR, 0x0e, (location >> 8))) in sisusb_set_cursor()
141 sisusb_setidxreg(sisusb, SISCR, 0x0f, (location & 0xff)); in sisusb_set_cursor()
151 sisusb_sisusb_valid(struct sisusb_usb_data *sisusb) in sisusb_sisusb_valid() argument
153 if (!sisusb->present || !sisusb->ready || !sisusb->sisusb_dev) in sisusb_sisusb_valid()
162 struct sisusb_usb_data *sisusb; in sisusb_get_sisusb_lock_and_check() local
172 sisusb = sisusb_get_sisusb(console); in sisusb_get_sisusb_lock_and_check()
173 if (!sisusb) in sisusb_get_sisusb_lock_and_check()
176 mutex_lock(&sisusb->lock); in sisusb_get_sisusb_lock_and_check()
178 if (!sisusb_sisusb_valid(sisusb) || in sisusb_get_sisusb_lock_and_check()
179 !sisusb->havethisconsole[console]) { in sisusb_get_sisusb_lock_and_check()
180 mutex_unlock(&sisusb->lock); in sisusb_get_sisusb_lock_and_check()
184 return sisusb; in sisusb_get_sisusb_lock_and_check()
188 sisusb_is_inactive(struct vc_data *c, struct sisusb_usb_data *sisusb) in sisusb_is_inactive() argument
190 if (sisusb->is_gfx || in sisusb_is_inactive()
191 sisusb->textmodedestroyed || in sisusb_is_inactive()
209 struct sisusb_usb_data *sisusb; in sisusbcon_init() local
218 sisusb = sisusb_get_sisusb(c->vc_num); in sisusbcon_init()
219 if (!sisusb) in sisusbcon_init()
222 mutex_lock(&sisusb->lock); in sisusbcon_init()
224 if (!sisusb_sisusb_valid(sisusb)) { in sisusbcon_init()
225 mutex_unlock(&sisusb->lock); in sisusbcon_init()
233 c->vc_hi_font_mask = sisusb->current_font_512 ? 0x0800 : 0; in sisusbcon_init()
235 sisusb->haveconsole = 1; in sisusbcon_init()
237 sisusb->havethisconsole[c->vc_num] = 1; in sisusbcon_init()
242 c->vc_font.height = sisusb->current_font_height; in sisusbcon_init()
257 kref_get(&sisusb->kref); in sisusbcon_init()
262 mutex_unlock(&sisusb->lock); in sisusbcon_init()
275 struct sisusb_usb_data *sisusb; in sisusbcon_deinit() local
282 sisusb = sisusb_get_sisusb(c->vc_num); in sisusbcon_deinit()
283 if (!sisusb) in sisusbcon_deinit()
286 mutex_lock(&sisusb->lock); in sisusbcon_deinit()
291 sisusb->havethisconsole[c->vc_num] = 0; in sisusbcon_deinit()
294 if (sisusb->font_backup) { in sisusbcon_deinit()
296 if (sisusb->havethisconsole[c->vc_num]) in sisusbcon_deinit()
300 vfree(sisusb->font_backup); in sisusbcon_deinit()
301 sisusb->font_backup = NULL; in sisusbcon_deinit()
305 mutex_unlock(&sisusb->lock); in sisusbcon_deinit()
308 kref_put(&sisusb->kref, sisusb_delete); in sisusbcon_deinit()
360 (y) * sisusb->sisusb_num_columns + \
364 ((u16 *)(sisusb->vrambase + (c->vc_origin - sisusb->scrbuf)) + \
365 (y) * sisusb->sisusb_num_columns + \
372 struct sisusb_usb_data *sisusb; in sisusbcon_putc() local
375 sisusb = sisusb_get_sisusb_lock_and_check(c->vc_num); in sisusbcon_putc()
376 if (!sisusb) in sisusbcon_putc()
380 if (sisusb_is_inactive(c, sisusb)) { in sisusbcon_putc()
381 mutex_unlock(&sisusb->lock); in sisusbcon_putc()
386 sisusb_copy_memory(sisusb, (char *)SISUSB_VADDR(x, y), in sisusbcon_putc()
389 mutex_unlock(&sisusb->lock); in sisusbcon_putc()
397 struct sisusb_usb_data *sisusb; in sisusbcon_putcs() local
402 sisusb = sisusb_get_sisusb_lock_and_check(c->vc_num); in sisusbcon_putcs()
403 if (!sisusb) in sisusbcon_putcs()
417 if (sisusb_is_inactive(c, sisusb)) { in sisusbcon_putcs()
418 mutex_unlock(&sisusb->lock); in sisusbcon_putcs()
422 sisusb_copy_memory(sisusb, (char *)SISUSB_VADDR(x, y), in sisusbcon_putcs()
425 mutex_unlock(&sisusb->lock); in sisusbcon_putcs()
432 struct sisusb_usb_data *sisusb; in sisusbcon_clear() local
441 sisusb = sisusb_get_sisusb_lock_and_check(c->vc_num); in sisusbcon_clear()
442 if (!sisusb) in sisusbcon_clear()
453 cols = sisusb->sisusb_num_columns; in sisusbcon_clear()
469 if (sisusb_is_inactive(c, sisusb)) { in sisusbcon_clear()
470 mutex_unlock(&sisusb->lock); in sisusbcon_clear()
477 sisusb_copy_memory(sisusb, (unsigned char *)SISUSB_VADDR(x, y), in sisusbcon_clear()
480 mutex_unlock(&sisusb->lock); in sisusbcon_clear()
488 struct sisusb_usb_data *sisusb; in sisusbcon_bmove() local
495 sisusb = sisusb_get_sisusb_lock_and_check(c->vc_num); in sisusbcon_bmove()
496 if (!sisusb) in sisusbcon_bmove()
501 cols = sisusb->sisusb_num_columns; in sisusbcon_bmove()
503 if (sisusb_is_inactive(c, sisusb)) { in sisusbcon_bmove()
504 mutex_unlock(&sisusb->lock); in sisusbcon_bmove()
511 sisusb_copy_memory(sisusb, (unsigned char *)SISUSB_VADDR(dx, dy), in sisusbcon_bmove()
514 mutex_unlock(&sisusb->lock); in sisusbcon_bmove()
521 struct sisusb_usb_data *sisusb; in sisusbcon_switch() local
530 sisusb = sisusb_get_sisusb_lock_and_check(c->vc_num); in sisusbcon_switch()
531 if (!sisusb) in sisusbcon_switch()
537 if (sisusb_is_inactive(c, sisusb)) { in sisusbcon_switch()
538 mutex_unlock(&sisusb->lock); in sisusbcon_switch()
547 mutex_unlock(&sisusb->lock); in sisusbcon_switch()
548 dev_dbg(&sisusb->sisusb_dev->dev, "ASSERT ORIGIN != SCREENBUF!\n"); in sisusbcon_switch()
554 (int)(sisusb->scrbuf + sisusb->scrbuf_size - c->vc_origin)); in sisusbcon_switch()
560 sisusb_copy_memory(sisusb, (unsigned char *)c->vc_origin, in sisusbcon_switch()
564 mutex_unlock(&sisusb->lock); in sisusbcon_switch()
573 struct sisusb_usb_data *sisusb; in sisusbcon_save_screen() local
580 sisusb = sisusb_get_sisusb_lock_and_check(c->vc_num); in sisusbcon_save_screen()
581 if (!sisusb) in sisusbcon_save_screen()
586 if (sisusb_is_inactive(c, sisusb)) { in sisusbcon_save_screen()
587 mutex_unlock(&sisusb->lock); in sisusbcon_save_screen()
593 (int)(sisusb->scrbuf + sisusb->scrbuf_size - c->vc_origin)); in sisusbcon_save_screen()
599 mutex_unlock(&sisusb->lock); in sisusbcon_save_screen()
606 struct sisusb_usb_data *sisusb; in sisusbcon_set_palette() local
614 sisusb = sisusb_get_sisusb_lock_and_check(c->vc_num); in sisusbcon_set_palette()
615 if (!sisusb) in sisusbcon_set_palette()
620 if (sisusb_is_inactive(c, sisusb)) { in sisusbcon_set_palette()
621 mutex_unlock(&sisusb->lock); in sisusbcon_set_palette()
626 if (sisusb_setreg(sisusb, SISCOLIDX, table[i])) in sisusbcon_set_palette()
628 if (sisusb_setreg(sisusb, SISCOLDATA, c->vc_palette[j++] >> 2)) in sisusbcon_set_palette()
630 if (sisusb_setreg(sisusb, SISCOLDATA, c->vc_palette[j++] >> 2)) in sisusbcon_set_palette()
632 if (sisusb_setreg(sisusb, SISCOLDATA, c->vc_palette[j++] >> 2)) in sisusbcon_set_palette()
636 mutex_unlock(&sisusb->lock); in sisusbcon_set_palette()
645 struct sisusb_usb_data *sisusb; in sisusbcon_blank() local
650 sisusb = sisusb_get_sisusb_lock_and_check(c->vc_num); in sisusbcon_blank()
651 if (!sisusb) in sisusbcon_blank()
657 sisusb->is_gfx = blank ? 1 : 0; in sisusbcon_blank()
659 if (sisusb_is_inactive(c, sisusb)) { in sisusbcon_blank()
660 mutex_unlock(&sisusb->lock); in sisusbcon_blank()
671 sisusb_copy_memory(sisusb, in sisusbcon_blank()
673 (u32)(sisusb->vrambase + in sisusbcon_blank()
674 (c->vc_origin - sisusb->scrbuf)), in sisusbcon_blank()
676 sisusb->con_blanked = 1; in sisusbcon_blank()
688 sisusb->con_blanked = 0; in sisusbcon_blank()
709 mutex_unlock(&sisusb->lock); in sisusbcon_blank()
713 sisusb_setidxregandor(sisusb, SISSR, 0x01, ~0x20, sr1); in sisusbcon_blank()
714 sisusb_setidxregandor(sisusb, SISCR, 0x17, 0x7f, cr17); in sisusbcon_blank()
715 sisusb_setidxregandor(sisusb, SISSR, 0x1f, 0x3f, pmreg); in sisusbcon_blank()
716 sisusb_setidxregandor(sisusb, SISCR, 0x63, 0xbf, cr63); in sisusbcon_blank()
720 mutex_unlock(&sisusb->lock); in sisusbcon_blank()
729 struct sisusb_usb_data *sisusb; in sisusbcon_scrolldelta() local
735 sisusb = sisusb_get_sisusb_lock_and_check(c->vc_num); in sisusbcon_scrolldelta()
736 if (!sisusb) in sisusbcon_scrolldelta()
741 if (sisusb_is_inactive(c, sisusb)) { in sisusbcon_scrolldelta()
742 mutex_unlock(&sisusb->lock); in sisusbcon_scrolldelta()
750 if (sisusb->con_rolled_over > in sisusbcon_scrolldelta()
751 (c->vc_scr_end - sisusb->scrbuf) + margin) { in sisusbcon_scrolldelta()
753 ul = c->vc_scr_end - sisusb->scrbuf; in sisusbcon_scrolldelta()
754 we = sisusb->con_rolled_over + c->vc_size_row; in sisusbcon_scrolldelta()
759 we = sisusb->scrbuf_size; in sisusbcon_scrolldelta()
763 p = (c->vc_visible_origin - sisusb->scrbuf - ul + we) % we + in sisusbcon_scrolldelta()
766 st = (c->vc_origin - sisusb->scrbuf - ul + we) % we; in sisusbcon_scrolldelta()
777 c->vc_visible_origin = sisusb->scrbuf + (p + ul) % we; in sisusbcon_scrolldelta()
780 sisusbcon_set_start_address(sisusb, c); in sisusbcon_scrolldelta()
782 mutex_unlock(&sisusb->lock); in sisusbcon_scrolldelta()
791 struct sisusb_usb_data *sisusb; in sisusbcon_cursor() local
794 sisusb = sisusb_get_sisusb_lock_and_check(c->vc_num); in sisusbcon_cursor()
795 if (!sisusb) in sisusbcon_cursor()
800 if (sisusb_is_inactive(c, sisusb)) { in sisusbcon_cursor()
801 mutex_unlock(&sisusb->lock); in sisusbcon_cursor()
807 sisusbcon_set_start_address(sisusb, c); in sisusbcon_cursor()
811 sisusb_setidxregor(sisusb, SISCR, 0x0a, 0x20); in sisusbcon_cursor()
812 sisusb->sisusb_cursor_size_to = -1; in sisusbcon_cursor()
813 mutex_unlock(&sisusb->lock); in sisusbcon_cursor()
817 sisusb_set_cursor(sisusb, (c->vc_pos - sisusb->scrbuf) / 2); in sisusbcon_cursor()
843 if (sisusb->sisusb_cursor_size_from != from || in sisusbcon_cursor()
844 sisusb->sisusb_cursor_size_to != to) { in sisusbcon_cursor()
846 sisusb_setidxreg(sisusb, SISCR, 0x0a, from); in sisusbcon_cursor()
847 sisusb_setidxregandor(sisusb, SISCR, 0x0b, 0xe0, to); in sisusbcon_cursor()
849 sisusb->sisusb_cursor_size_from = from; in sisusbcon_cursor()
850 sisusb->sisusb_cursor_size_to = to; in sisusbcon_cursor()
853 mutex_unlock(&sisusb->lock); in sisusbcon_cursor()
857 sisusbcon_scroll_area(struct vc_data *c, struct sisusb_usb_data *sisusb, in sisusbcon_scroll_area() argument
860 int cols = sisusb->sisusb_num_columns; in sisusbcon_scroll_area()
892 sisusb_copy_memory(sisusb, (char *)SISUSB_VADDR(0, t), in sisusbcon_scroll_area()
895 mutex_unlock(&sisusb->lock); in sisusbcon_scroll_area()
904 struct sisusb_usb_data *sisusb; in sisusbcon_scroll() local
922 sisusb = sisusb_get_sisusb_lock_and_check(c->vc_num); in sisusbcon_scroll()
923 if (!sisusb) in sisusbcon_scroll()
928 if (sisusb_is_inactive(c, sisusb)) { in sisusbcon_scroll()
929 mutex_unlock(&sisusb->lock); in sisusbcon_scroll()
935 return sisusbcon_scroll_area(c, sisusb, t, b, dir, lines); in sisusbcon_scroll()
939 sisusbcon_set_start_address(sisusb, c); in sisusbcon_scroll()
953 sisusb->scrbuf + sisusb->scrbuf_size) { in sisusbcon_scroll()
954 sisusbcon_memcpyw((u16 *)sisusb->scrbuf, in sisusbcon_scroll()
957 c->vc_origin = sisusb->scrbuf; in sisusbcon_scroll()
958 sisusb->con_rolled_over = oldorigin - sisusb->scrbuf; in sisusbcon_scroll()
971 if (oldorigin - delta < sisusb->scrbuf) { in sisusbcon_scroll()
972 sisusbcon_memmovew((u16 *)(sisusb->scrbuf + in sisusbcon_scroll()
973 sisusb->scrbuf_size - in sisusbcon_scroll()
978 c->vc_origin = sisusb->scrbuf + in sisusbcon_scroll()
979 sisusb->scrbuf_size - in sisusbcon_scroll()
981 sisusb->con_rolled_over = 0; in sisusbcon_scroll()
993 originoffset = (u32)(c->vc_origin - sisusb->scrbuf); in sisusbcon_scroll()
996 sisusb_copy_memory(sisusb, in sisusbcon_scroll()
998 (u32)(sisusb->vrambase + originoffset), in sisusbcon_scroll()
1001 sisusb_copy_memory(sisusb, in sisusbcon_scroll()
1003 (u32)sisusb->vrambase + originoffset + in sisusbcon_scroll()
1007 sisusb_copy_memory(sisusb, in sisusbcon_scroll()
1009 (u32)(sisusb->vrambase + originoffset), in sisusbcon_scroll()
1015 sisusbcon_set_start_address(sisusb, c); in sisusbcon_scroll()
1019 mutex_unlock(&sisusb->lock); in sisusbcon_scroll()
1028 struct sisusb_usb_data *sisusb; in sisusbcon_set_origin() local
1035 sisusb = sisusb_get_sisusb_lock_and_check(c->vc_num); in sisusbcon_set_origin()
1036 if (!sisusb) in sisusbcon_set_origin()
1041 if (sisusb_is_inactive(c, sisusb) || sisusb->con_blanked) { in sisusbcon_set_origin()
1042 mutex_unlock(&sisusb->lock); in sisusbcon_set_origin()
1046 c->vc_origin = c->vc_visible_origin = sisusb->scrbuf; in sisusbcon_set_origin()
1048 sisusbcon_set_start_address(sisusb, c); in sisusbcon_set_origin()
1050 sisusb->con_rolled_over = 0; in sisusbcon_set_origin()
1052 mutex_unlock(&sisusb->lock); in sisusbcon_set_origin()
1062 struct sisusb_usb_data *sisusb; in sisusbcon_resize() local
1065 sisusb = sisusb_get_sisusb_lock_and_check(c->vc_num); in sisusbcon_resize()
1066 if (!sisusb) in sisusbcon_resize()
1069 fh = sisusb->current_font_height; in sisusbcon_resize()
1071 mutex_unlock(&sisusb->lock); in sisusbcon_resize()
1087 sisusbcon_do_font_op(struct sisusb_usb_data *sisusb, int set, int slot, in sisusbcon_do_font_op() argument
1105 mutex_unlock(&sisusb->lock); in sisusbcon_do_font_op()
1110 sisusb->font_slot = slot; in sisusbcon_do_font_op()
1120 err |= sisusb_setidxreg(sisusb, SISSR, 0x00, 0x01); /* Reset */ in sisusbcon_do_font_op()
1121 err |= sisusb_setidxreg(sisusb, SISSR, 0x02, 0x04); /* Write to plane 2 */ in sisusbcon_do_font_op()
1122 err |= sisusb_setidxreg(sisusb, SISSR, 0x04, 0x07); /* Memory mode a0-bf */ in sisusbcon_do_font_op()
1123 err |= sisusb_setidxreg(sisusb, SISSR, 0x00, 0x03); /* Reset */ in sisusbcon_do_font_op()
1128 err |= sisusb_setidxreg(sisusb, SISGR, 0x04, 0x03); /* Select plane read 2 */ in sisusbcon_do_font_op()
1129 err |= sisusb_setidxreg(sisusb, SISGR, 0x05, 0x00); /* Disable odd/even */ in sisusbcon_do_font_op()
1130 err |= sisusb_setidxreg(sisusb, SISGR, 0x06, 0x00); /* Address range a0-bf */ in sisusbcon_do_font_op()
1138 err |= sisusb_writeb(sisusb, in sisusbcon_do_font_op()
1139 sisusb->vrambase + offset + i, in sisusbcon_do_font_op()
1146 err |= sisusb_readb(sisusb, in sisusbcon_do_font_op()
1147 sisusb->vrambase + offset + i, in sisusbcon_do_font_op()
1161 err |= sisusb_writeb(sisusb, in sisusbcon_do_font_op()
1162 sisusb->vrambase + offset + in sisusbcon_do_font_op()
1170 err |= sisusb_readb(sisusb, in sisusbcon_do_font_op()
1171 sisusb->vrambase + offset + in sisusbcon_do_font_op()
1183 err |= sisusb_setidxreg(sisusb, SISSR, 0x00, 0x01); /* Reset */ in sisusbcon_do_font_op()
1184 err |= sisusb_setidxreg(sisusb, SISSR, 0x02, 0x03); /* Write to planes 0+1 */ in sisusbcon_do_font_op()
1185 err |= sisusb_setidxreg(sisusb, SISSR, 0x04, 0x03); /* Memory mode a0-bf */ in sisusbcon_do_font_op()
1187 sisusb_setidxreg(sisusb, SISSR, 0x03, font_select); in sisusbcon_do_font_op()
1188 err |= sisusb_setidxreg(sisusb, SISSR, 0x00, 0x03); /* Reset end */ in sisusbcon_do_font_op()
1193 err |= sisusb_setidxreg(sisusb, SISGR, 0x04, 0x00); /* Select plane read 0 */ in sisusbcon_do_font_op()
1194 err |= sisusb_setidxreg(sisusb, SISGR, 0x05, 0x10); /* Enable odd/even */ in sisusbcon_do_font_op()
1195 err |= sisusb_setidxreg(sisusb, SISGR, 0x06, 0x06); /* Address range b8-bf */ in sisusbcon_do_font_op()
1200 if ((set) && (ch512 != sisusb->current_font_512)) { in sisusbcon_do_font_op()
1211 sisusb->current_font_512 = ch512; in sisusbcon_do_font_op()
1216 sisusb_getreg(sisusb, SISINPSTAT, &dummy); in sisusbcon_do_font_op()
1217 sisusb_setreg(sisusb, SISAR, 0x12); in sisusbcon_do_font_op()
1218 sisusb_setreg(sisusb, SISAR, ch512 ? 0x07 : 0x0f); in sisusbcon_do_font_op()
1220 sisusb_getreg(sisusb, SISINPSTAT, &dummy); in sisusbcon_do_font_op()
1221 sisusb_setreg(sisusb, SISAR, 0x20); in sisusbcon_do_font_op()
1222 sisusb_getreg(sisusb, SISINPSTAT, &dummy); in sisusbcon_do_font_op()
1244 sisusb_getidxreg(sisusb, SISCR, 0x07, &ovr); in sisusbcon_do_font_op()
1249 sisusb_setidxreg(sisusb, SISCR, 0x07, ovr); in sisusbcon_do_font_op()
1250 sisusb_setidxreg(sisusb, SISCR, 0x12, vde); in sisusbcon_do_font_op()
1254 sisusb_getidxreg(sisusb, SISCR, 0x09, &fsr); in sisusbcon_do_font_op()
1256 sisusb_setidxreg(sisusb, SISCR, 0x09, fsr); in sisusbcon_do_font_op()
1257 sisusb->current_font_height = fh; in sisusbcon_do_font_op()
1259 sisusb->sisusb_cursor_size_from = -1; in sisusbcon_do_font_op()
1260 sisusb->sisusb_cursor_size_to = -1; in sisusbcon_do_font_op()
1265 mutex_unlock(&sisusb->lock); in sisusbcon_do_font_op()
1289 mutex_unlock(&sisusb->lock); in sisusbcon_do_font_op()
1299 struct sisusb_usb_data *sisusb; in sisusbcon_font_set() local
1305 sisusb = sisusb_get_sisusb_lock_and_check(c->vc_num); in sisusbcon_font_set()
1306 if (!sisusb) in sisusbcon_font_set()
1315 if (sisusb->font_backup) { in sisusbcon_font_set()
1316 if (sisusb->font_backup_size < charcount) { in sisusbcon_font_set()
1317 vfree(sisusb->font_backup); in sisusbcon_font_set()
1318 sisusb->font_backup = NULL; in sisusbcon_font_set()
1322 if (!sisusb->font_backup) in sisusbcon_font_set()
1323 sisusb->font_backup = vmalloc(charcount * 32); in sisusbcon_font_set()
1325 if (sisusb->font_backup) { in sisusbcon_font_set()
1326 memcpy(sisusb->font_backup, font->data, charcount * 32); in sisusbcon_font_set()
1327 sisusb->font_backup_size = charcount; in sisusbcon_font_set()
1328 sisusb->font_backup_height = font->height; in sisusbcon_font_set()
1329 sisusb->font_backup_512 = (charcount == 512) ? 1 : 0; in sisusbcon_font_set()
1334 return sisusbcon_do_font_op(sisusb, 1, 2, font->data, in sisusbcon_font_set()
1344 struct sisusb_usb_data *sisusb; in sisusbcon_font_get() local
1346 sisusb = sisusb_get_sisusb_lock_and_check(c->vc_num); in sisusbcon_font_get()
1347 if (!sisusb) in sisusbcon_font_get()
1357 mutex_unlock(&sisusb->lock); in sisusbcon_font_get()
1361 if (!sisusb->font_backup) { in sisusbcon_font_get()
1362 mutex_unlock(&sisusb->lock); in sisusbcon_font_get()
1367 memcpy(font->data, sisusb->font_backup, 256 * 32); in sisusbcon_font_get()
1369 mutex_unlock(&sisusb->lock); in sisusbcon_font_get()
1448 sisusb_console_init(struct sisusb_usb_data *sisusb, int first, int last) in sisusb_console_init() argument
1452 mutex_lock(&sisusb->lock); in sisusb_console_init()
1455 if (sisusb->haveconsole || !sisusb->SiS_Pr) { in sisusb_console_init()
1456 mutex_unlock(&sisusb->lock); in sisusb_console_init()
1460 sisusb->con_first = first; in sisusb_console_init()
1461 sisusb->con_last = last; in sisusb_console_init()
1466 mutex_unlock(&sisusb->lock); in sisusb_console_init()
1471 if (!sisusb->gfxinit || first < 1 || last < 1) { in sisusb_console_init()
1472 mutex_unlock(&sisusb->lock); in sisusb_console_init()
1476 sisusb->sisusb_cursor_loc = -1; in sisusb_console_init()
1477 sisusb->sisusb_cursor_size_from = -1; in sisusb_console_init()
1478 sisusb->sisusb_cursor_size_to = -1; in sisusb_console_init()
1481 if (sisusb_reset_text_mode(sisusb, 1)) { in sisusb_console_init()
1482 mutex_unlock(&sisusb->lock); in sisusb_console_init()
1483 dev_err(&sisusb->sisusb_dev->dev, "Failed to set up text mode\n"); in sisusb_console_init()
1488 sisusb_initialize(sisusb); in sisusb_console_init()
1492 mysisusbs[i] = sisusb; in sisusb_console_init()
1496 sisusb->sisusb_num_columns = 80; in sisusb_console_init()
1499 sisusb->scrbuf_size = 32 * 1024; in sisusb_console_init()
1502 if (!(sisusb->scrbuf = (unsigned long)vmalloc(sisusb->scrbuf_size))) { in sisusb_console_init()
1503 mutex_unlock(&sisusb->lock); in sisusb_console_init()
1504 dev_err(&sisusb->sisusb_dev->dev, "Failed to allocate screen buffer\n"); in sisusb_console_init()
1508 mutex_unlock(&sisusb->lock); in sisusb_console_init()
1515 sisusb->haveconsole = 1; in sisusb_console_init()
1525 sisusb_console_exit(struct sisusb_usb_data *sisusb) in sisusb_console_exit() argument
1555 if (sisusb->haveconsole) { in sisusb_console_exit()
1557 if (sisusb->havethisconsole[i]) { in sisusb_console_exit()
1565 sisusb->haveconsole = 0; in sisusb_console_exit()
1568 vfree((void *)sisusb->scrbuf); in sisusb_console_exit()
1569 sisusb->scrbuf = 0; in sisusb_console_exit()
1571 vfree(sisusb->font_backup); in sisusb_console_exit()
1572 sisusb->font_backup = NULL; in sisusb_console_exit()