15 Jan, 2012

1 commit

  • * 'for-next' of git://git.infradead.org/users/dhowells/linux-headers:
    UAPI: Split trivial #if defined(__KERNEL__) && X conditionals
    UAPI: Don't have a #elif clause in a __KERNEL__ guard in linux/soundcard.h
    UAPI: Fix AHZ multiple inclusion when __KERNEL__ is removed
    UAPI: Make linux/patchkey.h easier to parse
    UAPI: Fix nested __KERNEL__ guards in video/edid.h
    UAPI: Alter the S390 asm include guards to be recognisable by the UAPI splitter
    UAPI: Guard linux/cuda.h
    UAPI: Guard linux/pmu.h
    UAPI: Guard linux/isdn_divertif.h
    UAPI: Guard linux/sound.h
    UAPI: Rearrange definition of HZ in asm-generic/param.h
    UAPI: Make FRV use asm-generic/param.h
    UAPI: Make M32R use asm-generic/param.h
    UAPI: Make MN10300 use asm-generic/param.h
    UAPI: elf_read_implies_exec() is a kernel-only feature - so hide from userspace
    UAPI: Don't include linux/compat.h in sparc's asm/siginfo.h
    UAPI: Fix arch/mips/include/asm/Kbuild to have separate header-y lines

    Linus Torvalds
     

08 Jan, 2012

1 commit


05 Jan, 2012

2 commits


20 Dec, 2011

1 commit


18 Dec, 2011

1 commit


13 Dec, 2011

1 commit


02 Dec, 2011

13 commits

  • Add comments specifying what ovl/mgr functions may block.

    Signed-off-by: Tomi Valkeinen

    Tomi Valkeinen
     
  • omap_overlay_manager contains device_changed field, which no longer has
    any use. So remove the field and the few places where it is touched.

    Signed-off-by: Tomi Valkeinen

    Tomi Valkeinen
     
  • Setting overlay's output channel is currently handled at the same time
    as other overlay attributes. This is not right, as the normal attributes
    should only affect one overlay and manager, but changing the channel
    affects two managers.

    This patch moves the channel field into the "extra_info" set, handled
    together with enabled-status.

    Signed-off-by: Tomi Valkeinen

    Tomi Valkeinen
     
  • struct omap_overlayr contains info and info_dirty fields, both of which
    should be internal to apply.c.

    This patch moves those fields into ovl_priv data, and names them
    user_info and user_info_dirty.

    Signed-off-by: Tomi Valkeinen

    Tomi Valkeinen
     
  • struct omap_overlay_manager contains info and info_dirty fields, both of
    which should be internal to apply.c.

    This patch moves those fields into mgr_priv data, and names them
    user_info and user_info_dirty.

    Signed-off-by: Tomi Valkeinen

    Tomi Valkeinen
     
  • Overlays are currently enabled and disabled with a boolean in the struct
    omap_overlay_info. The overlay info is set with ovl->set_overlay_info(),
    and made into use with mgr->apply().

    This doesn't work properly, as the enable/disable status may affect also
    other overlays, for example when using fifo-merge. Thus the enabling and
    disabling of the overlay needs to be done outside the normal overlay
    configuration.

    This patch achieves that by doing the following things:

    1) Add function pointers to struct omap_overlay: enable(), disable() and
    is_enabled(). These are used to do the obvious. The functions may block.

    2) Move the "enabled" field from struct omap_overlay to ovl_priv_data.

    3) Add a new route for settings to be applied to the HW, called
    "extra_info". The status of the normal info and extra_info are tracked
    separately.

    The point here is to allow the normal info to be changed and
    applied in non-blocking matter, whereas the extra_info can only be
    changed when holding the mutex. This makes it possible to, for example,
    set the overlay enable flag, apply it, and wait until the HW has taken
    the flag into use.

    This is not possible if the enable flag would be in the normal info, as
    a new value for the flag could be set at any time from the users of
    omapdss.

    Signed-off-by: Tomi Valkeinen

    Tomi Valkeinen
     
  • struct omap_overlay_manager contains "enabled"-field, used to track if
    the manager is enabled or not. This field should be internal to apply.c.

    This patch moves the field to mgr_priv_data, and applies the necessary
    locking when accessing the field.

    Signed-off-by: Tomi Valkeinen

    Tomi Valkeinen
     
  • The current code uses dsi_video_mode_enable/disable functions to
    enable/disable DISPC output for video mode displays. For command mode
    displays we have no notion in the DISPC side of whether the panel is
    enabled, except when a dss_mgr_start_update() call is made.

    However, to properly maintain the DISPC state in apply.c, we need to
    know if a manager used for a manual update display is currently in use.

    This patch achieves that by changing dsi_video_mode_enable/disable to
    dsi_enable/disable_video_output, which is called by both video and
    command mode displays. For video mode displays it starts the actual
    pixel stream, as it did before. For command mode displays it doesn't do
    anything else than mark that the manager is currently in use.

    Signed-off-by: Tomi Valkeinen

    Tomi Valkeinen
     
  • Current way of handling overlay-manager links is a bit strange: each
    manager has a static array, containing pointers to all the overlays
    (even those used by other managers). The overlays contain a pointer to
    the manager being used.

    This patch makes the system a bit saner: each manager has a linked list
    of overlays, and only the overlays linked to that manager are in the
    list.

    Signed-off-by: Tomi Valkeinen

    Tomi Valkeinen
     
  • Overlay managers are stored in a linked list. There's no need for this
    list, as an array would do just as fine.

    This patch changes the code to use an array for overlay managers.

    Signed-off-by: Tomi Valkeinen

    Tomi Valkeinen
     
  • Add "enabled" field to struct omap_overlay_manager, which tells if the
    output is enabled or not. This will be used in apply.c in the following
    patches.

    Signed-off-by: Tomi Valkeinen

    Tomi Valkeinen
     
  • omap_overlay_manager struct contains enable() and disable() functions.
    However, these are only meant to be used from inside omapdss, and thus
    it's bad to expose the functions.

    This patch adds dss_mgr_enable() and dss_mgr_disable() functions to
    apply.c, which handle enabling and disabling the output.

    Signed-off-by: Tomi Valkeinen

    Tomi Valkeinen
     
  • Partial update for manual update displays has never worked quite well:
    * The HW has limitations on the update area, and the x and width need to
    be even.
    * Showing a part of a scaled overlay causes artifacts.
    * Makes the management of dispc very complex

    Considering the above points and the fact that partial update is not
    used anywhere, this and the following patches remove the partial update
    support. This will greatly simplify the following re-write of the apply
    mechanism to get proper locking and additional features like fifo-merge.

    This patch removes the partial update from the dsi.c.

    Signed-off-by: Tomi Valkeinen

    Tomi Valkeinen
     

