Commit 67c8bde0 authored by Loic Poulain's avatar Loic Poulain Committed by Marcel Holtmann

Bluetooth: hci_intel: Replace spinlock with mutex

Replace the device_intel list spinlock with a mutex.
devm_request_threaded_irq is not atomic and upcomming PM support should
be simpler.
Signed-off-by: default avatarLoic Poulain <loic.poulain@intel.com>
Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
parent f44e78a5
...@@ -67,7 +67,7 @@ struct intel_device { ...@@ -67,7 +67,7 @@ struct intel_device {
}; };
static LIST_HEAD(intel_device_list); static LIST_HEAD(intel_device_list);
static DEFINE_SPINLOCK(intel_device_list_lock); static DEFINE_MUTEX(intel_device_list_lock);
struct intel_data { struct intel_data {
struct sk_buff *rx_skb; struct sk_buff *rx_skb;
...@@ -143,7 +143,7 @@ static int intel_set_power(struct hci_uart *hu, bool powered) ...@@ -143,7 +143,7 @@ static int intel_set_power(struct hci_uart *hu, bool powered)
struct list_head *p; struct list_head *p;
int err = -ENODEV; int err = -ENODEV;
spin_lock(&intel_device_list_lock); mutex_lock(&intel_device_list_lock);
list_for_each(p, &intel_device_list) { list_for_each(p, &intel_device_list) {
struct intel_device *idev = list_entry(p, struct intel_device, struct intel_device *idev = list_entry(p, struct intel_device,
...@@ -187,7 +187,7 @@ static int intel_set_power(struct hci_uart *hu, bool powered) ...@@ -187,7 +187,7 @@ static int intel_set_power(struct hci_uart *hu, bool powered)
} }
} }
spin_unlock(&intel_device_list_lock); mutex_unlock(&intel_device_list_lock);
return err; return err;
} }
...@@ -696,7 +696,7 @@ static int intel_setup(struct hci_uart *hu) ...@@ -696,7 +696,7 @@ static int intel_setup(struct hci_uart *hu)
bt_dev_info(hdev, "Device booted in %llu usecs", duration); bt_dev_info(hdev, "Device booted in %llu usecs", duration);
/* Enable LPM if matching pdev with wakeup enabled */ /* Enable LPM if matching pdev with wakeup enabled */
spin_lock(&intel_device_list_lock); mutex_lock(&intel_device_list_lock);
list_for_each(p, &intel_device_list) { list_for_each(p, &intel_device_list) {
struct intel_device *dev = list_entry(p, struct intel_device, struct intel_device *dev = list_entry(p, struct intel_device,
list); list);
...@@ -706,7 +706,7 @@ static int intel_setup(struct hci_uart *hu) ...@@ -706,7 +706,7 @@ static int intel_setup(struct hci_uart *hu)
break; break;
} }
} }
spin_unlock(&intel_device_list_lock); mutex_unlock(&intel_device_list_lock);
if (!idev) if (!idev)
goto no_lpm; goto no_lpm;
...@@ -982,9 +982,9 @@ static int intel_probe(struct platform_device *pdev) ...@@ -982,9 +982,9 @@ static int intel_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, idev); platform_set_drvdata(pdev, idev);
/* Place this instance on the device list */ /* Place this instance on the device list */
spin_lock(&intel_device_list_lock); mutex_lock(&intel_device_list_lock);
list_add_tail(&idev->list, &intel_device_list); list_add_tail(&idev->list, &intel_device_list);
spin_unlock(&intel_device_list_lock); mutex_unlock(&intel_device_list_lock);
dev_info(&pdev->dev, "registered, gpio(%d)/irq(%d).\n", dev_info(&pdev->dev, "registered, gpio(%d)/irq(%d).\n",
desc_to_gpio(idev->reset), idev->irq); desc_to_gpio(idev->reset), idev->irq);
...@@ -998,9 +998,9 @@ static int intel_remove(struct platform_device *pdev) ...@@ -998,9 +998,9 @@ static int intel_remove(struct platform_device *pdev)
device_wakeup_disable(&pdev->dev); device_wakeup_disable(&pdev->dev);
spin_lock(&intel_device_list_lock); mutex_lock(&intel_device_list_lock);
list_del(&idev->list); list_del(&idev->list);
spin_unlock(&intel_device_list_lock); mutex_unlock(&intel_device_list_lock);
dev_info(&pdev->dev, "unregistered.\n"); dev_info(&pdev->dev, "unregistered.\n");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment