* [patch 4/5] macintosh: media bay: semaphore to mutex
@ 2008-06-09 23:26 akpm
2008-06-09 23:39 ` Benjamin Herrenschmidt
0 siblings, 1 reply; 2+ messages in thread
From: akpm @ 2008-06-09 23:26 UTC (permalink / raw)
To: paulus; +Cc: linuxppc-dev, akpm, dwalker
From: Daniel Walker <dwalker@mvista.com>
Signed-off-by: Daniel Walker <dwalker@mvista.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
drivers/macintosh/mediabay.c | 27 ++++++++++++++-------------
1 file changed, 14 insertions(+), 13 deletions(-)
diff -puN drivers/macintosh/mediabay.c~macintosh-media-bay-semaphore-to-mutex drivers/macintosh/mediabay.c
--- a/drivers/macintosh/mediabay.c~macintosh-media-bay-semaphore-to-mutex
+++ a/drivers/macintosh/mediabay.c
@@ -21,6 +21,7 @@
#include <linux/init.h>
#include <linux/ide.h>
#include <linux/kthread.h>
+#include <linux/mutex.h>
#include <asm/prom.h>
#include <asm/pgtable.h>
#include <asm/io.h>
@@ -77,7 +78,7 @@ struct media_bay_info {
int index;
int cached_gpio;
int sleeping;
- struct semaphore lock;
+ struct mutex lock;
#ifdef CONFIG_BLK_DEV_IDE_PMAC
ide_hwif_t *cd_port;
void __iomem *cd_base;
@@ -459,27 +460,27 @@ int media_bay_set_ide_infos(struct devic
if (bay->mdev && which_bay == bay->mdev->ofdev.node) {
int timeout = 5000, index = hwif->index;
- down(&bay->lock);
+ mutex_lock(&bay->lock);
bay->cd_port = hwif;
bay->cd_base = (void __iomem *) base;
bay->cd_irq = irq;
if ((MB_CD != bay->content_id) || bay->state != mb_up) {
- up(&bay->lock);
+ mutex_unlock(&bay->lock);
return 0;
}
printk(KERN_DEBUG "Registered ide%d for media bay %d\n", index, i);
do {
if (MB_IDE_READY(i)) {
bay->cd_index = index;
- up(&bay->lock);
+ mutex_unlock(&bay->lock);
return 0;
}
mdelay(1);
} while(--timeout);
printk(KERN_DEBUG "Timeount waiting IDE in bay %d\n", i);
- up(&bay->lock);
+ mutex_unlock(&bay->lock);
return -ENODEV;
}
}
@@ -616,10 +617,10 @@ static int media_bay_task(void *x)
while (!kthread_should_stop()) {
for (i = 0; i < media_bay_count; ++i) {
- down(&media_bays[i].lock);
+ mutex_lock(&media_bays[i].lock);
if (!media_bays[i].sleeping)
media_bay_step(i);
- up(&media_bays[i].lock);
+ mutex_unlock(&media_bays[i].lock);
}
msleep_interruptible(MB_POLL_DELAY);
@@ -659,7 +660,7 @@ static int __devinit media_bay_attach(st
bay->index = i;
bay->ops = match->data;
bay->sleeping = 0;
- init_MUTEX(&bay->lock);
+ mutex_init(&bay->lock);
/* Init HW probing */
if (bay->ops->init)
@@ -697,10 +698,10 @@ static int media_bay_suspend(struct maci
if (state.event != mdev->ofdev.dev.power.power_state.event
&& (state.event & PM_EVENT_SLEEP)) {
- down(&bay->lock);
+ mutex_lock(&bay->lock);
bay->sleeping = 1;
set_mb_power(bay, 0);
- up(&bay->lock);
+ mutex_unlock(&bay->lock);
msleep(MB_POLL_DELAY);
mdev->ofdev.dev.power.power_state = state;
}
@@ -719,12 +720,12 @@ static int media_bay_resume(struct macio
they seem to help the 3400 get it right.
*/
/* Force MB power to 0 */
- down(&bay->lock);
+ mutex_lock(&bay->lock);
set_mb_power(bay, 0);
msleep(MB_POWER_DELAY);
if (bay->ops->content(bay) != bay->content_id) {
printk("mediabay%d: content changed during sleep...\n", bay->index);
- up(&bay->lock);
+ mutex_unlock(&bay->lock);
return 0;
}
set_mb_power(bay, 1);
@@ -740,7 +741,7 @@ static int media_bay_resume(struct macio
} while((bay->state != mb_empty) &&
(bay->state != mb_up));
bay->sleeping = 0;
- up(&bay->lock);
+ mutex_unlock(&bay->lock);
}
return 0;
}
_
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [patch 4/5] macintosh: media bay: semaphore to mutex
2008-06-09 23:26 [patch 4/5] macintosh: media bay: semaphore to mutex akpm
@ 2008-06-09 23:39 ` Benjamin Herrenschmidt
0 siblings, 0 replies; 2+ messages in thread
From: Benjamin Herrenschmidt @ 2008-06-09 23:39 UTC (permalink / raw)
To: akpm; +Cc: linuxppc-dev, paulus, dwalker
On Mon, 2008-06-09 at 16:26 -0700, akpm@linux-foundation.org wrote:
> From: Daniel Walker <dwalker@mvista.com>
>
> Signed-off-by: Daniel Walker <dwalker@mvista.com>
> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
> ---
>
> drivers/macintosh/mediabay.c | 27 ++++++++++++++-------------
> 1 file changed, 14 insertions(+), 13 deletions(-)
>
> diff -puN drivers/macintosh/mediabay.c~macintosh-media-bay-semaphore-to-mutex drivers/macintosh/mediabay.c
> --- a/drivers/macintosh/mediabay.c~macintosh-media-bay-semaphore-to-mutex
> +++ a/drivers/macintosh/mediabay.c
> @@ -21,6 +21,7 @@
> #include <linux/init.h>
> #include <linux/ide.h>
> #include <linux/kthread.h>
> +#include <linux/mutex.h>
> #include <asm/prom.h>
> #include <asm/pgtable.h>
> #include <asm/io.h>
> @@ -77,7 +78,7 @@ struct media_bay_info {
> int index;
> int cached_gpio;
> int sleeping;
> - struct semaphore lock;
> + struct mutex lock;
> #ifdef CONFIG_BLK_DEV_IDE_PMAC
> ide_hwif_t *cd_port;
> void __iomem *cd_base;
> @@ -459,27 +460,27 @@ int media_bay_set_ide_infos(struct devic
> if (bay->mdev && which_bay == bay->mdev->ofdev.node) {
> int timeout = 5000, index = hwif->index;
>
> - down(&bay->lock);
> + mutex_lock(&bay->lock);
>
> bay->cd_port = hwif;
> bay->cd_base = (void __iomem *) base;
> bay->cd_irq = irq;
>
> if ((MB_CD != bay->content_id) || bay->state != mb_up) {
> - up(&bay->lock);
> + mutex_unlock(&bay->lock);
> return 0;
> }
> printk(KERN_DEBUG "Registered ide%d for media bay %d\n", index, i);
> do {
> if (MB_IDE_READY(i)) {
> bay->cd_index = index;
> - up(&bay->lock);
> + mutex_unlock(&bay->lock);
> return 0;
> }
> mdelay(1);
> } while(--timeout);
> printk(KERN_DEBUG "Timeount waiting IDE in bay %d\n", i);
> - up(&bay->lock);
> + mutex_unlock(&bay->lock);
> return -ENODEV;
> }
> }
> @@ -616,10 +617,10 @@ static int media_bay_task(void *x)
>
> while (!kthread_should_stop()) {
> for (i = 0; i < media_bay_count; ++i) {
> - down(&media_bays[i].lock);
> + mutex_lock(&media_bays[i].lock);
> if (!media_bays[i].sleeping)
> media_bay_step(i);
> - up(&media_bays[i].lock);
> + mutex_unlock(&media_bays[i].lock);
> }
>
> msleep_interruptible(MB_POLL_DELAY);
> @@ -659,7 +660,7 @@ static int __devinit media_bay_attach(st
> bay->index = i;
> bay->ops = match->data;
> bay->sleeping = 0;
> - init_MUTEX(&bay->lock);
> + mutex_init(&bay->lock);
>
> /* Init HW probing */
> if (bay->ops->init)
> @@ -697,10 +698,10 @@ static int media_bay_suspend(struct maci
>
> if (state.event != mdev->ofdev.dev.power.power_state.event
> && (state.event & PM_EVENT_SLEEP)) {
> - down(&bay->lock);
> + mutex_lock(&bay->lock);
> bay->sleeping = 1;
> set_mb_power(bay, 0);
> - up(&bay->lock);
> + mutex_unlock(&bay->lock);
> msleep(MB_POLL_DELAY);
> mdev->ofdev.dev.power.power_state = state;
> }
> @@ -719,12 +720,12 @@ static int media_bay_resume(struct macio
> they seem to help the 3400 get it right.
> */
> /* Force MB power to 0 */
> - down(&bay->lock);
> + mutex_lock(&bay->lock);
> set_mb_power(bay, 0);
> msleep(MB_POWER_DELAY);
> if (bay->ops->content(bay) != bay->content_id) {
> printk("mediabay%d: content changed during sleep...\n", bay->index);
> - up(&bay->lock);
> + mutex_unlock(&bay->lock);
> return 0;
> }
> set_mb_power(bay, 1);
> @@ -740,7 +741,7 @@ static int media_bay_resume(struct macio
> } while((bay->state != mb_empty) &&
> (bay->state != mb_up));
> bay->sleeping = 0;
> - up(&bay->lock);
> + mutex_unlock(&bay->lock);
> }
> return 0;
> }
> _
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev@ozlabs.org
> https://ozlabs.org/mailman/listinfo/linuxppc-dev
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2008-06-09 23:56 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-06-09 23:26 [patch 4/5] macintosh: media bay: semaphore to mutex akpm
2008-06-09 23:39 ` Benjamin Herrenschmidt
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).