19 Dec, 2014

1 commit

  • Pull second set of media updates from Mauro Carvalho Chehab:

    - Move drivers for really old legacy hardware to staging. Those are
    using obsolete media kAPIs and are for hardware that nobody uses for
    years. Simply not worth porting them to the new kAPIs. Of course,
    if anyone pops up to fix, we can move them back from there

    - While not too late, do some API fixups at the new colorspace API,
    added for v3.19

    - Some improvements for rcar_vin driver

    - Some fixups at cx88 and vivid drivers

    - Some Documentation fixups

    * tag 'media/v3.19-2' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media:
    [media] bq/c-qcam, w9966, pms: move to staging in preparation for removal
    [media] tlg2300: move to staging in preparation for removal
    [media] vino/saa7191: move to staging in preparation for removal
    [media] MAINTAINERS: vivi -> vivid
    [media] cx88: remove leftover start_video_dma() call
    [media] cx88: add missing alloc_ctx support
    [media] v4l2-ioctl: WARN_ON if querycap didn't fill device_caps
    [media] vivid: fix CROP_BOUNDS typo for video output
    [media] DocBook media: update version number and document changes
    [media] vivid.txt: document new controls
    [media] DocBook media: add missing ycbcr_enc and quantization fields
    [media] v4l2-mediabus.h: use two __u16 instead of two __u32
    [media] rcar_vin: Fix interrupt enable in progressive
    [media] rcar_vin: Enable VSYNC field toggle mode
    [media] rcar_vin: Add scaling support
    [media] rcar_vin: Add DT support for r8a7793 and r8a7794 SoCs
    [media] rcar_vin: Add YUYV capture format support

    Linus Torvalds
     

17 Dec, 2014

2 commits


16 Dec, 2014

1 commit

  • Pull drm updates from Dave Airlie:
    "Highlights:

    - AMD KFD driver merge

    This is the AMD HSA interface for exposing a lowlevel interface for
    GPGPU use. They have an open source userspace built on top of this
    interface, and the code looks as good as it was going to get out of
    tree.

    - Initial atomic modesetting work

    The need for an atomic modesetting interface to allow userspace to
    try and send a complete set of modesetting state to the driver has
    arisen, and been suffering from neglect this past year. No more,
    the start of the common code and changes for msm driver to use it
    are in this tree. Ongoing work to get the userspace ioctl finished
    and the code clean will probably wait until next kernel.

    - DisplayID 1.3 and tiled monitor exposed to userspace.

    Tiled monitor property is now exposed for userspace to make use of.

    - Rockchip drm driver merged.

    - imx gpu driver moved out of staging

    Other stuff:

    - core:
    panel - MIPI DSI + new panels.
    expose suggested x/y properties for virtual GPUs

    - i915:
    Initial Skylake (SKL) support
    gen3/4 reset work
    start of dri1/ums removal
    infoframe tracking
    fixes for lots of things.

    - nouveau:
    tegra k1 voltage support
    GM204 modesetting support
    GT21x memory reclocking work

    - radeon:
    CI dpm fixes
    GPUVM improvements
    Initial DPM fan control

    - rcar-du:
    HDMI support added
    removed some support for old boards
    slave encoder driver for Analog Devices adv7511

    - exynos:
    Exynos4415 SoC support

    - msm:
    a4xx gpu support
    atomic helper conversion

    - tegra:
    iommu support
    universal plane support
    ganged-mode DSI support

    - sti:
    HDMI i2c improvements

    - vmwgfx:
    some late fixes.

    - qxl:
    use suggested x/y properties"

    * 'drm-next' of git://people.freedesktop.org/~airlied/linux: (969 commits)
    drm: sti: fix module compilation issue
    drm/i915: save/restore GMBUS freq across suspend/resume on gen4
    drm: sti: correctly cleanup CRTC and planes
    drm: sti: add HQVDP plane
    drm: sti: add cursor plane
    drm: sti: enable auxiliary CRTC
    drm: sti: fix delay in VTG programming
    drm: sti: prepare sti_tvout to support auxiliary crtc
    drm: sti: use drm_crtc_vblank_{on/off} instead of drm_vblank_{on/off}
    drm: sti: fix hdmi avi infoframe
    drm: sti: remove event lock while disabling vblank
    drm: sti: simplify gdp code
    drm: sti: clear all mixer control
    drm: sti: remove gpio for HDMI hot plug detection
    drm: sti: allow to change hdmi ddc i2c adapter
    drm/doc: Document drm_add_modes_noedid() usage
    drm/i915: Remove '& 0xffff' from the mask given to WA_REG()
    drm/i915: Invert the mask and val arguments in wa_add() and WA_REG()
    drm: Zero out DRM object memory upon cleanup
    drm/i915/bdw: Fix the write setting up the WIZ hashing mode
    ...

    Linus Torvalds
     

