1
0
mirror of git://projects.qi-hardware.com/ben-blinkenlights.git synced 2024-12-26 22:10:49 +02:00
Commit Graph

29 Commits

Author SHA1 Message Date
Werner Almesberger
f608e561a2 ubb-vga2.c (main): fixed check for unknown resolution and call it "mode" 2011-04-29 14:00:58 -03:00
Werner Almesberger
a63579e119 ubb-vga2.c (line, frame): start line timer outside the "line" function
The indirection introduced with the non-contiguous frame buffer caused
significant horizontal distortions. We can compensate for them by
starting the timer before loading the line pointer and calling "line".
2011-04-29 13:28:22 -03:00
Werner Almesberger
623f3ccbe3 ubb-vga2: non-contiguous allocation of frame buffer memory
- ubb-vga.h (calloc_phys_vec), physmem.c: non-contiguous memory allocator
  (for now, without really considering any mapping to physical memory)
- Makefile (OBJS): added physmem.o
- ubb-vga.h (grabfb), grabfb.c (grabfb): API change for non-contiguous
  frame buffer
- ubb-vga.h (ppmimg), ppmimg.c (convert, ppmimg): API change for
  non-contiguous frame buffer
- ubb-vga.h (tstimg), tstimg.c (pixel, color_bars, grill, grid, sides,
  dot, line45, arc, printc, text, ctext, tstimg): API change for
  non-contiguous frame buffer
- tstimg.c (tstimg): we no longer need to clear the frame buffer
- ubb-vga.c (frame, session, main): use a vector of line buffers instead
  of a contiguous frame buffer
2011-04-29 13:04:02 -03:00
Werner Almesberger
71c9c7dd78 ubb-vga2: new option -m to select the display mode (resolution, timing)
- ubb-vga2.c (XREs, YRES, res, res_db, setup, line, hdelay, frame,
  session): replaced hard-coded display characteristics with a mode
  database
- ubb-vga2.c (usage, main): new option -m to select the display mode
- ubb-vga2.c (session): allocate frame buffer dynamically
- ubb-vga2.c (session): since we no longer prefetch, we don't need to
  allocate space beyond the end of the frame buffer
- ubb-vga2.c (line): resurrected "quick load" and extended it to fill the
  FIFO completely
2011-04-28 21:30:45 -03:00
Werner Almesberger
957491d209 ubb-vga2: instead of pointers to registers, use pointer plus offset (via macros)
- regs4740.h: macros to access selected Jz4740 registers
- ubb-vga2.c: replaced all pointers to registers with access macros
- ubb-vga2.c (line_cycles): we now seem to be 0.1 us slower
2011-04-28 18:41:00 -03:00
Werner Almesberger
cb5a6bd202 ubb-vga.sch: fixed typo in comment 2011-04-28 16:45:29 -03:00
Werner Almesberger
4480b32c50 ubb-vga2.c: corrected and improved loading of the first TX word
- ubb-vga2.c (line): write the first word to the TX FIFO after starting
  the command or it is lost
- ubb-vga2.c (line): fetch the first word while waiting for the back
  porch, making sure we have plenty of time for cache effects
- ubb-vga2.c (line): we no longer need to prefetch the first word of
  the next line
2011-04-28 12:30:22 -03:00
Werner Almesberger
e94b3bbcfc ubb-vga2.c (line, frame): don't pass prefetch pointer but just use *p 2011-04-28 11:57:21 -03:00
Werner Almesberger
6414d92412 ubb-vga2.c: move display resolution to #defines
- ubb-vga2.c (XRES, line_words, session): don't hard-code the X resolution
- ubb-vga2.c (YRES, line_words, frame, session): don't hard-code the Y
  resolution
2011-04-28 02:14:15 -03:00
Werner Almesberger
c8f19a0b4c ubb-vga.pro: commit pcbnew preferences (from local layout experiments) 2011-04-28 02:10:58 -03:00
Werner Almesberger
6558f56de6 ubb-vga2: replaced threshold-based color mapping with color cube model
- ubb-vga.h (ccube_init, ccube_map), ccube.c: color mapper based on
  proximity in color cube
- grabfb.c (pattern, grabfb), ppmimg.c (pattern, convert): use the color
  cube mapper instead of inferios threshold-based mapping
- ubb-vga2.c (session): initialize the color cube
- ubb-vga.h (thres), grabfb.c (thres), ubb-vga2.c (usage, main): removed
  the threshold along with the option (-l) to set it
- Makefile (OBJS): added ccube.o
2011-04-28 01:18:03 -03:00
Werner Almesberger
f0eda51391 ubb-vga/ppmimg.c (pattern): corrected the pattern for un-doubled pixels 2011-04-28 00:59:30 -03:00
Werner Almesberger
080978ade0 ubb-vga2: added support for showing a PPM image
- Makefile (OBJS): added ppm.o and ppmimg.o
- ppm.h (load_ppm), ppm.c: PPM file loader, adapted from
  eda-tools/schhist/ppmdiff/ppmdiff.c
- ubb-vga.h (img_name, ppmimg), ppmimg.c: PPM image to frame buffer
  converter
- ubb-vga2.c (usage, main): the threshold is now set with the option -l
- ubb-vga2.c (usage, main): if a second argument is given, treat it as
  a PPM file
