05 Jan, 2017

4 commits

  • This reverts commit 6b7e95d1336b9eb0d4c6db190ce756480496bd13. This commit
    is based on a concern about value of the given parameter. It's expected
    to be ORed value with some enumeration-constants, thus often it can not be
    one of the enumeration-constants. I understood that this is out of
    specification and causes implementation-dependent issues.

    In C language specification, enumerated type can be interpreted as an
    integer type, in which all of enumeration-constants in corresponding
    enumerator-list can be stored. Implementations can select one of char,
    signed int and unsigned int as its type, and this selection is
    implementation-dependent.

    In GCC, a signed integer is selected when at least one of
    enumeration-constants has negative value, else an unsigned integer is
    selected. This behaviour can be switched by -fshort-enums to short type.
    Anyway, the type can be decided after scanning all of
    enumeration-constants.

    Totally, there's no rules to constrain the value of enumerated type to
    be one of enumeration-constants. In short, in enumerated type, decision
    of actual type for the type is the most important and
    enumeration-constants are just used for the decision, thus it's permitted
    to have an integer value in a range of enumeration-constants. In our case,
    actual type for the type is currently deterministic to be either char or
    unsigned int. Under GCC, it's unsigned int.

    Signed-off-by: Takashi Sakamoto
    Signed-off-by: Takashi Iwai

    Takashi Sakamoto
     
  • Testing EP_FLAG_RUNNING in snd_complete_urb() before running the completion
    logic allows us to save a few cpu cycles by returning early, skipping the
    pending urb in case the stream was stopped; the stop logic handles the urb
    and sets the completion callbacks to NULL.

    Signed-off-by: Ioan-Adrian Ratiu
    Signed-off-by: Takashi Iwai

    Ioan-Adrian Ratiu
     
  • Commit 16200948d83 ("ALSA: usb-audio: Fix race at stopping the stream") was
    incomplete causing another more severe kernel panic, so it got reverted.
    This fixes both the original problem and its fallout kernel race/crash.

    The original fix is to move the endpoint member NULL clearing logic inside
    wait_clear_urbs() so the irq triggering the urb completion doesn't call
    retire_capture/playback_urb() after the NULL clearing and generate a panic.

    However this creates a new race between snd_usb_endpoint_start()'s call
    to wait_clear_urbs() and the irq urb completion handler which again calls
    retire_capture/playback_urb() leading to a new NULL dereference.

    We keep the EP deactivation code in snd_usb_endpoint_start() because
    removing it will break the EP reference counting (see [1] [2] for info),
    however we don't need the "can_sleep" mechanism anymore because a new
    function was introduced (snd_usb_endpoint_sync_pending_stop()) which
    synchronizes pending stops and gets called inside the pcm prepare callback.

    It also makes sense to remove can_sleep because it was also removed from
    deactivate_urbs() signature in [3] so we benefit from more simplification.

    [1] commit 015618b90 ("ALSA: snd-usb: Fix URB cancellation at stream start")
    [2] commit e9ba389c5 ("ALSA: usb-audio: Fix scheduling-while-atomic bug in PCM capture stream")
    [3] commit ccc1696d5 ("ALSA: usb-audio: simplify endpoint deactivation code")

    Fixes: f8114f8583bb ("Revert "ALSA: usb-audio: Fix race at stopping the stream"")

    Signed-off-by: Ioan-Adrian Ratiu
    Signed-off-by: Takashi Iwai

    Ioan-Adrian Ratiu
     
  • Although the old quirk table showed ASUS X71SL with ALC663 codec being
    compatible with asus-mode3 fixup, the bugzilla reporter explained that
    asus-model8 fits better for the dual headphone controls. So be it.

    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=191781
    Cc:
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     

04 Jan, 2017

1 commit


03 Jan, 2017

3 commits


26 Dec, 2016

