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

19 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
     
  • regn divider is currently programmed to the registers without change,
    but when calculating clock frequencies it is used as regn+1.

    To make this similar to how DSI handles the dividers this patch changes
    the regn value to be used as such for calculations, but the value
    programmed to registers is regn-1.

    This simplifies the clock frequency calculations, makes it similar to
    DSI, and also allows us to use regn value 0 as undefined.

    Cc: Mythri P K
    Signed-off-by: Tomi Valkeinen

    Tomi Valkeinen
     
  • Add initial support for DSI video mode panels:
    - Add a new structure omap_dss_dsi_videomode_data in the member "panel" in
    omap_dss_device struct. This allows panel driver to configure dsi video_mode
    specific parameters.
    - Configure basic DSI video mode timing parameters: HBP, HFP, HSA, VBP, VFP, VSA,
    TL and VACT.
    - Configure DSI protocol engine registers for video_mode support.
    - Introduce functions dsi_video_mode_enable() and dsi_video_mode_disable() which
    enable/disable video mode for a given virtual channel and a given pixel format
    type.

    Things left for later
    - Add functions to check for errors in video mode timings provided by panel.
    - Configure timing registers required for command mode interleaving.

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

    Archit Taneja
     
  • Currently, DSI pixel info is only represented by the pixel size in bits using
    the pixel_size parameter in omap_dss_device struct's ctrl member.

    This is not sufficient information for DSI video mode usage, as two of the
    supported formats(RGB666 loosely packed, and RGB888) have the same pixel
    container size, but different data_type values for the video mode packet header.

    Create enum "omap_dss_dsi_pixel_format" which describes the pixel data format
    the panel is configured for. Create helper function dsi_get_pixel_size() which
    returns the pixel size of the given pixel format.

    Modify functions omapdss_default_get_recommended_bpp() and dss_use_replication()
    to use dsi_get_pixel_size().

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

    Archit Taneja
     
  • Introduce read functions which use generic Processor-to-Peripheral
    transaction types. These are needed by some devices which may not support
    corresponding DCS commands.

    Add function dsi_vc_generic_send_read_request() which can send
    a short packet with 0, 1 or 2 bytes of request data and the corresponding
    generic data type.

    Rename function dsi_vc_dcs_read_rx_fifo() to dsi_vc_read_rx_fifo() and modify
    it to take the enum "dss_dsi_content_type" as an argument to use either DCS
    or GENERIC Peripheral-to-Processor transaction types while parsing data read
    from the device.

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

    Archit Taneja
     
  • Remove functions dsi_vc_dcs_read_1() and dsi_vc_dcs_read_2(), these are used
    when the panel is expected to return 1 and 2 bytes respecitvely. This was manily
    used for debugging purposes. These functions should be implemented in the panel
    driver if needed.

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

    Archit Taneja
     
  • Intoduce enum "dss_dsi_content_type" to differentiate between DCS and generic
    content types.

    Introduce short and long packet write functions which use generic
    Processor-to-Peripheral transaction types. These are needed by some devices
    which may not support corresponding DCS commands. Create common write functions
    which allow code reuse between DCS and generic write functions.

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

    Archit Taneja
     
  • Create an enum for DSI operation modes, use this to set the capabilities of the
    device in dsi_init_display().

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

    Archit Taneja
     
  • Add OMAP_DSS_OVL_CAP_GLOBAL_ALPHA and OMAP_DSS_OVL_CAP_PRE_MULT_ALPHA to
    overlay capabilities. Use these instead of FEAT_GLOBAL_ALPHA,
    FEAT_GLOBAL_ALPHA_VID1 and FEAT_PRE_MULT_ALPHA in code.

    Remove FEAT_GLOBAL_ALPHA_VID1 and FEAT_PRE_MULT_ALPHA which are no
    longer used. FEAT_GLOBAL_ALPHA is still used to decide if the HW has
    global alpha register.

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

    Tomi Valkeinen
     
  • Remove support for non-DISPC overlays and overlay managers.

    The support to possibly have non-DISPC overlays and managers was made to
    make it possible to use CPU and/or sDMA to update RFBI or DSI command
    mode displays. It is ok to remove the support, because:

    - No one has used the feature.
    - Display update without DISPC is very slow, so it is debatable if the
    update would even be usable.
    - Removal cleans up code.
    - If such a feature is needed later, it is better implemented outside
    omapdss driver.

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

    Tomi Valkeinen
     
  • Currently when changing the manager of an overlay, set_manager() directly
    calls dispc to set the overlay's destination.

    Change this to be more in line with other overlay configurations, and
    this will also remove the need to have dispc clocks enabled when calling
    set_manager().

    A new field is added to overlay struct, "manager_changed". This is
    similar to "display_changed" field in manager struct, and is used to
    inform apply that the manager has changed and thus write to the
    registers is needed.

    Signed-off-by: Tomi Valkeinen

    Tomi Valkeinen
     
  • dsi_mux_pads() needs to know about the DSI HW module and the DSI lanes
    used. Split the function into two, enable and disable, which take
    necessary arguments, and add empty implementations for both.

    Signed-off-by: Tomi Valkeinen

    Tomi Valkeinen
     