22 Nov, 2011

7 commits


08 Nov, 2011

1 commit

  • This patch adds a custom DSS reset function used on OMAPs from OMAP2
    forward.

    The function doesn't actually do a reset, it only waits for the reset to
    complete. The reason for this is that on OMAP4 there is no possibility
    to do a SW reset, and on OMAP2/3 doing a SW reset for dss_core resets
    all the other DSS modules also, thus breaking the HWMOD model where
    every DSS module is handled independently.

    This fixes the problem with DSS reset on OMAP4, caused by the fact that
    because there's no SW reset for dss_core on OMAP4, the HWMOD framework
    doesn't try to reset dss_core and thus the DSS clocks were never enabled
    at the same time. This causes causes the HWMOD reset to fail for
    dss_dispc and dss_rfbi.

    The common reset function will also allow us to fix another problem in
    the future: before doing a reset we need to disable DSS outputs, which
    are in some cases enabled by the bootloader, as otherwise DSS HW seems
    to get more or less stuck, requiring a power reset to recover.

    Signed-off-by: Tomi Valkeinen
    [paul@pwsan.com: modified to build arch/arm/mach-omap2/display.o
    unconditionally to avoid an error when !CONFIG_OMAP2_DSS]
    Signed-off-by: Paul Walmsley

    Tomi Valkeinen
     

15 Oct, 2011

1 commit


03 Oct, 2011

