06 Feb, 2009

1 commit

  • Fix namespace violations by changing non-kconfig CONFIG_ names to CNFG_*.

    Fixes breakage in staging/, which adds a real CONFIG_PANEL.

    Signed-off-by: Randy Dunlap
    Cc: Benjamin Herrenschmidt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Randy Dunlap
     

31 Jan, 2009

2 commits


22 Dec, 2008

1 commit

  • This patch adds sh_mobile_lcdcfb deferred io support for SYS panels.

    The LCDC hardware block managed by the sh_mobile_lcdcfb driver supports
    RGB or SYS panel configurations. SYS panels come with an external display
    controller that is resposible for refreshing the actual LCD panel. RGB
    panels are controlled directly by the LCDC and they need to be refreshed
    by the LCDC hardware.

    In the case of SYS panels we can save some power by configuring the LCDC
    hardware block in one-shot mode. In this one-shot mode panel refresh is
    managed by software. This works well together with deferred io since it
    allows us to stop clocks for most of the time and only enable clocks when
    we actually want to trigger an update. When there is no fbdev activity
    the clocks are kept stopped which allows us to deep sleep.

    The refresh rate in deferred io mode is set using platform data. The same
    platform data can also be used to disable deferred io mode.

    As with other deferred io frame buffers user space code should use fsync()
    on the frame buffer device to trigger an update.

    Signed-off-by: Magnus Damm
    Signed-off-by: Paul Mundt

    Magnus Damm
     

11 Dec, 2008

1 commit

  • This reverts commit b1ee26bab14886350ba12a5c10cbc0696ac679bf, along with
    the "fixes" for it that all just caused problems:

    - c4c6fa9891f3d1bcaae4f39fb751d5302965b566 "radeonfb: fix problem with
    color expansion & alignment"

    - f3179748a157c21d44d929fd3779421ebfbeaa93 "radeonfb: Disable new color
    expand acceleration unless explicitely enabled"

    because even when disabled, it breaks for people. See

    http://bugzilla.kernel.org/show_bug.cgi?id=12191

    for the latest example.

    Acked-by: Benjamin Herrenschmidt
    Acked-by: David S. Miller
    Cc: Krzysztof Halasa
    Cc: James Cloos
    Cc: "Rafael J. Wysocki"
    Cc: Krzysztof Helt
    Cc: Jean-Luc Coulon
    Cc: Andrew Morton
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     

13 Nov, 2008

1 commit


20 Oct, 2008

3 commits


17 Oct, 2008

5 commits

  • The Epson s1d13xxx hardware is common in many handhelds, but our driver is
    currently locked to a single chip revision. This patch adds an array of
    known to work revisions (which can be extended).

    [akpm@linux-foundation.org: cleanups]
    Signed-off-by: Kristoffer Ericson
    Acked-by: Thibaut Varène
    Cc: Geert Uytterhoeven
    Cc: Krzysztof Helt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kristoffer Ericson
     
  • Implement support for HW color expansion of 1bpp images, along with some
    improvements to the FIFO handling and other accel operations.

    The offset fixup code is now unnecessary as the fbcon core will call our
    set_par upon switch back from KD_GRAPHICS before anything else happens. I
    removed it as it would slow down accel operations.

    The fifo wait has been improved to avoid hitting the HW register as often,
    and the various accel ops are now performing better caching of register
    values.

    Overall, this improve accel performances. The imageblit acceleration does
    result in a small overall regression in performances on some machines (on
    the order of 5% on some x86), probably becaus the SW path provides a
    better bus utilisation, but I decided to ingnore that as the performances
    is still very good, and on the other hand, some machines such as some
    sparc64 get a 3 fold performance improvement.

    Signed-off-by: Benjamin Herrenschmidt
    Acked-by: David S. Miller
    Cc: Krzysztof Halasa
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Benjamin Herrenschmidt
     
  • Fix a couple of incomplete tests of the chip families in the engine
    init/reset code and proper initialization of the destination cache mode.
    The result should better match what the latest X radeon driver does.

    Signed-off-by: Benjamin Herrenschmidt
    Acked-by: David S. Miller
    Cc: Krzysztof Halasa
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Benjamin Herrenschmidt
     
  • Remove mutex from the fb_open/fb_release functions as these operations are
    mutexed at fb layer.

    Signed-off-by: Krzysztof Helt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Krzysztof Helt
     
  • __FUNCTION__ is gcc-specific, use __func__

    Signed-off-by: Harvey Harrison
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Harvey Harrison
     

