cvs commit: src/sys/dev/fb creator.c src/sys/sparc64/creator creator.h creator_upa.c src/sys/sparc64/sparc64 sc_machdep.c

Marius Strobl marius at FreeBSD.org
Sat May 21 20:38:26 GMT 2005


marius      2005-05-21 20:38:26 UTC

  FreeBSD src repository

  Modified files:
    sys/dev/fb           creator.c 
    sys/sparc64/creator  creator.h creator_upa.c 
    sys/sparc64/sparc64  sc_machdep.c 
  Log:
  o creator(4):
    - Use register macros instead of magic values in the code. [1]
    - Check the return values of OF_getprop() and other stuff that actually
      can fail.
    - Let the unimplemented video driver methods return ENODEV rather
      than 0 so other code isn't tricked into thinking a certain operation
      was successfull. In case of e.g. the video driver creator_ioctl()
      this caused vidcontrol(1) to return random garbage information.
      Remove the TODO macros in the unimplemented video driver methods
      which did a printf("%s: unimplemented\n", __func__). Under certain
      circumstances these managed to invoke a printf() when a low-level
      console device wasn't attached, yet, causing a Fast Data Access MMU
      Miss. These macros were only really usefull for development anyway.
    - Set the struct video_adapter and struct video_info va_flags and
      vi_flags etc. as appropriate.
    - In creator_configure() don't rely on hitting the node which is the
      chosen console device first when searching the OFW tree for adapters
      compatible with this driver. Instead just check whether the chosen
      console device is a viable target for this driver. Targets that are
      not the console (including additional cards in multi-head configs)
      will be attached through creator_upa_attach(). I think this how the
      code in creator_configure() was actually meant to work.
      Honour the VIO_PROBE_ONLY flag and don't initialise and register the
      console device twice when creator_configure() is called a second time
      during sc_probe_unit().
      Let creator_configure() return the number of the found adapters,
      i.e. 1 in case probing succeeds, as it's expected. The return values
      of video adapter configure functions however currently aren't checked
      so this doesn't make a difference at the moment.
    - In creator_upa_attach() don't rely on probing and attaching the
      adapter which is the console first, in case there are multiple
      adpaters and one of them is the console this could lead into using
      the video adapter unit 0 twice.
    - Make the check for DACs with inverted cursor control a bit more
      precise and actually honour that information when turning the cursor
      on or off. Add a helper function creator_cursor_enable() for this
      in order to keep code duplication low. [1]
    - Don't bother with faking a hardware cursor in case a device is the
      console. Apparently this was meant to start kernel output right after
      where the firmware left. In general this isn't worth the fuzz and
      also had no real effect as creator_set_mode() did clear the screen
      in any case, not just in case a device was not the console.
    - Implement creator_fill_rect() and use it to actually blank the
      display in creator_blank_display() when the mode is V_DISPLAY_BLANK,
      moving blanking the display out of creator_set_mode(). Use it also
      to implement creator_set_border() so the border can be re-drawn
      when switching to a VTY from X, exiting X, etc. (which leaves us
      with a black border most of the time).
    - Implement the video driver creator_ioctl(), moving the implementation
      of the IOCTL interface from the fbN CDEV version of creator_ioctl()
      into the video driver version and use the latter to implement the
      former. Use fb_commonioctl() to handle most of the FBIO IOCTLs.
      This gives programs like vidcontrol(1) which use the video driver
      creator_ioctl() a chance of working.
      Implement turning off the cursor via the FBIOSCURSOR IOCTL, which
      Xorg uses to in order to inform the OS that it's taking over the
      cursor. In creator_putm() check whether the cursor is enabled and
      (re-)install it if necessary, moving installing the cursor out of
      creator_init() and into a helper function creator_cursor_install().
      This fixes the missing mouse pointer when switching to a VTY from X,
      exiting X, etc.
    - Some clean-up (remove unused/useless code, etc.).
  
  o sparc64/creator/creator_upa.c / sparc64/sparc64/sc_machdep.c:
    - Attach syscons(4) as an own pseudo-device on the nexus rather than
      directly in creator_upa_attach(), similiar to attaching syscons(4)
      as a pseudo-device on isa(4) on other archs. This makes it a whole
      lot easier to do the right thing in multi-head configs, especially
      with different types of graphics adapters. [2]
    - Set SC_AUTODETECT_KBD by default so USB keyboards work out of the
      box. [2]
  
  Based on/obtained from: Xorg 'ffb' driver [1]
  Based on/obtained from: FreeBSD/powerpc [2]
  
  Revision  Changes    Path
  1.6       +236 -157  src/sys/dev/fb/creator.c
  1.3       +80 -9     src/sys/sparc64/creator/creator.h
  1.7       +74 -61    src/sys/sparc64/creator/creator_upa.c
  1.2       +76 -9     src/sys/sparc64/sparc64/sc_machdep.c


More information about the cvs-src mailing list