3 commits

  • Add zorder support on OMAP4, this feature allows deciding the visibility order
    of the overlays based on the zorder value provided as an overlay info parameter
    or a sysfs attribute of the overlay object.

    Use the overlay cap OMAP_DSS_OVL_CAP_ZORDER to determine whether zorder is
    supported for the overlay or not. Use dss feature FEAT_ALPHA_FREE_ZORDER
    if the caps are not available.

    Ensure that all overlays that are enabled and connected to the same manager
    have different zorders. Swapping zorders of 2 enabled overlays currently
    requires disabling one of the overlays.

    Signed-off-by: Archit Taneja
    Signed-off-by: Tomi Valkeinen

    Archit Taneja
     
  • Add support for VIDEO3 pipeline on OMAP4:
    - Add VIDEO3 pipeline information in dss_features and omapdss.h
    - Add VIDEO3 pipeline register coefficients in dispc.h
    - Create a new overlay structure corresponding to VIDEO3.
    - Make changes in dispc.c for VIDEO3

    Signed-off-by: Archit Taneja
    Signed-off-by: Tomi Valkeinen

    Archit Taneja
     
  • On OMAP3, in order to enable alpha blending for LCD and TV managers, we needed
    to set LCDALPHABLENDERENABLE/TVALPHABLENDERENABLE bits in DISPC_CONFIG. On
    OMAP4, alpha blending is always enabled by default, if the above bits are set,
    we switch to an OMAP3 compatibility mode where the zorder values in the pipeline
    attribute registers are ignored and a fixed priority is configured.

    Rename the manager_info member "alpha_enabled" to "partial_alpha_enabled" for
    more clarity. Introduce two dss_features FEAT_ALPHA_FIXED_ZORDER and
    FEAT_ALPHA_FREE_ZORDER which represent OMAP3-alpha compatibility mode and OMAP4
    alpha mode respectively. Introduce an overlay cap for ZORDER. The DSS2 user is
    expected to check for the ZORDER cap, if an overlay doesn't have this cap, the
    user is expected to set the parameter partial_alpha_enabled. If the overlay has
    ZORDER cap, the DSS2 user can assume that alpha blending is already enabled.

    Don't support OMAP3 compatibility mode for now. Trying to read/write to
    alpha_blending_enabled sysfs attribute issues a warning for OMAP4 and does not
    set the LCDALPHABLENDERENABLE/TVALPHABLENDERENABLE bits.

    Change alpha_enabled to partial_alpha_enabled in the omap_vout driver. Use
    overlay cap "OMAP_DSS_OVL_CAP_GLOBAL_ALPHA" to check if overlay supports alpha
    blending or not. Replace this with checks for VIDEO1 pipeline.

    Cc: linux-media@vger.kernel.org
    Cc: Lajos Molnar
    Signed-off-by: Archit Taneja
    Acked-by: Vaibhav Hiremath
    Signed-off-by: Tomi Valkeinen

    Archit Taneja
     

30 Sep, 2011

8 commits

  • overlay_info struct, used to configure overlays, currently includes both
    physical and virtual addresses for the pixels. The vaddr was added to
    support more exotic configurations where CPU would be used to update a
    display, but it is not currently used and there has been no interest in
    the feature. Using CPU to update a screen is also less interesting now
    that OMAP4 has two LCD outputs.

    This patch removes the vaddr field, and modifies the users of omapdss
    accordingly. This makes the use of omapdss a bit simpler, as the user
    doesn't need to think if it needs to give the vaddr.

    Signed-off-by: Tomi Valkeinen

    Tomi Valkeinen
     
  • This is a driver for N800's display, ported from the old omapfb. This is
    a slightly lighter version of the driver as not all features of the old
    driver can be ported without big changes to DSS2, and also because some
    of the HW features used in the old driver are unclear (e.g. the power
    management part).

    That said, the new driver works fine for basic use.

    Architecturally the driver is not as neat as it could be. N800's display
    HW consists of a display buffer chip and a panel, and ideally they would
    be represented by separate, independent drivers. This is not currently
    possible, and this driver contains both buffer chip and panel driver.

    Signed-off-by: Tomi Valkeinen

    Tomi Valkeinen
     
  • Taal panel driver supports two kinds of backlight control: 1) using DSI
    commands sent to the panel to control the backlight, 2) calling function
    pointers going to the board file to control the backlight.

    The second option is a bit hacky, and will no longer be needed when the
    PWM driver supports the backlight features. After that we can use the
    standard PWM backlight driver.

    This patch removes the second backlight control mechanism, and adds a
    boolean field, use_dsi_backlight, to nokia_dsi_panel_data which the
    board file can use to inform whether the panel driver should use DSI
    commands to control the backlight.

    Signed-off-by: Tomi Valkeinen

    Tomi Valkeinen
     
  • We have currently panel-generic-dpi driver, which is a combined driver
    for dummy panels and also for DVI output.

    The aim is to split the panel-generic-dpi into two, one for fixed size
    dummy panels connected via DPI, and the other (this) for variable
    resolution output which supports DDC channel (in practice a DVI framer
    chip connected to DPI output).

    Original i2c code by: Ricardo Salveti de Araujo

    Signed-off-by: Tomi Valkeinen

    Tomi Valkeinen
     
  • detect() can be used to probe if the display is connected.

    Signed-off-by: Tomi Valkeinen

    Tomi Valkeinen
     
  • read_edid() can be used to get the EDID information from the display.

    Signed-off-by: Tomi Valkeinen

    Tomi Valkeinen
     
  • Add IRQ definitions for missing OMAP4 IRQs: FRAMEDONEWB, FRAMEDONETV,
    WBBUFFEROVERFLOW.

    Signed-off-by: Tomi Valkeinen

    Tomi Valkeinen
     
  • regn divider is one greater than the REGN divider in TRM. Add a comment
    to point this out.

    Signed-off-by: Tomi Valkeinen

    Tomi Valkeinen