[SERIAL] turn serial semaphores into mutexes
Turn several drivers/serial/ semaphores-used-as-mutex into mutexes Signed-off-by: Arjan van de Ven <arjan@infradead.org> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
committed by
Russell King
parent
593195f9b2
commit
f392ecfa12
@@ -60,6 +60,7 @@
|
||||
#include <linux/pmu.h>
|
||||
#include <linux/bitops.h>
|
||||
#include <linux/sysrq.h>
|
||||
#include <linux/mutex.h>
|
||||
#include <asm/sections.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/irq.h>
|
||||
@@ -96,7 +97,7 @@ MODULE_LICENSE("GPL");
|
||||
*/
|
||||
static struct uart_pmac_port pmz_ports[MAX_ZS_PORTS];
|
||||
static int pmz_ports_count;
|
||||
static DECLARE_MUTEX(pmz_irq_sem);
|
||||
static DEFINE_MUTEX(pmz_irq_mutex);
|
||||
|
||||
static struct uart_driver pmz_uart_reg = {
|
||||
.owner = THIS_MODULE,
|
||||
@@ -922,7 +923,7 @@ static int pmz_startup(struct uart_port *port)
|
||||
if (uap->node == NULL)
|
||||
return -ENODEV;
|
||||
|
||||
down(&pmz_irq_sem);
|
||||
mutex_lock(&pmz_irq_mutex);
|
||||
|
||||
uap->flags |= PMACZILOG_FLAG_IS_OPEN;
|
||||
|
||||
@@ -940,11 +941,11 @@ static int pmz_startup(struct uart_port *port)
|
||||
dev_err(&uap->dev->ofdev.dev,
|
||||
"Unable to register zs interrupt handler.\n");
|
||||
pmz_set_scc_power(uap, 0);
|
||||
up(&pmz_irq_sem);
|
||||
mutex_unlock(&pmz_irq_mutex);
|
||||
return -ENXIO;
|
||||
}
|
||||
|
||||
up(&pmz_irq_sem);
|
||||
mutex_unlock(&pmz_irq_mutex);
|
||||
|
||||
/* Right now, we deal with delay by blocking here, I'll be
|
||||
* smarter later on
|
||||
@@ -981,7 +982,7 @@ static void pmz_shutdown(struct uart_port *port)
|
||||
if (uap->node == NULL)
|
||||
return;
|
||||
|
||||
down(&pmz_irq_sem);
|
||||
mutex_lock(&pmz_irq_mutex);
|
||||
|
||||
/* Release interrupt handler */
|
||||
free_irq(uap->port.irq, uap);
|
||||
@@ -1002,7 +1003,7 @@ static void pmz_shutdown(struct uart_port *port)
|
||||
|
||||
if (ZS_IS_CONS(uap) || ZS_IS_ASLEEP(uap)) {
|
||||
spin_unlock_irqrestore(&port->lock, flags);
|
||||
up(&pmz_irq_sem);
|
||||
mutex_unlock(&pmz_irq_mutex);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1019,7 +1020,7 @@ static void pmz_shutdown(struct uart_port *port)
|
||||
|
||||
spin_unlock_irqrestore(&port->lock, flags);
|
||||
|
||||
up(&pmz_irq_sem);
|
||||
mutex_unlock(&pmz_irq_mutex);
|
||||
|
||||
pmz_debug("pmz: shutdown() done.\n");
|
||||
}
|
||||
@@ -1591,7 +1592,7 @@ static int pmz_suspend(struct macio_dev *mdev, pm_message_t pm_state)
|
||||
|
||||
state = pmz_uart_reg.state + uap->port.line;
|
||||
|
||||
down(&pmz_irq_sem);
|
||||
mutex_lock(&pmz_irq_mutex);
|
||||
down(&state->sem);
|
||||
|
||||
spin_lock_irqsave(&uap->port.lock, flags);
|
||||
@@ -1624,7 +1625,7 @@ static int pmz_suspend(struct macio_dev *mdev, pm_message_t pm_state)
|
||||
pmz_set_scc_power(uap, 0);
|
||||
|
||||
up(&state->sem);
|
||||
up(&pmz_irq_sem);
|
||||
mutex_unlock(&pmz_irq_mutex);
|
||||
|
||||
pmz_debug("suspend, switching complete\n");
|
||||
|
||||
@@ -1651,7 +1652,7 @@ static int pmz_resume(struct macio_dev *mdev)
|
||||
|
||||
state = pmz_uart_reg.state + uap->port.line;
|
||||
|
||||
down(&pmz_irq_sem);
|
||||
mutex_lock(&pmz_irq_mutex);
|
||||
down(&state->sem);
|
||||
|
||||
spin_lock_irqsave(&uap->port.lock, flags);
|
||||
@@ -1685,7 +1686,7 @@ static int pmz_resume(struct macio_dev *mdev)
|
||||
|
||||
bail:
|
||||
up(&state->sem);
|
||||
up(&pmz_irq_sem);
|
||||
mutex_unlock(&pmz_irq_mutex);
|
||||
|
||||
/* Right now, we deal with delay by blocking here, I'll be
|
||||
* smarter later on
|
||||
|
Reference in New Issue
Block a user