30 Dec, 2020

1 commit

  • commit b08221c40febcbda9309dd70c61cf1b0ebb0e351 upstream.

    Recently we met a touchscreen problem on some Thinkpad machines, the
    touchscreen driver (i2c-hid) is not loaded and the touchscreen can't
    work.

    An i2c ACPI device with the name WACF2200 is defined in the BIOS, with
    the current rule in matching_id(), this device will be regarded as
    a PNP device since there is WACFXXX in the acpi_pnp_device_ids[] and
    this PNP device is attached to the acpi device as the 1st
    physical_node, this will make the i2c bus match fail when i2c bus
    calls acpi_companion_match() to match the acpi_id_table in the i2c-hid
    driver.

    WACF2200 is an i2c device instead of a PNP device, after adding the
    string length comparing, the matching_id() will return false when
    matching WACF2200 and WACFXXX, and it is reasonable to compare the
    string length when matching two IDs.

    Suggested-by: Rafael J. Wysocki
    Signed-off-by: Hui Wang
    Cc: All applicable
    Signed-off-by: Rafael J. Wysocki
    Signed-off-by: Greg Kroah-Hartman

    Hui Wang
     

26 Sep, 2020

1 commit


19 Jun, 2019

1 commit

  • Based on 2 normalized pattern(s):

    this program is free software you can redistribute it and or modify
    it under the terms of the gnu general public license version 2 as
    published by the free software foundation

    this program is free software you can redistribute it and or modify
    it under the terms of the gnu general public license version 2 as
    published by the free software foundation #

    extracted by the scancode license scanner the SPDX license identifier

    GPL-2.0-only

    has been chosen to replace the boilerplate/reference in 4122 file(s).

    Signed-off-by: Thomas Gleixner
    Reviewed-by: Enrico Weigelt
    Reviewed-by: Kate Stewart
    Reviewed-by: Allison Randal
    Cc: linux-spdx@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190604081206.933168790@linutronix.de
    Signed-off-by: Greg Kroah-Hartman

    Thomas Gleixner
     

05 Jan, 2016

1 commit


15 Sep, 2015

1 commit


04 Sep, 2015

1 commit

  • The IPMI SI driver was using direct PNP, but that was not really
    ideal because the IPMI device is a platform device. There was
    some special handling in the acpi_pnp.c code for making this work,
    but that was breaking ACPI handling for the IPMI SSIF driver.

    So without this patch there were significant issues getting the
    SSIF driver to work with ACPI.

    So use a platform device for ACPI detection and remove the
    entry from acpi_pnp.c.

    Signed-off-by: Corey Minyard

    Corey Minyard
     

15 Aug, 2015

1 commit

  • This way this device can be used with irtty-sir -
    at least on Toshiba Satellite A20-S103 it is not configured by default
    and needs PNP activation before it starts to respond on I/O ports.

    This device has actually its own driver (ali-ircc),
    but this driver seems to be non-functional for a very long time
    (see http://permalink.gmane.org/gmane.linux.irda.general/484
    http://permalink.gmane.org/gmane.network.protocols.obex.openobex.user/943
    https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=535070 ).

    Signed-off-by: Maciej Szmigiero
    Cc: stable
    Signed-off-by: Greg Kroah-Hartman

    Maciej S. Szmigiero
     

04 May, 2015

1 commit

  • Commit eec15edbb0e1 (ACPI / PNP: use device ID list for PNPACPI device
    enumeration) changed the way how ACPI devices are enumerated and when
    they are added to the PNP bus.

    However, it broke the sound card support on (at least) a vintage
    IBM ThinkPad 600E: with said commit applied, two of the necessary
    "CSC01xx" devices are not added to the PNP bus and hence can not be
    found during the initialization of the "snd-cs4236" module. As a
    consequence, loading "snd-cs4236" causes null pointer exceptions.
    The attached patch fixes the problem end re-enables sound on the
    IBM ThinkPad 600E.

    Fixes: eec15edbb0e1 (ACPI / PNP: use device ID list for PNPACPI device enumeration)
    Signed-off-by: Witold Szczeponik
    Cc: 3.16+ # 3.16+
    Signed-off-by: Rafael J. Wysocki

    Witold Szczeponik
     

