Loading drivers/block/swim3.c +10 −10 Original line number Original line Diff line number Diff line Loading @@ -28,6 +28,7 @@ #include <linux/devfs_fs_kernel.h> #include <linux/devfs_fs_kernel.h> #include <linux/interrupt.h> #include <linux/interrupt.h> #include <linux/module.h> #include <linux/module.h> #include <linux/spinlock.h> #include <asm/io.h> #include <asm/io.h> #include <asm/dbdma.h> #include <asm/dbdma.h> #include <asm/prom.h> #include <asm/prom.h> Loading Loading @@ -176,6 +177,7 @@ struct swim3 { struct floppy_state { struct floppy_state { enum swim_state state; enum swim_state state; spinlock_t lock; struct swim3 __iomem *swim3; /* hardware registers */ struct swim3 __iomem *swim3; /* hardware registers */ struct dbdma_regs __iomem *dma; /* DMA controller registers */ struct dbdma_regs __iomem *dma; /* DMA controller registers */ int swim3_intr; /* interrupt number for SWIM3 */ int swim3_intr; /* interrupt number for SWIM3 */ Loading Loading @@ -304,7 +306,6 @@ static void do_fd_request(request_queue_t * q) #endif /* CONFIG_PMAC_MEDIABAY */ #endif /* CONFIG_PMAC_MEDIABAY */ start_request(&floppy_states[i]); start_request(&floppy_states[i]); } } sti(); } } static void start_request(struct floppy_state *fs) static void start_request(struct floppy_state *fs) Loading Loading @@ -370,7 +371,7 @@ static void set_timeout(struct floppy_state *fs, int nticks, { { unsigned long flags; unsigned long flags; save_flags(flags); cli(); spin_lock_irqsave(&fs->lock, flags); if (fs->timeout_pending) if (fs->timeout_pending) del_timer(&fs->timeout); del_timer(&fs->timeout); fs->timeout.expires = jiffies + nticks; fs->timeout.expires = jiffies + nticks; Loading @@ -378,7 +379,7 @@ static void set_timeout(struct floppy_state *fs, int nticks, fs->timeout.data = (unsigned long) fs; fs->timeout.data = (unsigned long) fs; add_timer(&fs->timeout); add_timer(&fs->timeout); fs->timeout_pending = 1; fs->timeout_pending = 1; restore_flags(flags); spin_unlock_irqrestore(&fs->lock, flags); } } static inline void scan_track(struct floppy_state *fs) static inline void scan_track(struct floppy_state *fs) Loading Loading @@ -790,14 +791,13 @@ static int grab_drive(struct floppy_state *fs, enum swim_state state, { { unsigned long flags; unsigned long flags; save_flags(flags); spin_lock_irqsave(&fs->lock, flags); cli(); if (fs->state != idle) { if (fs->state != idle) { ++fs->wanted; ++fs->wanted; while (fs->state != available) { while (fs->state != available) { if (interruptible && signal_pending(current)) { if (interruptible && signal_pending(current)) { --fs->wanted; --fs->wanted; restore_flags(flags); spin_unlock_irqrestore(&fs->lock, flags); return -EINTR; return -EINTR; } } interruptible_sleep_on(&fs->wait); interruptible_sleep_on(&fs->wait); Loading @@ -805,7 +805,7 @@ static int grab_drive(struct floppy_state *fs, enum swim_state state, --fs->wanted; --fs->wanted; } } fs->state = state; fs->state = state; restore_flags(flags); spin_unlock_irqrestore(&fs->lock, flags); return 0; return 0; } } Loading @@ -813,11 +813,10 @@ static void release_drive(struct floppy_state *fs) { { unsigned long flags; unsigned long flags; save_flags(flags); spin_lock_irqsave(&fs->lock, flags); cli(); fs->state = idle; fs->state = idle; start_request(fs); start_request(fs); restore_flags(flags); spin_unlock_irqrestore(&fs->lock, flags); } } static int fd_eject(struct floppy_state *fs) static int fd_eject(struct floppy_state *fs) Loading Loading @@ -1109,6 +1108,7 @@ static int swim3_add_device(struct device_node *swim) pmac_call_feature(PMAC_FTR_SWIM3_ENABLE, swim, 0, 1); pmac_call_feature(PMAC_FTR_SWIM3_ENABLE, swim, 0, 1); memset(fs, 0, sizeof(*fs)); memset(fs, 0, sizeof(*fs)); spin_lock_init(&fs->lock); fs->state = idle; fs->state = idle; fs->swim3 = (struct swim3 __iomem *) fs->swim3 = (struct swim3 __iomem *) ioremap(swim->addrs[0].address, 0x200); ioremap(swim->addrs[0].address, 0x200); Loading Loading
drivers/block/swim3.c +10 −10 Original line number Original line Diff line number Diff line Loading @@ -28,6 +28,7 @@ #include <linux/devfs_fs_kernel.h> #include <linux/devfs_fs_kernel.h> #include <linux/interrupt.h> #include <linux/interrupt.h> #include <linux/module.h> #include <linux/module.h> #include <linux/spinlock.h> #include <asm/io.h> #include <asm/io.h> #include <asm/dbdma.h> #include <asm/dbdma.h> #include <asm/prom.h> #include <asm/prom.h> Loading Loading @@ -176,6 +177,7 @@ struct swim3 { struct floppy_state { struct floppy_state { enum swim_state state; enum swim_state state; spinlock_t lock; struct swim3 __iomem *swim3; /* hardware registers */ struct swim3 __iomem *swim3; /* hardware registers */ struct dbdma_regs __iomem *dma; /* DMA controller registers */ struct dbdma_regs __iomem *dma; /* DMA controller registers */ int swim3_intr; /* interrupt number for SWIM3 */ int swim3_intr; /* interrupt number for SWIM3 */ Loading Loading @@ -304,7 +306,6 @@ static void do_fd_request(request_queue_t * q) #endif /* CONFIG_PMAC_MEDIABAY */ #endif /* CONFIG_PMAC_MEDIABAY */ start_request(&floppy_states[i]); start_request(&floppy_states[i]); } } sti(); } } static void start_request(struct floppy_state *fs) static void start_request(struct floppy_state *fs) Loading Loading @@ -370,7 +371,7 @@ static void set_timeout(struct floppy_state *fs, int nticks, { { unsigned long flags; unsigned long flags; save_flags(flags); cli(); spin_lock_irqsave(&fs->lock, flags); if (fs->timeout_pending) if (fs->timeout_pending) del_timer(&fs->timeout); del_timer(&fs->timeout); fs->timeout.expires = jiffies + nticks; fs->timeout.expires = jiffies + nticks; Loading @@ -378,7 +379,7 @@ static void set_timeout(struct floppy_state *fs, int nticks, fs->timeout.data = (unsigned long) fs; fs->timeout.data = (unsigned long) fs; add_timer(&fs->timeout); add_timer(&fs->timeout); fs->timeout_pending = 1; fs->timeout_pending = 1; restore_flags(flags); spin_unlock_irqrestore(&fs->lock, flags); } } static inline void scan_track(struct floppy_state *fs) static inline void scan_track(struct floppy_state *fs) Loading Loading @@ -790,14 +791,13 @@ static int grab_drive(struct floppy_state *fs, enum swim_state state, { { unsigned long flags; unsigned long flags; save_flags(flags); spin_lock_irqsave(&fs->lock, flags); cli(); if (fs->state != idle) { if (fs->state != idle) { ++fs->wanted; ++fs->wanted; while (fs->state != available) { while (fs->state != available) { if (interruptible && signal_pending(current)) { if (interruptible && signal_pending(current)) { --fs->wanted; --fs->wanted; restore_flags(flags); spin_unlock_irqrestore(&fs->lock, flags); return -EINTR; return -EINTR; } } interruptible_sleep_on(&fs->wait); interruptible_sleep_on(&fs->wait); Loading @@ -805,7 +805,7 @@ static int grab_drive(struct floppy_state *fs, enum swim_state state, --fs->wanted; --fs->wanted; } } fs->state = state; fs->state = state; restore_flags(flags); spin_unlock_irqrestore(&fs->lock, flags); return 0; return 0; } } Loading @@ -813,11 +813,10 @@ static void release_drive(struct floppy_state *fs) { { unsigned long flags; unsigned long flags; save_flags(flags); spin_lock_irqsave(&fs->lock, flags); cli(); fs->state = idle; fs->state = idle; start_request(fs); start_request(fs); restore_flags(flags); spin_unlock_irqrestore(&fs->lock, flags); } } static int fd_eject(struct floppy_state *fs) static int fd_eject(struct floppy_state *fs) Loading Loading @@ -1109,6 +1108,7 @@ static int swim3_add_device(struct device_node *swim) pmac_call_feature(PMAC_FTR_SWIM3_ENABLE, swim, 0, 1); pmac_call_feature(PMAC_FTR_SWIM3_ENABLE, swim, 0, 1); memset(fs, 0, sizeof(*fs)); memset(fs, 0, sizeof(*fs)); spin_lock_init(&fs->lock); fs->state = idle; fs->state = idle; fs->swim3 = (struct swim3 __iomem *) fs->swim3 = (struct swim3 __iomem *) ioremap(swim->addrs[0].address, 0x200); ioremap(swim->addrs[0].address, 0x200); Loading