15 Dec, 2014

1 commit

  • Pull char/misc driver updates from Greg KH:
    "Here's the big char/misc driver update for 3.19-rc1

    Lots of little things all over the place in different drivers, and a
    new subsystem, "coresight" has been added. Full details are in the
    shortlog"

    * tag 'char-misc-3.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc: (73 commits)
    parport: parport_pc, do not remove parent devices early
    spmi: Remove shutdown/suspend/resume kernel-doc
    carma-fpga-program: drop videobuf dependency
    carma-fpga: drop videobuf dependency
    carma-fpga-program.c: fix compile errors
    i8k: Fix temperature bug handling in i8k_get_temp()
    cxl: Name interrupts in /proc/interrupt
    CXL: Return error to PSL if IRQ demultiplexing fails & print clearer warning
    coresight-replicator: remove .owner field for driver
    coresight: fixed comments in coresight.h
    coresight: fix typo in comment in coresight-priv.h
    coresight: bindings for coresight drivers
    coresight: Adding ABI documentation
    w1: support auto-load of w1_bq27000 module.
    w1: avoid potential u16 overflow
    cn: verify msg->len before making callback
    mei: export fw status registers through sysfs
    mei: read and print all six FW status registers
    mei: txe: add cherrytrail device id
    mei: kill cached host and me csr values
    ...

    Linus Torvalds
     

14 Dec, 2014

1 commit

  • Pull crypto update from Herbert Xu:
    - The crypto API is now documented :)
    - Disallow arbitrary module loading through crypto API.
    - Allow get request with empty driver name through crypto_user.
    - Allow speed testing of arbitrary hash functions.
    - Add caam support for ctr(aes), gcm(aes) and their derivatives.
    - nx now supports concurrent hashing properly.
    - Add sahara support for SHA1/256.
    - Add ARM64 version of CRC32.
    - Misc fixes.

    * git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: (77 commits)
    crypto: tcrypt - Allow speed testing of arbitrary hash functions
    crypto: af_alg - add user space interface for AEAD
    crypto: qat - fix problem with coalescing enable logic
    crypto: sahara - add support for SHA1/256
    crypto: sahara - replace tasklets with kthread
    crypto: sahara - add support for i.MX53
    crypto: sahara - fix spinlock initialization
    crypto: arm - replace memset by memzero_explicit
    crypto: powerpc - replace memset by memzero_explicit
    crypto: sha - replace memset by memzero_explicit
    crypto: sparc - replace memset by memzero_explicit
    crypto: algif_skcipher - initialize upon init request
    crypto: algif_skcipher - removed unneeded code
    crypto: algif_skcipher - Fixed blocking recvmsg
    crypto: drbg - use memzero_explicit() for clearing sensitive data
    crypto: drbg - use MODULE_ALIAS_CRYPTO
    crypto: include crypto- module prefix in template
    crypto: user - add MODULE_ALIAS
    crypto: sha-mb - remove a bogus NULL check
    crytpo: qat - Fix 64 bytes requests
    ...

    Linus Torvalds
     

12 Dec, 2014