14 Sep, 2011

1 commit

  • PicoDLP is a micro projector from TI.

    DLP used in OMAP4 is dpp2600 (DLP Pico Projector) The DLP requires
    commands to be sent over i2c for configurations. To know more about
    dpp2600 commands please visit:
    https://focus.ti.com/myti/docs/extranet.tsp?sectionId=403

    The picodlp module consists of a dss driver and an i2c_client.

    To know more please visit:
    http://www.omappedia.org/wiki/PicoDLP_projector_guide

    Based on original design from Mythri P K

    Signed-off-by: Mayuresh Janorkar
    Signed-off-by: Mythri P K
    [tomi.valkeinen@ti.com: squashed commits]
    Signed-off-by: Tomi Valkeinen

    Mayuresh Janorkar
     

09 Sep, 2011

2 commits


08 Sep, 2011

1 commit


06 Sep, 2011

2 commits


30 Aug, 2011

1 commit

  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (42 commits)
    netpoll: fix incorrect access to skb data in __netpoll_rx
    cassini: init before use in cas_interruptN.
    can: ti_hecc: Fix uninitialized spinlock in probe
    can: ti_hecc: Fix unintialized variable
    net: sh_eth: fix the compile error
    net/phy: fix DP83865 phy interrupt handler
    sendmmsg/sendmsg: fix unsafe user pointer access
    ibmveth: Fix leak when recycling skb and hypervisor returns error
    arp: fix rcu lockdep splat in arp_process()
    bridge: fix a possible use after free
    bridge: Pseudo-header required for the checksum of ICMPv6
    mcast: Fix source address selection for multicast listener report
    MAINTAINERS: Update GIT trees for network development
    ath9k: Fix PS wrappers in ath9k_set_coverage_class
    carl9170: Fix mismatch in carl9170_op_set_key mutex lock-unlock
    wl12xx: add max_sched_scan_ssids value to the hw description
    wl12xx: Fix validation of pm_runtime_get_sync return value
    wl12xx: Remove obsolete testmode NVS push command
    bcma: add uevent to the bus, to autoload drivers
    ath9k_hw: Fix STA (AR9485) bringup issue due to incorrect MAC address
    ...

    Linus Torvalds
     

29 Aug, 2011

