1. Feb 26, 2015
    • Tomi Valkeinen's avatar
      OMAPDSS: workaround for MFLAG + NV12 issue · fe59e5cf
      Tomi Valkeinen authored
      
      
      It was found that having two displays enabled and having an NV12 overlay
      on one of the displays will cause underflows/synclosts. Debugging this
      pointed to some issue with MFLAG.
      
      It is unclear why this issue is happening, but it looks like there is a
      HW bug related to MFLAG and FIFO management. Disabling MFLAG makes this
      issue go away, but then we lose the benefit of MFLAG. Also forcing MFLAG
      always on makes the issue go away.
      
      Also, using certain values for MFLAG_START, MFLAG thresholds and PRELOAD
      makes the issue go away, but there was no obvious logic to which values
      work and which don't.
      
      As a workaround until more information about this is found, force MFLAG
      always on to make NV12 usable.
      
      Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
      fe59e5cf
    • Tomi Valkeinen's avatar
      OMAPDSS: Add support for MFLAG · c64aa3a6
      Tomi Valkeinen authored
      
      
      OMAP5 has support for MFLAG feature, which allows DSS to dynamically
      increase the priority of DISPC's DMA traffic. At the moment we don't
      have support for it.
      
      It was noticed that on DRA7 with high bandwidth use cases we see FIFO
      underflows. Implementing MFLAG support removed those underflows.
      Interestingly, on OMAP5 uEVM no such overflows were seen.
      
      This patch adds a simple MFLAG implementation, where we use a fixed
      MFLAG threshold value based on the FIFO size. The thresholds are set to
      4/8 of fifo size for low threshold, and 5/8 of fifo size for high
      threshold.
      
      Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
      c64aa3a6
    • Tomi Valkeinen's avatar
      OMAPDSS: setup default fifo thresholds · 47fc469b
      Tomi Valkeinen authored
      
      
      At the moment we don't setup FIFO thresholds by default in omapdss. It's
      supposed to be done by the user of omapdss. And that is missing from
      omapdrm, causing unoptimal thresholds to be used when using omapdrm.
      
      While I believe it's in theory better to allow the user of omapdss to
      setup the fifo thresholds, in practice we always use the same values,
      and we could as well setup the thresholds in omapdss.
      
      Furthermore, in omapdss init we always swap the FIFO used for GFX and WB
      overlays, but we don't swap the FIFO thresholds for those overlays
      (which is the reason for omapdrm using unoptimal HW reset values). So
      it would make sense to setup the thresholds to account for the swapping
      of the FIFOs.
      
      So, this patch adds code to setup default FIFO tresholds at omapdss
      init.
      
      Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
      47fc469b
    • Tomi Valkeinen's avatar
      OMAPDSS: DISPC: lock access to DISPC_CONTROL & DISPC_CONFIG · d49cd155
      Tomi Valkeinen authored
      
      
      Dispc driver presumes that the callers handle locking for all normal
      functions. However, omapdrm doesn't handle this, and presumes that all
      overlay manager registers are private to that overlay manager, and thus
      presumes that configurations for overlay managers can be written via
      different threads freely.
      
      For many registers the above is true. The exceptions are DISPC_CONTROL
      and DISPC_CONFIG registers, which contain bits for both LCD and TV
      overlay managers.
      
      Fixing this properly in omapdrm means a big omapdrm rewrite. So, for
      now, add locking to dispc for the problematic registers.
      
      Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
      Reported-by: default avatarSomnath Mukherjee <somnath@ti.com>
      d49cd155
    • Tomi Valkeinen's avatar
      OMAPDSS: DISPC: fix div by zero issue in overlay scaling · 4e1d3ca0
      Tomi Valkeinen authored
      
      
      omapdrm doesn't always configure the overlays correctly, causing the
      overlay setup functions to be called with zero timings. This leads to
      division by zero error.
      
      This happens, for example, when a HDMI cable is not connected, but a
      user tries to setup a plane with scaling.
      
      Fixing omapdrm is a big job, so for now let's check for the bad timings
      in DISPC and return an error.
      
      Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
      4e1d3ca0
    • Tomi Valkeinen's avatar
      OMAPDSS: DISPC: change sync_pclk_edge default value · 386f167c
      Tomi Valkeinen authored
      
      
      The common 'struct videomode' does not have a flag to select when the
      sync signals should be driven.
      
      The default behavior of DISPC HW is to drive the sync signal on the
      opposite pixel clock edge from data signal, which is also what the
      videomode_to_omap_video_timings() uses.
      
      However, it looks like what panels usually expect is that the data and
      sync signals are driven on the same edge, so let's change
      videomode_to_omap_video_timings() to set the sync_pclk_edge accordingly.
      
      Note that this only affect panels drivers that use
      videomode_to_omap_video_timings(), probably when getting the video
      timings directly from DT data. The drivers can still configure the
      sync_pclk_edge independently if they so wish.
      
      Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
      386f167c
    • Tomi Valkeinen's avatar
      OMAPDSS: change signal_level & signal_edge enum values · 7ad582be
      Tomi Valkeinen authored
      
      
      At the moment the enum values for ACTIVE_HIGH and RISING_EDGE are 0, and
      ACTIVE_LOW and FALLING_EDGE are 1, to match the values programmed to HW.
      The previous patch removed this dependency.
      
      Swap the enum values the other way around. This doesn't change the
      behavior in any way, but makes it easier to debug as value of '1' means
      HIGH or RISING.
      
      Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
      7ad582be
    • Tomi Valkeinen's avatar
      OMAPDSS: DISPC: explicit handling for sync and de levels · ed351881
      Tomi Valkeinen authored
      
      
      When configuring the lcd timings, instead of writing enum values
      directly to the HW, use switch-case to get the value to be programmed.
      
      This is safer and also allows us to change the enum values.
      
      Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
      ed351881
    • Tomi Valkeinen's avatar
      OMAPDSS: DISPC: remove OMAPDSS_DRIVE_SIG_OPPOSITE_EDGES · 7a16360d
      Tomi Valkeinen authored
      
      
      DISPC can drive data lines either on rising or falling pixel clock edge,
      which can be configured by the user.
      
      Sync lines can also be driven on rising or falling pixel clock edge, but
      additionally the HW can be configured to drive the sync lines on
      opposite clock edge from the data lines.
      
      This opposite edge setting does not make any sense, as the same effect
      can be achieved by just setting the sync lines to be driven on the other
      edge compared to the data lines. It feels like some kind of backward
      compatibility option, even if all DSS versions seem to have the same
      implementation.
      
      To simplify the code and configuration of the signals, and to make the
      dispc timings more compatible with what is used on other platforms,
      let's just remove the whole opposite-edge support.
      
      The drivers that used OMAPDSS_DRIVE_SIG_OPPOSITE_EDGES setting are
      changed so that they use the opposite setting from the data edge.
      
      Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
      7a16360d
    • Tomi Valkeinen's avatar
      OMAPDSS: TFP410: fix input sync signals · 6246c8b5
      Tomi Valkeinen authored
      
      
      TFP410 requires that DE is active high and the data and syncs are driven
      on rising pixel clock edge. However, at the moment the driver doesn't
      request such syncs, and the end result is that the sync settings depend
      on default values, which are not right in all cases.
      
      Set the sync values explicitly.
      
      Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
      6246c8b5
    • Tomi Valkeinen's avatar
      OMAPDSS: fix paddr check for TILER addresses · e566658f
      Tomi Valkeinen authored
      
      
      The DISPC driver checks that the buffer address is not 0. However, when
      using TILER, the address space is TILER specific and 0 is a valid
      address.
      
      Fix the check to allow address of 0 for TILER.
      
      Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
      Reported-by: default avatarsrinivas pulukuru <srinivas.pulukuru@ti.com>
      e566658f
  2. Feb 25, 2015
  3. Feb 23, 2015
  4. Feb 22, 2015
    • Linus Torvalds's avatar
      Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus · a135c717
      Linus Torvalds authored
      Pull MIPS updates from Ralf Baechle:
       "This is the main pull request for MIPS:
      
         - a number of fixes that didn't make the 3.19 release.
      
         - a number of cleanups.
      
         - preliminary support for Cavium's Octeon 3 SOCs which feature up to
           48 MIPS64 R3 cores with FPU and hardware virtualization.
      
         - support for MIPS R6 processors.
      
           Revision 6 of the MIPS architecture is a major revision of the MIPS
           architecture which does away with many of original sins of the
           architecture such as branch delay slots.  This and other changes in
           R6 require major changes throughout the entire MIPS core
           architecture code and make up for the lion share of this pull
           request.
      
         - finally some preparatory work for eXtendend Physical Address
           support, which allows support of up to 40 bit of physical address
           space on 32 bit processors"
      
           [ Ahh, MIPS can't leave the PAE brain damage alone.  It's like
             every CPU architect has to make that mistake, but pee in the snow
             by changing the TLA.  But whether it's called PAE, LPAE or XPA,
             it's horrid crud   - Linus ]
      
      * 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus: (114 commits)
        MIPS: sead3: Corrected get_c0_perfcount_int
        MIPS: mm: Remove dead macro definitions
        MIPS: OCTEON: irq: add CIB and other fixes
        MIPS: OCTEON: Don't do acknowledge operations for level triggered irqs.
        MIPS: OCTEON: More OCTEONIII support
        MIPS: OCTEON: Remove setting of processor specific CVMCTL icache bits.
        MIPS: OCTEON: Core-15169 Workaround and general CVMSEG cleanup.
        MIPS: OCTEON: Update octeon-model.h code for new SoCs.
        MIPS: OCTEON: Implement DCache errata workaround for all CN6XXX
        MIPS: OCTEON: Add little-endian support to asm/octeon/octeon.h
        MIPS: OCTEON: Implement the core-16057 workaround
        MIPS: OCTEON: Delete unused COP2 saving code
        MIPS: OCTEON: Use correct instruction to read 64-bit COP0 register
        MIPS: OCTEON: Save and restore CP2 SHA3 state
        MIPS: OCTEON: Fix FP context save.
        MIPS: OCTEON: Save/Restore wider multiply registers in OCTEON III CPUs
        MIPS: boot: Provide more uImage options
        MIPS: Remove unneeded #ifdef __KERNEL__ from asm/processor.h
        MIPS: ip22-gio: Remove legacy suspend/resume support
        mips: pci: Add ifdef around pci_proc_domain
        ...
      a135c717
    • Linus Torvalds's avatar
      Merge tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 21770332
      Linus Torvalds authored
      Pull ARM SoC fixes from Arnd Bergmann:
       "A few fixes that came in too late to make it into the first set of
        pull requests but would still be nice to have in -rc1.
      
        The majority of these are trivial build fixes for bugs that I found
        myself using randconfig testing, and a set of two patches from Uwe to
        mark DT strings as 'const' where appropriate, to resolve inconsistent
        section attributes"
      
      * tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
        ARM: make of_device_ids const
        ARM: make arrays containing machine compatible strings const
        ARM: mm: Remove Kconfig symbol CACHE_PL310
        ARM: rockchip: force built-in regulator support for PM
        ARM: mvebu: build armada375-smp code conditionally
        ARM: sti: always enable RESET_CONTROLLER
        ARM: rockchip: make rockchip_suspend_init conditional
        ARM: ixp4xx: fix {in,out}s{bwl} data types
        ARM: prima2: do not select SMP_ON_UP
        ARM: at91: fix pm declarations
        ARM: davinci: multi-soc kernels require AUTO_ZRELADDR
        ARM: davinci: davinci_cfg_reg cannot be init
        ARM: BCM: put back ARCH_MULTI_V7 dependency for mobile
        ARM: vexpress: use ARM_CPU_SUSPEND if needed
        ARM: dts: add I2C device nodes for Broadcom Cygnus
        ARM: dts: BCM63xx: fix L2 cache properties
      21770332
    • Linus Torvalds's avatar
      Merge tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi · c8c6c9ba
      Linus Torvalds authored
      Pull misc SCSI patches from James Bottomley:
       "This is a short patch set representing a couple of left overs from the
        merge window (debug removal and MAINTAINER changes).
      
        Plus one merge window regression (the local workqueue for hpsa) and a
        set of bug fixes for several issues (two for scsi-mq and the rest an
        assortment of long standing stuff, all cc'd to stable)"
      
      * tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
        sg: fix EWOULDBLOCK errors with scsi-mq
        sg: fix unkillable I/O wait deadlock with scsi-mq
        sg: fix read() error reporting
        wd719x: add missing .module to wd719x_template
        hpsa: correct compiler warnings introduced by hpsa-add-local-workqueue patch
        fixed invalid assignment of 64bit mask to host dma_boundary for scatter gather segment boundary limit.
        fcoe: Transition maintainership to Vasu
        am53c974: remove left-over debugging code
      c8c6c9ba
    • Linus Torvalds's avatar
      Merge tag 'xfs-pnfs-for-linus-3.20-rc1' of... · 93aaa830
      Linus Torvalds authored
      Merge tag 'xfs-pnfs-for-linus-3.20-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/dgc/linux-xfs
      
      Pull xfs pnfs block layout support from Dave Chinner:
       "This contains the changes to XFS needed to support the PNFS block
        layout server that you pulled in through Bruce's NFS server tree
        merge.
      
        I originally thought that I'd need to merge changes into the NFS
        server side, but Bruce had already picked them up and so this is
        purely changes to the fs/xfs/ codebase.
      
        Summary:
      
        This update contains the implementation of the PNFS server export
        methods that enable use of XFS filesystems as a block layout target"
      
      * tag 'xfs-pnfs-for-linus-3.20-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/dgc/linux-xfs:
        xfs: recall pNFS layouts on conflicting access
        xfs: implement pNFS export operations
      93aaa830
    • Linus Torvalds's avatar
      Merge tag 'nfs-for-3.20-2' of git://git.linux-nfs.org/projects/trondmy/linux-nfs · 24a52e41
      Linus Torvalds authored
      Pull more NFS client updates from Trond Myklebust:
       "Highlights include:
      
         - Fix a use-after-free in decode_cb_sequence_args()
         - Fix a compile error when #undef CONFIG_PROC_FS
         - NFSv4.1 backchannel spinlocking issue
         - Cleanups in the NFS unstable write code requested by Linus
         - NFSv4.1 fix issues when the server denies our backchannel request
         - Cleanups in create_session and bind_conn_to_session"
      
      * tag 'nfs-for-3.20-2' of git://git.linux-nfs.org/projects/trondmy/linux-nfs:
        NFSv4.1: Clean up bind_conn_to_session
        NFSv4.1: Always set up a forward channel when binding the session
        NFSv4.1: Don't set up a backchannel if the server didn't agree to do so
        NFSv4.1: Clean up create_session
        pnfs: Refactor the *_layout_mark_request_commit to use pnfs_layout_mark_request_commit
        NFSv4: Kill unused nfs_inode->delegation_state field
        NFS: struct nfs_commit_info.lock must always point to inode->i_lock
        nfs: Can call nfs_clear_page_commit() instead
        nfs: Provide and use helper functions for marking a page as unstable
        SUNRPC: Always manipulate rpc_rqst::rq_bc_pa_list under xprt->bc_pa_lock
        SUNRPC: Fix a compile error when #undef CONFIG_PROC_FS
        NFSv4.1: Convert open-coded array allocation calls to kmalloc_array()
        NFSv4.1: Fix a kfree() of uninitialised pointers in decode_cb_sequence_args
      24a52e41
    • Linus Torvalds's avatar
      Merge tag 'pm+acpi-3.20-rc1-3' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · cd50b70c
      Linus Torvalds authored
      Pull one more batch of power management and ACPI updates from Rafael Wysocki:
       "These are mostly fixes on top of the previously merged recent PM and
        ACPI material.
      
        First, one commit that broke the ACPI LPSS (Low-Power Subsystem)
        driver on a Dell box is reverted and there are two stable-candidate
        fixes for that driver.  Another fix cleans up two recently added ACPI
        EC messages that look odd and the printk level of a noisy debug
        message in the core ACPI resources handling code is reduced.
      
        In addition to that we have two stable-candidate fixes for the s3c
        cpufreq driver, two cpuidle powernv driver updates related to Device
        Trees and a PNP subsystem cleanup that will allow us to get rid of
        some old ugliness going forward.  Also there is a new blacklist entry
        for the ACPI backlight code.
      
        Specifics:
      
         - Revert a recent ACPI LPSS driver commit that prevented the touchpad
           driver from loading on Dell XPS13 (Jarkko Nikula).
      
         - Make the ACPI LPSS driver disable the I2C controllers and deassert
           SPI host controllers resets at startup on Intel BayTrail and
           Braswell SoCs in case they have been left in wrong states by the
           platform firmware which then may casuse fatal controller driver
           failures during resume from hibernation (Mika Westerberg).
      
         - Make two recently added ACPI EC messages look better (Scot Doyle).
      
         - Reduce the printk level of a recently added debug message related
           to ACPI resources that may become noisy in some cases (Rafael J
           Wysocki).
      
         - Add a new ACPI backlight blacklist entry for Samsung Series 9
           (900X3C/900X3D/900X3E/900X4C/900X4D) laptops where the native
           backlight interface doesn't work while the ACPI based one does
           (Jens Reyer).
      
         - Make the PNP sybsystem's core code use __request_region() followed
           by __release_region() instead of __check_region() which then will
           allow us to get rid of the latter as it has no more users (Jakub
           Sitnicki).
      
         - Fix a build breakage and an issue with two __init functions that
           may be called after initialization in the s3c cpufreq driver (Arnd
           Bergmann).
      
         - Make the powernv cpuidle driver read target_residency values for
           idle states from a Device Tree (as we have the suitable DT bindings
           for that now) and improve the parsing of the powermgmt DT node in
           that driver (Preeti U Murthy)"
      
      * tag 'pm+acpi-3.20-rc1-3' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        cpuidle: powernv: Avoid endianness conversions while parsing DT
        cpufreq: s3c: remove last use of resume_clocks callback
        cpufreq: s3c: remove incorrect __init annotations
        ACPI / LPSS: Deassert resets for SPI host controllers on Braswell
        ACPI / LPSS: Always disable I2C host controllers
        ACPI / resources: Change pr_info() to pr_debug() for debug information
        ACPI / video: Disable native backlight on Samsung Series 9 laptops
        cpuidle: powernv: Read target_residency value of idle states from DT if available
        Revert "ACPI / LPSS: Remove non-existing clock control from Intel Lynxpoint I2C"
        ACPI / EC: Remove non-standard log emphasis
        PNP: Switch from __check_region() to __request_region()
      cd50b70c