- ubb-vga2.c (usage): also documented option -t
2011-04-28 00:38:13 -03:00
Werner Almesberger
19f43a77c9 ubb-vga2: added test image generator (option -t)
- tstimg.c: test image generator
- Makefile (OBJS): added tstimg.o
- Makefile (LDFLAGS): tstimg.c needs libm
- ubb-vga2.c (session, main): pass image generator as a function pointer
- ubb-vga2.c (main): new option -t to select the test image generator
2011-04-27 23:31:39 -03:00
Werner Almesberger
8643e457fa ubb-vga2: move image generation out of the main program
- ubb-vga2.c (session, grab): made the frame buffer "void *" and pass
  frame buffer resolution
- ubb-vga.h: color encoding and items shared between compilation units
- ubb-vga2.c (thres, pattern, grab), grabfb.c: move to grabfb.c
- ubb-vga2.c (map): make global, for use by grabfb.c
- ubb-vga2.c (pick, pattern, tricolor, grid): removed obsolete test
  image generators
- Makefile (OBJS, ubb-vga2): added grabfb.o
- Makefile (clean): remove only .o files
- Makefile (spotless): remove only executables
2011-04-27 20:59:29 -03:00
Werner Almesberger
625d9877ab ubb-vga2.c: make frame buffer fully VGA-sized; more cleanup
- ubb-vga2.c (frame, grab, session): keep all 480 lines in the frame
  buffer instead of duplicating them on output
- ubb-vga2.c (bad): make "static"
- ubb-vga2.c (session, main): removed the "single" argument
- ubb-vga2.c (main): complain about timeouts only if any occurred
2011-04-27 20:20:59 -03:00
Werner Almesberger
9a455c55fc ubb-vga2.c: code cleanup and some fine-tuning 2011-04-27 18:28:09 -03:00
Werner Almesberger
a759723ed1 ubb-vga: added driver based on the MMC controller (highly experimental)
- ubb-vga2.c: use the MMC controler to stream the pixel data
- Makefile (all, clean): added ubb-vga2
2011-04-27 17:21:30 -03:00
Werner Almesberger
a794c4b1b2 ubb-vga: avoid diodes; redesign for luminance bit (Y) and MMC controller
- ubb-vga.sch: use resistive divider instead of diodes
- ubb-vga.sch, ubb-vga.c (VSYNC): moved VSYNC from DAT3 to CLK to make
  all MMC data lines available for pixel data
- ubb-vga.sch, ubb-vga.c (R): moved red from DAT2 to DAT3 for convenient
  access to the 4th channel
- ubb-vga.sch: added luminance (Y) channel
- ubb-vga.sch: added pull-down to HSYNC/CMD, for later use with the MMC
  controller
- ubb-vga.c (pdfuns, pdfunc, ben_setup, setup): make UBB signals GPIOs,
  in case someone left them in a different configuration
2011-04-27 16:48:07 -03:00
Werner Almesberger
ce1c6af24f ubb-vga/README: "single/double mode", not "single-double mode" 2011-04-25 00:06:25 -03:00
Werner Almesberger
e1e473edec renamed ubb-vga/res.fig to mapping.fig 2011-04-24 23:56:29 -03:00
Werner Almesberger
5df56a39b0 ubb-vga: documented single and double mode
- README: describe how single and double mode work
- res.fig: illustrate the mapping in single and double mode
2011-04-24 21:26:00 -03:00
Werner Almesberger
67107d0062 ubb-vga: option -d to double the number of set/clear pairs, improving resolution
- README: added compatibility of double mode
- ubb-vga.c (usage, main): new option -d to double the number of set/clear
  pairs (making lines longer and the apparent pixel clock slower)
- ubb-vga.c (grab, session, main): have a complete set/clear pair for each
  pixel in double mode
2011-04-24 21:09:50 -03:00
Werner Almesberger
dab839ab66 ubb-vga.c: moved line length and timing to variables
- ubb-vga.c (line_pairs, line, frame, tricolor, grid, session): line
  length is now kept in a variable, instead of hard-coding its value
  and the values derived from it
- ubb-vga.c (line_cycles, line, hdelay): the total line duration is now
  kept in a variable, instead of hard-coding it all over the place
2011-04-24 20:01:12 -03:00
Werner Almesberger
dae21696b3 ubb-vga.c: a bit more cleanup
- ubb-vga.c: added more section titles
- ubb-vga.c (pick, pattern): grouped pixel-generating functions with
  image generation
- ubb-vga.c (usage, main): properly parse command-line options ("getopt"
  is a bit of overkill at the moment but will be needed later)
2011-04-24 19:43:26 -03:00
Werner Almesberger
554c6645d8 ubb-vga.c: removed unused #defines and rearranged the code a little 2011-04-24 12:12:36 -03:00
Werner Almesberger
fb153b2bf3 ubb-vga/README: added title and compatibility list 2011-04-24 12:02:48 -03:00
Werner Almesberger
8bd7199d9e ubb-vga.c: removed commented-out code from earlier experiments
The history of the split prefetch code:

Once up on a time, I thought that it was important to stay very close
to the "official" pixel clock. We could do this when copying 32 bit
words from cache to the GPIO set/clear registers, but not when
shifting 8 bit values as we do now.

One problem with 32 bit values is that transferring that amount of
data exceeds the time available in the hsync pulse. Hence the idea
to split the prefetch between hsync pulse and horizontal front porch.

Note that we also split prefetches between the two VGA lines of each
QVGA line. This commit does not change that mechanism.

- ubb-vga.c (line, frame): removed code fragments for prefetch split
  between hsync pulse and front porch
- ubb-vga.c (line, frame): remove code fragments for measuring time
  relative to the rising edge of hsync (and letting the prefetch time
  control the hsync length), not the falling edge
2011-04-24 11:48:32 -03:00
Werner Almesberger
3b7a7caec1 renamed "video" to ubb-vga 2011-04-24 02:56:56 -03:00