1 commit

  • Pull sound updates from Takashi Iwai:
    "This became a fairly large pull request. In addition to the usual
    driver updates / fixes, there have been a high amount of cleanups in
    ASoC area, as well as control API helpers and kernel documentations
    fixes touching through the whole tree.

    In the driver side, the biggest changes are the support for new Intel
    SoC found on new x86 machines, and the updates of FireWire dice and
    oxfw drivers.

    Some remarkable items are below:

    ALSA core:
    - PCM mmap code cleanup, removal of arch-dependent codes
    - PCM xrun injection support
    - PCM hwptr tracepoint support
    - Refactoring of snd_pcm_action(), simplification of PCM locking
    - Robustified sequecner auto-load functionality
    - New control API helpers and lots of cleanups along with them
    - Lots of kerneldoc fixes and cleanups

    USB-audio:
    - The mixer resume code was largely rewritten, and the devices with
    quirks are resumed properly.
    - New hardware support: Focusrite Scarlett, Digidesign Mbox1,
    Denon/Marantz DACs, Zoom R16/24

    FireWire:
    - DICE driver updates with better duplex and sync support, including
    MIDI support
    - New OXFW driver for Oxford Semiconductor FW970/971 chipset,
    including the previous LaCie Speakers device. Fullduplex and MIDI
    support included as well as DICE driver.

    HD-audio:
    - Refactoring the driver-caps quirk handling in snd-hda-intel
    - More consistent control names representing the topology better
    - Fixups: HP mute LED with ALC268 codec, Ideapad S210 built-in mic
    fix, ASUS Z99He laptop EAPD

    ASoC:
    - Conversion of AC'97 drivers to use regmap, bringing us closer to
    the removal of the ASoC level I/O code
    - Clean up a lot of old drivers that were open coding things that
    have subsequently been implemented in the core
    - Some DAPM performance improvements
    - Removal of the now seldom used CODEC mutex
    - Lots of updates for the newer Intel SoC support, including support
    for the DSP and some Cherrytrail and Braswell machine drivers
    - Support for Samsung boards using rt5631 as the CODEC
    - Removal of the obsolete AFEB9260 machine driver
    - Driver support for the TI TS3A227E headset driver used in some
    Chrombeooks

    Others:
    - ASIHPI driver update and cleanups
    - Lots of dev_*() printk conversions
    - Lots of trivial cleanups for the codes spotted by Coccinelle"

    * tag 'sound-3.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (594 commits)
    ALSA: pcxhr: NULL dereference on probe failure
    ALSA: lola: NULL dereference on probe failure
    ALSA: hda - Add "eapd" model string for AD1986A codec
    ALSA: hda - Add EAPD fixup for ASUS Z99He laptop
    ALSA: oxfw: Add hwdep interface
    ALSA: oxfw: Add support for capture/playback MIDI messages
    ALSA: oxfw: add support for capturing PCM samples
    ALSA: oxfw: Add support AMDTP in-stream
    ALSA: oxfw: Add support for Behringer/Mackie devices
    ALSA: oxfw: Change the way to start stream
    ALSA: oxfw: Add proc interface for debugging purpose
    ALSA: oxfw: Change the way to make PCM rules/constraints
    ALSA: oxfw: Add support for AV/C stream format command to get/set supported stream formation
    ALSA: oxfw: Change the way to name card
    ALSA: dice: Add support for MIDI capture/playback
    ALSA: dice: Add support for capturing PCM samples
    ALSA: dice: Support for non SYT-Match sampling clock source mode
    ALSA: dice: Add support for duplex streams with synchronization
    ALSA: dice: Change the way to start stream
    ALSA: jack: Add dummy snd_jack_set_key() definition
    ...

    Linus Torvalds
     

11 Dec, 2014

2 commits


09 Dec, 2014

2 commits

  • This takes the tiling info from the connector and
    exposes it to userspace, as a blob object in a
    connector property.

    The contents of the blob is ABI.

    v2: add property + function documentation.

    v3: move property setup from previous patch.
    add boilerplate + fix long line (Daniel)

    Reviewed-by: Daniel Vetter
    Signed-off-by: Dave Airlie

    Dave Airlie
     
  • A tile group is an identifier shared by a single monitor,
    DisplayID topology has 8 bytes we can use for this, just
    use those for now until something else comes up in the
    future. We assign these to an idr and use the idr to
    tell userspace what connectors are in the same tile group.

    DisplayID v1.3 says the serial number must be unique for
    displays from the same manufacturer.

    v2:
    destroy idr (dvdhrm)
    add docbook (danvet)
    airlied:- not sure how to make docbook add fns to tile group section.

    v3: fix missing unlock.

    Reviewed-by: Daniel Vetter
    Signed-off-by: Dave Airlie

    Dave Airlie
     

04 Dec, 2014

4 commits


03 Dec, 2014

