05 Jul, 2019

1 commit

  • Along with the recent fix for the races of snd_hdac_refresh_widgets()
    it turned out that the instantiation of widgets sysfs at
    snd_hdac_sysfs_reinit() could cause a race. The race itself was
    already covered later by extending the mutex protection range, the
    commit 98482377dc72 ("ALSA: hda: Fix widget_mutex incomplete
    protection"), but this also indicated that the call of *_reinit() is
    basically superfluous, as the widgets shall be created sooner or later
    from snd_hdac_device_register().

    This patch removes the redundant call of snd_hdac_sysfs_reinit() at
    first. By this removal, the sysfs argument itself in
    snd_hdac_refresh_widgets() becomes superfluous, too, because the only
    case sysfs=false is always with codec->widgets=NULL. So, we drop this
    redundant argument as well.

    Signed-off-by: Takashi Iwai

    Takashi Iwai
     

13 May, 2019

1 commit


13 Nov, 2017

1 commit

  • …e/sound into for-linus

    ASoC: Updates for v4.15

    The biggest thing this release has been the conversion of the AC98 bus
    to the driver model, that's been a long time coming so thanks to Robert
    Jarzmik for his dedication there. Due to there being some AC97 MFD
    there's a few fairly large changes in input and the MFD layer, mainly to
    the wm97xx driver.

    There's also some drivers/drm changes to support the new AMD Stoney
    platform, these are shared with the DRM subsystem and should be being
    merged via both.

    Within the subsystem the overwhelming bulk of the changes is in the
    Intel drivers which continue to need lots of cleanups and fixes, this
    release they've also gained support for their open source firmware.
    There's also some large changs in the core as Morimoto-san continues to
    mirror operations into the component level in preparation for conversion
    of drivers to that.

    - The AC97 bus has finally caught up with the driver model thanks to
    some dedicated and persistent work from Robert Jarzmik.
    - Continued work from Morimoto-san on moving us towards being able to
    use components for everything.
    - Lots of cleanups for the Intel platform code, including support for
    their open source audio firmware.
    - Support for scaling MCLK with sample rate in simple-card.
    - Support for AMD Stoney platform.

    Takashi Iwai
     

02 Nov, 2017

1 commit

  • Many source files in the tree are missing licensing information, which
    makes it harder for compliance tools to determine the correct license.

    By default all files without license information are under the default
    license of the kernel, which is GPL version 2.

    Update the files which contain no license information with the 'GPL-2.0'
    SPDX license identifier. The SPDX identifier is a legally binding
    shorthand, which can be used instead of the full boiler plate text.

    This patch is based on work done by Thomas Gleixner and Kate Stewart and
    Philippe Ombredanne.

    How this work was done:

    Patches were generated and checked against linux-4.14-rc6 for a subset of
    the use cases:
    - file had no licensing information it it.
    - file was a */uapi/* one with no licensing information in it,
    - file was a */uapi/* one with existing licensing information,

    Further patches will be generated in subsequent months to fix up cases
    where non-standard license headers were used, and references to license
    had to be inferred by heuristics based on keywords.

    The analysis to determine which SPDX License Identifier to be applied to
    a file was done in a spreadsheet of side by side results from of the
    output of two independent scanners (ScanCode & Windriver) producing SPDX
    tag:value files created by Philippe Ombredanne. Philippe prepared the
    base worksheet, and did an initial spot review of a few 1000 files.

    The 4.13 kernel was the starting point of the analysis with 60,537 files
    assessed. Kate Stewart did a file by file comparison of the scanner
    results in the spreadsheet to determine which SPDX license identifier(s)
    to be applied to the file. She confirmed any determination that was not
    immediately clear with lawyers working with the Linux Foundation.

    Criteria used to select files for SPDX license identifier tagging was:
    - Files considered eligible had to be source code files.
    - Make and config files were included as candidates if they contained >5
    lines of source
    - File already had some variant of a license header in it (even if
    Reviewed-by: Philippe Ombredanne
    Reviewed-by: Thomas Gleixner
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

19 Oct, 2017

1 commit

  • The refresh of HD-audio widget sysfs kobjects via
    snd_hdac_refresh_widget_sysfs() is slightly racy.
    The driver recreates the whole tree from scratch after deleting the
    whole. When CONFIG_DEBUG_KOBJECT_RELEASE option is used, kobject
    release doesn't happen immediately but delayed, while the re-creation
    of the same named kobject happens soon after invoking kobject_put().
    This may end up with the conflicts of duplicated kobjects, as found in
    the bug report below.

    In this patch, we take another approach to refresh the tree: instead
    of recreating the whole tree, just add the new nodes and delete the
    non-existing nodes. Since the refresh happens only once at
    initialization, no longer race would happen.

    Along with the code change, merge snd_hdac_refresh_widget_sysfs() with
    the existing snd_hdac_refresh_widgets() with an additional bool flag
    for simplifying the code.

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

    Takashi Iwai
     

20 Oct, 2015

1 commit


26 Aug, 2015

1 commit

  • When snd_hdac_refresh_widget_sysfs() is called before the first
    hda_widget_sysfs_init(), the next call overrides and eventually
    fails. This results in unexpected Oops, something like:
    BUG: unable to handle kernel NULL pointer dereference at 00000000000000c8
    IP: [] hdmi_chmap_ctl_info+0x23/0x40

    The fix is to add a check of the existing sysfs tree. Also, for more
    safety, this patch adds the checks of device_is_registered() in
    snd-hdac_refresh_wdiget_sysfs(), too.

    Fixes: fa4f18b4f402 ('ALSA: hda - Refresh widgets sysfs at probing Haswell+ HDMI codecs')
    Bugizlla: https://bugzilla.kernel.org/show_bug.cgi?id=103431
    Reported-by: Andreas Reis
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     

09 Jul, 2015

1 commit


13 Apr, 2015

1 commit


08 Apr, 2015

1 commit


23 Mar, 2015

1 commit

  • This patch changes the sysfs files assigned to the codec device on the
    bus which were formerly identical with hwdep sysfs files. Now it
    shows only a few core parameter, vendor_id, subsystem_id, revision_id,
    afg, mfg, vendor_name and chip_name.

    In addition, now a widget tree is added to the bus device sysfs
    directory for showing the widget topology and attributes. It's just a
    flat tree consisting of subdirectories named as the widget NID
    including various attributes like widget capability bits. The AFG
    (usually NID 0x01) is always found there, and it contains always
    amp_in_caps, amp_out_caps and power_caps files. Each of these
    attributes show a single value. The rest are the widget nodes
    belonging to that AFG. Note that the child node might not start from
    0x02 but from another value like 0x0a.

    Each child node may contain caps, pin_caps, amp_in_caps, amp_out_caps,
    power_caps and connections files. The caps (representing the widget
    capability bits) always contain a value. The rest may contain
    value(s) if the attribute exists on the node. Only connections file
    show multiple values while other attributes have zero or one single
    value.

    An example of ls -R output is like below:
    % ls -R /sys/bus/hdaudio/devices/hdaudioC0D0/
    /sys/bus/hdaudio/devices/hdaudioC0D0/widgets/:
    01/ 04/ 07/ 0a/ 0d/ 10/ 13/ 16/ 19/ 1c/ 1f/ 22/
    02/ 05/ 08/ 0b/ 0e/ 11/ 14/ 17/ 1a/ 1d/ 20/ 23/
    03/ 06/ 09/ 0c/ 0f/ 12/ 15/ 18/ 1b/ 1e/ 21/

    /sys/bus/hdaudio/devices/hdaudioC0D0/widgets/01:
    amp_in_caps amp_out_caps power_caps

    /sys/bus/hdaudio/devices/hdaudioC0D0/widgets/02:
    amp_in_caps amp_out_caps caps connections pin_caps pin_cfg
    power_caps

    /sys/bus/hdaudio/devices/hdaudioC0D0/widgets/03:
    .....

    Signed-off-by: Takashi Iwai

    Takashi Iwai