25 Jul, 2008

2 commits

  • Simply enabling DAC blanking without turning off the CRT seems to be resulting
    in characters remaining on the screen when the monitor blanks. This patch
    turns off the CRT for all modes, and also powers down the DACs when vsync
    and/or hsync are disabled.

    Signed-off-by: Jordan Crouse
    Acked-by: Andres Salomon
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jordan Crouse
     
  • We never sent the gamma stuff upstream, and don't really care about it.
    However, lx_[gs]_et_gamma prototypes snuck into lxfb.h anyways; there are
    no definitions for them. Drop the dead code.

    Signed-off-by: Andres Salomon
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andres Salomon
     

15 May, 2008

1 commit

  • The following patch caused a regression with OLPC panels:

    commit 3888d4639e78802c4ec1086127124e890461b9e4
    lxfb: extend PLL table to support dotclocks below 25 MHz

    Extends the PLL frequency table of the AMD Geode-LX frame buffer driver to
    make use of the DIV4 bit, thus adding support for dotclocks between 6 and 25
    MHz. These are needed for small LCDs (e.g. 320x240). Also inserts some
    intermediate steps between pre-existing frequencies.

    The problem was the insertion of intermediate steps into the frequency
    table; they would cause the wrong frequency to be matched. This patch
    drops those intermediate frequencies while keeping the sub-25MHz
    frequencies.

    Signed-off-by: Andres Salomon
    Signed-off-by: Jens Rottmann
    Tested-by: Andres Salomon
    Acked-by: Jordan Crouse
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jens Rottmann
     

28 Apr, 2008

