Guest User

Untitled

a guest
Jul 11th, 2018
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.88 KB | None | 0 0
  1. diff --git a/firmware/target/arm/as3525/lcd-as-e200v2-fuze.S b/firmware/target/arm/as3525/lcd-as-e200v2-fuze.S
  2. index 71d997d..e146d86 100644
  3. --- a/firmware/target/arm/as3525/lcd-as-e200v2-fuze.S
  4. +++ b/firmware/target/arm/as3525/lcd-as-e200v2-fuze.S
  5. @@ -25,6 +25,16 @@
  6. #include "cpu.h"
  7.  
  8. #define DBOP_BUSY (1<<10)
  9. +#define SAVE_PIXEL \
  10. + mov r6, r0, lsl #16
  11. +
  12. +#define GET_SAVED_PIXEL \
  13. + orr r6, r6, r0
  14. +
  15. +#define WRITE_PIXELS \
  16. + str r6, [r3, #0x10]
  17. +
  18. +
  19.  
  20. /****************************************************************************
  21. * void lcd_write_yuv_420_lines(unsigned char const * const src[3],
  22. @@ -110,12 +120,8 @@ lcd_write_yuv420_lines:
  23. @
  24. orr r0, r0, lr, lsl #11 @ r0 = (r << 11) | b
  25. orr r0, r0, r7, lsl #5 @ r0 = (r << 11) | (g << 5) | b
  26. - strh r0, [r3, #0x10] @ write pixel
  27. -1: @ busy @
  28. - ldr r7, [r3,#0xc] @ r7 = DBOP_STATUS
  29. - tst r7, #DBOP_BUSY @ fifo not empty?
  30. - beq 1b @
  31. - @
  32. + SAVE_PIXEL @ save pixel, will be written later
  33. +
  34. sub r7, r12, #16 @ r7 = Y = (Y' - 16)*74
  35. add r12, r7, r7, asl #2 @
  36. add r7, r12, r7, asl #5 @
  37. @@ -143,7 +149,8 @@ lcd_write_yuv420_lines:
  38. @
  39. orr r0, r0, lr, lsl #11 @ r0 = (r << 11) | b
  40. orr r0, r0, r7, lsl #5 @ r0 = (r << 11) | (g << 5) | b
  41. - strh r0, [r3, #0x10] @ write pixel
  42. + GET_SAVED_PIXEL @ get saved pixel
  43. + WRITE_PIXELS @ write pixels
  44. 1: @ busy @
  45. ldr r7, [r3,#0xc] @ r7 = DBOP_STATUS
  46. tst r7, #DBOP_BUSY @ fifo not empty?
  47. @@ -177,11 +184,7 @@ lcd_write_yuv420_lines:
  48. @
  49. orr r0, r0, lr, lsl #11 @ r0 = (r << 11) | b
  50. orr r0, r0, r7, lsl #5 @ r0 = (r << 11) | (g << 5) | b
  51. - strh r0, [r3, #0x10] @ write pixel
  52. -1: @ busy @
  53. - ldr r7, [r3,#0xc] @ r7 = DBOP_STATUS
  54. - tst r7, #DBOP_BUSY @ fifo not empty?
  55. - beq 1b @
  56. + SAVE_PIXEL @ save pixel, is written later
  57. @
  58. sub r7, r12, #16 @ r7 = Y = (Y' - 16)*74
  59. add r12, r7, r7, asl #2 @
  60. @@ -208,7 +211,8 @@ lcd_write_yuv420_lines:
  61. @
  62. orr r0, r0, lr, lsl #11 @ r0 = (r << 11) | b
  63. orr r0, r0, r7, lsl #5 @ r0 = (r << 11) | (g << 5) | b
  64. - strh r0, [r3, #0x10] @ write pixel
  65. + GET_SAVED_PIXEL @ get saved pixel
  66. + WRITE_PIXELS @ write pixels
  67. 1: @ busy @
  68. ldr r7, [r3,#0xc] @ r7 = DBOP_STATUS
  69. tst r7, #DBOP_BUSY @ fifo not empty?
  70. @@ -340,11 +344,7 @@ lcd_write_yuv420_lines_odither:
  71. and r7, r7, #0x7e00 @ r0 = pixel = (r & 0xf800) |
  72. orr r11, r11, r7, lsr #4 @ ((g & 0x7e00) >> 4) |
  73. orr r0, r11, r0, lsr #10 @ (b >> 10)
  74. - strh r0, [r3, #0x10] @ write pixel
  75. -1: @ busy @
  76. - ldr r7, [r3,#0xc] @ r7 = DBOP_STATUS
  77. - tst r7, #DBOP_BUSY @ fifo not empty?
  78. - beq 1b @
  79. + SAVE_PIXEL @ save pixel, is written later
  80. @
  81. sub r7, r12, #16 @ r7 = Y = (Y' - 16)*149
  82. add r12, r7, r7, asl #2 @
  83. @@ -389,7 +389,8 @@ lcd_write_yuv420_lines_odither:
  84. and r7, r7, #0x7e00 @ r0 = pixel = (r & 0xf800) |
  85. orr r11, r11, r7, lsr #4 @ ((g & 0x7e00) >> 4) |
  86. orr r0, r11, r0, lsr #10 @ (b >> 10)
  87. - strh r0, [r3, #0x10] @ write pixel
  88. + GET_SAVED_PIXEL @ get saved pixel
  89. + WRITE_PIXELS @ write pixels
  90. 1: @ busy @
  91. ldr r7, [r3,#0xc] @ r7 = DBOP_STATUS
  92. tst r7, #DBOP_BUSY @ fifo not empty?
  93. @@ -440,11 +441,7 @@ lcd_write_yuv420_lines_odither:
  94. and r7, r7, #0x7e00 @ r0 = pixel = (r & 0xf800) |
  95. orr r11, r11, r7, lsr #4 @ ((g & 0x7e00) >> 4) |
  96. orr r0, r11, r0, lsr #10 @ (b >> 10)
  97. - strh r0, [r3, #0x10] @ write pixel
  98. -1: @ busy @
  99. - ldr r7, [r3,#0xc] @ r7 = DBOP_STATUS
  100. - tst r7, #DBOP_BUSY @ fifo not empty?
  101. - beq 1b @
  102. + SAVE_PIXEL @ save pixel, is written later
  103. @
  104. sub r7, r12, #16 @ r7 = Y = (Y' - 16)*149
  105. add r12, r7, r7, asl #2 @
  106. @@ -487,7 +484,8 @@ lcd_write_yuv420_lines_odither:
  107. and r7, r7, #0x7e00 @ r0 = pixel = (r & 0xf800) |
  108. orr r11, r11, r7, lsr #4 @ ((g & 0x7e00) >> 4) |
  109. orr r0, r11, r0, lsr #10 @ (b >> 10)
  110. - strh r0, [r3, #0x10] @ write pixel
  111. + GET_SAVED_PIXEL @ get saved pixel
  112. + WRITE_PIXELS @ write pixels
  113. 1: @ busy @
  114. ldr r7, [r3,#0xc] @ r7 = DBOP_STATUS
  115. tst r7, #DBOP_BUSY @ fifo not empty?
Add Comment
Please, Sign In to add comment