On Mon, 2008-06-09 at 16:26 -0700, [EMAIL PROTECTED] wrote:
> From: Daniel Walker <[EMAIL PROTECTED]>
> 
> Signed-off-by: Daniel Walker <[EMAIL PROTECTED]>
> Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>

Acked-by: Benjamin Herrenschmidt <[EMAIL PROTECTED]>

> ---
> 
>  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

_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev

Reply via email to