10 Oct, 2008

1 commit


01 Oct, 2008

1 commit


19 Sep, 2008

1 commit


27 Aug, 2008

1 commit


13 Aug, 2008

2 commits

  • Specify how much physically continuous, DMA capable memory will be
    allocated at driver initialization time. This allow to create framebuffer
    device with larger virtual resolution. Combine with y-panning this can be
    used to implement double buffering acceleration method.

    Signed-off-by: Stanislaw Gruszka
    Acked-by: Haavard Skinnemoen
    Acked-by: Krzysztof Helt
    Cc: Nicolas Ferre
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Haavard Skinnemoen
     
  • Some chips appear to have the 2D engine hang during screen redraw,
    typically in a sequence of copyarea operations. This appear to be
    solved by adding a flush of the engine destination pixel cache
    and waiting for the engine to be idle before issuing the accel
    operation. The performance impact seems to be fairly small.

    Here is a trace on an RV370 (PCI device ID 0x5b64), it records the
    RBBM_STATUS register, then the source x/y, destination x/y, and
    width/height used for the copy:

    ----------------------------------------
    radeonfb_prim_copyarea: STATUS[00000140] src[210:70] dst[210:60] wh[a0:10]
    radeonfb_prim_copyarea: STATUS[00000140] src[2b8:70] dst[2b8:60] wh[88:10]
    radeonfb_prim_copyarea: STATUS[00000140] src[348:70] dst[348:60] wh[40:10]
    radeonfb_prim_copyarea: STATUS[80020140] src[390:70] dst[390:60] wh[88:10]
    radeonfb_prim_copyarea: STATUS[8002613f] src[40:80] dst[40:70] wh[28:10]
    radeonfb_prim_copyarea: STATUS[80026139] src[a8:80] dst[a8:70] wh[38:10]
    radeonfb_prim_copyarea: STATUS[80026133] src[e8:80] dst[e8:70] wh[80:10]
    radeonfb_prim_copyarea: STATUS[8002612d] src[170:80] dst[170:70] wh[30:10]
    radeonfb_prim_copyarea: STATUS[80026127] src[1a8:80] dst[1a8:70] wh[8:10]
    radeonfb_prim_copyarea: STATUS[80026121] src[1b8:80] dst[1b8:70] wh[88:10]
    radeonfb_prim_copyarea: STATUS[8002611b] src[248:80] dst[248:70] wh[68:10]
    ----------------------------------------

    When things are going fine the copies complete before the next ROP is
    even issued, but all of a sudden the 2D unit becomes active (bit 17 in
    RBBM_STATUS) and the FIFO retry (bit 13) and FIFO pipeline busy (bit
    14) are set as well. The FIFO begins to backup until it becomes full.

    What happens next is the radeon_fifo_wait() times out, and we access
    the chip illegally leading to a bus error which usually wedges the
    box. None of this makes it to the console screen, of course :-)
    radeon_fifo_wait() should be modified to reset the accelerator when
    this timeout happens instead of programming the chip anyways.

    ----------------------------------------
    radeonfb: FIFO Timeout !
    ERROR(0): Cheetah error trap taken afsr[0010080005000000] afar[000007f900800e40] TL1(0)
    ERROR(0): TPC[595114] TNPC[595118] O7[459788] TSTATE[11009601]
    ERROR(0): TPC
    ERROR(0): M_SYND(0), E_SYND(0), Privileged
    ERROR(0): Highest priority error (0000080000000000) "Bus error response from system bus"
    ERROR(0): D-cache idx[0] tag[0000000000000000] utag[0000000000000000] stag[0000000000000000]
    ERROR(0): D-cache data0[0000000000000000] data1[0000000000000000] data2[0000000000000000] data3[0000000000000000]
    ERROR(0): I-cache idx[0] tag[0000000000000000] utag[0000000000000000] stag[0000000000000000] u[0000000000000000] l[00\

    ERROR(0): I-cache INSN0[0000000000000000] INSN1[0000000000000000] INSN2[0000000000000000] INSN3[0000000000000000]
    ERROR(0): I-cache INSN4[0000000000000000] INSN5[0000000000000000] INSN6[0000000000000000] INSN7[0000000000000000]
    ERROR(0): E-cache idx[800e40] tag[000000000e049f4c]
    ERROR(0): E-cache data0[fffff8127d300180] data1[00000000004b5384] data2[0000000000000000] data3[0000000000000000]
    Ker:xnel panic - not syncing: Irrecoverable deferred error trap.
    ----------------------------------------

    Another quirk is that these copyarea calls will not happen until the
    first drivers/char/vt.c:redraw_screen() occurs. This will only happen
    if you 1) VC switch or 2) run "consolechars" or 3) unblank the screen.

    This seems to happen because until a redraw_screen() the screen scrolling
    method used by fbcon is not finalized yet. I've seen this with other fb
    drivers too.

    So if all you do is boot straight into X you will never see this bug on
    the relevant chips.

    Signed-off-by: David S. Miller
    Signed-off-by: Benjamin Herrenschmidt
    Cc: [2.6.25.x, 2.6.26.x]
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Miller
     