23 commits

  • Since there's no way to autodetect panel modes, we're forced to hardcode them
    in the driver and add a big fat #ifdef. The OLPC DCON needs a specific mode
    line (at 1200x900). This adds it to both gxfb and lxfb.

    (Jordan said: We could probably detect the panel mode, but there isn't any
    reason to since the panel timings are well known and won't change. While OFW
    detection would be good computer science fu, it would be a wasted effort since
    its so easy to hard code them into the table.)

    Signed-off-by: Andres Salomon
    Cc: Jordan Crouse
    Cc: "Antonino A. Daplas"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andres Salomon
     
  • If there's no VSA2 (ie, if we're using tinybios or OpenFirmware), use the
    GLIU's P2D Range Offset Descriptor to determine how much memory we have
    available for the framebuffer.

    Originally based on a patch by Jordan Crouse. Tested with OpenFirmware;
    Pascal informs me that tinybios has a stub that fills in P2D_RO0.

    Signed-off-by: Andres Salomon
    Cc: Jordan Crouse
    Cc: "Antonino A. Daplas"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andres Salomon
     
  • ..Rather than using magic constants.

    Signed-off-by: Andres Salomon
    Cc: Jordan Crouse
    Cc: "Antonino A. Daplas"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andres Salomon
     
  • The Display Control's CRT_EN can be shut off when we enter FB_BLANK_POWERDOWN
    in an attempt to save additional power.

    Signed-off-by: Andres Salomon
    Cc: Jordan Crouse
    Cc: "Antonino A. Daplas"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andres Salomon
     
  • By default disable VT switch, but allow it to be overridden via the
    'vt_switch' module arg.

    Signed-off-by: Andres Salomon
    Cc: "Antonino A. Daplas"
    Cc: Jordan Crouse
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andres Salomon
     
  • Match other fb drivers (including gxfb). Also, document the current boot
    arguments in Documentation/fb/lxfb.txt.

    Signed-off-by: Andres Salomon
    Cc: "Antonino A. Daplas"
    Cc: Jordan Crouse
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andres Salomon
     
  • This adds the ability to suspend/resume the lxfb driver, which includes:
    - Register and palette saving code; registers are stored in lxfb_par.
    A few MSR values are saved as well.
    - lx_powerup and lx_powerdown functions which restore/save registers and
    enable/disable graphic engines.
    - lxfb_suspend/lxfb_resume

    Originally based on a patch by Jordan Crouse.

    [akpm@linux-foundation.org: be conventional, save an ifdef]
    Signed-off-by: Andres Salomon
    Cc: "Antonino A. Daplas"
    Cc: Jordan Crouse
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andres Salomon
     
  • Finally, move the MSR bitfields around in lxfb.h, and rename them. Alas, most
    of that crap appears to be undocumented.

    Signed-off-by: Andres Salomon
    Cc: "Antonino A. Daplas"
    Cc: Jordan Crouse
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andres Salomon
     
  • Finally drop the last remnants of df_regs, using vp_regs instead. Also, drop
    panel_width and panel_height from lxfb_par; they're unused.

    Signed-off-by: Andres Salomon
    Cc: "Antonino A. Daplas"
    Cc: Jordan Crouse
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andres Salomon
     
  • - Rename various bitfield defines to match the data sheet names.
    - Rename DF_ register definitions to VP_ to match the data sheet;
    ie, DF_PAR -> VP_PAR.
    - for GP/DC registers, rather than defining to specific addresses, use
    an enum to number them sequentially and just multiply by 4 (bytes) to
    access them (in read_*/write_* functions).
    - for VP/FP registers, use an enum and multiple by 8 (bytes). They're
    64bit registers.

    Signed-off-by: Andres Salomon
    Cc: "Antonino A. Daplas"
    Cc: Jordan Crouse
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andres Salomon
     
  • This creates read_gp/write_gp, read_dc/write_dc, read_vp/write_vp, and
    read_fp/write_fp for reading and updating those registers. Note that we don't
    follow the 'DF' naming; those will be renamed to VP shortly.

    Signed-off-by: Andres Salomon
    Cc: "Antonino A. Daplas"
    Cc: Jordan Crouse
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andres Salomon
     
  • Extends the PLL frequency table of the AMD Geode-LX frame buffer driver to
    make use of the DIV4 bit, thus adding support for dotclocks between 6 and 25
    MHz. These are needed for small LCDs (e.g. 320x240). Also inserts some
    intermediate steps between pre-existing frequencies.

    Signed-off-by: Jens Rottmann
    Cc: Jordan Crouse
    Cc: "Antonino A. Daplas"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jens Rottmann
     
  • Prior to suspend, we allocate and switch to a new VT; after suspend, we switch
    back to the original VT. This can be slow, and is completely unnecessary if
    the framebuffer we're using can restore video properly.

    This adds a hook that allows drivers to select whether or not to do this vt
    switch, and changes the gxfb driver to call this hook. It also adds a module
    param to gxfb to allow controlling of the vt switch (defaulting to no switch).

    (Note: I'm not convinced that console_sem is the best way to protect this, but
    we should probably have some form of locking..)

    [akpm@linux-foundation.org: build fix]
    Signed-off-by: Andres Salomon
    Cc: Jordan Crouse
    Cc: "Antonino A. Daplas"
    Cc: Pavel Machek
    Cc: "Rafael J. Wysocki"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andres Salomon
     
  • This adds the ability to suspend/resume the gxfb driver, which includes:
    - The addition of a Graphics Processor register table in gxfb.h, and
    associated GP handling.
    - Register and palette saving code; registers are stored in gxfb_par.
    A few MSR values are saved as well.
    - gx_powerup and gx_powerdown functions which restore/save registers and
    enable/disable graphic engines.
    - gxfb_suspend/gxfb_resume

    Originally based on a patch by Jordan Crouse.

    Signed-off-by: Andres Salomon
    Cc: Jordan Crouse
    Cc: "Antonino A. Daplas"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andres Salomon
     
  • We want to stop sharing stuff with gx1fb; it makes little sense. There were
    fields in geodefb_par that weren't being used, there was little point to the
    DC/VP ops callbacks, etc. This implements the following:

    - Create gxfb_par (based on geodefb_par), place it in gxfb.h
    - Drop display_gx.h and video_gx.h. The last few patches moved most
    stuff into gxfb.h anyways, so there was very little left.
    - Drop the geode_{dc,vid}_ops stuff. Un-static functions, add
    declarations to gxfb.h.

    Signed-off-by: Andres Salomon
    Cc: Jordan Crouse
    Cc: "Antonino A. Daplas"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andres Salomon
     
  • This continues the gxfb header cleanups. MSRs are defined in geode.h; the
    specific bits we care about are defined in gxfb.h.

    Signed-off-by: Andres Salomon
    Cc: Jordan Crouse
    Cc: "Antonino A. Daplas"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andres Salomon
     
  • This does the following in preparation for register saving:
    - moves the register definitions from video_gx.h and display_gx.h into
    gxfb.h.
    - renames GX_* registers to match their section (ie, VP_).
    - renames register bitfields to match the data sheet (ie,
    DC_DCFG_TGEN -> DC_DISPLAY_CFG_TGEN).
    - for DC registers, rather than defining to specific addresses, use
    an enum to number them sequentially and just multiply by 4(bytes) to
    access them (in read_dc/write_dc).
    - for VP and FP registers, use an enum and multiple by 8 (bytes). They're
    64bit registers.

    Signed-off-by: Andres Salomon
    Cc: Jordan Crouse
    Cc: "Antonino A. Daplas"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andres Salomon
     
  • This creates read_dc/write_dc, read_vp/write_vp, and read_fp/write_fp for
    reading and updating those registers. It creates gxfb.h to house these.

    We also drop a no-op readl() from gx_set_mode. Other than that, there should
    be no functionality change.

    Signed-off-by: Andres Salomon
    Cc: Jordan Crouse
    Cc: "Antonino A. Daplas"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andres Salomon
     
  • Use a command line option (vram) rather than hardcoding the vram size. LxFB
    already does this; it's useful for machines that can't query the BIOS for fb
    size. This patch originated from David Woodhouse, was modified by Jordan
    Crouse, and was then modified further by me.

    This also adds some gxfb documentation in Documentation/fb.

    Signed-off-by: Andres Salomon
    Cc: Jordan Crouse
    Cc: "Antonino A. Daplas"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andres Salomon
     
  • Drop the class/class_mask stuff; it's unnecessary as long as the vendor and
    device IDs match.

    Signed-off-by: Andres Salomon
    Cc: "Antonino A. Daplas"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andres Salomon
     
  • When the FP strap is enabled, don't turn on the CRT DACs - that will save
    about 35 mA of power.

    Updated/cleaned up by Andres Salomon.

    Signed-off-by: Andres Salomon
    Signed-off-by: Jordan Crouse
    Cc: "Antonino A. Daplas"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jordan Crouse
     
  • While running in flatpanel mode it is important to change the FP sync bits (VG
    register 0x408) rather then the CRT sync bits (VG register 0x008). This patch
    keeps the CRT sync bits at default when a flatpanel exists.

    Note that this also fixes inverted logic; we want CRT_VSYNC_POL to be set (ie,
    vsync is normally high) when FB_SYNC_VERT_HIGH_ACT is unset.

    Signed-off-by: Jordan Crouse
    Signed-off-by: Andres Salomon
    Cc: "Antonino A. Daplas"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jordan Crouse
     
  • This cleans up a few MSR-using drivers in the following manner:
    - Ensures MSRs are all defined in asm/geode.h, rather than in misc
    places
    - Makes the naming consistent; cs553[56] ones begin with MSR_,
    GX-specific ones start with MSR_GX_, and LX-specific ones start
    with MSR_LX_. Also, make the names match the data sheet.
    - Use MSR names rather than numbers in source code
    - Document the fact that the LX's MSR_PADSEL has the wrong value
    in the data sheet. That's, uh, good to note.

    Signed-off-by: Andres Salomon
    Acked-by: Jordan Crouse
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andres Salomon
     

