forked from mirrors/linux
		
	Bluetooth: hci_bcm: Streamline runtime PM code
This driver seeks to force the Bluetooth device on for the duration of
5 seconds when the Bluetooth device has woken the host and after a
complete packet has been received.  It does that by calling:
    pm_runtime_get();
    pm_runtime_mark_last_busy();
    pm_runtime_put_autosuspend();
The same can be achieved more succinctly with:
    pm_request_resume();
That's because after runtime resuming the device, rpm_resume() invokes
pm_runtime_mark_last_busy() followed by rpm_idle(), which will cause
the device to be suspended after expiration of the autosuspend_delay.
No functional change intended.
Cc: Frédéric Danis <frederic.danis.oss@gmail.com>
Signed-off-by: Lukas Wunner <lukas@wunner.de>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
			
			
This commit is contained in:
		
							parent
							
								
									27378f4c1b
								
							
						
					
					
						commit
						43fff76834
					
				
					 1 changed files with 3 additions and 8 deletions
				
			
		| 
						 | 
				
			
			@ -191,9 +191,7 @@ static irqreturn_t bcm_host_wake(int irq, void *data)
 | 
			
		|||
 | 
			
		||||
	bt_dev_dbg(bdev, "Host wake IRQ");
 | 
			
		||||
 | 
			
		||||
	pm_runtime_get(bdev->dev);
 | 
			
		||||
	pm_runtime_mark_last_busy(bdev->dev);
 | 
			
		||||
	pm_runtime_put_autosuspend(bdev->dev);
 | 
			
		||||
	pm_request_resume(bdev->dev);
 | 
			
		||||
 | 
			
		||||
	return IRQ_HANDLED;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -512,11 +510,8 @@ static int bcm_recv(struct hci_uart *hu, const void *data, int count)
 | 
			
		|||
	} else if (!bcm->rx_skb) {
 | 
			
		||||
		/* Delay auto-suspend when receiving completed packet */
 | 
			
		||||
		mutex_lock(&bcm_device_lock);
 | 
			
		||||
		if (bcm->dev && bcm_device_exists(bcm->dev)) {
 | 
			
		||||
			pm_runtime_get(bcm->dev->dev);
 | 
			
		||||
			pm_runtime_mark_last_busy(bcm->dev->dev);
 | 
			
		||||
			pm_runtime_put_autosuspend(bcm->dev->dev);
 | 
			
		||||
		}
 | 
			
		||||
		if (bcm->dev && bcm_device_exists(bcm->dev))
 | 
			
		||||
			pm_request_resume(bcm->dev->dev);
 | 
			
		||||
		mutex_unlock(&bcm_device_lock);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue