1. 08 4月, 2016 1 次提交
    • D
      gpio / ACPI: ignore GpioInt() GPIOs when requesting GPIO_OUT_* · 25487533
      Dmitry Torokhov 提交于
      When firmware does not use _DSD properties that allow properly name GPIO
      resources, the kernel falls back on parsing _CRS resources, and will
      return entries described as GpioInt() as general purpose GPIOs even
      though they are meant to be used simply as interrupt sources for the
      device:
      
      Device (ETSA)
      {
      	Name (_HID, "ELAN0001")
      	...
      
      	Method(_CRS, 0x0, NotSerialized)
      	{
      		Name(BUF0,ResourceTemplate ()
      		{
      			I2CSerialBus(
      				0x10,                     /* SlaveAddress */
      				ControllerInitiated,      /* SlaveMode */
      				400000,                   /* ConnectionSpeed */
      				AddressingMode7Bit,       /* AddressingMode */
      				"\\_SB.I2C1",             /* ResourceSource */
      			)
      			GpioInt (Edge, ActiveLow, ExclusiveAndWake, PullNone,,
      				 "\\_SB.GPSW") { BOARD_TOUCH_GPIO_INDEX }
      		} )
      		Return (BUF0)
      	}
      ...
      }
      
      This gives troubles with drivers such as Elan Touchscreen driver
      (elants_i2c) that uses devm_gpiod_get to look up "reset" GPIO line and
      decide whether the driver is responsible for powering up and resetting
      the device, or firmware is. In the above case the lookup succeeds, we
      map GPIO as output and later fail to request client->irq interrupt that
      is mapped to the same GPIO.
      
      Let's ignore resources described as GpioInt() while parsing _CRS when
      requesting output GPIOs (but allow them when requesting GPIOD_ASIS or
      GPIOD_IN as some drivers, such as i2c-hid, do request GPIO as input and
      then map it to interrupt with gpiod_to_irq).
      Acked-by: NMika Westerberg <mika.westerberg@linux.intel.com>
      Signed-off-by: NDmitry Torokhov <dtor@chromium.org>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      25487533
  2. 03 4月, 2016 9 次提交
  3. 02 4月, 2016 29 次提交
  4. 01 4月, 2016 1 次提交
    • L
      Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux · 6ddf37da
      Linus Torvalds 提交于
      Pull drm fixes from Dave Airlie:
       "Nothing too crazy in here: a bunch of AMD fixes/quirks, two msm fixes,
        some rockchip fixes, and a udl warning fix, along with one locking fix
        for displayport that seems to fix some dodgy monitors"
      
      * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux:
        drm/udl: Use unlocked gem unreferencing
        drm/dp: move hw_mutex up the call stack
        drm/amdgpu: Don't move pinned BOs
        drm/radeon: Don't move pinned BOs
        drm/radeon: add a dpm quirk for all R7 370 parts
        drm/radeon: add another R7 370 quirk
        drm/rockchip: dw_hdmi: Don't call platform_set_drvdata()
        drm/rockchip: vop: Fix vop crtc cleanup
        drm/rockchip: dw_hdmi: Call drm_encoder_cleanup() in error path
        drm/rockchip: vop: Disable planes when disabling CRTC
        drm/rockchip: vop: Don't reject empty modesets
        drm/rockchip: cancel pending vblanks on close
        drm/rockchip: vop: fix crtc size in plane check
        drm/radeon: add a dpm quirk for sapphire Dual-X R7 370 2G D5
        drm/amd: Beef up ACP Kconfig menu text
        drm/msm: fix typo in the !COMMON_CLK case
        drm/msm: fix bug after preclose removal
      6ddf37da