projects
/
powerpc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[IA64] Fix wrong assumption about irq and vector in msi_ia64.c
[powerpc.git]
/
drivers
/
block
/
umem.c
diff --git
a/drivers/block/umem.c
b/drivers/block/umem.c
index
c16e66b
..
5872036
100644
(file)
--- a/
drivers/block/umem.c
+++ b/
drivers/block/umem.c
@@
-35,8
+35,6
@@
*/
//#define DEBUG /* uncomment if you want debugging info (pr_debug) */
*/
//#define DEBUG /* uncomment if you want debugging info (pr_debug) */
-#include <linux/config.h>
-#include <linux/sched.h>
#include <linux/fs.h>
#include <linux/bio.h>
#include <linux/kernel.h>
#include <linux/fs.h>
#include <linux/bio.h>
#include <linux/kernel.h>
@@
-50,6
+48,7
@@
#include <linux/timer.h>
#include <linux/pci.h>
#include <linux/slab.h>
#include <linux/timer.h>
#include <linux/pci.h>
#include <linux/slab.h>
+#include <linux/dma-mapping.h>
#include <linux/fcntl.h> /* O_ACCMODE */
#include <linux/hdreg.h> /* HDIO_GETGEO */
#include <linux/fcntl.h> /* O_ACCMODE */
#include <linux/hdreg.h> /* HDIO_GETGEO */
@@
-552,7
+551,8
@@
static void process_page(unsigned long data)
static int mm_make_request(request_queue_t *q, struct bio *bio)
{
struct cardinfo *card = q->queuedata;
static int mm_make_request(request_queue_t *q, struct bio *bio)
{
struct cardinfo *card = q->queuedata;
- pr_debug("mm_make_request %ld %d\n", bh->b_rsector, bh->b_size);
+ pr_debug("mm_make_request %llu %u\n",
+ (unsigned long long)bio->bi_sector, bio->bi_size);
bio->bi_phys_segments = bio->bi_idx; /* count of completed segments*/
spin_lock_irq(&card->lock);
bio->bi_phys_segments = bio->bi_idx; /* count of completed segments*/
spin_lock_irq(&card->lock);
@@
-570,7
+570,7
@@
static int mm_make_request(request_queue_t *q, struct bio *bio)
-- mm_interrupt
-----------------------------------------------------------------------------------
*/
-- mm_interrupt
-----------------------------------------------------------------------------------
*/
-static irqreturn_t mm_interrupt(int irq, void *__card
, struct pt_regs *regs
)
+static irqreturn_t mm_interrupt(int irq, void *__card)
{
struct cardinfo *card = (struct cardinfo *) __card;
unsigned int dma_status;
{
struct cardinfo *card = (struct cardinfo *) __card;
unsigned int dma_status;
@@
-881,8
+881,8
@@
static int __devinit mm_pci_probe(struct pci_dev *dev, const struct pci_device_i
printk(KERN_INFO "Micro Memory(tm) controller #%d found at %02x:%02x (PCI Mem Module (Battery Backup))\n",
card->card_number, dev->bus->number, dev->devfn);
printk(KERN_INFO "Micro Memory(tm) controller #%d found at %02x:%02x (PCI Mem Module (Battery Backup))\n",
card->card_number, dev->bus->number, dev->devfn);
- if (pci_set_dma_mask(dev,
0xffffffffffffffffLL
) &&
- pci_set_dma_mask(dev,
0xffffffffLL
)) {
+ if (pci_set_dma_mask(dev,
DMA_64BIT_MASK
) &&
+ pci_set_dma_mask(dev,
DMA_32BIT_MASK
)) {
printk(KERN_WARNING "MM%d: NO suitable DMA found\n",num_cards);
return -ENOMEM;
}
printk(KERN_WARNING "MM%d: NO suitable DMA found\n",num_cards);
return -ENOMEM;
}
@@
-1040,7
+1040,7
@@
static int __devinit mm_pci_probe(struct pci_dev *dev, const struct pci_device_i
card->win_size = data;
card->win_size = data;
- if (request_irq(dev->irq, mm_interrupt,
SA_SHIRQ
, "pci-umem", card)) {
+ if (request_irq(dev->irq, mm_interrupt,
IRQF_SHARED
, "pci-umem", card)) {
printk(KERN_ERR "MM%d: Unable to allocate IRQ\n", card->card_number);
ret = -ENODEV;
printk(KERN_ERR "MM%d: Unable to allocate IRQ\n", card->card_number);
ret = -ENODEV;
@@
-1179,8
+1179,10
@@
static int __init mm_init(void)
return -ENOMEM;
err = major_nr = register_blkdev(0, "umem");
return -ENOMEM;
err = major_nr = register_blkdev(0, "umem");
- if (err < 0)
+ if (err < 0) {
+ pci_unregister_driver(&mm_pci_driver);
return -EIO;
return -EIO;
+ }
for (i = 0; i < num_cards; i++) {
mm_gendisk[i] = alloc_disk(1 << MM_SHIFT);
for (i = 0; i < num_cards; i++) {
mm_gendisk[i] = alloc_disk(1 << MM_SHIFT);
@@
-1191,7
+1193,6
@@
static int __init mm_init(void)
for (i = 0; i < num_cards; i++) {
struct gendisk *disk = mm_gendisk[i];
sprintf(disk->disk_name, "umem%c", 'a'+i);
for (i = 0; i < num_cards; i++) {
struct gendisk *disk = mm_gendisk[i];
sprintf(disk->disk_name, "umem%c", 'a'+i);
- sprintf(disk->devfs_name, "umem/card%d", i);
spin_lock_init(&cards[i].lock);
disk->major = major_nr;
disk->first_minor = i << MM_SHIFT;
spin_lock_init(&cards[i].lock);
disk->major = major_nr;
disk->first_minor = i << MM_SHIFT;
@@
-1208,6
+1209,7
@@
static int __init mm_init(void)
return 0;
out:
return 0;
out:
+ pci_unregister_driver(&mm_pci_driver);
unregister_blkdev(major_nr, "umem");
while (i--)
put_disk(mm_gendisk[i]);
unregister_blkdev(major_nr, "umem");
while (i--)
put_disk(mm_gendisk[i]);