07 Feb, 2008

1 commit


15 Nov, 2007

1 commit

  • A relatively recent version of the Geode LX datasheet listed the wrong
    address for one of the MSRs that controls TFT panels, resulting in
    breakage. This patch corrects the MSR address.

    Signed-off-by: Jordan Crouse
    Cc: "Antonino A. Daplas"
    Cc: "H. Peter Anvin"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jordan Crouse
     

20 Oct, 2007

1 commit

  • cpu_data is currently an array defined using NR_CPUS. This means that
    we overallocate since we will rarely really use maximum configured cpus.
    When NR_CPU count is raised to 4096 the size of cpu_data becomes
    3,145,728 bytes.

    These changes were adopted from the sparc64 (and ia64) code. An
    additional field was added to cpuinfo_x86 to be a non-ambiguous cpu
    index. This corresponds to the index into a cpumask_t as well as the
    per_cpu index. It's used in various places like show_cpuinfo().

    cpu_data is defined to be the boot_cpu_data structure for the NON-SMP
    case.

    Signed-off-by: Mike Travis
    Acked-by: Christoph Lameter
    Cc: Andi Kleen
    Cc: James Bottomley
    Cc: Dmitry Torokhov
    Cc: "Antonino A. Daplas"
    Cc: Mark M. Hoffman
    Signed-off-by: Andrew Morton
    Signed-off-by: Ingo Molnar
    Signed-off-by: Thomas Gleixner

    Mike Travis
     

17 Oct, 2007

1 commit


01 Aug, 2007

1 commit


13 Feb, 2007

1 commit

  • Juergen Beisert reported that the following option doesn't work for him

    video=gx1fb:1024x768-16@60

    though sisfb was able to parse similar option correctly.

    Signed-off-by: Alexey Dobriyan
    Cc: Jordan Crouse
    Cc: "Antonino A. Daplas"
    Cc: James Simmons
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alexey Dobriyan
     

09 Dec, 2006

6 commits


08 Dec, 2006

1 commit

  • Rename a poorly worded PCI ID for the Geode GX and CS5535 companion chips.
    The graphics processor and host bridge actually live in the northbridge on
    the integrated processor, not in the companion chip.

    Signed-off-by: Jordan Crouse
    Acked-by: Alan Cox
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jordan Crouse
     

11 Jul, 2006

1 commit

  • MAX_NR_CONSOLES, fg_console, want_console and last_console are more of a
    function of the VT layer than the TTY one. Moving these to vt.h and vt_kern.h
    allows all of the framebuffer and VT console drivers to remove their
    dependency on tty.h.

    [akpm@osdl.org: fix alpha build]
    Signed-off-by: Jon Smirl
    Signed-off-by: Antonino Daplas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jon Smirl