1 commit

  • The current cgroup context switch code was incorrect leading
    to bogus counts. Furthermore, as soon as there was an active
    cgroup event on a CPU, the context switch cost on that CPU
    would increase by a significant amount as demonstrated by a
    simple ping/pong example:

    $ ./pong
    Both processes pinned to CPU1, running for 10s
    10684.51 ctxsw/s

    Now start a cgroup perf stat:
    $ perf stat -e cycles,cycles -A -a -G test -C 1 -- sleep 100

    $ ./pong
    Both processes pinned to CPU1, running for 10s
    6674.61 ctxsw/s

    That's a 37% penalty.

    Note that pong is not even in the monitored cgroup.

    The results shown by perf stat are bogus:
    $ perf stat -e cycles,cycles -A -a -G test -C 1 -- sleep 100

    Performance counter stats for 'sleep 100':

    CPU1 cycles test
    CPU1 16,984,189,138 cycles # 0.000 GHz

    The second 'cycles' event should report a count @ CPU clock
    (here 2.4GHz) as it is counting across all cgroups.

    The patch below fixes the bogus accounting and bypasses any
    cgroup switches in case the outgoing and incoming tasks are
    in the same cgroup.

    With this patch the same test now yields:
    $ ./pong
    Both processes pinned to CPU1, running for 10s
    10775.30 ctxsw/s

    Start perf stat with cgroup:

    $ perf stat -e cycles,cycles -A -a -G test -C 1 -- sleep 10

    Run pong outside the cgroup:
    $ /pong
    Both processes pinned to CPU1, running for 10s
    10687.80 ctxsw/s

    The penalty is now less than 2%.

    And the results for perf stat are correct:

    $ perf stat -e cycles,cycles -A -a -G test -C 1 -- sleep 10

    Performance counter stats for 'sleep 10':

    CPU1 cycles test # 0.000 GHz
    CPU1 23,933,981,448 cycles # 0.000 GHz

    Now perf stat reports the correct counts for
    for the non cgroup event.

    If we run pong inside the cgroup, then we also get the
    correct counts:

    $ perf stat -e cycles,cycles -A -a -G test -C 1 -- sleep 10

    Performance counter stats for 'sleep 10':

    CPU1 22,297,726,205 cycles test # 0.000 GHz
    CPU1 23,933,981,448 cycles # 0.000 GHz

    10.001457237 seconds time elapsed

    Signed-off-by: Stephane Eranian
    Signed-off-by: Peter Zijlstra
    Link: http://lkml.kernel.org/r/20110825135803.GA4697@quad
    Signed-off-by: Ingo Molnar

    Stephane Eranian
     

27 Aug, 2011