2 commits

  • ktime_set(S,N) was required for the timespec storage type and is still
    useful for situations where a Seconds and Nanoseconds part of a time value
    needs to be converted. For anything where the Seconds argument is 0, this
    is pointless and can be replaced with a simple assignment.

    Signed-off-by: Thomas Gleixner
    Cc: Peter Zijlstra

    Thomas Gleixner
     
  • ktime is a union because the initial implementation stored the time in
    scalar nanoseconds on 64 bit machine and in a endianess optimized timespec
    variant for 32bit machines. The Y2038 cleanup removed the timespec variant
    and switched everything to scalar nanoseconds. The union remained, but
    become completely pointless.

    Get rid of the union and just keep ktime_t as simple typedef of type s64.

    The conversion was done with coccinelle and some manual mopping up.

    Signed-off-by: Thomas Gleixner
    Cc: Peter Zijlstra

    Thomas Gleixner
     

25 Dec, 2016

2 commits


22 Dec, 2016

1 commit

  • This reverts commit 16200948d8353fe29a473a394d7d26790deae0e7.

    The commit was intended to cover the race condition, but it introduced
    yet another regression for devices with the implicit feedback, leading
    to a kernel panic due to NULL-dereference in an irq context.

    As the race condition that was addressed by the commit is very rare
    and the regression is much worse, let's revert the commit for rc1, and
    fix the issue properly in a later patch.

    Fixes: 16200948d835 ("ALSA: usb-audio: Fix race at stopping the stream")
    Reported-by: Ioan-Adrian Ratiu
    Cc:
    Signed-off-by: Takashi Iwai
    Signed-off-by: Linus Torvalds

    Takashi Iwai
     

15 Dec, 2016

1 commit

  • Pull sound updates from Takashi Iwai:
    "No dramatic changes are found in this development cycle, but as usual,
    many commits are applied in a wide range of drivers.

    Most of big changes are in ASoC, where a few bits of framework work
    and quite a lot of cleanups and improvements to existing code have
    been done. The rest are usual stuff, a few HD-audio and USB-audio
    quirks and fixes, as well as the drop of kthread usages in the whole
    subsystem.

    Below are some highlights:

    ASoC:
    - support for stereo DAPM controls
    - some initial work on the of-graph sound card
    - regmap conversions of the remaining AC'97 drivers
    - a new version of the topology ABI; this should be backward
    compatible
    - updates / cleanups of rsnd, sunxi, sti, nau8825, samsung, arizona,
    Intel skylake, atom-sst
    - new drivers for Cirrus Logic CS42L42, Qualcomm MSM8916-WCD, and
    Realtek RT5665

    USB-audio:
    - yet another race fix at disconnection
    - tolerated packet size calculation for some Android devices
    - quirks for Axe-Fx II, QuickCam, TEAC 501/503

    HD-audio:
    - improvement of Dell pin fixup mapping
    - quirks for HP Z1 Gen3, Alienware 15 R2 2016 and ALC622 headset mic

    Misc:
    - replace all kthread usages with simple works"

    * tag 'sound-4.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (296 commits)
    ALSA: hiface: Fix M2Tech hiFace driver sampling rate change
    ALSA: usb-audio: Eliminate noise at the start of DSD playback.
    ALSA: usb-audio: Add native DSD support for TEAC 501/503 DAC
    ASoC: wm_adsp: wm_adsp_buf_alloc should use kfree in error path
    ASoC: topology: avoid uninitialized kcontrol_type
    ALSA: usb-audio: Add QuickCam Communicate Deluxe/S7500 to volume_control_quirks
    ALSA: usb-audio: add implicit fb quirk for Axe-Fx II
    ASoC: zte: spdif: correct ZX_SPDIF_CLK_RAT define
    ASoC: zte: spdif and i2s drivers are not zx296702 specific
    ASoC: rsnd: setup BRGCKR/BRRA/BRRB when starting
    ASoC: rsnd: enable/disable ADG when suspend/resume timing
    ASoC: rsnd: tidyup ssi->usrcnt counter check in hw_params
    ALSA: cs46xx: add a new line
    ASoC: Intel: update bxt_da7219_max98357a to support quad ch dmic capture
    ASoC: nau8825: disable sinc filter for high THD of ADC
    ALSA: usb-audio: more tolerant packetsize
    ALSA: usb-audio: avoid setting of sample rate multiple times on bus
    ASoC: cs35l34: Simplify the logic to set CS35L34_MCLK_CTL setting
    ALSA: hda - Gate the mic jack on HP Z1 Gen3 AiO
    ALSA: hda: when comparing pin configurations, ignore assoc in addition to seq
    ...

    Linus Torvalds
     

