05 Jan, 2017

5 commits

  • Some identifiers are referred just by one functions. In this case, they
    can be put into the function definition. This brings two merits; readers
    can easily follow codes related to the identifiers, developers are free
    from name conflict.

    This commit moves such identifiers to each function definition.

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

    Takashi Sakamoto
     
  • Some identifiers are referred just by one functions. In this case, they
    can be put into the function definition. This brings two merits; readers
    can easily follow codes related to the identifiers, developers are free
    from name conflict.

    This commit moves such identifiers to each function definition.

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

    Takashi Sakamoto
     
  • Some identifiers are referred just by one functions. In this case, they
    can be put into the function definition. This brings two merits; readers
    can easily follow codes related to the identifiers, developers are free
    from name conflict.

    This commit moves such identifiers to each function definition.

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

    Takashi Sakamoto
     
  • The update of stream costs significantly, and we should avoid it
    unless the stream really has started. Check pipe->running flag
    instead of pipe->prepared.

    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • The pseudo DMA transfer codes in VX222 and VX-pocket driver have a
    slight bug where they check the buffer boundary wrongly, and may
    overflow. Also, the zero sample count might be handled badly for the
    playback (although it shouldn't happen in theory). This patch
    addresses these issues.

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

    Takashi Iwai
     

04 Jan, 2017

2 commits

  • Imre Deak reported a deadlock of HD-audio driver at unbinding while
    it's still in probing. Since we probe the codecs asynchronously in a
    work, the codec driver probe may still be kicked off while the
    controller itself is being unbound. And, azx_remove() tries to
    process all pending tasks via cancel_work_sync() for fixing the other
    races (see commit [0b8c82190c12: ALSA: hda - Cancel probe work instead
    of flush at remove]), now we may meet a bizarre deadlock:

    Unbind snd_hda_intel via sysfs:
    device_release_driver() ->
    device_lock(snd_hda_intel) ->
    azx_remove() ->
    cancel_work_sync(azx_probe_work)

    azx_probe_work():
    codec driver probe() ->
    __driver_attach() ->
    device_lock(snd_hda_intel)

    This deadlock is caused by the fact that both device_release_driver()
    and driver_probe_device() take both the device and its parent locks at
    the same time. The codec device sets the controller device as its
    parent, and this lock is taken before the probe() callback is called,
    while the controller remove() callback gets called also with the same
    lock.

    In this patch, as an ugly workaround, we unlock the controller device
    temporarily during cancel_work_sync() call. The race against another
    bind call should be still suppressed by the parent's device lock.

    Reported-by: Imre Deak
    Fixes: 0b8c82190c12 ("ALSA: hda - Cancel probe work instead of flush at remove")
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • ALC299 was similar as ALC225.
    Add headset support for ALC299.
    ALC3271 was for Dell rename.

    Signed-off-by: Kailang Yang
    Signed-off-by: Takashi Iwai

    Kailang Yang
     

03 Jan, 2017

6 commits

  • Takashi Iwai
     
  • As of kernel 4.10, ALSA dice driver is expected to be used in default
    speed. In most cases, it's S400. While, IEEE 1394 specification describes
    the other speed such as S800.

    According to 'TCD30XX User Guide', its link layer controller supports
    several transmission speed up to S800[0]. In Dice software interface,
    transmission speed in output direction can be configured by asynchronous
    transaction to 'TX_SPEED' offset in its address space. S800 may be
    available.

    This commit improves configuration of transmission unit before starting
    packet streaming for this purpose. The value of 'max_speed' in 'fw_device'
    data structure has available maximum speed decided in bus arbitration,
    thus it's within capacity of the unit.

    [0] TCD3xx User Guide - TCAT 1394 LLC, Revision 0.9.0-41360 (TC Applied Technologies, May 6 2015)
    http://www.tctechnologies.tc/index.php/support/support-hardware/dice-iii-detailed-documentation

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

    Takashi Sakamoto
     
  • The 'amdtp_stream' structure is initialized by a call of
    'amdtp_stream_init()'. Although a parameter of this function is for bit
    flags of packet attributes, its type is enumerator.

    This commit changes the type so that it's proper for a bit flags.

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

    Takashi Sakamoto
     
  • This module has a bug not to return error code in a case that data
    structure for transmitted packets fails to be initialized.

    This commit fixes the bug.

    Fixes: 35efa5c489de ("ALSA: firewire-tascam: add streaming functionality")
    Signed-off-by: Takashi Sakamoto
    Signed-off-by: Takashi Iwai

    Takashi Sakamoto
     
  • ALSA fireworks driver has a bug not to call an API to destroy
    'cmp_connection' structure for input direction. Currently this causes no
    issues because it just destroys 'mutex' structure, while it's better to
    fix it for future work.

    Fix: d23c2cc4485d ("ALSA: fireworks/bebob/dice/oxfw: allow stream destructor after releasing runtime")
    Signed-off-by: Takashi Sakamoto
    Signed-off-by: Takashi Iwai

    Takashi Sakamoto
     
  • As of kernel 4.10, ALSA OXFW driver has no entry for Onyx 1640i produced
    by Mackie (Loud Technologies). This commit supplement it.

    I note that there're two models produced by Mackie (Loud Technologies),
    which have the same name 'Onyx 1640i'. The former model based on OXFW970,
    the latter model based on Dice. This is probably due to low quality of
    communication of OXFW series.

    Additionally, the tester reports his or her experiences to get unexpected
    result at higher sampling transmission frequency as 88.2/96.0 kHz. We
    didn't have further investigation yet[0].

    $ ./linux-firewire-utils/src/crpp < config_rom
    ROM header and bus information block
    -----------------------------------------------------------------
    400 042525ce bus_info_length 4, crc_length 37, crc 9678
    404 31333934 bus_name "1394"
    408 20ff5003 irmc 0, cmc 0, isc 1, bmc 0, cyc_clk_acc 255, max_rec 5 (64)
    40c 000ff205 company_id 000ff2 |
    410 00000fcf device_id 0500000fcf | EUI-64 000ff20500000fcf

    root directory
    -----------------------------------------------------------------
    414 0006c1b7 directory_length 6, crc 49591
    418 03000ff2 vendor
    41c 8100000a --> descriptor leaf at 444
    420 17001640 model
    424 81000011 --> descriptor leaf at 468
    428 0c0083c0 node capabilities per IEEE 1394
    42c d1000001 --> unit directory at 430

    unit directory at 430
    -----------------------------------------------------------------
    430 00040b97 directory_length 4, crc 2967
    434 1200a02d specifier id: 1394 TA
    438 13010001 version: AV/C
    43c 17001640 model
    440 81000010 --> descriptor leaf at 480

    descriptor leaf at 444
    -----------------------------------------------------------------
    444 0008a886 leaf_length 8, crc 43142
    448 00000000 textual descriptor
    44c 00000000 minimal ASCII
    450 4c6f7564 "Loud"
    454 20546563 " Tec"
    458 686e6f6c "hnol"
    45c 6f676965 "ogie"
    460 7320496e "s In"
    464 632e0000 "c."

    descriptor leaf at 468
    -----------------------------------------------------------------
    468 00059fcf leaf_length 5, crc 40911
    46c 00000000 textual descriptor
    470 00000000 minimal ASCII
    474 4f6e7978 "Onyx"
    478 20313634 " 164"
    47c 30690000 "0i"

    descriptor leaf at 480
    -----------------------------------------------------------------
    480 00059fcf leaf_length 5, crc 40911
    484 00000000 textual descriptor
    488 00000000 minimal ASCII
    48c 4f6e7978 "Onyx"
    490 20313634 " 164"
    494 30690000 "0i"

    [0]: [FFADO-user] Mackie 1640i issues (finer details)
    https://sourceforge.net/p/ffado/mailman/message/35229260/

    Tested-by: Seth O'Bannion
    Signed-off-by: Takashi Sakamoto
    Signed-off-by: Takashi Iwai

    Takashi Sakamoto
     

28 Dec, 2016

6 commits

  • The Samsung Ativ Book 8 makes a loud click noise on boot, shutdown
    and when the audio card enters or exits power saving states. All
    these noises disappear applying ALC269_FIXUP_NO_SHUTUP.

    In addition to that, fix the loud click noise that the laptop
    makes when inserting or removing the headphone jack by automuting
    via amp instead of pinctl.

    Signed-off-by: Gabriele Mazzotta
    Signed-off-by: Takashi Iwai

    Gabriele Mazzotta
     
  • Setting shutup when the action is HDA_FIXUP_ACT_PRE_PROBE might
    not have the desired effect since it could be overridden by
    another more generic shutup function. Prevent this by setting
    the more specific shutup function on HDA_FIXUP_ACT_PROBE.

    Signed-off-by: Gabriele Mazzotta
    Signed-off-by: Takashi Iwai

    Gabriele Mazzotta
     
  • Fix a comment typo in mixart.h.

    Signed-off-by: Geliang Tang
    Signed-off-by: Takashi Iwai

    Geliang Tang
     
  • Add DSD support for both little endian (DSD_U32_LE) and big endian
    (DSD_U32_BE) version of the Amanero firmware.

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

    Jussi Laako
     
  • Prepare to mark sensitive kernel structures for randomization by making
    sure they're using designated initializers. These were identified during
    allyesconfig builds of x86, arm, and arm64, with most initializer fixes
    extracted from grsecurity.

    Signed-off-by: Kees Cook
    Reviewed-by: Takashi Sakamoto
    Signed-off-by: Takashi Iwai

    Kees Cook
     
  • When CONFIG_PM_SLEEP is disabled, SIMPLE_DEV_PM_OPS does not use
    snd_cs5535audio_resume and snd_cs5535audio_suspend functions:

    sound/pci/cs5535audio/cs5535audio_pm.c:77:12: warning: ‘snd_cs5535audio_resume’ defined but not used [-Wunused-function]
    static int snd_cs5535audio_resume(struct device *dev)
    ^~~~~~~~~~~~~~~~~~~~~~
    sound/pci/cs5535audio/cs5535audio_pm.c:58:12: warning: ‘snd_cs5535audio_suspend’ defined but not used [-Wunused-function]
    static int snd_cs5535audio_suspend(struct device *dev)
    ^~~~~~~~~~~~~~~~~~~~~~~

    Adding __maybe_unused to the declaration of these functions removes the
    warnings.

    Signed-off-by: Jérémy Lefaure
    Signed-off-by: Takashi Iwai

    Jérémy Lefaure
     

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

9 commits