|
@@ -37,6 +37,7 @@
|
|
#include <linux/kernel.h>
|
|
#include <linux/kernel.h>
|
|
#include <linux/timer.h>
|
|
#include <linux/timer.h>
|
|
#include <linux/mm.h>
|
|
#include <linux/mm.h>
|
|
|
|
+#include <linux/mutex.h>
|
|
#include <linux/interrupt.h>
|
|
#include <linux/interrupt.h>
|
|
#include <linux/irq.h>
|
|
#include <linux/irq.h>
|
|
#include <linux/spinlock.h>
|
|
#include <linux/spinlock.h>
|
|
@@ -578,7 +579,7 @@ EXPORT_SYMBOL(soc_pcmcia_enable_irqs);
|
|
|
|
|
|
|
|
|
|
LIST_HEAD(soc_pcmcia_sockets);
|
|
LIST_HEAD(soc_pcmcia_sockets);
|
|
-DECLARE_MUTEX(soc_pcmcia_sockets_lock);
|
|
|
|
|
|
+static DEFINE_MUTEX(soc_pcmcia_sockets_lock);
|
|
|
|
|
|
static const char *skt_names[] = {
|
|
static const char *skt_names[] = {
|
|
"PCMCIA socket 0",
|
|
"PCMCIA socket 0",
|
|
@@ -601,11 +602,11 @@ soc_pcmcia_notifier(struct notifier_block *nb, unsigned long val, void *data)
|
|
struct cpufreq_freqs *freqs = data;
|
|
struct cpufreq_freqs *freqs = data;
|
|
int ret = 0;
|
|
int ret = 0;
|
|
|
|
|
|
- down(&soc_pcmcia_sockets_lock);
|
|
|
|
|
|
+ mutex_lock(&soc_pcmcia_sockets_lock);
|
|
list_for_each_entry(skt, &soc_pcmcia_sockets, node)
|
|
list_for_each_entry(skt, &soc_pcmcia_sockets, node)
|
|
if ( skt->ops->frequency_change )
|
|
if ( skt->ops->frequency_change )
|
|
ret += skt->ops->frequency_change(skt, val, freqs);
|
|
ret += skt->ops->frequency_change(skt, val, freqs);
|
|
- up(&soc_pcmcia_sockets_lock);
|
|
|
|
|
|
+ mutex_unlock(&soc_pcmcia_sockets_lock);
|
|
|
|
|
|
return ret;
|
|
return ret;
|
|
}
|
|
}
|
|
@@ -642,7 +643,7 @@ int soc_common_drv_pcmcia_probe(struct device *dev, struct pcmcia_low_level *ops
|
|
struct soc_pcmcia_socket *skt;
|
|
struct soc_pcmcia_socket *skt;
|
|
int ret, i;
|
|
int ret, i;
|
|
|
|
|
|
- down(&soc_pcmcia_sockets_lock);
|
|
|
|
|
|
+ mutex_lock(&soc_pcmcia_sockets_lock);
|
|
|
|
|
|
sinfo = kzalloc(SKT_DEV_INFO_SIZE(nr), GFP_KERNEL);
|
|
sinfo = kzalloc(SKT_DEV_INFO_SIZE(nr), GFP_KERNEL);
|
|
if (!sinfo) {
|
|
if (!sinfo) {
|
|
@@ -782,7 +783,7 @@ int soc_common_drv_pcmcia_probe(struct device *dev, struct pcmcia_low_level *ops
|
|
kfree(sinfo);
|
|
kfree(sinfo);
|
|
|
|
|
|
out:
|
|
out:
|
|
- up(&soc_pcmcia_sockets_lock);
|
|
|
|
|
|
+ mutex_unlock(&soc_pcmcia_sockets_lock);
|
|
return ret;
|
|
return ret;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -793,7 +794,7 @@ int soc_common_drv_pcmcia_remove(struct device *dev)
|
|
|
|
|
|
dev_set_drvdata(dev, NULL);
|
|
dev_set_drvdata(dev, NULL);
|
|
|
|
|
|
- down(&soc_pcmcia_sockets_lock);
|
|
|
|
|
|
+ mutex_lock(&soc_pcmcia_sockets_lock);
|
|
for (i = 0; i < sinfo->nskt; i++) {
|
|
for (i = 0; i < sinfo->nskt; i++) {
|
|
struct soc_pcmcia_socket *skt = &sinfo->skt[i];
|
|
struct soc_pcmcia_socket *skt = &sinfo->skt[i];
|
|
|
|
|
|
@@ -818,7 +819,7 @@ int soc_common_drv_pcmcia_remove(struct device *dev)
|
|
if (list_empty(&soc_pcmcia_sockets))
|
|
if (list_empty(&soc_pcmcia_sockets))
|
|
soc_pcmcia_cpufreq_unregister();
|
|
soc_pcmcia_cpufreq_unregister();
|
|
|
|
|
|
- up(&soc_pcmcia_sockets_lock);
|
|
|
|
|
|
+ mutex_unlock(&soc_pcmcia_sockets_lock);
|
|
|
|
|
|
kfree(sinfo);
|
|
kfree(sinfo);
|
|
|
|
|