10 Oct, 2014

1 commit

  • Pull ACPI and power management updates from Rafael Wysocki:
    "Features-wise, to me the most important this time is a rework of
    wakeup interrupts handling in the core that makes them work
    consistently across all of the available sleep states, including
    suspend-to-idle. Many thanks to Thomas Gleixner for his help with
    this work.

    Second is an update of the generic PM domains code that has been in
    need of some care for quite a while. Unused code is being removed, DT
    support is being added and domains are now going to be attached to
    devices in bus type code in analogy with the ACPI PM domain. The
    majority of work here was done by Ulf Hansson who also has been the
    most active developer this time.

    Apart from this we have a traditional ACPICA update, this time to
    upstream version 20140828 and a few ACPI wakeup interrupts handling
    patches on top of the general rework mentioned above. There also are
    several cpufreq commits including renaming the cpufreq-cpu0 driver to
    cpufreq-dt, as this is what implements generic DT-based cpufreq
    support, and a new DT-based idle states infrastructure for cpuidle.

    In addition to that, the ACPI LPSS driver is updated, ACPI support for
    Apple machines is improved, a few bugs are fixed and a few cleanups
    are made all over.

    Finally, the Adaptive Voltage Scaling (AVS) subsystem now has a tree
    maintained by Kevin Hilman that will be merged through the PM tree.

    Numbers-wise, the generic PM domains update takes the lead this time
    with 32 non-merge commits, second is cpufreq (15 commits) and the 3rd
    place goes to the wakeup interrupts handling rework (13 commits).

    Specifics:

    - Rework the handling of wakeup IRQs by the IRQ core such that all of
    them will be switched over to "wakeup" mode in suspend_device_irqs()
    and in that mode the first interrupt will abort system suspend in
    progress or wake up the system if already in suspend-to-idle (or
    equivalent) without executing any interrupt handlers. Among other
    things that eliminates the wakeup-related motivation to use the
    IRQF_NO_SUSPEND interrupt flag with interrupts which don't really
    need it and should not use it (Thomas Gleixner and Rafael Wysocki)

    - Switch over ACPI to handling wakeup interrupts with the help of the
    new mechanism introduced by the above IRQ core rework (Rafael Wysocki)

    - Rework the core generic PM domains code to eliminate code that's
    not used, add DT support and add a generic mechanism by which
    devices can be added to PM domains automatically during enumeration
    (Ulf Hansson, Geert Uytterhoeven and Tomasz Figa).

    - Add debugfs-based mechanics for debugging generic PM domains
    (Maciej Matraszek).

    - ACPICA update to upstream version 20140828. Included are updates
    related to the SRAT and GTDT tables and the _PSx methods are in the
    METHOD_NAME list now (Bob Moore and Hanjun Guo).

    - Add _OSI("Darwin") support to the ACPI core (unfortunately, that
    can't really be done in a straightforward way) to prevent
    Thunderbolt from being turned off on Apple systems after boot (or
    after resume from system suspend) and rework the ACPI Smart Battery
    Subsystem (SBS) driver to work correctly with Apple platforms
    (Matthew Garrett and Andreas Noever).

    - ACPI LPSS (Low-Power Subsystem) driver update cleaning up the code,
    adding support for 133MHz I2C source clock on Intel Baytrail to it
    and making it avoid using UART RTS override with Auto Flow Control
    (Heikki Krogerus).

    - ACPI backlight updates removing the video_set_use_native_backlight
    quirk which is not necessary any more, making the code check the
    list of output devices returned by the _DOD method to avoid
    creating acpi_video interfaces that won't work and adding a quirk
    for Lenovo Ideapad Z570 (Hans de Goede, Aaron Lu and Stepan Bujnak)

    - New Win8 ACPI OSI quirks for some Dell laptops (Edward Lin)

    - Assorted ACPI code cleanups (Fabian Frederick, Rasmus Villemoes,
    Sudip Mukherjee, Yijing Wang, and Zhang Rui)

    - cpufreq core updates and cleanups (Viresh Kumar, Preeti U Murthy,
    Rasmus Villemoes)

    - cpufreq driver updates: cpufreq-cpu0/cpufreq-dt (driver name change
    among other things), ppc-corenet, powernv (Viresh Kumar, Preeti U
    Murthy, Shilpasri G Bhat, Lucas Stach)

    - cpuidle support for DT-based idle states infrastructure, new ARM64
    cpuidle driver, cpuidle core cleanups (Lorenzo Pieralisi, Rasmus
    Villemoes)

    - ARM big.LITTLE cpuidle driver updates: support for DT-based
    initialization and Exynos5800 compatible string (Lorenzo Pieralisi,
    Kevin Hilman)

    - Rework of the test_suspend kernel command line argument and a new
    trace event for console resume (Srinivas Pandruvada, Todd E Brandt)

    - Second attempt to optimize swsusp_free() (hibernation core) to make
    it avoid going through all PFNs which may be way too slow on some
    systems (Joerg Roedel)

    - devfreq updates (Paul Bolle, Punit Agrawal, Ãrjan Eide).

    - rockchip-io Adaptive Voltage Scaling (AVS) driver and AVS entry
    update in MAINTAINERS (Heiko Stübner, Kevin Hilman)

    - PM core fix related to clock management (Geert Uytterhoeven)

    - PM core's sysfs code cleanup (Johannes Berg)"

    * tag 'pm+acpi-3.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (105 commits)
    ACPI / fan: printk replacement
    PM / clk: Fix crash in clocks management code if !CONFIG_PM_RUNTIME
    PM / Domains: Rename cpu_data to cpuidle_data
    cpufreq: cpufreq-dt: fix potential double put of cpu OF node
    cpufreq: cpu0: rename driver and internals to 'cpufreq_dt'
    PM / hibernate: Iterate over set bits instead of PFNs in swsusp_free()
    cpufreq: ppc-corenet: remove duplicate update of cpu_data
    ACPI / sleep: Rework the handling of ACPI GPE wakeup from suspend-to-idle
    PM / sleep: Rename platform suspend/resume functions in suspend.c
    PM / sleep: Export dpm_suspend_late/noirq() and dpm_resume_early/noirq()
    ACPICA: Introduce acpi_enable_all_wakeup_gpes()
    ACPICA: Clear all non-wakeup GPEs in acpi_hw_enable_wakeup_gpe_block()
    ACPI / video: check _DOD list when creating backlight devices
    PM / Domains: Move dev_pm_domain_attach|detach() to pm_domain.h
    cpufreq: Replace strnicmp with strncasecmp
    cpufreq: powernv: Set the cpus to nominal frequency during reboot/kexec
    cpufreq: powernv: Set the pstate of the last hotplugged out cpu in policy->cpus to minimum
    cpufreq: Allow stop CPU callback to be used by all cpufreq drivers
    PM / devfreq: exynos: Enable building exynos PPMU as module
    PM / devfreq: Export helper functions for drivers
    ...

    Linus Torvalds
     

25 Sep, 2014

1 commit

  • ACPI device enumeration mechanism changed a lot since 3.16-rc1.
    ACPI device objects with _HID will be enumerated to platform bus by default.
    For the existing PNP drivers that probe the PNPACPI devices, the device ids
    are listed explicitly in drivers/acpi/acpi_pnp.c.
    But ACPI folks will continue their effort on shrinking this id list by
    converting the PNP drivers to platform drivers, for the devices that don't
    belong to PNP bus in nature.

    Signed-off-by: Jin Yao
    Signed-off-by: Zhang Rui
    Signed-off-by: Dmitry Torokhov

    Jin Yao
     

09 Sep, 2014

1 commit

  • Fujitsu backlight and hotkey devices have ACPI drivers.

    The PNP MODULE_DEVICE_TABLE in fujitsu-laptop driver is just used as an
    indicator for module autoloading, but this is wrong because what we
    need is ACPI module device table instead, because the driver is probing
    ACPI devices.

    Thus remove those IDs from ACPI PNP scan handler list as we don't
    have a PNP driver for them, and convert the fujitsu-laptop PNP
    MODULE_DEVICE_TABLE to ACPI MODULE_DEVICE_TABLE.

    Link: https://bugzilla.kernel.org/show_bug.cgi?id=81971
    Signed-off-by: Zhang Rui
    Tested-by: Dirk Griesbach
    Acked-by: Darren Hart
    Signed-off-by: Rafael J. Wysocki

    Zhang Rui
     

01 Aug, 2014

1 commit


09 Jul, 2014

1 commit

  • The soc_button_array PNP driver was introduced in 3.15.
    But in commit eec15edbb0e1 (ACPI / PNP: use device ID list for
    PNPACPI device enumeration), when reworking the PNPACPI device
    enumeration, we missed the soc_button_array device ID.

    This results in a regression in 3.16-rc1 that soc_button_array
    pnp device fails to be enumerated.

    Fix the problem by adding soc_button_array device ID into the
    acpi_pnp scan handler's ID list.

    Fixes: eec15edbb0e1 (ACPI / PNP: use device ID list for PNPACPI device enumeration)
    Signed-off-by: Zhang Rui
    Signed-off-by: Rafael J. Wysocki

    Zhang Rui
     

30 May, 2014

3 commits

  • The "serial" PNP driver supports some "unknown" PNP modems
    (PNPCXXX/PNPDXXX) by matching magic strings in the PNP device name
    or the PNP device card name.

    ACPI enumerated PNP devices neither are PNP cards, nor have those
    magic strings in device names, so this mechamism never actually works
    for ACPI enumerated PNPCXXX/PNPDXXX devices.

    Consequently, it is safe to remove those two IDs from the PNP ACPI scan
    handler's device ID list.

    Signed-off-by: Zhang Rui
    [rjw: Subject and changelog]
    Signed-off-by: Rafael J. Wysocki
    Reviewed-by: Mika Westerberg

    Zhang Rui
     
  • The PNP ACPI scan handler device ID list includes all the IDs from
    all of the struct pnp_device_id instances in the tree, but some of
    them do not follow the ACPI PNP ID rule (3 letters + 4 hex digits).

    For those IDs, the coressponding devices will never be enumerated
    via ACPI, so it is safe to remove them from the PNP ACPI ID list.

    Signed-off-by: Zhang Rui
    [rjw: Subject and changelog]
    Signed-off-by: Rafael J. Wysocki
    Reviewed-by: Mika Westerberg

    Zhang Rui
     
  • ACPI can be used to enumerate PNP devices, but the code does not
    handle this in the right way currently. Namely, if an ACPI device
    object
    1. Has a _CRS method,
    2. Has an identification of
    "three capital characters followed by four hex digits",
    3. Is not in the excluded IDs list,
    it will be enumerated to PNP bus (that is, a PNP device object will
    be create for it). This means that, actually, the PNP bus type is
    used as the default bus type for enumerating _HID devices in ACPI.

    However, more and more _HID devices need to be enumerated to the
    platform bus instead (that is, platform device objects need to be
    created for them). As a result, the device ID list in acpi_platform.c
    is used to enforce creating platform device objects rather than PNP
    device objects for matching devices. That list has been continuously
    growing recently, unfortunately, and it is pretty much guaranteed to
    grow even more in the future.

    To address that problem it is better to enumerate _HID devices
    as platform devices by default. To this end, change the way of
    enumerating PNP devices by adding a PNP ACPI scan handler that
    will use a device ID list to create PNP devices for the ACPI
    device objects whose device IDs are present in that list.

    The initial device ID list in the PNP ACPI scan handler contains
    all of the pnp_device_id strings from all the existing PNP drivers,
    so this change should be transparent to the PNP core and all of the
    PNP drivers. Still, in the future it should be possible to reduce
    its size by converting PNP drivers that need not be PNP for any
    technical reasons into platform drivers.

    Signed-off-by: Zhang Rui
    [rjw: Rewrote the changelog, modified the PNP ACPI scan handler code]
    Signed-off-by: Rafael J. Wysocki
    Reviewed-by: Mika Westerberg

    Zhang Rui