forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
kernel/drivers/usb/misc/sisusbvga/sisusb_con.c
....@@ -70,13 +70,6 @@
7070 #include "sisusb.h"
7171 #include "sisusb_init.h"
7272
73
-#ifdef INCL_SISUSB_CON
74
-
75
-#define sisusbcon_writew(val, addr) (*(addr) = (val))
76
-#define sisusbcon_readw(addr) (*(addr))
77
-#define sisusbcon_memmovew(d, s, c) memmove(d, s, c)
78
-#define sisusbcon_memcpyw(d, s, c) memcpy(d, s, c)
79
-
8073 /* vc_data -> sisusb conversion table */
8174 static struct sisusb_usb_data *mysisusbs[MAX_NR_CONSOLES];
8275
....@@ -86,9 +79,7 @@
8679 static inline void
8780 sisusbcon_memsetw(u16 *s, u16 c, unsigned int count)
8881 {
89
- count /= 2;
90
- while (count--)
91
- sisusbcon_writew(c, s++);
82
+ memset16(s, c, count / 2);
9283 }
9384
9485 static inline void
....@@ -311,14 +302,15 @@
311302
312303 /* interface routine */
313304 static u8
314
-sisusbcon_build_attr(struct vc_data *c, u8 color, u8 intensity,
315
- u8 blink, u8 underline, u8 reverse, u8 unused)
305
+sisusbcon_build_attr(struct vc_data *c, u8 color, enum vc_intensity intensity,
306
+ bool blink, bool underline, bool reverse,
307
+ bool unused)
316308 {
317309 u8 attr = color;
318310
319311 if (underline)
320312 attr = (attr & 0xf0) | c->vc_ulcolor;
321
- else if (intensity == 0)
313
+ else if (intensity == VCI_HALF_BRIGHT)
322314 attr = (attr & 0xf0) | c->vc_halfcolor;
323315
324316 if (reverse)
....@@ -329,7 +321,7 @@
329321 if (blink)
330322 attr ^= 0x80;
331323
332
- if (intensity == 2)
324
+ if (intensity == VCI_BOLD)
333325 attr ^= 0x08;
334326
335327 return attr;
....@@ -346,25 +338,30 @@
346338 */
347339
348340 while (count--) {
349
- u16 a = sisusbcon_readw(p);
341
+ u16 a = *p;
350342
351
- a = ((a) & 0x88ff) |
352
- (((a) & 0x7000) >> 4) |
353
- (((a) & 0x0700) << 4);
354
-
355
- sisusbcon_writew(a, p++);
343
+ *p++ = ((a) & 0x88ff) |
344
+ (((a) & 0x7000) >> 4) |
345
+ (((a) & 0x0700) << 4);
356346 }
357347 }
358348
359
-#define SISUSB_VADDR(x,y) \
360
- ((u16 *)c->vc_origin + \
361
- (y) * sisusb->sisusb_num_columns + \
362
- (x))
349
+static inline void *sisusb_vaddr(const struct sisusb_usb_data *sisusb,
350
+ const struct vc_data *c, unsigned int x, unsigned int y)
351
+{
352
+ return (u16 *)c->vc_origin + y * sisusb->sisusb_num_columns + x;
353
+}
363354
364
-#define SISUSB_HADDR(x,y) \
365
- ((u16 *)(sisusb->vrambase + (c->vc_origin - sisusb->scrbuf)) + \
366
- (y) * sisusb->sisusb_num_columns + \
367
- (x))
355
+static inline unsigned long sisusb_haddr(const struct sisusb_usb_data *sisusb,
356
+ const struct vc_data *c, unsigned int x, unsigned int y)
357
+{
358
+ unsigned long offset = c->vc_origin - sisusb->scrbuf;
359
+
360
+ /* 2 bytes per each character */
361
+ offset += 2 * (y * sisusb->sisusb_num_columns + x);
362
+
363
+ return sisusb->vrambase + offset;
364
+}
368365
369366 /* Interface routine */
370367 static void
....@@ -382,9 +379,8 @@
382379 return;
383380 }
384381
385
-
386
- sisusb_copy_memory(sisusb, (char *)SISUSB_VADDR(x, y),
387
- (long)SISUSB_HADDR(x, y), 2);
382
+ sisusb_copy_memory(sisusb, sisusb_vaddr(sisusb, c, x, y),
383
+ sisusb_haddr(sisusb, c, x, y), 2);
388384
389385 mutex_unlock(&sisusb->lock);
390386 }
....@@ -395,8 +391,6 @@
395391 int count, int y, int x)
396392 {
397393 struct sisusb_usb_data *sisusb;
398
- u16 *dest;
399
- int i;
400394
401395 sisusb = sisusb_get_sisusb_lock_and_check(c->vc_num);
402396 if (!sisusb)
....@@ -408,18 +402,15 @@
408402 * because the vt does this AFTER calling us.
409403 */
410404
411
- dest = SISUSB_VADDR(x, y);
412
-
413
- for (i = count; i > 0; i--)
414
- sisusbcon_writew(sisusbcon_readw(s++), dest++);
405
+ memcpy(sisusb_vaddr(sisusb, c, x, y), s, count * 2);
415406
416407 if (sisusb_is_inactive(c, sisusb)) {
417408 mutex_unlock(&sisusb->lock);
418409 return;
419410 }
420411
421
- sisusb_copy_memory(sisusb, (char *)SISUSB_VADDR(x, y),
422
- (long)SISUSB_HADDR(x, y), count * 2);
412
+ sisusb_copy_memory(sisusb, sisusb_vaddr(sisusb, c, x, y),
413
+ sisusb_haddr(sisusb, c, x, y), count * 2);
423414
424415 mutex_unlock(&sisusb->lock);
425416 }
....@@ -446,7 +437,7 @@
446437 * this AFTER calling us.
447438 */
448439
449
- dest = SISUSB_VADDR(x, y);
440
+ dest = sisusb_vaddr(sisusb, c, x, y);
450441
451442 cols = sisusb->sisusb_num_columns;
452443
....@@ -472,8 +463,8 @@
472463 length = ((height * cols) - x - (cols - width - x)) * 2;
473464
474465
475
- sisusb_copy_memory(sisusb, (unsigned char *)SISUSB_VADDR(x, y),
476
- (long)SISUSB_HADDR(x, y), length);
466
+ sisusb_copy_memory(sisusb, sisusb_vaddr(sisusb, c, x, y),
467
+ sisusb_haddr(sisusb, c, x, y), length);
477468
478469 mutex_unlock(&sisusb->lock);
479470 }
....@@ -517,12 +508,10 @@
517508 (int)(sisusb->scrbuf + sisusb->scrbuf_size - c->vc_origin));
518509
519510 /* Restore the screen contents */
520
- sisusbcon_memcpyw((u16 *)c->vc_origin, (u16 *)c->vc_screenbuf,
521
- length);
511
+ memcpy((u16 *)c->vc_origin, (u16 *)c->vc_screenbuf, length);
522512
523
- sisusb_copy_memory(sisusb, (unsigned char *)c->vc_origin,
524
- (long)SISUSB_HADDR(0, 0),
525
- length);
513
+ sisusb_copy_memory(sisusb, (u8 *)c->vc_origin,
514
+ sisusb_haddr(sisusb, c, 0, 0), length);
526515
527516 mutex_unlock(&sisusb->lock);
528517
....@@ -556,8 +545,7 @@
556545 (int)(sisusb->scrbuf + sisusb->scrbuf_size - c->vc_origin));
557546
558547 /* Save the screen contents to vc's private buffer */
559
- sisusbcon_memcpyw((u16 *)c->vc_screenbuf, (u16 *)c->vc_origin,
560
- length);
548
+ memcpy((u16 *)c->vc_screenbuf, (u16 *)c->vc_origin, length);
561549
562550 mutex_unlock(&sisusb->lock);
563551 }
....@@ -628,10 +616,8 @@
628616 sisusbcon_memsetw((u16 *)c->vc_origin,
629617 c->vc_video_erase_char,
630618 c->vc_screenbuf_size);
631
- sisusb_copy_memory(sisusb,
632
- (unsigned char *)c->vc_origin,
633
- (u32)(sisusb->vrambase +
634
- (c->vc_origin - sisusb->scrbuf)),
619
+ sisusb_copy_memory(sisusb, (u8 *)c->vc_origin,
620
+ sisusb_haddr(sisusb, c, 0, 0),
635621 c->vc_screenbuf_size);
636622 sisusb->con_blanked = 1;
637623 ret = 1;
....@@ -741,7 +727,7 @@
741727
742728 baseline = c->vc_font.height - (c->vc_font.height < 10 ? 1 : 2);
743729
744
- switch (c->vc_cursor_type & 0x0f) {
730
+ switch (CUR_SIZE(c->vc_cursor_type)) {
745731 case CUR_BLOCK: from = 1;
746732 to = c->vc_font.height;
747733 break;
....@@ -796,24 +782,24 @@
796782 switch (dir) {
797783
798784 case SM_UP:
799
- sisusbcon_memmovew(SISUSB_VADDR(0, t),
800
- SISUSB_VADDR(0, t + lines),
785
+ memmove(sisusb_vaddr(sisusb, c, 0, t),
786
+ sisusb_vaddr(sisusb, c, 0, t + lines),
801787 (b - t - lines) * cols * 2);
802
- sisusbcon_memsetw(SISUSB_VADDR(0, b - lines), eattr,
803
- lines * cols * 2);
788
+ sisusbcon_memsetw(sisusb_vaddr(sisusb, c, 0, b - lines),
789
+ eattr, lines * cols * 2);
804790 break;
805791
806792 case SM_DOWN:
807
- sisusbcon_memmovew(SISUSB_VADDR(0, t + lines),
808
- SISUSB_VADDR(0, t),
793
+ memmove(sisusb_vaddr(sisusb, c, 0, t + lines),
794
+ sisusb_vaddr(sisusb, c, 0, t),
809795 (b - t - lines) * cols * 2);
810
- sisusbcon_memsetw(SISUSB_VADDR(0, t), eattr,
796
+ sisusbcon_memsetw(sisusb_vaddr(sisusb, c, 0, t), eattr,
811797 lines * cols * 2);
812798 break;
813799 }
814800
815
- sisusb_copy_memory(sisusb, (char *)SISUSB_VADDR(0, t),
816
- (long)SISUSB_HADDR(0, t), length);
801
+ sisusb_copy_memory(sisusb, sisusb_vaddr(sisusb, c, 0, t),
802
+ sisusb_haddr(sisusb, c, 0, t), length);
817803
818804 mutex_unlock(&sisusb->lock);
819805
....@@ -830,7 +816,6 @@
830816 int copyall = 0;
831817 unsigned long oldorigin;
832818 unsigned int delta = lines * c->vc_size_row;
833
- u32 originoffset;
834819
835820 /* Returning != 0 means we have done the scrolling successfully.
836821 * Returning 0 makes vt do the scrolling on its own.
....@@ -874,7 +859,7 @@
874859
875860 if (c->vc_scr_end + delta >=
876861 sisusb->scrbuf + sisusb->scrbuf_size) {
877
- sisusbcon_memcpyw((u16 *)sisusb->scrbuf,
862
+ memcpy((u16 *)sisusb->scrbuf,
878863 (u16 *)(oldorigin + delta),
879864 c->vc_screenbuf_size - delta);
880865 c->vc_origin = sisusb->scrbuf;
....@@ -892,12 +877,10 @@
892877 case SM_DOWN:
893878
894879 if (oldorigin - delta < sisusb->scrbuf) {
895
- sisusbcon_memmovew((u16 *)(sisusb->scrbuf +
896
- sisusb->scrbuf_size -
897
- c->vc_screenbuf_size +
898
- delta),
899
- (u16 *)oldorigin,
900
- c->vc_screenbuf_size - delta);
880
+ memmove((void *)sisusb->scrbuf + sisusb->scrbuf_size -
881
+ c->vc_screenbuf_size + delta,
882
+ (u16 *)oldorigin,
883
+ c->vc_screenbuf_size - delta);
901884 c->vc_origin = sisusb->scrbuf +
902885 sisusb->scrbuf_size -
903886 c->vc_screenbuf_size;
....@@ -913,23 +896,21 @@
913896 break;
914897 }
915898
916
- originoffset = (u32)(c->vc_origin - sisusb->scrbuf);
917
-
918899 if (copyall)
919900 sisusb_copy_memory(sisusb,
920
- (char *)c->vc_origin,
921
- (u32)(sisusb->vrambase + originoffset),
901
+ (u8 *)c->vc_origin,
902
+ sisusb_haddr(sisusb, c, 0, 0),
922903 c->vc_screenbuf_size);
923904 else if (dir == SM_UP)
924905 sisusb_copy_memory(sisusb,
925
- (char *)c->vc_origin + c->vc_screenbuf_size - delta,
926
- (u32)sisusb->vrambase + originoffset +
906
+ (u8 *)c->vc_origin + c->vc_screenbuf_size - delta,
907
+ sisusb_haddr(sisusb, c, 0, 0) +
927908 c->vc_screenbuf_size - delta,
928909 delta);
929910 else
930911 sisusb_copy_memory(sisusb,
931
- (char *)c->vc_origin,
932
- (u32)(sisusb->vrambase + originoffset),
912
+ (u8 *)c->vc_origin,
913
+ sisusb_haddr(sisusb, c, 0, 0),
933914 delta);
934915
935916 c->vc_scr_end = c->vc_origin + c->vc_screenbuf_size;
....@@ -1246,7 +1227,7 @@
12461227 sisusb->font_backup = vmalloc(array_size(charcount, 32));
12471228
12481229 if (sisusb->font_backup) {
1249
- memcpy(sisusb->font_backup, font->data, charcount * 32);
1230
+ memcpy(sisusb->font_backup, font->data, array_size(charcount, 32));
12501231 sisusb->font_backup_size = charcount;
12511232 sisusb->font_backup_height = font->height;
12521233 sisusb->font_backup_512 = (charcount == 512) ? 1 : 0;
....@@ -1534,8 +1515,3 @@
15341515 for (i = 0; i < MAX_NR_CONSOLES; i++)
15351516 mysisusbs[i] = NULL;
15361517 }
1537
-
1538
-#endif /* INCL_CON */
1539
-
1540
-
1541
-