14 Dec, 2016

1 commit

  • Pull drm updates from Dave Airlie:
    "This is the main pull request for drm for 4.10 kernel.

    New drivers:
    - ZTE VOU display driver (zxdrm)
    - Amlogic Meson Graphic Controller GXBB/GXL/GXM SoCs (meson)
    - MXSFB support (mxsfb)

    Core:
    - Format handling has been reworked
    - Better atomic state debugging
    - drm_mm leak debugging
    - Atomic explicit fencing support
    - fbdev helper ops
    - Documentation updates
    - MST fbcon fixes

    Bridge:
    - Silicon Image SiI8620 driver

    Panel:
    - Add support for new simple panels

    i915:
    - GVT Device model
    - Better HDMI2.0 support on skylake
    - More watermark fixes
    - GPU idling rework for suspend/resume
    - DP Audio workarounds
    - Scheduler prep-work
    - Opregion CADL handling
    - GPU scheduler and priority boosting

    amdgfx/radeon:
    - Support for virtual devices
    - New VM manager for non-contig VRAM buffers
    - UVD powergating
    - SI register header cleanup
    - Cursor fixes
    - Powermanagement fixes

    nouveau:
    - Powermangement reworks for better voltage/clock changes
    - Atomic modesetting support
    - Displayport Multistream (MST) support.
    - GP102/104 hang and cursor fixes
    - GP106 support

    hisilicon:
    - hibmc support (BMC chip for aarch64 servers)

    armada:
    - add tracing support for overlay change
    - refactor plane support
    - de-midlayer the driver

    omapdrm:
    - Timing code cleanups

    rcar-du:
    - R8A7792/R8A7796 support
    - Misc fixes.

    sunxi:
    - A31 SoC display engine support

    imx-drm:
    - YUV format support
    - Cleanup plane atomic update

    mali-dp:
    - Misc fixes

    dw-hdmi:
    - Add support for HDMI i2c master controller

    tegra:
    - IOMMU support fixes
    - Error handling fixes

    tda998x:
    - Fix connector registration
    - Improved robustness
    - Fix infoframe/audio compliance

    virtio:
    - fix busid issues
    - allocate more vbufs

    qxl:
    - misc fixes and cleanups.

    vc4:
    - Fragment shader threading
    - ETC1 support
    - VEC (tv-out) support

    msm:
    - A5XX GPU support
    - Lots of atomic changes

    tilcdc:
    - Misc fixes and cleanups.

    etnaviv:
    - Fix dma-buf export path
    - DRAW_INSTANCED support
    - fix driver on i.MX6SX

    exynos:
    - HDMI refactoring

    fsl-dcu:
    - fbdev changes"

    * tag 'drm-for-v4.10' of git://people.freedesktop.org/~airlied/linux: (1343 commits)
    drm/nouveau/kms/nv50: fix atomic regression on original G80
    drm/nouveau/bl: Do not register interface if Apple GMUX detected
    drm/nouveau/bl: Assign different names to interfaces
    drm/nouveau/bios/dp: fix handling of LevelEntryTableIndex on DP table 4.2
    drm/nouveau/ltc: protect clearing of comptags with mutex
    drm/nouveau/gr/gf100-: handle GPC/TPC/MPC trap
    drm/nouveau/core: recognise GP106 chipset
    drm/nouveau/ttm: wait for bo fence to signal before unmapping vmas
    drm/nouveau/gr/gf100-: FECS intr handling is not relevant on proprietary ucode
    drm/nouveau/gr/gf100-: properly ack all FECS error interrupts
    drm/nouveau/fifo/gf100-: recover from host mmu faults
    drm: Add fake controlD* symlinks for backwards compat
    drm/vc4: Don't use drm_put_dev
    drm/vc4: Document VEC DT binding
    drm/vc4: Add support for the VEC (Video Encoder) IP
    drm: Add TV connector states to drm_connector_state
    drm: Turn DRM_MODE_SUBCONNECTOR_xx definitions into an enum
    drm/vc4: Fix ->clock_select setting for the VEC encoder
    drm/amdgpu/dce6: Set MASTER_UPDATE_MODE to 0 in resume_mc_access as well
    drm/amdgpu: use pin rather than pin_restricted in a few cases
    ...

    Linus Torvalds
     

