Skip to content

Commit bd33559

Browse files
Add some PIO pseudocode comments; fix up EQ width rounding. TO SQUASH.
1 parent 4b5b255 commit bd33559

File tree

1 file changed

+25
-25
lines changed

1 file changed

+25
-25
lines changed

drivers/gpu/drm/rp1/rp1-dpi/rp1_dpi_pio.c

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -364,30 +364,30 @@ static int rp1dpi_pio_csync_ilace(struct rp1_dpi *dpi,
364364
unsigned short instructions[] = { /* This is mutable */
365365
0x90a0, // 0: pull block side 1
366366
0x7040, // 1: out y, 32 side 1
367-
// .wrap_target
368-
0x3083, // 2: wait 1 gpio, 3 side 1
369-
0xa422, // 3: mov x, y side 0 [4]
370-
0x2003, // 4: wait 0 gpio, 3 side 0
371-
0x12c2, // 5: jmp pin, 2 side 1 [2]
372-
0x3083, // 6: wait 1 gpio, 3 side 1
373-
0xc442, // 7: irq clear 2 side 0 [4]
374-
0x2003, // 8: wait 0 gpio, 3 side 0
375-
0x30c2, // 9: wait 1 irq, 2 side 1
376-
0x10d4, // 10: jmp pin, 20 side 1
377-
0x3083, // 11: wait 1 gpio, 3 side 1
378-
0xa442, // 12: nop side 0 [4]
379-
0x2003, // 13: wait 0 gpio, 3 side 0
380-
0xd042, // 14: irq clear 2 side 1
381-
0xd043, // 15: irq clear 3 side 1
382-
0x30c2, // 16: wait 1 irq, 2 side 1
383-
0x20c3, // 17: wait 1 irq, 3 side 0
384-
0x1054, // 18: jmp x--, 20 side 1
385-
0x1002, // 19: jmp 2 side 1
386-
0xd041, // 20: irq clear 1 side 1
387-
0x3083, // 21: wait 1 gpio, 3 side 1
388-
0x20c1, // 22: wait 1 irq, 1 side 0
389-
0x104e, // 23: jmp x--, 14 side 1
390-
// .wrap
367+
// .wrap_target ; while (true) {
368+
0x3083, // 2: wait 1 gpio, 3 side 1 ; do { @HSync
369+
0xa422, // 3: mov x, y side 0 [4] ; CSYNC: x = VSW - 1
370+
0x2003, // 4: wait 0 gpio, 3 side 0 ; CSYNC: HSync->CSync
371+
0x12c2, // 5: jmp pin, 2 side 1 [2] ; } while (VSync)
372+
0x3083, // 6: wait 1 gpio, 3 side 1 ; @HSync
373+
0xc442, // 7: irq clear 2 side 0 [4] ; CSYNC: flush IRQ
374+
0x2003, // 8: wait 0 gpio, 3 side 0 ; CSYNC: Hsync->CSync
375+
0x30c2, // 9: wait 1 irq, 2 side 1 ; @midline
376+
0x10d4, // 10: jmp pin, 20 side 1 ; if (!VSync) goto sync_left;
377+
0x3083, // 11: wait 1 gpio, 3 side 1 ; @HSync
378+
0xa442, // 12: nop side 0 [4] ; CSYNC: delay
379+
0x2003, // 13: wait 0 gpio, 3 side 0 ; CSYNC: Hsync->CSync
380+
0xd042, // 14: irq clear 2 side 1 ; do { flush IRQ
381+
0xd043, // 15: irq clear 3 side 1 ; flush IRQ
382+
0x30c2, // 16: wait 1 irq, 2 side 1 ; @midline
383+
0x20c3, // 17: wait 1 irq, 3 side 0 ; CSYNC: @BroadRight
384+
0x1054, // 18: jmp x--, 20 side 1 ; if (x-- == 0)
385+
0x1002, // 19: jmp 2 side 1 ; break;
386+
0xd041, // 20: irq clear 1 side 1 ; sync_left: flush IRQ
387+
0x3083, // 21: wait 1 gpio, 3 side 1 ; @HSync
388+
0x20c1, // 22: wait 1 irq, 1 side 0 ; CSYNC: @BroadLeft
389+
0x104e, // 23: jmp x--, 14 side 1 ; } while (x--);
390+
// .wrap ; }
391391
};
392392
struct pio_program prog = {
393393
.instructions = instructions,
@@ -519,7 +519,7 @@ static int rp1dpi_pio_csync_tv(struct rp1_dpi *dpi,
519519
/* Load parameters (Vsync pattern; EQ pulse width) into ISR and Y */
520520
i = (mode->vsync_end - mode->vsync_start <= 5);
521521
pio_sm_put(dpi->pio, 0, i ? 0x02ABFFAA : 0xAABFFEAA);
522-
pio_sm_put(dpi->pio, 0, clock_get_hz(clk_sys) / (i ? 425532 : 434782));
522+
pio_sm_put(dpi->pio, 0, clock_get_hz(clk_sys) / (i ? 425531 : 434782) - 3);
523523
pio_sm_exec(dpi->pio, 0, pio_encode_pull(false, false));
524524
pio_sm_exec(dpi->pio, 0, pio_encode_out(pio_y, 32));
525525
pio_sm_exec(dpi->pio, 0, pio_encode_in(pio_y, 32));

0 commit comments

Comments
 (0)