1 commit

  • drm-intel-next-2014-11-21:
    - infoframe tracking (for fastboot) from Jesse
    - start of the dri1/ums support removal
    - vlv forcewake timeout fixes (Imre)
    - bunch of patches to polish the rps code (Imre) and improve it on bdw (Tom
    O'Rourke)
    - on-demand pinning for execlist contexts
    - vlv/chv backlight improvements (Ville)
    - gen8+ render ctx w/a work from various people
    - skl edp programming (Satheeshakrishna et al.)
    - psr docbook (Rodrigo)
    - piles of little fixes and improvements all over, as usual

    * tag 'drm-intel-next-2014-11-21-fixed' of git://anongit.freedesktop.org/drm-intel: (117 commits)
    drm/i915: Don't pin LRC in GGTT when dumping in debugfs
    drm/i915: Update DRIVER_DATE to 20141121
    drm/i915/g4x: fix g4x infoframe readout
    drm/i915: Only call mod_timer() if not already pending
    drm/i915: Don't rely upon encoder->type for infoframe hw state readout
    drm/i915: remove the IRQs enabled WARN from intel_disable_gt_powersave
    drm/i915: Use ggtt error obj capture helper for gen8 semaphores
    drm/i915: vlv: increase timeout when setting idle GPU freq
    drm/i915: vlv: fix cdclk setting during modeset while suspended
    drm/i915: Dump hdmi pipe_config state
    drm/i915: Gen9 shadowed registers
    drm/i915/skl: Gen9 multi-engine forcewake
    drm/i915: Read power well status before other registers for drpc info
    drm/i915: Pin tiled objects for L-shaped configs
    drm/i915: Update ring freq for full gpu freq range
    drm/i915: change initial rps frequency for gen8
    drm/i915: Keep min freq above floor on HSW/BDW
    drm/i915: Use efficient frequency for HSW/BDW
    drm/i915: Can i915_gem_init_ioctl
    drm/i915: Sanitize ->lastclose
    ...

    Dave Airlie
     

02 Dec, 2014

1 commit

  • The colorspace chapter in the V4L2 Specification was always poorly
    written. This patch rewrites it, documenting the new Y'CbCr encoding
    and quantization defines and going into much more detail with respect
    to how colorspaces are used and what it all means.

    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Hans Verkuil
     

27 Nov, 2014

1 commit

  • Add helper macros to iterate the current, or incoming set of planes
    attached to a crtc. These helpers are only available for drivers
    converted to use atomic-helpers.

    Signed-off-by: Rob Clark
    [danvet: Squash in fixup from Rob to move the planemask iterator to
    drm_crtc.h and document it. That one is needed by the atomic ioctl so
    can't be in a helper library.]
    Signed-off-by: Daniel Vetter

    Rob Clark
     

21 Nov, 2014

1 commit


20 Nov, 2014

1 commit

  • So with all the code movement and extraction in intel_pm.c in -next
    git is hopelessly confused with

    commit 2208d655a91f9879bd9a39ff9df05dd668b3512c
    Author: Daniel Vetter
    Date: Fri Nov 14 09:25:29 2014 +0100

    drm/i915: drop WaSetupGtModeTdRowDispatch:snb

    from -fixes. Worse even small changes in -next move around the
    conflict context so rerere is equally useless. Let's just backmerge
    and be done with it.

    Conflicts:
    drivers/gpu/drm/i915/i915_drv.c
    drivers/gpu/drm/i915/intel_pm.c

    Except for git getting lost no tricky conflicts really.

    Signed-off-by: Daniel Vetter

    Daniel Vetter
     

18 Nov, 2014

1 commit

  • Let's document PSR a bit. No functional changes.

    v2: Add actual DocBook entry and accept Daniel's improvements.

    Cc: Daniel Vetter
    Signed-off-by: Rodrigo Vivi
    Signed-off-by: Daniel Vetter

    Rodrigo Vivi
     

15 Nov, 2014

5 commits

  • drm: Sanitize DRM_IOCTL_MODE_CREATE_DUMB input

    Some drivers erroneously treat the .pitch and .size fields of struct
    drm_mode_create_dumb as inputs. While the include/uapi/drm/drm_mode.h
    header has a comment denoting them as outputs, that seemingly wasn't
    enough to make drivers use them properly.

    The result is that some userspace doesn't explicitly zero out those
    fields, assuming that the kernel won't use them. That causes problems
    since the data within the structure might be uninitialized, so bogus
    data may end up confusing drivers (ridiculously large values for the
    pitch, ...).

    This series attempts to improve the situation by fixing all drivers to
    not use the output fields. Furthermore to spare new drivers this bad
    surprise, the DRM core now zeros out these fields prior to handing the
    data structure to the driver.

    Lessons learned from this are that future IOCTLs should be properly
    documented (in the DRM DocBook for example) and should be rigorously
    defined. To prevent misuse like this, userspace should be required to
    zero out all output fields. The kernel should check for this and fail
    if that's not the case.

    * tag 'drm/gem-cma/for-3.19-rc1' of git://people.freedesktop.org/~tagr/linux:
    drm/cma: Remove call to drm_gem_free_mmap_offset()
    drm: Sanitize DRM_IOCTL_MODE_CREATE_DUMB input
    drm/rcar: gem: dumb: pitch is an output
    drm/omap: gem: dumb: pitch is an output
    drm/cma: Introduce drm_gem_cma_dumb_create_internal()
    drm/doc: Add GEM/CMA helpers to kerneldoc
    drm/doc: mm: Fix indentation
    drm/gem: Fix a few kerneldoc typos

    Dave Airlie
     
  • Virtual GPUs would like to give the guest some indication where on the screen
    the outputs are layed out. So far we only provide modes, these
    properties could be exposed to userspace so the desktop environment
    could use them as hints to set the correct offsets.

    v2: rename properties to be more consistent.

    Signed-off-by: Dave Airlie

    Dave Airlie
     
  • drm/panel: Changes for v3.19-rc1

    This contains support for a couple of new panels, updates for some GPIO
    API changes and a bunch of updates to the MIPI DSI support that should
    make it easier to write panel drivers in the future.

    * tag 'drm/panel/for-3.19-rc1' of git://people.freedesktop.org/~tagr/linux: (31 commits)
    drm/panel: Add Sharp LQ101R1SX01 support
    drm/dsi: Do not require .owner field to be set
    drm/dsi: Resolve MIPI DSI device from phandle
    drm/dsi: Implement DCS set_{column,page}_address commands
    drm/dsi: Implement DCS {get,set}_pixel_format commands
    drm/dsi: Implement DCS get_power_mode command
    drm/dsi: Implement DCS soft_reset command
    drm/dsi: Implement DCS nop command
    drm/dsi: Add to DocBook documentation
    drm/dsi: Implement some standard DCS commands
    drm/dsi: Implement generic read and write commands
    drm/panel: s6e8aa0: Use standard MIPI DSI function
    drm/dsi: Add mipi_dsi_set_maximum_return_packet_size() helper
    drm/dsi: Constify mipi_dsi_msg
    drm/dsi: Make mipi_dsi_dcs_{read,write}() symmetrical
    drm/dsi: Add DSI transfer helper
    drm/dsi: Add message to packet translator
    drm/dsi: Introduce packet format helpers
    drm/panel: s6e8aa0: Fix build warnings on 64-bit
    drm/panel: ld9040: Fix build warnings on 64-bit
    ...

    Dave Airlie
     
  • …m-intel into drm-next

    - skl watermarks code (Damien, Vandana, Pradeep)
    - reworked audio codec /eld handling code (Jani)
    - rework the mmio_flip code to use the vblank evade logic and wait for rendering
    using the standard wait_seqno interface (Ander)
    - skl forcewake support (Zhe Wang)
    - refactor the chv interrupt code to use functions shared with vlv (Ville)
    - prep work for different global gtt views (Tvrtko Ursulin)
    - precompute the display PLL config before touching hw state (Ander)
    - completely reworked panel power sequencer code for chv/vlv (Ville)
    - pre work to split the plane update code into a prepare and commit phase
    (Gustavo Padovan)
    - golden context for skl (Armin Reese)
    - as usual tons of fixes and improvements all over

    * tag 'drm-intel-next-2014-11-07-fixups' of git://anongit.freedesktop.org/drm-intel: (135 commits)
    drm/i915: Use correct pipe config to update pll dividers. V2
    drm/i915: Plug memory leak in intel_shared_dpll_start_config()
    drm/i915: Update DRIVER_DATE to 20141107
    drm/i915: Add gen to the gpu hang ecode
    drm/i915: Cache HPLL frequency on VLV/CHV
    Revert "drm/i915/vlv: Remove check for Old Ack during forcewake"
    drm/i915: Make mmio flip wait for seqno in the work function
    drm/i915: Make __wait_seqno non-static and rename to __i915_wait_seqno
    drm/i915: Move the .global_resources() hook call into modeset_update_crtc_power_domains()
    drm/i915/audio: add DOC comment describing HDA over HDMI/DP
    drm/i915: make pipe/port based audio valid accessors easier to use
    drm/i915/audio: add audio codec enable debug log for g4x
    drm/i915/audio: add audio codec disable on g4x
    drm/i915: enable audio codec after port
    drm/i915/audio: add vlv/chv/gen5-7 audio codec disable sequence
    drm/i915/audio: rewrite vlv/chv and gen 5-7 audio codec enable sequence
    drm/i915/skl: Enable Gen9 RC6
    drm/i915/skl: Gen9 Forcewake
    drm/i915/skl: Log the order in which we flush the pipes in the WM code
    drm/i915/skl: Flush the WM configuration
    ...

    Dave Airlie
     
  • In order to have subsytem agnostic media bus format definitions we've
    moved media bus definition to include/uapi/linux/media-bus-format.h and
    prefixed them with MEDIA_BUS_FMT instead of V4L2_MBUS_FMT.

    Update the v4l documentation accordingly.

    Signed-off-by: Boris Brezillon
    Acked-by: Hans Verkuil
    Acked-by: Sakari Ailus
    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Boris BREZILLON
     

14 Nov, 2014

1 commit

  • - ppgtt init/release: these tracepoints are useful for observing the
    creation and destruction of Full PPGTTs.

    - ctx create/free: we can use the ctx_free trace in combination with the
    ppgtt_release one to be sure that the ppgtt doesn't stay alive for too
    long after the ctx is destroyed. ctx_create is there for simmetry

    - switch_mm: important point in the lifetime of the vm

    v4: add DOC information
    v5: pull the DOC in drm.tmpl
    v6: clean ppgtt init/release traces + add ctx create/free and switch_mm
    tracepoints (Chris)
    v7: drop execlist_submit_context tracepoint

    Cc: Chris Wilson
    Signed-off-by: Daniele Ceraolo Spurio
    Reviewed-by: Chris Wilson
    Signed-off-by: Daniel Vetter

    Daniele Ceraolo Spurio
     

13 Nov, 2014

5 commits


12 Nov, 2014

1 commit


11 Nov, 2014

1 commit

  • Needed due to some important regression fixes at RC core.

    * commit 'v3.18-rc4': (587 commits)
    Linux 3.18-rc4
    ARM: dts: zynq: Enable PL clocks for Parallella
    tiny: rename ENABLE_DEV_COREDUMP to ALLOW_DEV_COREDUMP
    tiny: reverse logic for DISABLE_DEV_COREDUMP
    i2c: core: Dispose OF IRQ mapping at client removal time
    i2c: at91: don't account as iowait
    i2c: remove FSF address
    USB: Update default usb-storage delay_use value in kernel-parameters.txt
    sysfs: driver core: Fix glue dir race condition by gdp_mutex
    MIPS: Fix build with binutils 2.24.51+
    xfs: track bulkstat progress by agino
    xfs: bulkstat error handling is broken
    xfs: bulkstat main loop logic is a mess
    xfs: bulkstat chunk-formatter has issues
    xfs: bulkstat chunk formatting cursor is broken
    xfs: bulkstat btree walk doesn't terminate
    mm: Fix comment before truncate_setsize()
    USB: cdc-acm: add quirk for control-line state requests
    tty: Fix pty master poll() after slave closes v2
    MIPS: R3000: Fix debug output for Virtual page number
    ...

    Conflicts:
    drivers/media/rc/rc-main.c

    Mauro Carvalho Chehab
     

10 Nov, 2014

3 commits

  • Backmerge drm-next so that I can keep merging patches. Specifically I
    want:
    - atomic stuff, yay!
    - eld parsing patch from Jani.

    Signed-off-by: Daniel Vetter

    Daniel Vetter
     
  • These two didn't get documented properly, do so.

    Pointed out by Daniel.

    v1.1: add missing boilerplate (Daniel)

    Reviewed-by: Daniel Vetter
    Signed-off-by: Dave Airlie

    Dave Airlie
     
  • So here's my atomic series, finally all debugged&reviewed. Sean Paul has
    done a full detailed pass over it all, and a lot of other people have
    commented and provided feedback on some parts. Rob Clark also converted
    msm over the w/e and seems happy. The only small thing is that Rob wants
    to export the wait_for_vblank, which imo makes sense. Since there's other
    stuff still to do I think we should apply Rob's patch (once it has grown
    appropriate kerneldoc) later on top of this.

    This is just the coredriver interface plus a big pile of helpers. Short
    recap of the main ideas:

    - There are essentially three helper libraries in this patch set:

    * Transitional helpers to use the new plane callbacks for legacy plane
    updates and in the crtc helper's ->mode_set callback. These helpers are
    only temporarily used to convert drivers to atomic, but they allow a
    nice separation between changing the driver backend and switching to
    the atomic commit logic.

    * Legacy helpers to implement all the legacy driver entry points
    (page_flip, set_config, plane vfuncs) on top of the new atomic driver
    interface. These are completely driver agnostic. The reason for having
    the legacy support as helpers is that drivers can switch step-by-step.
    And they could e.g. even keep the legacy page_flip code around for some
    old platforms where converting to full-blown atomic isn't worth it.

    * Atomic helpers which implement the various new ->atomic_* driver
    interfaces in terms of the revised crtc helper and new plane helper
    hooks.

    - The revised crtc helper implemenation essentially implements all the
    lessons learned in the i915 modeset rework (when using the atomic helpers
    only):

    * Enable/disable sequence for a given config are always the same and
    callbacks are always called in the same order. This contrast starkly
    with the crtc helpers, where the sequence of operations is heavily
    dependent on the previous config.

    One corollary of this is that if the configuration of a crtc only
    partially changes (e.g. a connector moves in a cloned config) the
    helper code will still disable/enable the full display pipeline. This
    is the only way to ensure that the enable/disable sequence is always
    the same.

    * It won't call disable or enable hooks more than once any more because
    it lost track of state, thanks to the atomic state tracking. And if
    drivers implement the ->reset hook properly (by either resetting the hw
    or reading out the hw state into the atomic structures) this even
    extends to the hardware state. So no more disable-me-harder kind of
    nonsense.

    * The only thing missing is the hw state readout/cross-check support, but
    if drivers have hw state readout support in their ->reset handlers it's
    simple to extend that to cross-check the hw state.

    * The crtc->mode_set callback is gone and its replacement only sets crtc
    timings and no longer updates the primary plane state. This way we can
    finally implement primary planes properly.

    - The new plane helpers should be suitable enough for pretty much
    everything, and a perfect fit for hardware with GO bits. Even if they
    don't fit the atomic helper library is rather flexible and exports all
    the functions for the individual steps to drivers. So drivers can pick
    what matches and implement their own magic for everything else.

    - A big difference compared to all previous atomic series is that this one
    doesn't implement async commit in a generic way. Imo driver requirements
    for that are too diverse to create anything reasonable sane which would
    actually work on a reasonable amount of different drivers. Also, we've
    never had a helper library for page_flips even, so it's really hard to
    know what might work and what's stupid without a bit of experience in the form
    of a few driver implementations.

    I think with the current flexibility for drivers to pick individual
    stages and existing helpers like drm_flip_queue it's rather easy though
    to implement proper async commit.

    - There's a few other differences of minor importance to earlier atomic
    series:

    * Common/generic properties are parsed in the callers/core and not in
    drivers, and passed to drivers by directly setting the right members in
    atomic state structures. That greatly simplifies all the transitional
    and legacy helpers an removes a lot of boilerplate code.

    * There's no crazy trylock mode used for the async commit since these
    helpers don't do async commit. A simple ordered flip queue of atomic
    state updates should be sufficient for preventing concurrent hw access
    anyway, as long as synchronous updates stall correctly with e.g.
    flush_work_queue or similar function. Abusing locks to enforce ordering
    isn't a good idea imo anyway.

    * These helpers reuse the existing ->mode_fixup hooks in the atomic_check
    callback. Which means that drivers need to adapat and move a lot less code
    into their atomic_check callbacks.

    Now this isn't everything needed in the drm core and helpers for full
    atomic support. But it's enough to start with converting drivers, and
    except for actually testing multiplane and multicrtc updates also enough to
    implement full atomic updates. Still missing are:

    - Per-plane locking. Since these helpers here encapsulate the locking
    completely this should be fairly easy to implement.

    - fbdev support for atomic_check/commit, so that multi-pipe finally works
    sanely in fbcon.

    - Adding and decoding shared/core properties. That just needs to be rebased
    from Rob's latest patch series, with minor adjustments so that the
    decoding happens in the core instead of in drivers.

    - Actually adding the atomic ioctl. Again just rebasing Rob's latest patch
    should be all that's needed.

    - Resolving how to deal with DPMS in atomic. Atomic is a good excuse to fix up
    the crazy semantics dpms currently has. I'm floating an RFC about this topic
    already.

    - Finally I couldn't test connector/encoder stealing properly since my test
    vehicle here doesn't allow a connector on different crtcs. So drivers
    which support this might see some surprises in that area. There is no semantic
    change though in how encoder stealing and assignment works (or at least no
    intended one), so I think the risk is minimal.

    As just mentioned I've done a fake conversion of an existing driver using
    crtc helpers to debug the helper code and validate the smooth transition
    approach. And that smooth transition was the really big motivation for
    this. It seems to actually work and consists of 3 phases:

    Phase 1: Rework driver backend for crtc/plane helpers

    The requirement here is that universal plane support is already implement. If
    universal plane support isn't implement yet it might be better though to just do
    it as part of this phase, directly using the new plane helpers. There are two
    big things to do:

    - Split up the existing ->update/disable_plane hooks into check/commit
    hooks and extract the crtc-wide prep/flush parts (like setting/clearing
    GO bits).

    - The other big change is to split the crtc->mode_set hook into the plane
    update (done using the plane helpers) and the crtc setup in a new
    ->mode_set_nofb hook.

    When phase 1 is complete the driver implements all the new callbacks which
    push the software state into hardware, but still using all the legacy entry
    points and crtc helpers. The transitional helpers serve as impendance
    mismatch here.

    Phase 2: Rework state handling

    This consists of rolling out the state handling helpers for planes, crtcs
    and connectors and reviewing all ->mode_fixup and similar hooks to make
    sure they don't depend upon implicit global state which might change in the
    atomic world. Any such code must be moved into ->atomic_check functions which
    just rely on the free-standing atomic state update structures.

    This phase also adds a few small pieces of fixup code to make sure the
    atomic state doesn't get out of sync in the legacy driver callbacks.

    Phase 3: Roll out atomic support

    Now it's just about replacing vfuncs with the ones provided by the helper
    and filling out the small missing pieces (like atomic_check logic or async
    commit support needed for page_flips). Due to the prep work in phase 1 no
    changes to the driver backend functions should be required, and because of
    the prep work in phase 2 atomic implementations can be rolled out
    step-by-step. So if async commit ins't implemented yet page_flip can be
    implemented with the legacy functions without wreaking havoc in the other
    operations.

    * tag 'topic/atomic-helpers-2014-11-09' of git://anongit.freedesktop.org/drm-intel:
    drm/atomic: Refcounting for plane_state->fb
    drm: Docbook integration and over sections for all the new helpers
    drm/atomic-helpers: functions for state duplicate/destroy/reset
    drm/atomic-helper: implement ->page_flip
    drm/atomic-helpers: document how to implement async commit
    drm/atomic: Integrate fence support
    drm/atomic-helper: implementatations for legacy interfaces
    drm: Atomic crtc/connector updates using crtc/plane helper interfaces
    drm/crtc-helper: Transitional functions using atomic plane helpers
    drm/plane-helper: transitional atomic plane helpers
    drm: Add atomic/plane helpers
    drm: Global atomic state handling
    drm: Add atomic driver interface definitions for objects
    drm/modeset_lock: document trylock_only in kerneldoc
    drm: fixup kerneldoc in drm_crtc.h
    drm: Pull drm_crtc.h into the kerneldoc template
    drm: Move drm_crtc_init from drm_crtc.h to drm_plane_helper.h

    Dave Airlie
     

08 Nov, 2014

2 commits


07 Nov, 2014

1 commit