06 Aug, 2008

1 commit

  • I have a new PCI-E radeon RV380 series card (PCI device ID 5b64) that
    hangs in my sparc64 boxes when the init scripts set the font. The problem
    goes away if I disable acceleration.

    I haven't figured out that bug yet, but along the way I found some
    corrections to make based upon some auditing.

    1) The RB2D_DC_FLUSH_ALL value used by the kernel fb driver
    and the XORG video driver differ. I've made the kernel
    match what XORG is using.

    2) In radeonfb_engine_reset() we have top-level code structure
    that roughly looks like:

    if (family is 300, 350, or V350)
    do this;
    else
    do that;
    ...
    if (family is NOT 300, OR
    family is NOT 350, OR
    family is NOT V350)
    do another thing;

    this last conditional makes no sense, is always true,
    and obviously was likely meant to be "family is NOT
    300, 350, or V350". So I've made the code match the
    intent.

    Signed-off-by: David S. Miller
    Acked-by: Benjamin Herrenschmidt
    Tested-by: Benjamin Herrenschmidt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Miller
     

27 Jul, 2008

1 commit

  • This patch fixes the following compile error caused by commit
    d22579b837358cbef12ccca5adaf7e93ae09ab7a ("atmel_lcdfb: FIFO underflow
    management"):

    In file included from arch/avr32/boards/atstk1000/atstk1004.c:21:
    include/video/atmel_lcdc.h:40: error: field 'task' has incomplete type

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

    Adrian Bunk
     

25 Jul, 2008

12 commits

  • Remove the xtimings structure which only stored some values to be used
    later (mostly once). Calculate and use these values in places they are
    needed.

    Signed-off-by: Krzysztof Helt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Krzysztof Helt
     
  • Add a platform_lcd driver to allow boards with simple lcd power controls
    to register themselves easily.

    [akpm@linux-foundation.org: build fix]
    Signed-off-by: Ben Dooks
    Cc: Richard Purdie
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ben Dooks
     
  • Provide support for the ILI9320 display controller chip which is found in
    many LCD displays. Included with this is support for an example LCD using
    this chip, the VGG2432A4.

    Signed-off-by: Ben Dooks
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ben Dooks
     
  • Manage atmel_lcdfb FIFO underflow

    Resetting the LCD and DMA allows to fix screen shifting after a FIFO
    underflow. It follows reset sequence from errata "LCD Screen Shifting
    After a Reset".

    Signed-off-by: Nicolas Ferre
    Cc: Haavard Skinnemoen
    Cc: Andrew Victor
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Nicolas Ferre
     
  • Add imageblit acceleration for the Blade3D family of cores. The code is
    based on code from the cyblafb driver.

    It is a step toward assimilating back the cyblafb driver into the
    tridentfb driver. The cyblafb driver handles a subfamily of the Trident
    Blade3d cores.

    Signed-off-by: Krzysztof Helt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Krzysztof Helt
     
  • This patch contains general source code improvments:
    - more simple functions are inline
    - removes some meaningless output and the VERSION
    string as it is no use
    - eng_par is moved into the tridentfb_par
    - removed small section of code for CyberBladeXPAi1
    which is maybe right for only one resolution
    and refresh rate and is probably redundant now
    - other minor improvements

    Signed-off-by: Krzysztof Helt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Krzysztof Helt
     
  • This patch brings various acceleration improvements:
    - set copyarea/fillrect for non-accelerated framebuffer (fix)
    - remove 15 bpp depth handling to simplify code as it hardly
    works (15 bpp handling was obviously missing in some switches)
    - add fb_sync call and move waiting before accelerated function
    to make acceleration more asynchronous to cpu (few % of speed
    improvement)
    - add cpu_relax() call in waiting loops
    - make longer register names and name more registers
    - move registers' definition to header
    - general code improvements (shortening, simplifying)

    Signed-off-by: Krzysztof Helt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Krzysztof Helt
     
  • Add support for TGUI 9440 chip.

    Signed-off-by: Krzysztof Helt
    Cc: "Antonino A. Daplas"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Krzysztof Helt
     
  • Improved values for some registers after Xorg Trident driver. The main
    problem was that values set by BIOS have been ignored.

    This patch completely remove random pixels ("snow") on the TGUI 9680 and
    9440 (not supported yet by the driver). It does not help with the "snow"
    on 3DImage and Blade3D cards.

    There is also small improvement in timing calculations (hblank start and
    vblank start)

    Signed-off-by: Krzysztof Helt
    Cc: "Antonino A. Daplas"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Krzysztof Helt
     
  • Make use of functions and constants from the vga.h header to compact the code
    and make it more readable.

    Signed-off-by: Krzysztof Helt
    Cc: "Antonino A. Daplas"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Krzysztof Helt
     
  • This patch converts the is_blade() and is_xp() macros into local functions.

    Signed-off-by: Krzysztof Helt
    Cc: "Antonino A. Daplas"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Krzysztof Helt
     
  • This patch moves flat panel indicator into tridentfb_par structure and removes
    related global variables and macros.

    Signed-off-by: Krzysztof Helt
    Cc: "Antonino A. Daplas"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Krzysztof Helt
     

28 Apr, 2008

4 commits

  • This patch splits hecubafb into the platform independent hecubafb and the
    platform dependent n411.

    Signed-off-by: Jaya Kumar
    Cc: "Antonino A. Daplas"
    Cc: Geert Uytterhoeven
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jaya Kumar
     
  • This patch splits metronomefb into the platform independent metronomefb and
    the platform dependent am200epd.

    Signed-off-by: Jaya Kumar
    Cc: "Antonino A. Daplas"
    Cc: Geert Uytterhoeven
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jaya Kumar
     
  • Adds different wiring mode for the LCD screen.

    The legacy atmel LCDC IP uses a non standard color mode, "BGR-555.1" instead
    "RGB-565". The major part of graphic stacks for embedded systems uses only
    "RGB-565". It is possible to swap LCD IOs instead of doing this bit swapping
    by software (See application note AT91SAM9 LCD Controller
    http://www.atmel.com/dyn/resources/prod_documents/doc6300.pdf)

    This wire swapping is done on the at91sam9rl-ek board (board code
    using this patch will come later).

    Signed-off-by: Nicolas Ferre
    Cc: David Brownell
    Cc: Hans-Christian Egtvedt
    Cc: Haavard Skinnemoen
    Cc: Andrew Victor
    Cc: "Antonino A. Daplas"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Nicolas Ferre
     
  • Teach atmel_lcdfb driver how to suspend/resume.

    Note that the backlight control should probably do more of the same stuff:
    turning off display power (more than just the backlight) and stopping the
    clocks (and dma to drive the no-longer-seen display). No point in wasting
    power to generate images that can't be observed, after all...

    Signed-off-by: David Brownell
    Signed-off-by: Nicolas Ferre
    Cc: Hans-Christian Egtvedt
    Cc: Haavard Skinnemoen
    Cc: Andrew Victor
    Cc: "Antonino A. Daplas"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Brownell
     

07 Feb, 2008

2 commits

  • On the sam9 EK boards, the LCD backlight is hooked up to a PWM output from
    the LCD controller. It's controlled by "contrast" registers though.

    This patch lets boards declare that they have that kind of backlight
    control. The driver can then export this control, letting screenblank and
    other operations actually take effect ... reducing the typically
    substantial power drain from the backlight.

    Note that it's not fully cooked
    - doesn't force backlight off during system suspend
    - the "power" and "blank" events may not be done right
    This should be easily added in the future.

    [nicolas.ferre@atmel.com: remove unneeded inline and rename functions]
    Signed-off-by: David Brownell
    Signed-off-by: Nicolas Ferre
    Cc: Andrew Victor
    Cc: Russell King
    Cc: "Antonino A. Daplas"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Brownell
     
  • Setting a display timing parameter too high or too low may cause it to
    wrap around and thus become completely wrong. Validate the timings in
    atmel_lcdfb_check_var() and saturate to the highest or lowest possible
    value if necessary.

    Signed-off-by: Haavard Skinnemoen
    Cc: "Antonino A. Daplas"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Haavard Skinnemoen