13 Dec, 2016

5 commits

  • Commit 4bcc595ccd80 ("printk: reinstate KERN_CONT for printing
    continuation lines") allows to define more message headers for a single
    message. The motivation is that continuous lines might get mixed.
    Therefore it make sense to define the right log level for every piece of
    a cont line.

    This patch allows to copy only the real message level. We should ignore
    KERN_CONT because is added for each message. By other
    words, we want to know where each piece of the line comes from.

    [pmladek@suse.com: fix a check of the valid message level]
    Link: http://lkml.kernel.org/r/20161111183444.GE2145@dhcp128.suse.cz
    Link: http://lkml.kernel.org/r/1478695291-12169-5-git-send-email-pmladek@suse.com
    Signed-off-by: Petr Mladek
    Cc: Joe Perches
    Cc: Sergey Senozhatsky
    Cc: Steven Rostedt
    Cc: Jason Wessel
    Cc: Jaroslav Kysela
    Cc: Takashi Iwai
    Cc: Chris Mason
    Cc: Josef Bacik
    Cc: David Sterba
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Petr Mladek
     
  • Sampling rate changes after first set one are not reflected to the
    hardware, while driver and ALSA think the rate has been changed.

    Fix the problem by properly stopping the interface at the beginning of
    prepare call, allowing new rate to be set to the hardware. This keeps
    the hardware in sync with the driver.

    Signed-off-by: Jussi Laako
    Cc:
    Signed-off-by: Takashi Iwai

    Jussi Laako
     
  • [Problem]
    In some USB DACs, a terrible pop noise comes to be heard
    at the start of DSD playback (in the following situations).

    - play first DSD track
    - change from PCM track to DSD track
    - change from DSD64 track to DSD128 track (and etc...)
    - seek DSD track
    - Fast-Forward/Rewind DSD track

    [Cause]
    At the start of playback, there is a little silence.
    The silence bit pattern "0x69" is required on DSD mode,
    but it is not like that.

    [Solution]
    This patch adds DSD silence pattern to the endpoint settings.

    Signed-off-by: Nobutaka Okabe
    Signed-off-by: Takashi Iwai

    Nobutaka Okabe
     
  • This patch adds native DSD support for the following devices.

    - TEAC NT-503
    - TEAC UD-503
    - TEAC UD-501

    (1) Add quirks for native DSD support for TEAC devices.
    (2) A specific vendor command is needed to switch between PCM/DOP and
    DSD mode, same as Denon/Marantz devices.

    Signed-off-by: Nobutaka Okabe
    Signed-off-by: Takashi Iwai

    Nobutaka Okabe
     
  • ASoC: Updates for v4.10

    There's been a few bits of framework work this time around and quite a
    lot of cleanups and improvements to existing code:

    - Support for stereo DAPM controls from Chen-yu Tsai.
    - Some initial work on the of-graph sound card from Morimoto-san, the
    main bulk of this is currently in binding review.
    - Lots of Renesas cleanups from Morimoto-san and sunxi work from
    Chen-yu Tsai.
    - regmap conversions of the remaining AC'97 drivers from Lars-Peter
    Clausen.
    - A new version of the topology ABI from Mengdong Lin.
    - New drivers for Cirrus Logic CS42L42, Qualcomm MSM8916-WCD, and Realtek
    RT5665.

    Takashi Iwai
     

12 Dec, 2016

20 commits