3 commits

  • The nfsservctl system call is now gone, so we should remove all
    linkage for it.

    Signed-off-by: NeilBrown
    Signed-off-by: J. Bruce Fields
    Signed-off-by: Linus Torvalds

    NeilBrown
     
  • * 'tty-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty-2.6:
    omap-serial: Allow IXON and IXOFF to be disabled.
    TTY: serial, document ignoring of uart->ops->startup error
    TTY: pty, fix pty counting
    8250: Fix race condition in serial8250_backup_timeout().
    serial/8250_pci: delete duplicate data definition
    8250_pci: add support for Rosewill RC-305 4x serial port card
    tty: Add "spi:" prefix for spi modalias
    atmel_serial: fix atmel_default_console_device
    serial: 8250_pnp: add Intermec CV60 touchscreen device
    drivers/serial/ucc_uart.c: Fix compiler warning
    pch_uart: Set PCIe bus number using probe parameter
    serial: samsung: Fix build error

    Linus Torvalds
     
  • …t/gregkh/driver-core-2.6

    * 'driver-core-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6:
    drivers:misc: ti-st: fix unexpected UART close
    drivers:misc: ti-st: free skb on firmware download
    drivers:misc: ti-st: wait for completion at fail
    drivers:misc: ti-st: reinit completion before send
    drivers:misc: ti-st: fail-safe on wrong pkt type
    drivers:misc: ti-st: reinit completion on ver read
    drivers:misc:ti-st: platform hooks for chip states
    drivers:misc: ti-st: avoid a misleading dbg msg
    base/devres.c: quiet sparse noise about context imbalance
    pti: add missing CONFIG_PCI dependency
    drivers/base/devtmpfs.c: correct annotation of `setup_done'
    driver core: fix kernel-doc warning in platform.c
    firmware: fix google/gsmi.c build warning

    Linus Torvalds
     

26 Aug, 2011

7 commits

  • …wireless into for-davem

    John W. Linville
     
  • We need a callback to do some things after pwm_enable, pwm_disable
    and pwm_config.

    Signed-off-by: Dilan Lee
    Reviewed-by: Robert Morell
    Reviewed-by: Arun Murthy
    Cc: Richard Purdie
    Cc: Paul Mundt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Dilan Lee
     
  • Replace/remove use of RIO v.1.2 registers/bits that are not
    forward-compatible with newer versions of RapidIO specification.

    RapidIO specification v.1.3 removed Write Port CSR, Doorbell CSR,
    Mailbox CSR and Mailbox and Doorbell bits of the PEF CAR.

    Use of removed (since RIO v.1.3) register bits affects users of
    currently available 1.3 and 2.x compliant devices who may use not so
    recent kernel versions.

    Removing checks for unsupported bits makes corresponding routines
    compatible with all versions of RapidIO specification. Therefore,
    backporting makes stable kernel versions compliant with RIO v.1.3 and
    later as well.

    Signed-off-by: Alexandre Bounine
    Cc: Kumar Gala
    Cc: Matt Porter
    Cc: Li Yang
    Cc: Thomas Moll
    Cc: Chul Kim
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alexandre Bounine
     
  • Signed-off-by: Evgeniy Polyakov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Evgeniy Polyakov
     
  • Purely in-memory filesystems do not use the inode hash as the dcache
    tells us if an entry already exists. As a result, they do not call
    unlock_new_inode, and thus directory inodes do not get put into a
    different lockdep class for i_sem.

    We need the different lockdep classes, because the locking order for
    i_mutex is different for directory inodes and regular inodes. Directory
    inodes can do "readdir()", which takes i_mutex *before* possibly taking
    mm->mmap_sem (due to a page fault while copying the directory entry to
    user space).

    In contrast, regular inodes can be mmap'ed, which takes mm->mmap_sem
    before accessing i_mutex.

    The two cases can never happen for the same inode, so no real deadlock
    can occur, but without the different lockdep classes, lockdep cannot
    understand that. As a result, if CONFIG_DEBUG_LOCK_ALLOC is set, this
    can lead to false positives from lockdep like below:

    find/645 is trying to acquire lock:
    (&mm->mmap_sem){++++++}, at: [] might_fault+0x5c/0xac

    but task is already holding lock:
    (&sb->s_type->i_mutex_key#15){+.+.+.}, at: []
    vfs_readdir+0x5b/0xb4

    which lock already depends on the new lock.

    the existing dependency chain (in reverse order) is:

    -> #1 (&sb->s_type->i_mutex_key#15){+.+.+.}:
    [] lock_acquire+0xbf/0x103
    [] __mutex_lock_common+0x4c/0x361
    [] mutex_lock_nested+0x40/0x45
    [] hugetlbfs_file_mmap+0x82/0x110
    [] mmap_region+0x258/0x432
    [] do_mmap_pgoff+0x2ac/0x306
    [] sys_mmap_pgoff+0x118/0x16a
    [] sys_mmap+0x22/0x24
    [] system_call_fastpath+0x16/0x1b

    -> #0 (&mm->mmap_sem){++++++}:
    [] __lock_acquire+0xa1a/0xcf7
    [] lock_acquire+0xbf/0x103
    [] might_fault+0x89/0xac
    [] filldir+0x6f/0xc7
    [] dcache_readdir+0x67/0x205
    [] vfs_readdir+0x7b/0xb4
    [] sys_getdents+0x7e/0xd1
    [] system_call_fastpath+0x16/0x1b

    This patch moves the directory vs file lockdep annotation into a helper
    function that can be called by in-memory filesystems and has hugetlbfs
    call it.

    Signed-off-by: Josh Boyer
    Acked-by: Peter Zijlstra
    Signed-off-by: Linus Torvalds

    Josh Boyer
     
  • * 'urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/writeback:
    squeeze max-pause area and drop pass-good area

    Linus Torvalds
     
  • * '3.1-rc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending: (21 commits)
    target: Convert acl_node_lock to be IRQ-disabling
    target: Make locking in transport_deregister_session() IRQ safe
    tcm_fc: init/exit functions should not be protected by "#ifdef MODULE"
    target: Print subpage too for unhandled MODE SENSE pages
    iscsi-target: Fix iscsit_allocate_se_cmd_for_tmr failure path bugs
    iscsi-target: Implement iSCSI target IPv6 address printing.
    target: Fix task SGL chaining breakage with transport_allocate_data_tasks
    target: Fix task count > 1 handling breakage and use max_sector page alignment
    target: Add missing DATA_SG_IO transport_cmd_get_valid_sectors check
    target: Fix SYNCHRONIZE_CACHE zero LBA + range breakage
    target: Remove duplicate task completions in transport_emulate_control_cdb
    target: Fix WRITE_SAME usage with transport_get_size
    target: Add WRITE_SAME (10) parsing and refactor passthrough checks
    target: Fix write payload exception handling with ->new_cmd_map
    iscsi-target: forever loop bug in iscsit_attach_ooo_cmdsn()
    iscsi-target: remove duplicate return
    target: Convert target_core_rd.c to use use BUG_ON
    iscsi-target: Fix leak on failure in iscsi_copy_param_list()
    target: Use ERR_CAST inlined function
    target: Make standard INQUIRY return 'not connected' for tpg_virt_lun0
    ...

    Linus Torvalds