1. 18 5月, 2018 12 次提交
  2. 30 4月, 2018 3 次提交
  3. 02 4月, 2018 3 次提交
  4. 01 4月, 2018 15 次提交
  5. 27 3月, 2018 1 次提交
    • A
      Bluetooth: btrsi: rework dependencies · 255dd5b7
      Arnd Bergmann 提交于
      The linkage between the bluetooth driver and the wireless
      driver is not defined properly, leading to build problems
      such as:
      
      warning: (BT_HCIRSI) selects RSI_COEX which has unmet direct dependencies (NETDEVICES && WLAN && WLAN_VENDOR_RSI && BT_HCIRSI && RSI_91X)
      drivers/net/wireless/rsi/rsi_91x_main.o: In function `rsi_read_pkt':
      (.text+0x205): undefined reference to `rsi_bt_ops'
      
      As the dependency is actually the reverse (RSI_91X uses
      the BT_RSI driver, not the other way round), this changes
      the dependency to match, and enables the bluetooth driver
      from the RSI_COEX symbol.
      
      Fixes: 38aa4da5 ("Bluetooth: btrsi: add new rsi bluetooth driver")
      Acked-by; Marcel Holtmann <marcel@holtmann.org>
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      255dd5b7
  6. 16 3月, 2018 3 次提交
    • H
      Bluetooth: hci_bcm: Set pulsed_host_wake flag in sleep parameters · e07c99b0
      Hans de Goede 提交于
      The IRQ output of the bcm bt-device is really a level IRQ signal, which
      signals a logical high as long as the device's buffer contains data. Since
      the draining in the buffer is done in the tty driver, we cannot (easily)
      wait in a threaded interrupt handler for the draining, after which the
      IRQ should go low again.
      
      So instead we treat the IRQ as an edge interrupt. This opens the window
      for a theoretical race where we wakeup, read some data and then autosuspend
      *before* the IRQ has gone (logical) low, followed by the device just at
      that moment receiving more data, causing the IRQ to stay high and we never
      see an edge.
      
      Since we call pm_runtime_mark_last_busy() on every received byte, there
      should be plenty time for the IRQ to go (logical) low before we ever
      suspend, so this should never happen, but after commit 43fff768
      ("Bluetooth: hci_bcm: Streamline runtime PM code"), which has been reverted
      since, this was actually happening causing the device to get stuck in
      runtime suspend.
      
      The bcm bt-device actually has a workaround for this, if we set the
      pulsed_host_wake flag in the sleep parameters, then the device monitors
      if the host is draining the buffer and if not then after a timeout the
      device will pulse the IRQ line, causing us to see an edge, fixing the
      stuck in suspend condition.
      
      This commit sets the pulsed_host_wake flag to fix the (mostly theoretical)
      race caused by us treating the IRQ as an edge IRQ.
      Signed-off-by: NHans de Goede <hdegoede@redhat.com>
      Reviewed-by: NLukas Wunner <lukas@wunner.de>
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      e07c99b0
    • H
      Revert "Bluetooth: hci_bcm: Streamline runtime PM code" · b09c6152
      Hans de Goede 提交于
      This reverts commit 43fff768 ("Bluetooth: hci_bcm: Streamline runtime
      PM code"). The commit msg for this commit states "No functional change
      intended.", but replacing:
      
       pm_runtime_get();
       pm_runtime_mark_last_busy();
       pm_runtime_put_autosuspend();
      
      with:
      
       pm_request_resume();
      
      Does result in a functional change, pm_request_resume() only calls
      pm_runtime_mark_last_busy() if the device was suspended before the call.
      
      This results in the following happening:
      
      1) Device is runtime suspended
      2) Device drives host_wake IRQ logically high as it starts receiving data
      3) bcm_host_wake() gets called, causes the device to runtime-resume,
         current time gets marked as last_busy time
      4) After 5 seconds the autosuspend timer expires and the dev autosuspends
         as no one has been calling pm_runtime_mark_last_busy(), the device was
         resumed during those 5 seconds, so all the pm_request_resume() calls
         while receiving data and/or bcm_host_wake() calls were nops
      5) If 4) happens while the device has (just received) data in its buffer to
         be read by the host the IRQ line is *already* / still logically high
         when we autosuspend and since we use an edge triggered IRQ, the IRQ
         will never trigger, causing the device to get stuck in suspend
      
      Therefor this commit has to be reverted, so that we avoid the device
      getting stuck in suspend.
      Signed-off-by: NHans de Goede <hdegoede@redhat.com>
      Acked-by: NLukas Wunner <lukas@wunner.de>
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      b09c6152
    • T
      Bluetooth: btusb: Fix quirk for Atheros 1525/QCA6174 · f44cb4b1
      Takashi Iwai 提交于
      The Atheros 1525/QCA6174 BT doesn't seem working properly on the
      recent kernels, as it tries to load a wrong firmware
      ar3k/AthrBT_0x00000200.dfu and it fails.
      
      This seems to have been a problem for some time, and the known
      workaround is to apply BTUSB_QCA_ROM quirk instead of BTUSB_ATH3012.
      
      The device in question is:
      
      T: Bus=01 Lev=01 Prnt=01 Port=09 Cnt=03 Dev#=  4 Spd=12   MxCh= 0
      D: Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
      P: Vendor=0cf3 ProdID=3004 Rev= 0.01
      C:* #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
      I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E: Ad=81(I) Atr=03(Int.) MxPS=  16 Ivl=1ms
      E: Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
      E: Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
      I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E: Ad=83(I) Atr=01(Isoc) MxPS=   0 Ivl=1ms
      E: Ad=03(O) Atr=01(Isoc) MxPS=   0 Ivl=1ms
      I: If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E: Ad=83(I) Atr=01(Isoc) MxPS=   9 Ivl=1ms
      E: Ad=03(O) Atr=01(Isoc) MxPS=   9 Ivl=1ms
      I: If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E: Ad=83(I) Atr=01(Isoc) MxPS=  17 Ivl=1ms
      E: Ad=03(O) Atr=01(Isoc) MxPS=  17 Ivl=1ms
      I: If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E: Ad=83(I) Atr=01(Isoc) MxPS=  25 Ivl=1ms
      E: Ad=03(O) Atr=01(Isoc) MxPS=  25 Ivl=1ms
      I: If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E: Ad=83(I) Atr=01(Isoc) MxPS=  33 Ivl=1ms
      E: Ad=03(O) Atr=01(Isoc) MxPS=  33 Ivl=1ms
      I: If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E: Ad=83(I) Atr=01(Isoc) MxPS=  49 Ivl=1ms
      E: Ad=03(O) Atr=01(Isoc) MxPS=  49 Ivl=1ms
      
      Bugzilla: http://bugzilla.opensuse.org/show_bug.cgi?id=1082504Reported-by: NIvan Levshin <ivan.levshin@microfocus.com>
      Tested-by: NIvan Levshin <ivan.levshin@microfocus.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      f44cb4b1
  7. 14 3月, 2018 1 次提交
  8. 02 3月, 2018 2 次提交