27 Jun, 2006

40 commits

  • The class device "fbcon" does not need to be a device file. Do not create one
    by passing a major and minor number of zero to
    class_device_create()/destroy().

    Signed-off-by: Antonino Daplas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Antonino A. Daplas
     
  • To enable this feature, CONFIG_VT_HW_CONSOLE_BINDING must be set to 'y'. This
    feature will default to 'n' to minimize users accidentally corrupting their
    virtual terminals.

    Signed-off-by: Antonino Daplas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Antonino A. Daplas
     
  • Add sysfs control to the VT layer. A new sysfs class, 'vtconsole', and class
    devices 'vtcon[n]' are added. Each class device file has the following
    attributes:

    /sys/class/vtconsole/vtcon[n]/name - read-only attribute showing the
    name of the current backend

    /sys/class/vtconsole/vtcon[n]/bind - read/write attribute
    where: 0 - backend is unbound/unbind backend from the VT layer
    1 - backend is bound/bind backend to the VT layer

    In addition, if any of the consoles are in KD_GRAPHICS mode, binding and
    unbinding will not succeed. KD_GRAPHICS mode usually indicates that the
    underlying console hardware is used for other purposes other than displaying
    text (ie X). This feature should prevent binding/unbinding from interfering
    with a graphics application using the VT.

    [akpm@osdl.org: warning fixes]
    Signed-off-by: Antonino Daplas
    Cc: Greg KH
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Antonino A. Daplas
     
  • This newly added file will:

    - Describe the characteristics of 2 general types of console drivers
    - How to use the sysfs to unbind and bind console drivers
    - Uses for this feature

    Signed-off-by: Antonino Daplas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Antonino A. Daplas
     
  • Update Documentation/fb/fbcon.txt to reflect the following changes:

    1. Simple illustration of the binding of the console down to individual
    framebuffer drivers

    2. Usage of userspace tools to help with recovery of text console

    3. How to use the attributes in /sys/class/tty/console to unload fbcon and
    the framebuffer drivers

    Signed-off-by: Antonino Daplas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Antonino A. Daplas
     
  • The control for binding/unbinding is moved from fbcon to the console layer.
    Thus the fbcon sysfs attributes, attach and detach, are also gone.

    1. Add a notifier event that tells fbcon if a framebuffer driver has been
    unregistered. If no registered driver remains, fbcon will unregister
    itself from the console layer.

    2. Replaced calls to give_up_console() with unregister_con_driver().

    3. Still use take_over_console() instead of register_con_driver() to
    maintain compatibility

    4. Respect the parameter first_fb_vc and last_fb_vc instead of using 0 and
    MAX_NR_CONSOLES - 1. These parameters are settable by the user.

    5. When fbcon is completely unbound from the console layer, fbcon will
    also release (iow, decrement module reference counts to zero) all fbdev
    drivers. In other words, a bind or unbind request from the console layer
    will propagate down to the framebuffer drivers.

    6. If fbcon is not bound to the console, it will ignore all notifier
    events (except driver registration and unregistration) and all sysfs
    requests.

    Signed-off-by: Antonino Daplas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Antonino A. Daplas
     
  • The framebuffer console is now able to dynamically bind and unbind from the VT
    console layer. Due to the way the VT console layer works, the drivers
    themselves decide when to bind or unbind. However, it was decided that
    binding must be controlled, not by the drivers themselves, but by the VT
    console layer. With this, dynamic binding is possible for all VT console
    drivers, not just fbcon.

    Thus, the VT console layer will impose the following to all VT console
    drivers:

    - all registered VT console drivers will be entered in a private list
    - drivers can register themselves to the VT console layer, but they cannot
    decide when to bind or unbind. (Exception: To maintain backwards
    compatibility, take_over_console() will automatically bind the driver after
    registration.)
    - drivers can remove themselves from the list by unregistering from the VT
    console layer. A prerequisite for unregistration is that the driver must not
    be bound.

    The following functions are new in the vt.c:

    register_con_driver() - public function, this function adds the VT console
    driver to an internal list maintained by the VT console

    bind_con_driver() - private function, it binds the driver to the console

    take_over_console() is changed to call register_con_driver() followed by a
    bind_con_driver(). This is the only time drivers can decide when to bind to
    the VT layer. This is to maintain backwards compatibility.

    unbind_con_driver() - private function, it unbinds the driver from its
    console. The vacated consoles will be taken over by the default boot console
    driver.

    unregister_con_driver() - public function, removes the driver from the
    internal list maintained by the VT console. It will only succeed if the
    driver is currently unbound.

    con_is_bound() checks if the driver is currently bound or not

    give_up_console() is just a wrapper to unregister_con_driver().

    There are also 3 additional functions meant to be called only by the tty layer
    for sysfs control:

    vt_bind() - calls bind_con_driver()
    vt_unbind() - calls unbind_con_driver()
    vt_show_drivers() - shows the list of registered drivers

    Most VT console drivers will continue to work as is, but might have problems
    when unbinding or binding which should be fixable with minimal changes.

    Signed-off-by: Antonino Daplas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Antonino A. Daplas
     
  • Update Documentation/fb/fbcon.txt on the following:

    1. sysfs attributes are now located in class/graphics/fbcon
    2. instructions on how to attach, detach and/or unload fbcon

    Signed-off-by: Antonino Daplas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Antonino A. Daplas
     
  • Add the ability to detach and attach the framebuffer console to and from the
    vt layer. This is done by echo'ing any value to sysfs attributes located in
    class/graphics/fbcon. The two attributes are:

    attach - bind fbcon to the vt layer
    detach - unbind fbcon from the vt layer

    Once fbcon is detached from the vt layer, fbcon can be unloaded if compiled as
    a module. This feature is quite useful for developers who work on the
    framebuffer or console subsystem. This is also useful for users who want to
    go to text mode or graphics mode without having to reboot.

    Directly unloading the fbcon module is not possible because the vt layer
    increments the module reference count for all bound consoles. Detaching fbcon
    decrements the module reference count to zero so unloading becomes possible.

    Detaching fbcon may interfere with X and/or DRM.

    Signed-off-by: Antonino Daplas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Antonino A. Daplas
     
  • To detach fbcon, it must also clean up all resources it allocated. This was
    never done before because fbcon cannot be unloaded.

    Signed-off-by: Antonino Daplas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Antonino A. Daplas
     
  • In order for this feature to work, an interface will be needed. The most
    appropriate is sysfs. However, the framebuffer console has no sysfs entry
    yet. This will create a sysfs class device entry for fbcon under
    /sys/class/graphics.

    Add a class_device entry 'fbcon' under class 'graphics'. Console-specific
    attributes which where previously under class/graphics/fb[x] are moved to
    class/graphics/fbcon. These attributes, 'con_rotate' and 'con_rotate_all',
    are also renamed to 'rotate' and 'rotate_all' respectively.

    Signed-off-by: Antonino Daplas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Antonino A. Daplas
     
  • Detaching fbcon allows individual drivers to be unloaded. However several
    drivers call pci_disable_device() upon exit. This function will disable the
    BAR's which will kill VGA text mode and/or affect X/DRM.

    To prevent this, remove calls to pci_disable_device() from several drivers.

    Signed-off-by: Antonino Daplas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Antonino A. Daplas
     
  • To allow for detaching fbcon, it must be able to give up the console.
    However, the function give_up_console() is plain broken. It just sets the
    entries in the console driver map to NULL, it leaves the vt layer without a
    console driver, and does not decrement the module reference count. Calling
    give_up_console() is guaranteed to hang the machine..

    To fix this problem, ensure that the virtual consoles are not left dangling
    without a driver. All systems have a default boot driver (either vgacon or
    dummycon) which is never unloaded. For those vt's that lost their driver, the
    default boot driver is reassigned back to them.

    Signed-off-by: Antonino Daplas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Antonino A. Daplas
     
  • One of the limitations of the framebuffer console system is its inablity to
    unload or detach itself from the console layer. And once it loads, it also
    locks in framebuffer drivers preventing their unload. Although the con2fbmap
    utility does provide a means to unload individual drivers, it requires that at
    least one framebuffer driver is loaded for use by fbcon.

    With this change, it is possible to detach fbcon from the console layer. If it
    is detached, it will reattach the boot console driver (which is permanently
    loaded) back to the console layer so the system can continue to work. As a
    consequence, fbcon will also decrement its reference count of individual
    framebuffer drivers, allowing all of these drivers to be unloaded even if
    fbcon is still loaded.

    Unless you use drivers that restores the display to text mode (rivafb and
    i810fb, for example), detaching fbcon does require assistance from userspace
    tools (ie, vbetools) for text mode to be restored completely. Without the
    help of these tools, fbcon will leave the VGA console corrupted. The methods
    that can be used will be described in Documentation/fb/fbcon.txt.

    Because the vt layer also increments the module reference count for each
    console driver, fbcon cannot be directly unloaded. It must be detached first
    prior to unload.

    Similarly, fbcon can be reattached to the console layer without having to
    reload the module. A nice feature if fbcon is compiled statically.

    Attaching and detaching fbcon is done via sysfs attributes. A class device
    entry for fbcon is created in /sys/class/graphics. The two attributes that
    controls this feature are detach and attach. Two other attributes that are
    piggybacked under /sys/class/graphics/fb[n] that are fbcon-specific,
    'con_rotate' and 'con_rotate_all' are moved to fbcon. They are renamed as
    'rotate' and 'rotate_all' respectively.

    Overall, this feature is a great help for developers working in the
    framebuffer or console layer. There is not need to continually reboot the
    kernel for every small change. It is also useful for regular users who wants
    to choose between a graphical console or a text console without having to
    reboot.

    Example usage for x86:

    /* start in text mode */
    modprobe xxxfb
    modprobe fbcon
    /* graphical mode with fbcon using xxxfb */
    echo 1 > /sys/class/graphics/fbcon/detach
    /* back to text mode, will produce corrupt display unless vbetool is used */
    rmmod xxxfb
    modprobe yyyfb
    /* back to graphical mode with fbcon using yyyfb */

    Before trying out this feature, please read Documentation/fb/fbcon.txt.

    This patch:

    In order for fbcon to detach itself from the console layer, vgacon, which is a
    boot console driver, must be fixed so it can retake the console multiple
    times, not just during init. The following needs to be done:

    - remove __init from the vgacon_startup, this is called again by
    take_over_console().

    - vc->rows and vc->cols are set manually by vgacon during init. After init,
    vc_resize() can be used

    - make sure the scrollback_buffer is not reallocated

    Signed-off-by: Antonino Daplas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Antonino A. Daplas
     
  • Modify the sysfs description of a video mode such that modes are tagged with
    their scan type, (p)rogessive, (i)nterlaced, (d)ouble scan. For example,
    U:1920x1080i-50. This is useful to disambiguate some of the 'consumer' video
    timings found in CEA-861 (especially those for EDTV).

    Signed-off-by: Daniel R Thompson
    Signed-off-by: Antonino Daplas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Daniel R Thompson
     
  • This patch adds a new framebuffer driver for the Intel Based macs. This
    framebuffer is needed when booting from EFI to get something out the box.

    [akpm: note: doesn't support modular building]

    [akpm@osdl.org: cleanups]
    Signed-off-by: Edgar Hucek
    Signed-off-by: Antonino Daplas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Edgar Hucek
     
  • Fix the following warning:

    WARNING: drivers/video/aty/atyfb.o - Section mismatch: reference to
    .init.text:aty_init_cursor from .text between 'aty_init' (at offset 0x241d)
    and 'atyfb_blank'

    Signed-off-by: Antonino Daplas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Antonino A. Daplas
     
  • Fix the following warning:

    WARNING: drivers/video/macmodes.o - Section mismatch: reference to
    .init.text:mac_find_mode from __ksymtab after '__ksymtab_mac_find_mode' (at
    offset 0x10)

    Signed-off-by: Antonino Daplas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Antonino A. Daplas
     
  • Logo drawing crashes or produces a corrupt display if the logo width and
    height are not equal. The dimensions are transposed prior to the actual
    rotation and the width is used instead of the height in the actual rotation
    code. These produce a corrupt image.

    Signed-off-by: Antonino Daplas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Antonino A. Daplas
     
  • This is a fix for the most annoying problem that remained with neofb:

    After "setterm -powersave powerdown" the console blanker will disable the
    backlight after the given timeout expires. If this happens after the lid
    has been shut, we read "LCD off" from the register and store that in the
    driver. Once the lid is opened, the backlight turns on, but any key press
    that would awaken the blanked console will switch the backlight off again.

    The workaround so far was to use the "display config toggle" Fn key combo -
    once if no external display is attached, otherwise as often as required to
    restore the desired display setup.

    The following patch fixes the issue at least for the LCD-only case, with no
    external monitor attached. Other display setup permutations are pending
    further testing, but so far I can guarantee at least no negative change in
    behaviour, if any at all.

    Signed-off-by: Christian Trefzer
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Christian Trefzer
     
  • Signed-off-by: Arnaldo Carvalho de Melo
    Acked-by: "Antonino A. Daplas"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Arnaldo Carvalho de Melo
     
  • Add power management support

    [akpm@osdl.org: cleanup]
    Signed-off-by: Rodolfo Giometti
    Signed-off-by: Antonino Daplas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Rodolfo Giometti
     
  • CONFIG_FB = m and CONFIG_{BACKLIGHT:LCD}_CLASS_DEVICE = y is possible
    resulting in link errors. Fix by making backlight and lcd class also depend
    on FB

    Signed-off-by: Antonino Daplas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Antonino A. Daplas
     
  • regs.lcdcon1 was not updated on suspend. The result was a garbaged display on
    resume. This bug was first noticed by Christer Weinigel. This patch is a
    modified version of the one he sent to me.

    Signed-off-by: Arnaud Patard
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Arnaud Patard
     
  • This patch removes the following unused EXPORT_SYMBOL's:
    - fbcvt.c: fb_find_mode_cvt
    - fbmem.c: fb_con_duit
    - fbmem.c: fb_new_modelist
    - macmodes.c: mac_var_to_vmode
    - modedb.c: fb_delete_videomode
    - modedb.c: fb_destroy_modelist

    Signed-off-by: Adrian Bunk
    Signed-off-by: Antonino Daplas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Adrian Bunk
     
  • It's a false positive, but let's suppress it anyway.

    Signed-off-by: Antonino Daplas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Antonino A. Daplas
     
  • It's a false positive, but let's suppress it anyway.

    Signed-off-by: Antonino Daplas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Antonino A. Daplas
     
  • Coverity Bug 68:

    Fix dead code

    Signed-off-by: Antonino Daplas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Antonino A. Daplas
     
  • Delay the update of the visible framebuffer console until all other consoles
    have been initialized in order to avoid losing information. This only seems
    to be a problem with modules, not with built-in drivers.

    Signed-off-by: David Hollister
    Signed-off-by: Jordan Crouse
    Signed-off-by: Antonino Daplas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Hollister
     
  • - As per VESA specs, use the VGA registers to set the palette if the mode is
    VGA compatible. Otherwise, use the protected mode interface.

    - Make pmi_setpal default to 1

    Signed-off-by: Antonino Daplas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Antonino A. Daplas
     
  • If the hardware palette cannot be accessed, make vesafb_setcolreg return a
    nonzero value.

    Signed-off-by: Antonino Daplas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Antonino A. Daplas
     
  • Adds 1366x768 @ 60Hz to drivers/video/modedb.c.

    Signed-off-by: Dennis Munsie
    Signed-off-by: Antonino Daplas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Dennis Munsie
     
  • Add support for Geforce 6100 and related chipsets (PCI device id 0x024x)

    Signed-off-by: Antonino Daplas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Antonino A. Daplas
     
  • - make firmware edid independent from framebuffer (No need to choose
    framebuffer just to disable this option

    - enable this option in X86_64

    - check if VBE/DDC function is implemented before calling actual function

    Signed-off-by: Antonino Daplas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Antonino A. Daplas
     
  • Whitespace cleanup

    Signed-off-by: Antonino Daplas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Antonino A. Daplas
     
  • A static pseudocolor visual with depth less than 4 does exist, so let's not
    accidentally upscale the depth with this configuration

    Signed-off-by: Antonino Daplas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Antonino A. Daplas
     
  • Update platform code to dynamically allocate the platform device

    Signed-off-by: Antonino Daplas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Antonino A. Daplas
     
  • Update platform code to dynamically allocate the platform device

    Signed-off-by: Antonino Daplas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Antonino A. Daplas
     
  • Update platform code to dynamically allocate the platform device

    Signed-off-by: Antonino Daplas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Antonino A. Daplas
     
  • Update platform code to dynamically allocate the platform device

    Signed-off-by: Antonino Daplas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Antonino A. Daplas